using UnityEditor; using UnityEngine; public class CharacterShaderEditor : ShaderGUI { private bool init; private Vector3 lastEular; public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] properties) { base.OnGUI(materialEditor, properties); var targetMat = (Material)materialEditor.target; if (init) { var eular = EditorGUILayout.Vector3Field("Eular", lastEular); if (eular != lastEular) { lastEular = eular; var direction = Quaternion.Euler(eular) * Vector3.forward; targetMat.SetVector("_LightDir", direction); } } else { init = true; var direction = (Vector3)targetMat.GetVector("_LightDir"); lastEular = Quaternion.FromToRotation(Vector3.forward, direction).eulerAngles; EditorGUILayout.Vector3Field("Light Eular", lastEular); } } }