Показать сообщение отдельно
Старый 25.08.2012, 22:12   #610
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Вопросы от новичка

Сообщение от 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 = (MethodsExampletarget;

        
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();
    }

__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием