UnityEvent
4 분
유니티는 사용자가 C# 이벤트와 델리게이트를 더 쉽게 사용할 수 있도록 UnityEvents를 제공합니다.
UnityEvents는 서로 다른 객체에서 인수를 전달하거나 특정 요구 사항이 충족될 때 메시지를 전달하는 방법입니다.
ZEPETOScript에서 UnityEvent를 사용하려면 다음 형식으로 선언해야 합니다.
먼저, UnityEvent 클래스를 사용하기 위해 아래와 같이 import 명령을 추가합니다.
import { UnityEvent } from 'UnityEngine.Events';UnityEvent의 샘플 결합 코드를 참조하세요.
import { ZepetoScriptBehaviour } from 'ZEPETO.Script';
import { UnityEvent } from 'UnityEngine.Events';
import { Button } from 'UnityEngine.UI';
export default class Event extends ZepetoScriptBehaviour {
public btn : Button;
private mEvent: UnityEvent;
Start() {
// UnityEvent의 새 인스턴스를 생성하고 mEvent에 할당합니다.
this.mEvent = new UnityEvent();
// mEvent에 새 리스너를 추가합니다. 이 리스너는 mEvent가 호출될 때 Ping 메소드를 실행합니다.
this.mEvent.AddListener(() => this.Ping());
// 버튼이 클릭되었는지 확인하고 mEvent가 null이 아닌지 확인합니다.
this.btn.onClick.AddListener(() => {
if (this.mEvent != null) {
// 위 조건이 참이면 mEvent를 호출합니다.
this.mEvent.Invoke();
}
});
}
Ping() {
console.log('Ping');
}
}
- 스크립트 설명
- 위의 예에서, ‘mEvent’라는 UnityEvent는 버튼이 눌릴 때마다 호출되며, ‘mEvent’가 호출될 때 ‘Ping’ 메소드를 실행합니다.
- 따라서 버튼이 눌릴 때마다 'Ping'이라는 메시지가 콘솔에 출력됩니다.
연결하려는 이벤트에 매개변수가 있는 경우, 아래와 같이 UnityEvent 가져오기 명령을 추가해야 합니다.
import { UnityEvent$1 } from 'UnityEngine.Events';👍 팁
- UnityEvent$1은 UnityEvent의 일반 버전입니다.
- 예를 들어, 정수 값을 수용하는 이벤트를 만들고 싶다면, UnityEvent$1<int>
- UnityEvent$1의 매개변수 유형은 C#을 따릅니다.
매개변수를 사용하여 UnityEvent$1을 사용할 때의 샘플 코드는 다음과 같습니다.
import { ZepetoScriptBehaviour } from 'ZEPETO.Script';
import { UnityEvent$1 } from 'UnityEngine.Events';
import { Input } from 'UnityEngine';
export default class Event extends ZepetoScriptBehaviour {
private mEventInt: UnityEvent$1<int>;
private countNum: number;
Start() {
this.mEventInt = new UnityEvent$1<int>();
this.mEventInt.AddListener(num => this.Count(num));
this.countNum = 0;
}
Update() {
if ((Input.anyKeyDown) && (this.mEventInt != null)) {
this.mEventInt.Invoke(this.countNum);
++this.countNum;
if (this.countNum > 100) {
this.countNum = 0;
}
}
}
Count(num) {
console.log(`Count : ${num}`);
}
}
아래 링크를 클릭하여 UnityEvents에 대해 더 알아볼 수 있습니다.