Собственно вопрос.
Как заставить компоненты мгновено реагировать на изменения свойств в GUI?
Самый простой пример с галочкой по скритию гизмы.
Код скрипта:
- Код: Выделить всё
using UnityEngine;
using System.Collections;
public class OtherObj : MonoBehaviour
{
public bool hideGizmos = false;
public float radiusGizmos = 5;
void OnDrawGizmos()
{
if (hideGizmos)
return;
Gizmos.color = Color.white;
Gizmos.DrawSphere(transform.position, radiusGizmos);
}
void OnDrawGizmosSelected()
{
if (hideGizmos)
return;
Gizmos.color = Color.yellow;
Gizmos.DrawSphere(transform.position, radiusGizmos);
}
}
Код скрипта едитора:
- Код: Выделить всё
using UnityEngine;
using UnityEditor;
using System.Collections;
[CustomEditor(typeof(OtherObj))]
public class OtherObjEditor : Editor
{
OtherObj targetObject;
SerializedObject serializedObject;
void OnEnable()
{
targetObject = target as OtherObj;
serializedObject = new SerializedObject(target);
}
public override void OnInspectorGUI()
{
serializedObject.Update();
GUILayout.BeginHorizontal();
GUILayout.Label("Hide Gizmos");
targetObject.hideGizmos = EditorGUILayout.Toggle(targetObject.hideGizmos);
GUILayout.EndHorizontal();
targetObject.radiusGizmos = EditorGUILayout.FloatField(" Gizmos Radius: ", targetObject.radiusGizmos);
serializedObject.ApplyModifiedProperties();
Repaint();
}
}