반응형
참고 - 퍼블릭 변수 변경시 이벤트 발생 (Public Value Event Handler)
C#의 프로퍼티를 이용하면 변수가 변경될 때, 이벤트를 발생할 수 있다.
property는 C#에서 제공하는 간단한 get, set 메서드이다.
currentEvent의 변경이 감지된다면 (currentEvent != value)
CURRENT_EVENT의 값을 변경하고 원하는 함수를 실행하면 된다.
string CURRENT_EVENT = "";
string currentEvent
{
set
{
if (CURRENT_EVENT == value) return;
CURRENT_EVENT = value;
Debug.Log(CURRENT_EVENT);
}
get
{
return CURRENT_EVENT;
}
}
아래의 스크립트로 테스트해보자.
Update에서 currentEvent는 EVENT를 보고 있다.
OnMouseDown으로 EVENT의 변경이 감지되면 Debug.Log가 실행되고,
OnMouseUp 이벤트가 발생될 때 다시 Debug.Log가 실행된다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SimpleEventHandler : MonoBehaviour
{
string EVENT = "";
string CURRENT_EVENT = "";
string currentEvent
{
set
{
if (CURRENT_EVENT == value) return;
CURRENT_EVENT = value;
Debug.Log(CURRENT_EVENT);
}
get
{
return CURRENT_EVENT;
}
}
private void OnMouseDown()
{
EVENT = "OnMouseDown";
}
private void OnMouseUp()
{
EVENT = "OnMouseUp";
}
void Update()
{
currentEvent = EVENT;
}
}
프로퍼티를 이용해 Simple Event Handler를 구현해 보았다.
하나의 함수가 실행될 때, 다른 함수가 동작하도록 이벤트를 등록하는 것은 Action을 이용하면 가능하다.
Unity Plus:
Unity Pro:
Unity 프리미엄 학습:
반응형
'개발 > Unity' 카테고리의 다른 글
유니티 색상 변경 에디터 만들기 (Circle Color Picker) (0) | 2022.03.20 |
---|---|
유니티 C# Dictionary와 delegate를 이용한 함수 포인터 (0) | 2022.03.18 |
유니티 Attribute - Requirecomponent로 Component 강제 설정하기 (0) | 2022.03.17 |
유니티 Attribute - 직렬화로 Inspector에 보여주기 (0) | 2022.03.15 |
유니티 - 롱 클릭 progress bar 처리하기 (0) | 2022.03.15 |
댓글