본문 바로가기
개발/Unity

Unity) Bool 값 인스펙터에서 변경 시 이벤트 처리하기

by 테샤르 2021. 3. 24.

 Bool 값 인스펙터에서 변경 시 이벤트 처리하기

원하는 기능은 인스펙터에 있는 값을 변경할 때 아래와 같은 형태로 처리를 하려고 여러 가지 삽질을 해봤으나. 실패했다.

 public bool _flag = false;
    public bool flag{
        get{
            return _flag;
        }
        set{
            _flag = value;
            eventAction();
        }
    }

 

Wrapper Class로 만들어서 셋팅하기도 해 보고 여러 가지 처리를 해봤으나 결국 돌고 돌아서 

CustomEditor로 하게 되었다.

관련된 내용 코드는 다음과 같다.

 

using UnityEngine;
#if UNITY_EDITOR
using UnityEditor;
#endif
 
public class ExampleScript : MonoBehaviour
{

    [SerializeField]
    private bool _isInteractive;
 
    public bool IsInteractive
    {
        get { return _isInteractive; }
        set
        {
            _isInteractive = value;
            Activate(_isInteractive);
        }
    }
 
    private void Activate(bool interactable)
    {
        Debug.Log(interactable);
    }  
}
 
 
#if UNITY_EDITOR
[CustomEditor(typeof(ExampleScript))]
public class ExampleScriptEditor : Editor
{
    public ExampleScript script;
   
    public void OnEnable()
    {
        script = (ExampleScript)target;
    }
 
    public override void OnInspectorGUI()
    {
        bool is_interactive_target = !script.IsInteractive;
        GUI.backgroundColor = (is_interactive_target) ? Color.red : Color.green;
        if(GUILayout.Button("IsInteractive is "+script.IsInteractive+" (Click to make "+is_interactive_target+")"))
        {
            script.IsInteractive = is_interactive_target;
        }
        GUI.backgroundColor = Color.white;
        base.OnInspectorGUI();
    }
}
 
#endif

해당코드는 유니티 포럼에서 찾게 되었다.

 

적용 테스트 영상이다.

 

 

 

원본 링크 : [유니티포럼]

 

Set bool in inspector and execute Method ?

Greetings, Is there a way that I can execute a method upon changing a boolean value in the inspector at runtime? I am coding up a custom UI group and...

forum.unity.com

 

★☆

 

반응형

댓글