전체 글120 전역으로 관리되는 class 를 만들고 싶을 때 (singleton) 게임을 만들다 보면 클래스를 넘나들며, 전역적으로 접근해서 사용하고 싶은 데이터들이 존재하게 됩니다.이때 어떤 형태로 클래스를 만들 것인가에 대한 고민이 생기게 됩니다.그래서 이번에 이 부분에 대해 한번 다뤄보겠습니다. 정적(static) 클래스로 만들기유니티가 아닌 일반적인 C# 프로젝트에서는 전역적으로 데이터를 관리하기 위해 정적 클래스를 사용할 수 있습니다.public static class GameManager{ public static int score;} 이렇게 하면 GameManager.score로 어디서든 간편하게 접근할 수 있습니다. 하지만 문제는 유니티에서는 이것만으로 충분하지 않다는 점입니다. 정적 클래스의 단점• 정적 클래스는 특성상 애초에 인스턴스를 만들 수 없습니다.• .. 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. FindWithTag() 와 FindGameObjectsWithTag() FindWithTag()와 FindGameObjectsWithTag()는 모두 Unity에서 특정 태그(tag) 를 가진 오브젝트를 찾는 함수들이지만, 둘 사이에는 중요한 차이점이 있습니다. FindWithTag()역할특정 태그를 가진 첫 번째 게임 오브젝트를 찾습니다.반환 값단일 게임 오브젝트 (GameObject)사용 예시이 함수는 씬에서 "Player" 태그를 가진 첫 번째 오브젝트를 찾고, 그 오브젝트를 반환합니다. 만약 태그를 가진 오브젝트가 없으면 null을 반환합니다. 이 함수는 단 하나의 오브젝트만 찾을 때 유용합니다.GameObject player = GameObject.FindWithTag("Player"); FindGameObjectsWithTag()역할특정 태그를 가진 모든 게임 오.. 2025. 3. 9. Unity Inspector 에서 자동으로 컴포넌트 할당되는 원리 Unity는 Inspector 창에서 특정 컴포넌트 타입의 변수를 정의했을 때, 해당 게임 오브젝트가 여러 컴포넌트를 가지고 있어도, 지정된 타입에 맞는 컴포넌트만 자동으로 선택해서 할당합니다.이 원칙은 모든 컴포넌트에 동일하게 적용되며, Unity가 오브젝트를 관리하는 방식에서 비롯됩니다. Transform 컴포넌트의 경우모든 게임 오브젝트는 기본적으로 Transform 컴포넌트를 가지고 있습니다.Transform은 오브젝트의 위치, 회전, 크기를 관리하는 컴포넌트로, 이 컴포넌트가 없는 오브젝트는 존재할 수 없습니다. 만약 당신이 스크립트에서 Transform 타입의 변수를 선언했다면, 이 변수는 Inspector 창에서 게임 오브젝트를 드래그해 넣을 때 오브젝트에 포함된 다른 컴포넌트는 무시하고,.. 2025. 3. 9. 이전 1 ··· 15 16 17 18 19 20 다음