본문 바로가기

Unity

(48)
VR - Beat Fighter 2022년 디지털 핵심 실무인재 양성사업 K - Digital Training을 이수하면서 4인 1팀으로 작업했던 VR 리듬게임 Beat Fighter 입니다. 시연 영상 https://youtu.be/mYKgUjo9m4k
Skeleton Dungeon 2022년 디지털 핵심 실무인재 양성사업 K - Digital Training을 이수하면서 처음 작업했던 2인 유니티 프로젝트입니다. 시연 영상 https://youtu.be/IBwkuMD1_Wc 타사 아이템 분석 1. 메이플 스토리 2 2. 아이작 메이플 스토리 2와 같은 디자인에 아이작과 같은 던전 형식의 맵, 몬스터와 보스가 있고 강해질 수 있는 아이템을 얻을 수 있는 방을 가진 게임을 만들고 싶다! 일정
캐주얼 슈팅 액션 대전 게임 (모바일) - 17 메모리 풀의 성능 확인 개인 공부를 하면서 Instantiate와 Destroy는 GC를 많이 호출하기 때문에 성능상 좋지 않다는 것을 알게 됐다. 때문에 이번 프로젝트를 진행하면서 오브젝트 풀을 구현한 것인데 실제로 어느정도의 차이가 있는지 궁금해졌다. 유니티 Profiler를 이용해 FPS가 차이가 나는지 확인을 해봤다. 이 두 영상에서 차이점은 총알을 Object Pool로 관리를 한 것과 안 한 것의 차이 뿐이다. 오브젝트 풀 사용 X (Instantiate와 Destroy를 했을 때) https://youtu.be/xwnlmu9OyfI 오브젝트 풀 사용 O https://youtu.be/OM-R9MMXWuA 영상을 보면 오브젝트 풀을 사용했을 때 평균 FPS는 250 정도이며, 스파이크 튈 때 120 FPS 정도 나온..
캐주얼 슈팅 액션 대전 게임 (모바일) - 16 포톤 - 6 스킬 이펙트 추가 및 동기화 MemoryPool public void InitEnv(GameObject poolObject, ObjectType objectType) { maxCount = 0; activeCount = 0; switch (objectType) { case ObjectType.Bullet: this.bulletObject = poolObject; break; case ObjectType.HitEffect: this.hitEffectObject = poolObject; break; case ObjectType.Explosion: this.ExplosionObject = poolObject; break; case ObjectType.Lightning: this.lightningObject = poolObject; bre..
캐주얼 슈팅 액션 대전 게임 (모바일) - 15 스킬 및 쿨타임 UI 오늘은 간단하게 버튼을 누를 시 스킬 애니메이션과 UI로 쿨타임을 알려주는 기능을 만들어보았다. Skill Class public class Skill : MonoBehaviour { public enum SkillType { Dodge, SkillOne, SkillTwo} [SerializeField] private SkillType skill; private Button button; public PlayerMediator mediator; private void Start() { mediator = GetComponentInParent(); button = GetComponent(); if(mediator != null) { SetButtonEvent(); } } private void SetBut..
캐주얼 슈팅 액션 대전 게임 (모바일) - 14 포톤 5 Cloud Spawner, Buff Box 그리고 Buff 동기화 하기 버프가 잘 되는 것까지 확인을 했기 때문에 이것을 네트워크 환경에서 돌아갈 수 있게 조금 변경을 했다. BuffBox Spawn과 같은 개념은 게임 매니저와 궤를 같이 하기 때문에 둘 중 한 군데에서 명령을 내려주는 게 좋을 것 같다고 생각하였고 방장이 명령을 내리는 형태로 구현을 했다. 1. 명령을 내리는 쪽은 방장 (PhotonNetwork.IsMasterClinet 일 때) 이다. 클라우드 스포너의 position, regenTime 그리고 버프 박스 Num을 방장이 랜덤으로 돌리고 그것을 다른 유저에게 전달한다. 또 스폰에 관련된 사이클 역시 방장이 돌리고 소환되는 시점만 알려줘서 동일한 시점에 소환할 수 있게 했다. private void Start() { PV = GetComponent(); ..
캐주얼 슈팅 액션 대전 게임 (모바일) - 13 Buff 구현 (상태 패턴) Box Spawner와 Buff Box를 구현 했으니 Buff Box를 먹었을 때 실제로 플레이어한테 Buff를 줘야한다. 1. Buff Box에 플레이어가 닿으면 Buff Box가 PlayerMediator에 있는 SetBuff에 자신의 BuffType을 전달해서 실행한다. public void SetBuff(BuffBox.BuffType buffType) { Buff tempBuff = null; if (buffType == BuffBox.BuffType.Heal) { tempBuff = GetComponent(); if (tempBuff == null) tempBuff = gameObject.AddComponent(); } else if(buffType == BuffBox.BuffType.Bulle..
캐주얼 슈팅 액션 대전 게임 (모바일) - 12 클라우드 스포너와 버프 박스 Cloud Spawner and Buff Box 어제와 오늘 오전까지 랜덤한 버프를 주는 Buff Boxes와 그것들을 스폰하는 클라우드 스포너를 구현하였다. 어제 머리가 멍하고 집중이 잘 안 됐는데 억지로 컴퓨터 앞에 앉아 있었다. 때문에 진도도 못 나가고 긴 시간을 그냥 허비한 것 같다. 어제 허비한 시간(거의 6~7 시간?) 보다 자고 일어나서 1시간 동안 한 것이 더 많았다. 역시 안 될 때는 쉬어야 하는데 빨리 취업하고 싶다는 간절함, 압박감 같은게 편히 쉴 수 있게 하질 않는 것 같다. 이 실력에 잠이 와? 헤헿;; 자 우선 클라우드 스포너(Cloud Spawner)의 정의가 무엇이냐. 이름 그대로 구름처럼 하늘 위를 떠다니는 Spawner이다. 학원에 다닐 때 강사님이 알려주신 개념이다. 하늘 위에서 레이를 쏴서 바닥에 부딪히면 적을 소환..