我想制作一个程序,如果它从检查器中获取 TextAsset(它放置在“ExampleEditor”中),它会制作一个自定义数据实例以使用 blendshape 动画。
起初,我制作了不使用 [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有关吗?