Сообщение от WISHMASTER35
pax, вот именно что я не пойму как в инспекторе изменить поле, чтобы при нажатии на него было не редактирование строки, а выподал список методов скрипта. но как я понимаю такое не сделать.
|
Элементарно:
using UnityEngine;
public class MethodsExample : MonoBehaviour
{
public string messageName = "";
void Start()
{
}
void Update()
{
}
}
using System.Reflection;
using UnityEditor;
using UnityEngine;
[CustomEditor(typeof(MethodsExample))]
public class MethodsExampleEditor : Editor
{
public override void OnInspectorGUI()
{
var obj = (MethodsExample) target;
GUILayout.BeginHorizontal();
GUILayout.Label("Message");
if (GUILayout.Button(obj.messageName??"", GUI.skin.textField))
{
var menu = new GenericMenu();
foreach (var methodInfo in typeof(MethodsExample).GetMethods(
BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.DeclaredOnly))
{
var methodName = methodInfo.Name;
menu.AddItem(new GUIContent(methodName), false, () => obj.messageName = methodName);
}
menu.ShowAsContext();
}
GUILayout.EndHorizontal();
}
}