#region namespace
using System; using System.Collections; using System.Collections.Generic; using System.Reflection; using UnityEngine; using UnityEditor; #endregion public class CuonglhButton : MonoBehaviour { [ButtonEditor] public void TestButton() { Debug.Log("Execute"); } } [AttributeUsage(AttributeTargets.Method)] public class ButtonEditor : Attribute { } [CustomEditor(typeof(MonoBehaviour), true)] public class CuonglhButtonEditor : Editor { public override void OnInspectorGUI() { base.OnInspectorGUI(); var mTarget = (MonoBehaviour) target; var methodInfors = mTarget.GetType().GetMethods(); foreach (var methodInfor in methodInfors) { var buttonEditor = methodInfor.GetCustomAttribute(typeof(ButtonEditor), true); if (buttonEditor != null) { if (GUILayout.Button(methodInfor.Name)) { methodInfor.Invoke((object)mTarget, null); } } } } }
No comments:
Post a Comment