1. 직렬화된 private m_Value 필드가 있고, public Value라는 속성이 있음
2. Value는 setter에서는 값이 다를때 OnValueChanged 이벤트를 호출함
이제 코드로 Value로 접근하면 이벤트가 호출되잖아
근데 에디터의 인스펙터 상에서는 직렬화된 m_Value 필드 값만 바뀌니까 이벤트가 호출 안됨
필요한 기능은 이거임
- Value는 값이 바뀌면 이벤트 호출
- 인스펙터 상에서 직렬화된 m_Value 값이 바뀌면 이벤트 호출
기본적인 방법이라면
OnValidate() 함수에다가 m_PreviousValue 같은 변수를 또 추가해서
이전 값이랑 현재 값 비교하고
이벤트를 직접 호출해줘야되는데
이렇게 만들면 변수마다 무려 20줄 씩 추가가 되니까 문제임
내가 생각해낸 해결 방안이
class Property<T>라는 걸 만들어서
T m_Value, T Value, UnityEvent<T> OnValueChanged란 걸 넣어놓고
CustomPropertyDrawer로 인스펙터 상에서 m_Value 값이 바뀔 때
리플렉션으로 이벤트를 호출해주는데
이걸로 게임 설정들이 바뀌면 이벤트 호출함
다들 나처럼 하는지 아니면 다른 편한 방법이 있음?
에디터 스크립트로 수정되면 특정 함수 호출하게 만들어주면 되지 않나?? 예전에 했던거 같은데 기억이 안나네
그러고보니 비슷한거 같은데
R3의 ReactiveProperty<T> 를 쓰시면 됩니다