簡體   English   中英

是否有一個方法可以在Unity3D中對象序列化之前調用?

[英]Is there a method that would be called right before the serialization of the object in Unity3D?

有一個類具有無法輕松序列化的數據。 但是,我可以將它准備為可序列化的形式。 那么,是否有任何覆蓋方法將在序列化之前調用以准備數據?

[System.Serializable]
public MyCalss {
    //Unity can serialise this list;
    public List<int> serializableData;

    //class contains a lot of data that cannot be serialized by Unity3D

    protected override void OnSerialize() { // <-- looking for this method
         //pack all my data into the serializableData array
    }
}

public Behaviour: MonoBehaviour {
    MyClass instanceOfMyClass; // will be serialized by Unity3D
}
void OnBeforeSerialize()
void OnAfterDeserialize()

它們存在於界面中

ISerializationCallbackReceiver

所以只需實現此界面即可

如果你想要一個.Net解決方案(而不是afpro的特定於Unity的答案 ),你也可以使用OnSerializingAttribute

[Serializable]
public MyCalss {
    //Unity can serialise this list;
    public List<int> serializableData;

    //class contains a lot of data that cannot be serialized by Unity3D

    [OnSerializing]
    internal void OnSerializingMethod(StreamingContext context)
    {
        //pack all my data into the serializableData array
    }
}

OnSerializing類似,您還具有OnSerializedOnDeserializingOnDeserialized屬性。 它們都需要一個以StreamingContext作為參數的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM