UnityEvent를 사용하여 Unity에서 이벤트 시스템 구현
Unity에서 이벤트 시스템은 게임의 다양한 구성 요소와 개체 간의 통신을 가능하게 합니다. C# 접근 방식을 사용하는 경우 UnityEvent를 사용하여 사용자 정의 이벤트를 생성할 수 있습니다.
사용자 정의 이벤트용 UnityEvent
UnityEvent로 사용자 정의 이벤트를 생성하려면
public UnityEvent whoa;
UnityEvent는 명시적인 대리자나 함수 없이 이벤트를 처리하는 간단하고 직관적인 방법을 제공합니다. 서명.
구현 예
"BigScript.cs" 스크립트에서:
using UnityEngine; using UnityEngine.Events; public class BigScript : MonoBehaviour { [Header("Here's a cool event! Drag anything here!")] public UnityEvent whoa; private void YourFunction() { whoa.Invoke(); } }
Inspector에서 다른 서명을 끌어서 놓을 수 있습니다. "whoa" 이벤트 필드에 스크립트를 추가하세요. 이러한 스크립트에는 "whoa" 이벤트가 트리거될 때 호출되는 함수가 포함됩니다.
"BigScript" 구성 요소 내에서 이벤트를 트리거하려면 "whoa" 이벤트에서 Invoke() 메서드를 호출하기만 하면 됩니다.
사용자 정의 이벤트에서 인수 처리
인수가 필요한 이벤트의 경우 일반 유형 매개변수를 사용하여 UnityEvent 하위 클래스를 소유합니다. 예를 들어 부동 인수를 사용하는 이벤트를 생성하려면:
[System.Serializable] public class _UnityEventFloat : UnityEvent<float> {}
그런 다음 스크립트에서 이벤트를 정의하고 다음과 같이 사용할 수 있습니다.
public _UnityEventFloat changedLength; void ProcessValues(float v) { // ... changedLength.Invoke(1.4455f); }
드래그할 때 Inspector의 이벤트 필드에 다른 스크립트를 추가하려면 "Dynamic float" 섹션을 선택하여 인수를 처리해야 합니다.
실제 구현
여러 객체가 공통 이벤트를 구독해야 하는 특정 시나리오의 경우 사용자 정의 스크립트를 생성하여 프리팹에 연결할 수 있습니다. "직원" 카테고리. 해당 스크립트에서 "Day is done" 이벤트를 구독할 수 있습니다. 이벤트가 트리거되면 스크립트는 "직원" 구성원에 대해 필요한 작업을 실행합니다.
이 접근 방식을 사용하면 프리팹 내 중앙에서 이벤트를 구독할 수 있으므로 인스턴스화된 각 개체를 수동으로 구독할 필요가 없습니다. .
위 내용은 UnityEvent는 Unity 게임 개발에서 이벤트 처리를 어떻게 단순화할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!