스크립트 직렬화(Serialization)
Null Reference Exception이란 무엇입니까?

UnityEvents

UnityEvent는 실행시 추가 프로그램이나 스크립트 설정을 필요로하지 않고 편집할 때 부터 유지되는 구동 콜백(driven callback)을 사용자가 사용할 수 있도록 하는 방법입니다.

UnityEvent는 다음과 같은 몇 가지 경우에 유용합니다:

  • 콘텐츠 구동(driven) 콜백

  • 분리(Decoupling) 시스템

  • 지속(Persistent) 콜백

  • 사전 설정 호출 이벤트

UnityEvent는 어떤 MonoBehaviour에도 추가할 수 있으며, 표준 .NET 대리자(delegate)처럼 코드에서 수행할 수 있습니다. UnityEventMonoBehaviour에 추가될 때 인스펙터(Inspector)에 표시되며, 지속 콜백도 추가할 수 있습니다.

UnityEvents have similar limitations to standard delegates. That is, they hold references to the element that is the target and this stops the target being garbage collected. If you have a UnityEngine.Object as the target and the native representation disappears the callback will not be invoked.

UnityEvent의 사용

에디터에서 콜백을 설정하기 위해 필요한 몇 가지 단계가 있습니다:

  1. 스크립트는 반드시 UnityEngine.Events를 임포트/사용하십시오.

  2. 콜백 슬롯을 추가하기 위하여 + 아이콘을 선택합니다.

  3. 콜백을 받을 UnityEngine.Object를 선택합니다 (여기에는 오브젝트 선택기를 사용하실 수 있습니다.)

  4. 호출하려는 함수를 선택합니다

  5. 이벤트를 위해 하나 이상의 콜백을 추가할 수 있습니다

인스펙터에서 UnityEvent를 설정하는 경우, 지원되는 함수가 두 가지 있습니다 :

  • 정적(Static). 정적 호출은 UI에서 설정된 사전 설정 값을 수반하는, 사전 설정된 호출입니다. 이것은 콜백이 실행되었을 때 해당 함수는 UI에 입력된 인수와 함께 실행된다는 의미입니다.
  • 동적(Dynamic). 동적 호출 코드에서 전 된 인수를 사용하여 실행됩니다. 이 인수는 실행되는 UnityEvent 유형과 연관되어 있습니다. UI는 콜백에 필터를 걸어 UnityEvent에서 유효한 동적 호출만 표시합니다.

제네릭(Generic) UnityEvents

기본적으로 MonoBehaviourUnityEvent는 동적으로 void 함수를 바인딩합니다. UnityEvent는 4개의 인수를 수반하는 함수 바인딩을 지원하고 있기 때문에, 이것은 동적 실행의 사례일 필요는 없습니다. 이를 위해 여러 인수를 지원하는 사용자 정의 UnityEvent 클래스를 정의해야 합니다. 이것은 다음과 같이 정말 쉽게 할 수 있습니다 :

[Serializable]

public class StringEvent : UnityEvent <string> {}

이것은 ’string’을 인수로써 Invoke() 함수를 호출하여 수행할 수 있습니다.

UnityEvent는 제네릭(generic) 정의에서 최대 4개의 인수를 정의할 수 있습니다.

이 인스턴스를 기반 UnityEvent 대신 당신의 클래스에 추가하여 콜백을 동적으로 문자열 함수와 연결하는 것을 허용합니다.

스크립트 직렬화(Serialization)
Null Reference Exception이란 무엇입니까?