C# Unity:如何在ScriptableObjects中使用泛型?
我创建了一个可编写脚本的对象,如下所示:C# Unity:如何在ScriptableObjects中使用泛型?,c#,unity3d,C#,Unity3d,我创建了一个可编写脚本的对象,如下所示: [CreateAssetMenu(fileName = "PlayerPrefsDefault", menuName = "Base/PlayerPrefsDefault", order = 1)] public class PlayerPrefsDefaults : ScriptableObject { public List<PlayerPrefsDefaultInt> playerPrefsDefaultInts = new L
[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> { }
}
我希望能够将任意值(int、float、bool、string、UnityEngine.Vector3等)分配给值变量(并使inspector GUI适应使用类型所做的选择,我知道如何做)
最后,一般来说:如何才能对ScriptableObjects尽可能通用?这是不可能的,因为像
PlayerPrefsDefault
这样的泛型是不可序列化的。另外,您的第二次尝试System.Type
和object
也不可序列化。
public List<PlayerPrefsDefault<int>> playerPrefsDefaultInts;
[Serializable]
public class PlayerPrefsDefault
{
public System.Type type;
public string key;
public object value;
}