インスペクタから 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に関連していますか?