Unity: Как использовать Generics в ScriptableObjects? - PullRequest
1 голос
/ 09 июля 2019

Я создал объект Scriptable, который выглядит следующим образом:

[CreateAssetMenu(fileName = "PlayerPrefsDefault", menuName = "Base/PlayerPrefsDefault", order = 1)]
public class PlayerPrefsDefaults : ScriptableObject
{
    public List<PlayerPrefsDefaultInt> playerPrefsDefaultInts = new List<PlayerPrefsDefaultInt>();

    [Serializable]
    public class PlayerPrefsDefault<DataType>
    {
        public string key;
        public DataType value;
    }

    [Serializable]
    public class PlayerPrefsDefaultInt : PlayerPrefsDefault<int> { }
}

Пока это работает. Однако это не та эстетика, к которой жаждет мое сердце.

Итак, шаг 1 , почему я не могу, а точнее, как я могу иметь это в моем объекте ScriptableObject (конечно, для инспектора):

    public List<PlayerPrefsDefault<int>> playerPrefsDefaultInts;

Естественно, это подразумевает использование нескольких списков, по одному для каждого типа данных.

Следовательно, шаг 2 , я бы на самом деле предпочел определить:

    [Serializable]
    public class PlayerPrefsDefault
    {
        public System.Type type;
        public string key;
        public object value;
    }

Я хотел бы иметь возможность назначать произвольные значения (int, float, bool, string, UnityEngine.Vector3 и т. Д.) Для переменной значения (и адаптировать графический интерфейс инспектора к выбору, сделанному с типом, я знаю, как сделать это)

В конце концов, вообще говоря: как я могу быть настолько универсальным, насколько это возможно с ScriptableObjects?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...