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
해당코드는 유니티 포럼에서 찾게 되었다.
적용 테스트 영상이다.
원본 링크 : [유니티포럼]
★☆☆☆☆
반응형
'개발 > Unity' 카테고리의 다른 글
Unity) Shader Graph #2 캐릭터 스폰 효과 구현 (0) | 2021.04.05 |
---|---|
Unity) 2D Tile Map 만들기 (0) | 2021.04.03 |
Mac)해결)Unity)Error building Player: Win32Exception: Application Name ='~/AndroidPlayer/SDK/tools/bin/sdkmanager' (0) | 2021.03.23 |
Unity)2D 개발 꿀 팁 (Unity 공식) (0) | 2021.03.22 |
Unity) JsonUtility class Parsing Problem (0) | 2021.03.18 |
댓글