Я создал объект 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?