

ボタンが二つあります そしてそれぞれ変数を持っていて`price(100)`,`price(50)`があります。

ボタンを押すと`golds(300)`から`-=price`されます。  
下記のコードを実行したところ、`golds`が共有されず、それぞれの値をもっているようです。

  1. `golds`を共有させるにはどうすればいいでしょうか
  2. `golds >= 0`だと ０以下の数字 例えば `golds30-place40`の場合 計算後０以下なら式を適応させないようにしたいのですが、０以下の数字まで適応される

* * *
[code]

    using UnityEngine;
    using System.Collections;
    using UnityEngine.UI;
    
    public class shop : MonoBehaviour {
    
        public DragonStatus status;
        public DeathStatus status2;
        public int Attack;
        public int shield;
        public int price;
        public int golds = 300;
        public int Button;
        public Text goldtext;
    
        void Start() {
            int gainAttack = Attack;
            int gainshield = shield;
    
            Button button = this.GetComponent<Button>();
    
            button.onClick.AddListener(gainItem);
        }
    
        void gainItem() {
            if (golds >= 0) {
                golds -= price;
            } else {
                Debug.Log("not enough money");
            }
        }
    
        public void checker() {
            string str = golds.ToString();
        }
    
        void UpdateText() {
            goldtext.text = "golds" + golds;
        }
    }
    
[/code]


CC BY-SA 3.0
2015-08-16T14:16:51.123
14488
2016-01-15T13:47:13.323
2015-08-17T21:44:44.183
9268
9268
question
c# unity3d
変数の値を複数のボタンで共有する方法


2つの「ボタン」は"shop"の2つのインスタンスと結びついています（よね？）。  
それなら、当然ボタンごとのインスタンスは別ですから、インスタンスに属するプロパティである"golds"も別です。  
共有させるなら、次のような方法が考えられるでしょう。

  * 1つのshopに、2つのボタンを結びつける
  * 2つのボタン以外の場所にプロパティ"Golds"をもったインスタンスを用意して、"shop"のGoldsは当該インスタンスのGoldsを返す

ただ、"shop"クラスに"price"と"golds"と"DragonStatus"と"Attack"が混在している時点で、個人的には何のクラスなのか理解できませんでしたので、的外れかもしれません。


CC BY-SA 3.0
2015-08-18T10:57:10.310
14589
2015-08-18T10:57:10.310
10588
14488
answer