Как изменить выпадающий список в инспекторе из кода?
Я пишу игру на юнити. Есть задача, менять значение выпадающего списка (!В инспекторе!) во время игры, из кода. Необходимо написать метод, выполняющий эту задачу. Как это реализовать? Вот код скрипта: https://pastebin.com/3MRiSF4C
Ответы (2 шт):
Такое выпадающее меню легко создать. В своём скрипте, где вы хотите такое реализовать создаёте перечисление enum, в нем будут содержаться элементы меню. Потом просто создаете публичный экземпляр этого перечесления. А в методе Update просто проверяете этот экземпляр.
Герман, добрый день, насколько я понимаю, вам нужно создать выпадающий список и менять его значения во время игры программно, из скрипта. В предыдущем ответе предложили сделать как-то что-то с enum. Однако перечисление enum является строго типизированным значением, что значит, что вы не можете менять его в "рантайме", то есть во время игры. Вы можете только задать сразу стартовые значения из скрипта. Перечисления - это, скажем так, константа.
Вместо этого я могу предложить вам попробовать реализовать вашу идею с помощью массива со значениями:
string[] modes = new string[] {"Disabled", "ClickAnywhere", "ClickOnDialog", "ClickOnButton"};
И простой переменной типа string:
string current_mode;
Когда нужно сменить тип, то просто сменяете:
current_mode = modes[2];
Или можно вообще без массива и менять напрямую:
current_mode = "ClickOnDialog";
Чтобы проверить режим, используете простейшую проверку строк:
switch (current_mode) {
case "Disabled":
// Do 1
break;
case ClickAnywhere:
// Do 2
break;
}
Очень надеюсь, что помог вам. Если есть какие-либо вопросы - задавайте, я обязательно отвечу. Если мой ответ вам помог, пожалуйста, примите его, нажав на галочку.
