我想製作一個程序,如果它從檢查器(它被放置在「ExampleEditor」中)取得一個TextAsset,它會爲使用Blendshape動畫製作一個自定義數據實例。爲什麼C#使用[System.Serializable]來保存實例? (Unity3D)
起初我使自定義數據類不使用[System.Serializable]。
public class Matrix {
public int row;
public int col;
public double[,] mat;
}
我的策略是採取TextAsset,解析來自TextAsset串並最終作出Matrix實例在「Example.cs」字段變量。我想,當它初始化並且首先分配時,我能夠在Example實例中使用該變量。然而,它沒有工作,它拋出'NullReferenceException'。
所以我使用'[System.Serializable]'找到解決方案。它確實有效。 (我知道Unity3D不提供自己的序列化方法多維數組)。
using UnityEngine;
using System;
using System.Collections;
using System.Collections.Generic;
[System.Serializable]
public class Matrix {
[System.Serializable]
public class mRow {
public List<float> aRow = new List<float>();
}
[HideInInspector]
[SerializeField]
public int row;
[HideInInspector]
[SerializeField]
public int col;
//[HideInInspector]
[SerializeField]
public List<mRow> mat = new List<mRow>();
}
最後,我知道解決的辦法,但我不知道爲什麼這個問題發生了。它與GC有關?
這個問題似乎沒有道理?可序列化屬性僅告訴編譯器可以序列化所討論的對象。未標記的屬性不會被序列化。很難知道你想要達到什麼樣的效果/這個描述中究竟是什麼問題。 – War