전체 글120 event Action 을 활용한 이벤트 처리 게임을 만들다 보면 특정 상황에서 여러 객체가 동시에 반응해야 할 때가 많습니다. 예를 들어, 플레이어가 사망하면 게임 오버 화면이 표시되고, 점수가 저장되며, 배경음악이 멈추는 상황이 있을 수 있습니다. 이를 효율적으로 관리하기 위해 event와 Action을 활용한 이벤트 시스템을 사용할 수 있습니다. event Action의 개념어떤 마을에서 "불이야!" 라고 외쳤다고 가정해봅시다.이 소리를 들으면 각자의 역할을 가진 사람들이 자동으로 반응합니다. 소방관은 불을 끄러 출동하고 ... 이웃들은 대피하며 ...방송국은 긴급 속보를 내보냅니다. 즉, 불이 난 사람이 일일이 지시하지 않아도 "불이야!" 라는 신호만 전달하면 관련된 사람들이 각자 반응하는 구조입니다.게임에서도 동일한 개념을 적용할 수 있.. 2025. 3. 11. Static 과 Instance ( feat.Singleton ) static 변수와 일반 변수의 차이와 접근 방식을 이해하는 것이 중요합니다. 특히, static 변수는 클래스 단위에서 관리되고, 일반 변수는 객체(인스턴스) 단위에서 관리되므로, 서로의 접근 방식이 다릅니다. 이번 글에서는 static 변수와 일반 변수의 차이를 이해하고, 접근 방식을 정리해보겠습니다. static 변수와 일반 변수의 차이static 변수는 클래스 소속public class Example{ public static int StaticValue = 100; // static 변수} StaticValue는 Example 클래스 자체에 속해 있으며, 객체를 만들지 않고 접근해야 합니다.위에서 언급한 클래스 단위에서 관리된다는 말은 객체를 만들지 않아도 바로 쓸 수 있다라는 말로 이해하.. 2025. 3. 11. Delegate 이해하기 Delegate란?Delegate(대리자)는 C#에서 함수의 참조를 저장하고 호출할 수 있는 객체입니다. 이는 C++의 함수 포인터와 유사하지만, 더 안전한 방식으로 관리됩니다.Delegate를 사용하면 특정 메서드를 미리 지정하지 않고 실행 시점에서 메서드를 동적으로 호출할 수 있습니다. 이를 통해 코드의 유연성과 확장성을 높일 수 있습니다. Delegate 선언 및 사용Delegate를 선언하는 기본적인 방법은 다음과 같습니다.// Delegate 선언public delegate void MyDelegate(string message);// Delegate를 사용하는 메서드 정의public class Example{ public static void PrintMessage(string messa.. 2025. 3. 10. FindObjectOfType<T>() 함수 설명 FindObjectOfType() 는 컴포넌트를 찾는 함수라고 알고 있는데, Rigidbody, Transform 같은 컴포넌트뿐만 아니라 UIManager, GameManager 같은 사용자가 정의한 클래스도 들어갈 수 있다는 게 어색하게 느껴질 수 있습니다. 이 의문을 풀기 위해 Unity에서 컴포넌트가 무엇인지, 그리고 왜 FindObjectOfType()가 MonoBehaviour를 상속받은 클래스만 찾을 수 있는지 알아보겠습니다. MonoBehaviour 는 컴포넌트(Component) 다Unity에서 MonoBehaviour는 단순한 클래스가 아니라, 게임 오브젝트에 부착할 수 있는 컴포넌트입니다. 이는 MonoBehaviour가 내부적으로 Unity의 Component 클래스를 상속받고 있기.. 2025. 3. 10. 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. 이전 1 ··· 14 15 16 17 18 19 20 다음