본문 바로가기
개발/Unity

유니티 - 변수 변경시 이벤트 발생 (Simple Event Handler)

by 피로물든딸기 2022. 3. 18.
반응형

Unity 전체 링크

 

참고 - 퍼블릭 변수 변경시 이벤트 발생 (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:

 

Easy 2D, 3D, VR, & AR software for cross-platform development of games and mobile apps. - Unity Store

Have a 2D, 3D, VR, or AR project that needs cross-platform functionality? We can help. Take a look at the easy-to-use Unity Plus real-time dev platform!

store.unity.com

 

Unity Pro:

 

Unity Pro

The complete solutions for professionals to create and operate.

unity.com

 

Unity 프리미엄 학습:

 

Unity Learn

Advance your Unity skills with live sessions and over 750 hours of on-demand learning content designed for creators at every skill level.

unity.com

반응형

댓글