前提・実現したいこと
メダルゲームを作っています。
実現したいこと:ゲームをプレイして獲得したメダルを入れている変数を、違うスクリプトにある残りメダルを入れている変数に足した値を画面上に表示させたいです。
発生している問題
獲得メダルを入れている変数(totalNumber)があるスクリプトから残りメダルを入れているスクリプトの変数(Now)を呼び出そうとすると、最初に宣言した時の値が使われてしまい、値を変更するメソッドにある変更後の値を呼び出すことが出来ません。
該当のソースコード(見てもらうために必要が無いと思われるソースコードは一部省略しております)
C♯
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.PlayerLoop; 5using UnityEngine.UI; 6 7public class Botton : MonoBehaviour//ボタンを押したときに残りメダルから1Playあたりのメダルを引くためのクラス 8 9{ 10 11 public Text Text; 12 public int playMedal = 15;//1Playに必要なメダル 13 private int startMedal =500;//開始時の残りメダル 14 public int nowMedal; //メダルを入れた後の値を表示 15 16 public int Now;//ここの値が呼び出されてしまいます 17 18 GameObject plusScore;//他クラスのスクリプトをアタッチしているゲームオブジェクトを取得 19 PlusScore script;//他クラスのスクリプトを取得する 20 21 // Start is called before the first frame update 22 void Start() 23 { 24 Text.GetComponent<Text>(); 25 plusScore = GameObject.Find("PlusScore"); 26 script = plusScore.GetComponent<PlusScore>(); 27 } 28 public void Plus() //ボタンを押すと残りメダルから1Playのメダル枚数を引く 29 { 30 nowMedal = script.finalMedal- playMedal; //メダルを引く 31 Now = nowMedal; 32 Text.text =Now.ToString()+"枚"; // 33 }
C♯
1using System.Collections; 2using System.Collections.Generic; 3using System.Runtime.ExceptionServices; 4using UnityEditor; 5using UnityEngine; 6using UnityEngine.UI; 7 8public class PlusScore : MonoBehaviour 9{ 10 int totalNumber;//獲得したメダルを入れる変数 11 public int finalMedal = 500;//1Play後の残りメダルを入れる変数。初期値が500なのはわざとです。 12 public Text TextF; 13Botton script; //Bottonスクリプトをアタッチしているオブジェクトを呼び出す 14 public int nowMedal ;//残りメダル 15 16 void Start() 17 { 18 plusScore = GameObject.Find("MedalIn"); 19 script = plusScore.GetComponent<Botton>(); 20 } 21 22 StartCoroutine(Final(script.Now)); //Final1メソッドをscript.Now変数の引数を渡して実行する。この時にscript.Nowの値が最初に宣言した値の0になってしまうのでBottonクラスのPlus()内にある計算後のNowの値を引数として使いたいです。 23 24public IEnumerator Final1(int startNumber) //獲得枚数と残りメダルを足すメソッド 25 { 26 yield return new WaitForSeconds(0.1f);//下の操作を0.1秒待つ処理 27 Text FinalScore = finalscore_Object.GetComponent<Text>(); 28 TextF.GetComponent<Text>(); 29 FinalScore.text = "獲得: " + totalNumber + "枚";//獲得したメダル枚数を画面上に表示する。ここは問題ないです。 30 //獲得メダルを加算する 31 nowMedal = startNumber + totalNumber;//ここでstartNumberが0になってしまっています 32 finalMedal = nowMedal; 33 TextF.text = finalMedal+ "枚"; 34 } 35}
試したこと
staticを使う方法などをやりましたが上手くいきませんでした。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/01 11:35 編集
2020/09/01 15:09
2020/09/02 02:58