Страница 1 из 1

Выпадающий список в инспекторе

СообщениеДобавлено: 18 июн 2020, 21:34
MrDmitry
Здравствуйте. Не могу сделать выпадающий список в инспекторе


Синтаксис:
Используется csharp
List<string> OnAction = new List<string>();

...

public override void OnInspectorGUI()
    {
            foreach(States item in sm.Items)
            {
                EditorGUILayout.BeginVertical("box");
                item.OnAction = EditorGUILayout.Popup(0, item.OnAction);
                EditorGUILayout.EndVertical();
            }
        }


Ругается что item.OnAction должен быть string[] а не List<stribg>. Как быть? Есть какой то способ сделать из list string[] не используя банальный перебор в цикле?

Re: Выпадающий список в инспекторе

СообщениеДобавлено: 18 июн 2020, 22:21
seaman
Синтаксис:
Используется csharp
using System.Linq;
...
item.OnAction = EditorGUILayout.Popup(0, item.OnAction.ToArray()).ToList();


Но лучше все же использовать не Lust, а массив. Потому как такие преобразования медленные.

Re: Выпадающий список в инспекторе

СообщениеДобавлено: 19 июн 2020, 06:15
MrDmitry
Спасибо за ответ. По вашему совету, сделал тестовый массив

Синтаксис:
Используется csharp
public string[] OnAction = new string[]{"1", "2", "3"};


В итоге на строчке

Синтаксис:
Используется csharp
item.OnAction = EditorGUILayout.Popup(1, item.OnAction);


ошибка
Cannot implicitly convert type 'int' to 'string[]' [Assembly-CSharp]csharp(CS0029)

Re: Выпадающий список в инспекторе

СообщениеДобавлено: 19 июн 2020, 10:35
seaman
НУ да. И мне в справку надо иногда заглядывать - освежить память.
https://docs.unity3d.com/ScriptReferenc ... Popup.html
Синтаксис:
Используется csharp
        index = EditorGUILayout.Popup(index, options);

Re: Выпадающий список в инспекторе

СообщениеДобавлено: 19 июн 2020, 11:47
MrDmitry
ДА понял, моя не внимательность. Popup возвращает число. Спасибо.