@n_fridman

Unity Property Drawer. Как сделать пользовательский вывод свойств для каждого элемента в списке?

Всем привет, есть вот такой вот такая структура:
[System.Serializable]
    public struct LocalizationResource
    {
        public string name;
        
        public string resourceName;
        public string filename;
        public string webResourceUrl;

        public LocalizationProviderType type;
    }

И вот такой Enum:
[System.Serializable]
    public enum LocalizationProviderType
    {
        UnityResourcesSystem = 0,
        FileSystem = 1,
        WebResourcesSystem = 2
    }


Также есть класс в котором объявлен список из структур, в котором есть список из структур LocalizationResource, вот так это выглядит:
61258a2f23ec1691436425.png

Нужно как-то исхитриться и сделать так, чтобы поля структуры LocalizationResource выводились в зависимости от значение поля type. Примерно вот так :
61258ab55b8df400684315.png
61258ae854645070122620.png
61258b3387038733714019.png

На каждое значение енама отображается свое поле структуры, насколько я знаю это делаеся как-то через PropertyDrawer, но у самого разобраться не получается. Может быть кто-то сможет помочь с этим вопросом?
  • Вопрос задан
  • 40 просмотров
Решения вопроса 1
@pashara
Такую задачу можно решить при помощи аттрибутов у поля.
Вот, например, этим.
Вот так юзать его.
[SerializeField] LocalizationProviderType type;

[ConditionalField("NextState", LocalizationProviderType.WebResourcesSystem )] 
[SerializeField] private string webResourceUrl;

P.S. Имхо, подход на каждый чих иметь своё поле не совсем правильный. По сути, это поле путя, а не какие-то данные, спецефичные для каждого типа данные. То, каким образом эти данные будут использоваться дальше - ответственность других компонентов.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы