Как изменить выпадающий список в инспекторе из кода?

Я пишу игру на юнити. Есть задача, менять значение выпадающего списка (!В инспекторе!) во время игры, из кода. Необходимо написать метод, выполняющий эту задачу. Как это реализовать? Вот код скрипта: 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;
}

Очень надеюсь, что помог вам. Если есть какие-либо вопросы - задавайте, я обязательно отвечу. Если мой ответ вам помог, пожалуйста, примите его, нажав на галочку.

→ Ссылка