クラス変数(クラスの中、メソッドの外)に入れると同クラスのどのメソッドからでもアクセス出来るのでそれを利用します。
ちなみに今回の目的はGameObjectではなくImageなのでImage型の変数にします。
以下、3パターン挙げますのでお好きな方法でどうぞ。
ちなみにシングルトンは「シングルトンとは何か/シングルトンにする必要性があるか」を理解&考慮した上で作成してください。
方法1:publicなクラス変数を定義しておいて、インスペクタからドラッグ&ドロップ。
C#
1public class Test : MonoBehaviour {
2 //publicにしないとインスペクタに表示されないので注意
3 //セットし忘れるとSetBarの中でエラーが起こるのでそれも注意
4 public Image barImage;
5
6 public void SetBar(int num){
7 if(num <= 100){
8 barImage.fillAmount = (float)num / 100;
9 }
10 }
11}
方法2:Start等、一度だけ呼ばれるメソッドで取得。
C#
1public class Test2 : MonoBehaviour {
2 //こっちの場合はprivateでいい
3 private Image barImage;
4
5 void Start () {
6 barImage = GameObject.Find("Bar").GetComponent<Image>();
7 }
8
9 public void SetBar(int num){
10 if(num <= 100){
11 barImage.fillAmount = (float)num / 100;
12 }
13 }
14}
方法3:null判定して取得する。(変数宣言時はnullなので、最初の1回のみ取得が実行される)
C#
1public class Test3 : MonoBehaviour {
2 //こっちの場合はprivateでいい
3 private Image barImage;
4
5 public void SetBar(int num){
6 if(num <= 100){
7 if (barImage == null) {
8 barImage = GameObject.Find("Bar").GetComponent<Image>();
9 }
10
11 barImage.fillAmount = (float)num / 100;
12 }
13 }
14}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/11/13 05:49 編集