Unity

    Unity의 WaitUntil 코루틴

    Unity의 WaitUntil 코루틴은 특정 조건이 만족될 때까지 기다리는 코루틴입니다. WaitUntil 코루틴은 다음과 같은 형식을 사용합니다. public IEnumerator WaitUntil(Func predicate) { while (!predicate()) { yield return null; } } WaitUntil 코루틴은 predicate() 함수를 사용하여 특정 조건을 확인합니다. predicate() 함수가 true를 반환하면 WaitUntil 코루틴은 다음 코드로 이동합니다. predicate() 함수가 false를 반환하면 WaitUntil 코루틴은 yield return null을 반환하여 다음 프레임으로 이동합니다. WaitUntil 코루틴의 사용 예 WaitUntil 코루틴..

    IEnumerator 메서드에서 async await 사용

    최근 작업중인 게임 데이터를 Local에 저장하던 것을 Firebase의 Database로 옮기는 작업을 진행하고 있다. DB에 데이터 저장은 잘되는데 Load가 제대로 되질 않아 삽질을 했던 경험을 공유하고자 한다. 내 프로젝트의 GameManager는 게임을 시작할 때 게임의 구성을 갖추는 셋팅을 할 때 IEnumerator 함수를 통해 플레이어를 생성 및 초기화하고 게임을 구성한다. Firebase에서 데이터를 가져오기 위해 FirebaseManager에 접근해 데이터를 로드하는 async 함수를 실행하면 Unity가 작동을 멈췄다. Unity의 IEnumerator 함수안에서 async 사용시 응답없음 문제가 발생하는 이유는 IEnumerator 함수가 Deferred Execution을 사용하기..

    Unity에서 유연한 인스턴스 생성

    Unity에서 Activator.CreateInstance는 지정된 클래스의 인스턴스를 생성하는 메서드입니다. Activator.CreateInstance는 다음과 같은 두 가지 형식으로 사용할 수 있습니다. Activator.CreateInstance(Type type): 지정된 클래스의 인스턴스를 생성합니다. Activator.CreateInstance(Type type, Object[] args): 지정된 클래스의 인스턴스를 생성하고, 인스턴스를 초기화하기 위해 지정된 인수를 사용합니다. Activator.CreateInstance(Type type)의 사용법은 다음과 같습니다. Type type = typeof(GameObject); GameObject gameObject = Activator.C..

    디바이스 고유 ID : SystemInfo.deviceUniqueIdentifier

    Unity에서 SystemInfo.deviceUniqueIdentifier는 디바이스의 고유 식별자를 반환하는 메서드입니다. 이 식별자는 디바이스의 하드웨어와 소프트웨어를 기반으로 생성되며, 디바이스의 고유성을 보장합니다. 디바이스 고유 ID 가져오기 string deviceUniqueIdentifier = SystemInfo.deviceUniqueIdentifier; 이 예제는 디바이스의 고유 식별자를 deviceUniqueIdentifier 변수에 저장합니다. 장단점 SystemInfo.deviceUniqueIdentifier의 장점은 다음과 같습니다. 디바이스의 고유성을 보장합니다. 모든 플랫폼에서 동일하게 작동합니다. SystemInfo.deviceUniqueIdentifier의 단점은 다음과 같..

    Firebase의 DataSnapshot에 대해서

    Firebase는 클라우드 기반의 NoSQL 데이터베이스입니다. Firebase 데이터베이스는 JSON 형식으로 데이터를 저장합니다. Firebase 데이터베이스에서 데이터를 읽을 때는 DataSnapshot 객체를 사용합니다. DataSnapshot DataSnapshot 객체는 Firebase 데이터베이스에서 읽은 데이터를 나타내는 객체입니다. DataSnapshot 객체는 다음과 같은 속성을 가지고 있습니다. value: 데이터베이스에서 읽은 데이터입니다. exists: 데이터가 존재하는지 여부를 나타냅니다. hasChildren: 데이터에 하위 데이터가 있는지 여부를 나타냅니다. children: 데이터의 하위 데이터를 나타내는 배열입니다. DataSnapshot 사용법 DataSnapshot 객..

    리지드바디(Rigidbody)와 캐릭터컨트롤러(CharacterController)의 차이와 장단점 비교

    유니티에서는 물리 엔진을 사용하여 오브젝트의 움직임을 시뮬레이션할 수 있습니다. 물리 엔진은 리지드바디(Rigidbody)와 캐릭터컨트롤러(CharacterController)라는 두 가지 기본 요소를 사용하여 오브젝트의 움직임을 제어합니다. 리지드바디 리지드바디는 물리적 객체의 기본적인 모델입니다. 리지드바디는 질량, 관성, 충돌 감지 등의 속성을 가지고 있습니다. 리지드바디는 물리 엔진에 의해 제어되며, 외부 힘에 의해 움직입니다. 캐릭터컨트롤러 캐릭터컨트롤러는 플레이어 캐릭터와 같은 두 다리로 걷는 물리적 객체의 모델입니다. 캐릭터컨트롤러는 리지드바디와 달리 물리 엔진에 의해 직접 제어되지 않습니다. 대신, 캐릭터컨트롤러는 플레이어의 입력을 사용하여 움직입니다. 차이점 리지드바디와 캐릭터컨트롤러의 ..

    클릭한 위치가 특정 오브젝트 안에 속해 있는지 판단하는 방법

    소개 Unity에서 RectTransform 객체가 화면상의 특정 좌표를 포함하는지 여부를 확인하려면 RectTransformUtility.RectangleContainsScreenPoint 함수를 사용할 수 있습니다. 이 함수는 RectTransform 객체의 좌표, 크기, 회전각도, 그리고 화면상의 좌표를 입력으로 받아 RectTransform 객체가 화면상의 좌표를 포함하는지 여부를 반환합니다. 사용법 RectTransformUtility.RectangleContainsScreenPoint 함수는 다음과 같이 사용할 수 있습니다. bool contains = RectTransformUtility.RectangleContainsScreenPoint(rectTransform, screenPoint); ..

    Unity로 이해하는 빌더 패턴

    빌더 패턴이란? 빌더 패턴은 복잡한 객체를 생성하는 방법을 캡슐화하는 디자인 패턴입니다. 빌더 패턴을 사용하면 객체를 생성하는 과정을 단계별로 나누어 처리할 수 있습니다. 빌더 패턴의 장점 객체를 생성하는 과정을 단순화할 수 있습니다. 객체의 생성 순서를 제어할 수 있습니다. 객체의 생성 과정을 재사용할 수 있습니다. 객체의 생성 과정을 테스트하기 쉽습니다. Unity에서의 빌더 패턴 Unity에서 빌더 패턴을 사용하면 다음과 같은 경우에 유용합니다. 복잡한 GameObject를 생성해야 하는 경우 GameObject의 생성 순서를 제어해야 하는 경우 GameObject의 생성 과정을 재사용해야 하는 경우 GameObject의 생성 과정을 테스트해야 하는 경우 Unity에서 빌더 패턴을 사용하는 방법 U..