UnityのUnityEditorクラスのOnInspectorGUIメソッドを使用してキャッチ22の状況に陥っているようです。私は簡単に編集用のインスペクタで配列要素に名前を付けたい、現在私はドキュメントごとに、使用しています:Unity3D - カスタムインスペクタコードで配列を使用する方法は?
public float[] aBaseStats = new float[35];
:私のJ_Characterスクリプトで
public override void OnInspectorGUI()
{
J_Character charScript = (J_Character)target;
charScript.aBaseStats[0] = EditorGUILayout.FloatField("Base Health", charScript.aBaseStats[0]);
}
を私はそうのようなaBaseStats配列を初期化します問題は、私は私がこの私を推測している
charScript.aBaseStats[0] = EditorGUILayout.FloatField("Base Health", charScript.aBaseStats[0]);
ラインを指している範囲エラー外のインデックスを取得、私はエディタで何かをやろう(したがってOnInspectorGUIが呼び出される)たびということですなぜなら、私の配列はゲームの開始時に初期化され、エディタコードは開発中に常に実行されているからです。
どうすればこのような状況になるのですか?
多くのありがとうございます。
ありがとうございました。私はStartとAwakeの両方で試してみましたが、うまくいきません - おそらくそれらの関数はエディターではなく、ゲームの開始時にのみ実行されるからです。一度実行されるエディタコールバック関数で初期化することで意味を広げることができますか?お願いします? – Absinthe
@Absintheエディタのコールバック関数は数多くあり、どの関数を使用しているのかわかりません。使用しているすべてのUnityの 'OnSomething'関数をリストすると良いでしょう。一度実行すると正しいものを教えてくれます。 – Programmer
@Absintheもっと簡単なことを試してみてください。 'charScript.aBaseStats [0] = 1f;'を試し、同じエラーがまだ出るかどうか確認してください。あなたがそうしたら、それをうまく初期化しなかった。 'CharScript.aBaseStats [0] = EditorGUILayout.FloatField(" Base Health "、charScript.aBaseStats [0]);' – Programmer