前提
C#でシューティングゲーム制作しています。
配置データを管理するスクリプトで
以下のこのエラーが出てしまっています。
実現したいこと
ここに実現したいことを箇条書きで書いてください。
発生している問題・エラーメッセージ
Assets\sozai\RoomManager\SaveDataManager.cs(24,58): error CS1061: 'SaveData[]' does not contain a definition for 'Lendth' and no accessible extension method 'Lendth' accepting a first argument of type 'SaveData[]' could be found (are you missing a using directive or an assembly reference?)
該当のソースコード
C#
using System.Collections;using System.Collections.Generic;using UnityEngine; public class SaveDataManager : MonoBehaviour { public static SaveDataList arrangeDataList; //配置データ // Start is called before the first frame update void Start() { //SaveDataList初期化 arrangeDataList = new SaveDataList(); arrangeDataList.saveDatas = new SaveData[] { }; //シーン名を読み込む string stageName = PlayerPrefs.GetString("LastScene"); //シーン名をキーにして保存データを読み込む string data = PlayerPrefs.GetString(stageName); if(data != "") { //ーーーセーブデータが存在する場合ーーー //JSONからSaveDataListに変換する arrangeDataList = JsonUtility.FromJson<SaveDataList>(data); for(int i = 0; i < arrangeDataList.saveDatas.Lendth; i++) { SaveData savedata = arrangeDataList.saveDatas[i]; //配列から取り出す //タグのゲームオブジェクトを探す string objTag = savedata.objTag; GameObject[] objects = GameObject.FindGameObjectsWithTag(objTag); for (int ii = 0; ii < objects.Length; ii++) { GameObject obj = objects[ii]; //配列からGameObjectを取り出す if (objTag == "ItemBox") //宝箱 { ItemBox box = obj.GetComponent<ItemBox>(); if (box.arrangeId == savedata.arrangeId) { box.isClosed = false; //arrangeIdが同じなら開く box.GetComponent<SpriteRenderer>().sprite = box.openImage; } } else if (objTag == "Item") //アイテム { ItemData item = obj.GetComponent<ItemData>(); if (item.arrangeId == savedata.arrangeId) { Destroy(obj); //arrangeIdが同じなら削除 } } else if (objTag == "Enemy") //敵 { EnemyController enemy = obj.GetComponent<EnemyController>(); if (enemy.arrangeId == savedata.arrangeId) { Destroy(obj); //arrangeIdが同じなら削除 } } } } } } // Update is called once per frame void Update() { } //配置Idのセット public static void SetArrangeId(int arrangeId,string objTag) { if(arrangeId == 0 || objTag == "") { //記録しない return; } //追加するために1つ多いSaveData配列を作る SaveData[] newSavedatas = new SaveData[arrangeDataList.saveDatas.Length + 1]; //データをコピーする for(int i = 0; i < arrangeDataList.saveDatas.Length; i++) { newSavedatas[i] = arrangeDataList.saveDatas[i]; } //SaveData作成 SaveData savedata = new SaveData(); savedata.arrangeId = arrangeId; //Idタグを記録 savedata.objTag = objTag; //タグを記録 //SaveData追加 newSavedatas[arrangeDataList.saveDatas.Length] = savedata; arrangeDataList.saveDatas = newSavedatas; } //配置データの保存 public static void SaveArrangeData(string stageName) { if(arrangeDataList.saveDatas != null && stageName != "") { //SaveDataListをJSONデータに変換 string saveJson = JsonUtility.ToJson(arrangeDataList); //シーン名をキーにして保存 PlayerPrefs.SetString(stageName, saveJson); } }}
試したこと
インターネットで検索し打ち直しなど行った
補足情報(FW/ツールのバージョンなど)
Visual Studio2019
Unity 2020.3.25f1
ご教授お願いいたします。
0 コメント