List型のインスタンス変数の内容を外部変数を用いて変更する方法

C#

public class DungeonDirector : MonoBehaviour { [SerializeField] Text ScenarioMessege;//画面に表示するメインシナリオ入れ Scenario currentScenario;//現在参照しているシナリオ List<Scenario> ScenarioList = new List<Scenario>(); int index; public static int DiseRes; public static int Hier; //ステータス int[] BaseStatus = {100,50}; public static int[] Status = new int[2]; public static ItemData.Item playerWepon; public static ItemData.Item playerArmor; //シナリオクラスひとまとめ class Scenario { public string ScenarioID; public List<string> NextScenarioID; public List<string> Texts; public List<int> Select; public ItemData.Item OrSelect; } //ここから void Start() { ItemLoad(); load00(); currentScenario = scenario_00; ScenarioMessege.text = currentScenario.Texts[0]; } void Update() { if(EventSystem.current.IsPointerOverGameObject()){return;} if(Input.GetMouseButtonDown(0)) { //シナリオ送り if(currentScenario.Texts.Count > index+1) { index++; ScenarioMessege.text = currentScenario.Texts[index]; //もしシナリオの最後でSelectがあるならダイスかY/Nボタンを表示する if(currentScenario.Texts.Count == index+1) { if(currentScenario.Select != null) {GameObject.Find("Dise").GetComponent<Button>().enabled = true;} else if(currentScenario.OrSelect != null) {GameObject.Find("Y/N").GetComponent<Canvas>().enabled = true;} } } else if(currentScenario.Select == null && currentScenario.OrSelect == null) { {StartCoroutine("SetScenario",0);} } } } //1d100ダイスロール判定 public void DiseButtonIn() { GameObject.Find("Dise").GetComponent<Button>().enabled = false; int i = 0; DiseRes = Random.Range(0,101); ScenarioMessege.text = DiseRes.ToString()+"!"; while(i < currentScenario.Select.Count) { //Debug.Log(i); if(DiseRes >=currentScenario.Select[i]) { break; } i++; } StartCoroutine("SetScenario",i); } public void YesButton() { GameObject.Find("Y/N").GetComponent<Canvas>().enabled = false; if(currentScenario.OrSelect.item == true) { if(currentScenario.OrSelect.Type == "Wepon") { playerWepon = currentScenario.OrSelect; } else if(currentScenario.OrSelect.Type == "Armor") { playerArmor = currentScenario.OrSelect; } ScenarioMessege.text = currentScenario.OrSelect.Name+"を装備した!"; ItemLoad(); } StartCoroutine("SetScenario",0); } public void NoButton() { GameObject.Find("Y/N").GetComponent<Canvas>().enabled = false; ScenarioMessege.text = currentScenario.OrSelect.Name+"をすてた"; StartCoroutine("SetScenario",0); } void ItemLoad() { int a = 0; foreach(int i in BaseStatus) { Status[a] = i; a++; } if(playerWepon != null) { a = 0; foreach(int i in playerWepon.WepStatus) { Status[a] += i; a++; } } GameObject.Find("Status").GetComponent<Text>().text = "HP:"+Status[0]+" Special:"+Status[1]; } //シナリオセット IEnumerator SetScenario(int i) { yield return new WaitUntil(() => Input.GetMouseButtonDown(0)); currentScenario = ScenarioList.Find(x => x.ScenarioID == currentScenario.NextScenarioID[i]); index = 0; ScenarioMessege.text = currentScenario.Texts[0]; GameObject.Find("Hier").GetComponent<Text>().text = "第"+Hier+"階層"; } //シナリオ読み込み void load00() { ScenarioList.Add(scenario_00); ScenarioList.Add(scenario_1a); ScenarioList.Add(scenario_1b); ScenarioList.Add(scenario_1c); ScenarioList.Add(scenario_1c1); ScenarioList.Add(scenario_1c2); ScenarioList.Add(scenario_1c3); } /*int DiseRoll_1d100() { DiseRes = Random.Range(0,101); } int DiseRoll_1d6() { DiseRes = Random.Range(0,101); }*/ //シナリオ一覧 Scenario scenario_00 = new Scenario() { ScenarioID ="scenario_00", Texts = new List<string>(){"深い闇に包まれている・・・","bb"}, Select = new List<int>(){100,50,0}, NextScenarioID = new List<string>{"scenario_1a","scenario_1b","scenario_1c"}, }; Scenario scenario_1a = new Scenario() { ScenarioID ="scenario_1a", Texts = new List<string>(){"ロングソードを発見!","装備しますか?"}, //Select = new List<int>(){100,80,0}, OrSelect = ItemData.LongSword, NextScenarioID = new List<string>{"scenario_00"} }; Scenario scenario_1b = new Scenario() { ScenarioID ="scenario_1b", Texts = new List<string>(){"何もない・・・残念だが先を急ごう","bb"}, //Select = new List<int>(){100,80,0}, NextScenarioID = new List<string>{"scenario_00"} }; Scenario scenario_1c = new Scenario() { ScenarioID ="scenario_1c", Texts = new List<string>(){"落とし穴だ!","100:大成功\n99~"+(50-status[1])+":成功\n"+(50-status[1]-1)+"~0:失敗"}, Select = new List<int>(){100,50+status[1],0}, NextScenarioID = new List<string>{"scenario_1c1","scenario_1c2","scenario_1c3"}, }; Scenario scenario_1c1 = new Scenario() { ScenarioID ="scenario_1c1", Texts = new List<string>() {"あなたは落とし穴があることを事前に知っていたかのような身のこなしで華麗に避けた!", "気を取り直したあなたは探索を続ける・・・"}, NextScenarioID = new List<string>{"scenario_00"} }; Scenario scenario_1c2 = new Scenario() { ScenarioID ="scenario_1c2", Texts = new List<string>() {"あなたは素早く穴の縁に手をかけた!", "気を取り直したあなたは探索を続ける・・・"}, NextScenarioID = new List<string>{"scenario_00"} }; Scenario scenario_1c3 = new Scenario() { ScenarioID ="scenario_1c3", Texts = new List<string>() {"あなたはまんまと穴に落ちてしまった!", "〇〇のダメージ!", "気を取り直したあなたは探索を続ける・・・"}, NextScenarioID = new List<string>{"scenario_00"} }; }

コメントを投稿

0 コメント