전체 글45 Unity 에서 Tag 사용시 알아야 할 내용 Unity에서는 게임 오브젝트의 태그를 비교할 때 여러 가지 방법이 있지만, 성능과 안정성을 고려하면 CompareTag()를 사용하는 것이 가장 효율적입니다. 이 글에서는 태그 비교 및 검색 함수의 동작 원리를 설명하고, 어떤 방식이 최적화된 방법인지 알아보겠습니다. Tag 를 비교하는 두 가지 방법CompareTag() 사용 (권장)if (collision.gameObject.CompareTag("Player")) Unity 내부적으로 태그를 정수 ID로 변환하여 비교.문자열 비교를 하지 않으므로 빠르고 최적화됨.태그가 존재하지 않는 경우에도 안전하게 처리됨. tag 속성으로 비교 (비추천)if (collision.gameObject.tag == "Player") gameObject.tag를 가져와.. 2025. 3. 10. 유니티 Inspector 설정 값을 전역으로 사용하기 게임을 개발하다 보면, 전역적으로 접근할 수 있는 데이터 관리 클래스가 필요할 때가 많습니다.이때 흔히 싱글톤(Singleton) 패턴을 사용하지만, 이렇게 되면 유니티 툴 (Inspector) 에서 데이터를 설정할 수 없는 문제가 발생할 수 있습니다. 왜 이런 문제가 생길까요?싱글톤으로 클래스를 만든 후, 멤버 변수를 전역으로 접근하려면 static 이어야 하지만, static 변수는 SerializeField 를 사용할 수 없기 때문입니다.즉, static 변수는 인스펙터에서 설정할 수 없으므로, 유니티 툴에서 값을 조정할 수 없는 문제가 발생합니다. 해결 방법인스턴스 변수 + Awake()에서 static 변수로 복사 이 문제를 해결하려면 인스턴스 변수([SerializeField])로 값을 저장.. 2025. 3. 10. 전역으로 관리되는 class 를 만들고 싶을 때 (singleton) 게임을 만들다 보면 클래스를 넘나들며, 전역적으로 접근해서 사용하고 싶은 데이터들이 존재하게 됩니다.이때 어떤 형태로 클래스를 만들 것인가에 대한 고민이 생기게 됩니다.그래서 이번에 이 부분에 대해 한번 다뤄보겠습니다. 정적(static) 클래스로 만들기유니티가 아닌 일반적인 C# 프로젝트에서는 전역적으로 데이터를 관리하기 위해 정적 클래스를 사용할 수 있습니다.public static class GameManager{ public static int score;} 이렇게 하면 GameManager.score로 어디서든 간편하게 접근할 수 있습니다. 하지만 문제는 유니티에서는 이것만으로 충분하지 않다는 점입니다. 정적 클래스의 단점정적 클래스는 특성상 애초에 인스턴스를 만들 수 없습니다.즉, new.. 2025. 3. 10. GameObject 와 Transform 의 Find() 에 대해 유니티에서 오브젝트를 검색하는 방법은 크게 두 가지가 있습니다. 첫 번째는 GameObject.Find() 를 사용하여 씬 전체에서 검색하는 것이고, 두 번째는 Transform.Find()를 사용하여 특정 부모 오브젝트의 자식에서 검색하는 것입니다. 각각의 방법은 사용 목적과 성능 차이가 있으므로 적절한 상황에서 선택하여 사용해야 합니다. GameObject에서 Find 함수 사용하기GameObject는 씬 내의 모든 활성화된 게임 오브젝트를 검색할 때 사용됩니다. 대표적인 함수들은 다음과 같습니다. GameObject.Find ( name ) 씬 전체에서 특정 이름을 가진 오브젝트를 찾습니다. GameObject.FindWithTag ( tag ) 특정 태그를 가진 오브젝트를 찾습니다. GameOb.. 2025. 3. 10. Vector3 pos = new Vector3() 의 이해와 대안 유니티에서 Vector3는 struct(구조체)로 정의되어 있기 때문에 값 타입으로 동작합니다.따라서 new Vector3(); 를 사용할 때의 동작 방식은 일반적인 참조 타입(class)과 다릅니다.이번 글에서는 Vector3가 스택 메모리에서 어떻게 처리되는지 살펴보겠습니다. new Vector3() 의 의미Vector3 pos = new Vector3(); 이 코드는 스택(Stack) 메모리에서 Vector3 공간을 만들고, 기본값(0,0,0)으로 초기화한 후, pos 변수에 복사하는 과정을 포함합니다. 제일 먼저 new Vector3(); 가 실행되면서 스택(Stack) 메모리에 Vector3 구조체 공간을 생성하고, 기본값(0,0,0) 으로 초기화 합니다.그 후 Vector3 pos 변수 선언에.. 2025. 3. 10. 유니티에서 특정 오브젝트 찾기 : 성능 최적화 만약 특정한 오브젝트를 찾기 위해 Unity에서 씬 상의 모든 오브젝트를 확인하려고 한다면, 모든 오브젝트를 순회하며 검사해야 합니다.Unity에는 씬에 존재하는 오브젝트를 순회하고 특정 조건에 맞는 오브젝트를 찾는 방법이 여러 가지가 있지만, 기본적으로는 모든 오브젝트를 확인하는 과정이 필요합니다. 오브젝트를 찾는 방법FindObjectsOfType() 사용Unity에서 특정 타입의 컴포넌트를 가진 오브젝트를 찾고 싶다면 FindObjectsOfType() 메서드를 사용할 수 있습니다.이 메서드는 씬에 있는 모든 오브젝트를 순회하며, 해당 타입의 컴포넌트를 가지고 있는 오브젝트들을 찾아 반환합니다. GameObject[] allEnemies = FindObjectsOfType().Where(obj =.. 2025. 3. 9. 이전 1 2 3 4 5 6 7 8 다음