scriptableObjectにarreyやdictionaryを設定するには?
string[]の入ったscriptableObjectは作成できました。
しかし下記のように、string[]とint[]をいれたものは作成できず。(コンパイルは通るが、int[]がなかったことに。)
C#
1public class AllyMemberID : ScriptableObject 2{ 3 //味方のメンバーリスト 4 [SerializeField] 5 private string[] allyMemberIDs = { "hoge1", "hoge2", "hoge3"}; 6 private int[] allyNum = new int[3] { 1, 2, 3}; 7 8 public void SetAllyMemberID(string[] allyMemberIDs) 9 { 10 this.allyMemberIDs = allyMemberIDs; 11 } 12 public string[] GetAllyMemberID() 13 { 14 return allyMemberIDs; 15 } 16 public void SetAllyNum(int[] allyNum) 17 { 18 this.allyNum = allyNum; 19 } 20 public int[] GetAllyNum() 21 { 22 return allyNum; 23 } 24 25}
あなたのおっしゃる通り、普通の人なら配列にする内容で、その定石を無視する理由が分かりませんし、それで困らないはずです。
なぜ、そうしたいのかを明確にしてください。
配列にするのが最も良いパフォーマンスで、最も簡単なコードで済みます。
どうしても a0 a1 を使うというダサいやりかたがしたいなら、次のようにループする直前で配列にすればいいでしょう。
var a = new[] { a0, a1 };
> ScriptableObjectにint arrayをうまく入れられなかった
これが真の問題ではないでしょうか。Unityの公式ドキュメント曰くうまく入れられるはずなので。
なぜうまく入れられなかったかを追記してください。
「NullReferenceException」→何かしらがNullなので探してください。
https://docs.unity3d.com/ja/current/Manual/NullReferenceException.html
ここだけ見ても分かりません(他の場所がエラーになっているかもしれない)。ソースコードを正確に提示してください。
質問文がごちゃごちゃなので、①②どちらかの方法で内容を整理して頂きたいです。
①編集履歴から修正した文章は見れますから、現在の質問と関係ない部分(取り消し線が掛かっている部分)は削除してください。そしてタイトルを「scriptableObjectで作ったステータスをまとめる親を作るには。?」に変えてください。
②追加質問をこの質問文から取り消して、1度質問をクローズして頂きたいです。「scriptableObjectにarreyやdictionaryを設定するには?」の回答に対しては「配列はできるがDictionaryはできない」で恐らく終わっている話なので。
その場合、追加質問については別途質問を立ててください。
回答2件
あなたの回答
tips
プレビュー