プロパティがC#でどのように機能するか理解できていません。背景の最初の簡単なビット:最初の1つのレベルマネージャーに取り組んで、その目的は、それぞれのゲームのレベルと情報のリスト(レベルの説明、レベルの画像など)を格納することで、これはすべて単一のScriptableObjectに保存されます。C#プロパティ変数に問題がある(取得と設定)
私は3つのプロパティ、sceneIndex、sceneNameとLevelIDを持っているとしましょう。
sceneIndexは、私が1のインスペクタで変更できる必要があり、ビルド設定のレベルインデックスと一致する必要がある変数です。
シーン名は、ユニティのインスペクタで編集できません。常にレベルの名前にする必要があります。 (これはsceneIndexによって決まります)
レベルIDは、常にレベルリストのこのクラスのインデックスに設定する必要があります。
ここに私の現在のコードがあります - 現在、私はsceneIndexを変更すると、私のsceneNameはインスペクタで一致する名前に更新されていませんし、私のリストに新しい要素を追加するとLevelIDは更新されません。
public class LevelDataBase : ScriptableObject {
[System.Serializable]
public class LevelData {
[SerializeField]
public string p_sceneName{//the levelName
get{ return sceneName; }
set{ sceneName = SceneManager.GetSceneAt (sceneIndex).name; }// it should always be set depending on the Scene Index
}
public string sceneName;//Properties dont display in unity's inspector so i have to use secondary variable for it to be displayed.
public int sceneIndex;//the scene index i should be able to change and then the scene Name should Updatedepending on the value
[SerializeField]
public int p_LevelID {//the Level id Should always be the index of this class in the list.
get{ return LevelID; }
set{ LevelID = LevelList.IndexOf (this); }
}
public int LevelID;
public string DisplayName;
public Sprite Image;
public string Description;
}
public List<LevelData> LevelList;//this is a list containing all the levels in the game
}
感謝〜スコット
"のdoesntの仕事は、" - 適切な記述ではありません。 –