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;
    }