JD Survival
·
대장간
https://youtu.be/WUahPik0Lkk?si=Jfot0A7o8HmX7t-V 스파르타 부트캠프에서 제작한 3D 생존게임입니다!더롱다크에서 영감을 얻어서 제작하게 되었습니다.담당한 분야는 프롤로그 부분 애니메이션 작업과, 사운드, 몬스터, 채집 및 무기(도끼 +활)을 담당했습니다.
The TimeKeeper
·
대장간
스파르타 부트캠프에서 제작한 로그라이크게임인 The TimeKeeper입니다!게임내 필요한 Data를 엑셀로 정리하고(아이템 등장확률, 공격력, 방어력, 설명등)게임 아이템, 투사체 이펙트, UI, 스테이지 및 웨이브 관리, 사운드, URP를 활용하여 불빛 표현등을 담당했었습니다.
C# 문법으로 만든 RPG
·
대장간
https://www.youtube.com/watch?v=RaREEhLB7K4 스파르타 부트캠프에서 제작한 C# RPG 게임입니다!담당했던 부분은 게임저장 및 로드 시스템을 Json으로 활용해서 구현하였고,퀘스트 시스템을 담당했습니다.
유니티 버튼 누르자마자 동작하기 (EventTrigger 스크립트 연결)
·
Unity
1. 발생 문제유니티에서 UI Button은 클릭 후 마우스를 때야지만 동작하게 되어있습니다. 이는 위와 같이 버튼을 누르자마자 플레이어가 점프를 해야하는 게임에서는 치명적일 수 있습니다. 2. 해결 방안- 해결 방법은 크게 2가지가 있습니다.1. IPointerClickHandler, IPointerDownHandler, IPointerUpHandler 등의 포인터 입력을 감지하는 인터페이스를 활용한다.2. EventTrigger를 사용하여 포인터 입력에 따라 함수를 호출한다. 저는 2번 방법 EventTrriger를 사용하여 포인터 입력을 감지한 뒤 점프 함수를 호출해서 문제를 해결해 보겠습니다.  - 해결 방법은 아래와 같습니다.1. EventTrigger 컴포넌트를 선언 후 인터페이스에서 Even..
유니티 여러곳에서 참조되는 데이터 관리
·
Unity
문제점씬의 이름, 프리팹의 주소등, 여러 곳에서 참조되는 데이터들이 존재한다.작업 도중에 해당 데이터들의 이름이 수정될 경우, 참조했던 곳에서 전부 이름을 수정해줘야하는 번거로움이 생긴다. 해결방안아래 처럼, 새로운 nameSpace인 Constants를 만들어 게임내에서 여러곳에서 참조되고, 쉽게 변하지 않는 데이터들을 묶어 놓자.이렇게 해놓을 경우 도중에 씬이름이나, 동적으로 생성되야할 오브젝트들의 경로가 수정되었을 때,해당 스크립트만 수정하여 관리하면 되기 때문에 훨씬 유지보수에 유리하다.  사용 예시
Debug 최적화
·
Unity
문제점기존에 사용하는 Debug.Log의 경우 에디터에서 동작하고, 빌드된 프로그램에서도 동작한다.이는 성능 저하로 이어지기 때문에, 빌드전의 해당 Debug Log들을 주석처리 혹은 지워주는 것이 좋다. 해결방안using UnityEngine;public static class Logger{ [System.Diagnostics.Conditional("ENABLE_LOG")] public static void Log(object message_) { Debug.Log(message_); } [System.Diagnostics.Conditional("ENABLE_LOG")] public static void Log(object message, Object con..
유니티 2단점프 구현
·
Unity
Rigidbody.AddForce(Vector3, Mode)의 경우 리지드 바디에 힘을 줘서 움직이기 위한 함수다.같은 힘과 방향을 주더라도 Mode에 따라 다른 결과를 가져오는데, ForceMode2D.Impulse는 충격량을 리지드 바디의 주는 형식으로 주로 타격이나, 폭발처럼 순간적인 힘을 나타내는 데이용된다. 충격량이랑 힘의 크기와 주는 시간을 곱하는 계산이 들어간다. 2단 점프를 구현할때 핵심은 리지드 바디의 Velocity를 Zero로 초기화 해주는 작업이다.같은 힘이라도 내려오는 중에 힘을 받으면 적게 뛰고, 올라가는 중에 힘을 받으면 상대적으로 높게 뛰게 된다.따라서, 2번째 점프를 하는 시점에 Velocity를 0으로 초기화 해주는 코드를 한줄 추가하여 구현하였다.
C# List, ArrayList, Dictionary
·
C#
List 내부적으로 배열을 사용하여 구현되고 같은 타입만 저장할 수 있습니다. 또 Generic으로 구현되어 박싱 언박싱이 일어나지 않아 타입 안정성 보장됨. 단점으로는 내부적으로 배열을 사용하여 구현되기 떄문에 중간에 데이터를 추가, 삽입, 삭제할 경우 배열을 다시 할당하고 복사를 수행하기 때문에 성능 저하가 있을 수 있습니다. 또, 원하는 데이터를 찾을 때 순차적으로 배열을 전부 돌기 때문에 데이터가 많을 수 록 탐색이 비효율적입니다. ArrayList object 타입으로 구성되어 었어, 서로 다른 타입의 데이터를 배열에 저장할 수 있다는 장점이 있으나 단점으로는 박싱 언박싱이 일어나기 때문에 성능 저하가 일어날 수 있습니다. Dictionary Hashtable을 기반으로 Key-Value Pai..