CustomEditor や EditorWindow で Image の color を変更しても反映されません
RectTransform の値をいじった際には即座に反映されます
using UnityEditor; using UnityEngine; using UnityEngine.UI; public class SampleMonoBehaviour : MonoBehaviour { public Image Image; } [CustomEditor(typeof(SampleMonoBehaviour))] public class SampleMonoBehaviourEditor : Editor { private SampleMonoBehaviour component; private void OnEnable() { component = target as SampleMonoBehaviour; } public override void OnInspectorGUI() { serializedObject.Update(); if (GUILayout.Button("ChangeColor")) { component.Image.color = Color.cyan; } serializedObject.ApplyModifiedProperties(); } }
解決方法
こちらを解決するためには EditorUtility.SetDirty
を利用します
if (GUILayout.Button("ChangeColor")) { component.Image.color = Color.cyan; EditorUtility.SetDirty(component); }
原因を詳しくは知りませんが dirty フラグが立たないと内部的に反映されないようです
https://docs.unity3d.com/jp/460/ScriptReference/EditorUtility.SetDirty.html
リファレンスを読む限り
Unityが用意しているコンポーネントは内部でプロパティが変更した時にこの関数が呼び出されています
と記述されていますが、すべての変数で対応しているわけではなさそうです
また Image の color 以外でも起こる可能性があるので
値を入れても反映されない場合はこちらを試してみてください