前提・実現したいこと
2次元構造の配列を使おうと思っているのですが
using System.Collections.Generic.List<????>;
の使い方がわからずエラーになってしまいます。
発生している問題・エラーメッセージ
Assets/GameScripts/StageCreate.cs(4,39): error CS0246: The type or namespace name `List' could not be found. Are you missing `Boo.Lang' using directive?
該当のソースコード
using UnityEngine; using System.Collections; using System.Collections.Generic; using System.Collections.Generic.List<????>; public class StageCreate : MonoBehaviour { const int StageTipSize = 140; int currentTipIndex; // 現在のLv ※ 0~1000mで「0」、1000~2000mで「1」が入るイメージ! public int levei = 0; // Lvごとにプレハブを配列で持つ ※List<List<GameObject>>の方がステージ追加しやすいと思う public List<List<GameObject[]>> stageTips; public Transform character; //public GameObject[] stageTips; public int startTipIndex; public int preInstantiate; public List<List<GameObject>> generatedStageList = new List<GameObject>(); void Start() { //初期化処理 currentTipIndex = startTipIndex - 1; UpdateStage(preInstantiate); } void FixedUpdate() { //キャラクターの位置から現在のステージチップのインデックスを計算します int charaPositionIndex = (int)(character.position.z / StageTipSize); //次のステージチップに入ったらステージの更新処理を行います。 if (charaPositionIndex + preInstantiate > currentTipIndex) { UpdateStage(charaPositionIndex + preInstantiate); } } //指定のインデックスまでのステージチップを生成して、管理下におく void UpdateStage (int toTipIndex) { if (toTipIndex <= currentTipIndex) return; //指定のステージチップまで生成するよ for (int i = currentTipIndex + 1; i <= toTipIndex; i++) { GameObject stageObject = GenerateStage(i); //生成したステージチップを管理リストに追加して、 generatedStageList.Add(stageObject); } //ステージ保持上限になるまで古いステージを削除します。 while (generatedStageList.Count > preInstantiate + 4) DestroyOldestStage(); currentTipIndex = toTipIndex; } //指定のインデックス位置にstageオブジェクトをランダムに生成 GameObject GenerateStage (int tipIndex) { GameObject[] stageTips_Get = stageTips[levei]; int nextStageTip = Random.Range(0, stageTips_Get.Length); GameObject stageObject = (GameObject)Instantiate( stageTips_Get[nextStageTip], new Vector3(0, 0, tipIndex * StageTipSize), Quaternion.identity); return stageObject; } //一番古いステージを削除します void DestroyOldestStage () { GameObject oldStage = generatedStageList[0]; generatedStageList.RemoveAt(0); Destroy(oldStage); } }
試したこと
行き当たりばったりで
TとかListとか入れてみましたが
無理でした。
行き当たりばったりでは当然、ダメです。要素数が固定の多次元配列にしてもジャグ配列、と言うやり方もできますし、要素数が可変のList<T> でもできるので、どちらを使いたいかで回答も変わってくるかと思います。改めてご検討ください。
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/arrays/jagged-arrays
> using System.Collections.Generic.List<????>;
それはいったい何ですか? Unity だとそういうのはアリということなら失礼しました。このコメントはスルーしてください。
回答1件
あなたの回答
tips
プレビュー