Jump to content

[SOLVED] Как отобразить вложенный массив классов в редакторе?


photo

Recommended Posts

Posted (edited)

Всех приветствую! Уважаемые разработчики, я пишу большой скрипт на C# для квестов (для назначения данных из редактора) в своей игре, и натолкнулся на следующее. Мне нужно создать массив массивов классов. Звучит как тавтология, но зато четко отражает суть) Одинарный массив классов создаётся и отображается в редакторе превосходно, но вот вложенный в класс класс (почитал, C# такое вроде поддерживает), хоть и отображается в редакторе, но отсутствует поле с присвоением индекса! 

Пример кода:

public class quest //В компоненте создаём класс

(

   public class quest_id //Создаём вложенный класс

   {

   // здесь объявляем переменные для текущей итерации квеста

   } 

)

//далее, здесь же, объявляем наш класс:

public quest[] quest_main; //если объявить так, то вложенный класс quest_id не отобразиться в редакторе 

 

//если объявить так, то вложенный класс отобразится в редакторе только в виде имени, без возможности указать количество элементов данного массива классов (попросту нет поля с вводом этих элементов), так же не отображаются публичные переменные вложенного класс в редакторе:

public quest[] quest_main; // виден в редакторе и можно назначать элементы массива

public quest.quest_id[] quest_main_id;//виден в редакторе, но нет возможности назначать элементы массива (поле с вводом отсутствует)

 

Надеюсь, объяснил) 

Спасибо за любую помощь!

Edited by yurickon
  • yurickon changed the title to Как отобразить вложенный массив классов в редакторе?
Posted

День добрый.

Вы объявили вложенный класс, но нигде не объявили массив инстансов вложенного класса.
Например:

public class quest
{
    public class quest_id
    {
        string name;
        int id;
    }
    public quest_id[] ids; // !!!
}
public quest[] quest_main;

 

 

  • Thanks 1
Posted

@alexander Таак, это интересно! Да, кажется, я этого не сделал... Ладно, приду домой, реализую, по результатам отпишусь.

Большое спасибо за подсказку!

Posted (edited)

Итак, что у меня получается в проекте.

Код: 

[Component(PropertyGuid = "4b09e5e2cd367e2092566aad0df573a6f8a97f1c")]
public class npc_quest_adv : Component
{

    public Quest_adv_number[] quest_adv_npc;

    public class Quest_adv_number
    {

        public Quest_adv_item[] quest_adv_Item;

        public class Quest_adv_item
        {
            public int Save_dialoq_data;
            [Parameter(Group = "НОМЕР ЗАПИСИ В БЛОКНОТЕ", Tooltip = "НОМЕР ЗАПИСИ В БЛОКНОТЕ [0] / Итерация записи блокнота [1]")]
            public int[] Notepad_quest_id = new int[2];
            [Parameter(Group = "ПЕРЕКЛЮЧЕНИЯ СОБЫТИЯ В ДИАЛОГЕ", Tooltip = "В этой вкладке назначаем переменные, для блокнота")]
            public int Quest_adv_men_dial = 0;//переменная обновления диалогов в квестах

            [ShowInEditor]
            [Parameter(Group = "ЗАПИСЬ В БЛОКНОТ", Tooltip = "В этой вкладке назначаем переменные, для блокнота")]
            public int[] Quest_adv_notepad_name;
            [Parameter(Group = "ЗАПИСЬ В БЛОКНОТ", Tooltip = "В этой вкладке назначаем переменные, для блокнота")]
            public int[] Quest_adv_notepad_destr;
            [Parameter(Group = "ЗАПИСЬ В БЛОКНОТ", Tooltip = "В этой вкладке назначаем переменные, для блокнота")]
            public int[] Quest_adv_notepad_msg;

         }

     }

}

Результат:

image.png.f6a2b713b5d96f9b014a0aaa98745500.png

Как видим, все по прежнему. Что я делаю не так?

Спасибо!

p.s. @alexander Для окончательной проверки вставил в компонент ваш код. Результат тот же что и у меня:

image.png.fc3046386973aab5c904ea4944543a08.png

Переменные внутреннего класса сделал public

Edited by yurickon
Posted

Прикол! Выглядит, как баг в пропертях.

Если написать вот так (вынести вложенный класс наружу), то всё будет работать:

public class test : Component
{
    public Quest_adv_number[] quest_adv_npc;

    public class Quest_adv_number
    {
        public Quest_adv_item[] quest_adv_Item;
    } 
    
    public class Quest_adv_item
    {
        public int Save_dialoq_data;
        [Parameter(Group = "НОМЕР ЗАПИСИ В БЛОКНОТЕ", Tooltip = "НОМЕР ЗАПИСИ В БЛОКНОТЕ [0] / Итерация записи блокнота [1]")]
        public int[] Notepad_quest_id = new int[2];
        [Parameter(Group = "ПЕРЕКЛЮЧЕНИЯ СОБЫТИЯ В ДИАЛОГЕ", Tooltip = "В этой вкладке назначаем переменные, для блокнота")]
        public int Quest_adv_men_dial = 0;//переменная обновления диалогов в квестах

        [ShowInEditor]
        [Parameter(Group = "ЗАПИСЬ В БЛОКНОТ", Tooltip = "В этой вкладке назначаем переменные, для блокнота")]
        public int[] Quest_adv_notepad_name;
        [Parameter(Group = "ЗАПИСЬ В БЛОКНОТ", Tooltip = "В этой вкладке назначаем переменные, для блокнота")]
        public int[] Quest_adv_notepad_destr;
        [Parameter(Group = "ЗАПИСЬ В БЛОКНОТ", Tooltip = "В этой вкладке назначаем переменные, для блокнота")]
        public int[] Quest_adv_notepad_msg;
    }
}

image.png

 

  • Thanks 1
Posted

@alexander Ого! Да, так я не пробовал, а должен был!)

Огромное спасибо!

  • silent changed the title to [SOLVED] Как отобразить вложенный массив классов в редакторе?
×
×
  • Create New...