

Onclickでボタンをクリックすると(golds)から-=200するようにしたいのですが、  
error CS0428: Cannot convert method group `OnClick' to non-delegate
type`bool'. Consider using parentheses to invoke the methodとでました。  
どのようにすればよいでしょうか

[code]

    using UnityEngine;
    using System.Collections;
    using UnityEngine.UI;
    public class shop: MonoBehaviour {
        public int golds = 300;
        public Text scoreText;
        /// ボタンをクリックした時の処理
        public void OnClick() {
            Debug.Log ("Button click!");
        }
    
        void Start () {
            scoreText.text = "golds:" + golds;
            if (OnClick) {
                golds -= 200;
            }
        }
    
        void Update () {
        }
    }
    
[/code]


CC BY-SA 3.0
2015-08-06T18:24:52.560
13120
2015-08-08T07:41:19.720
2015-08-06T20:35:25.033
4236
9268
question
c# unity3d
error CS0428: Cannot convert method group `OnClick' to non-delegate type `bool'. Consider using parentheses to invoke the method


以下のような方法は、いかがでしょうか？

* * *

①  
gold変数保持のためのスクリプトを用意して、GameObjectにアタッチ。

[code]

    public class MoneyBehaviour: MonoBehaviour{
        public int golds = 300;
    }
    
[/code]

* * *

②  
shop.csは、Buttonコンポーネントを持ったGamenObjectにアタッチ。  
moneyBehaviourには、①で作業したMoneyBehaviourを割り当て。

[code]

    public class shop: MonoBehaviour {
       public MoneyBehaviour moneyBehaviour;
       public Text scoreText;
    
       void Start () {
    
           Button button = this.GetComponent<Button>();
    
           button.onClick.AddListener(OnClick);
    
           this.UpdateText ();
       }
    
       void Update () {
       }
    
    
       /// ボタンをクリックした時の処理
       void OnClick() {
         Debug.Log ("Button click!");
         moneyBehaviour.golds -= 200;
         this.UpdateText ();
       }
    
       void UpdateText(){
           scoreText.text = "golds:" + moneyBehaviour.golds;
       }       
    
    }
    
[/code]

* * *


CC BY-SA 3.0
2015-08-07T02:24:13.100
13126
2015-08-08T07:41:19.720
2015-08-08T07:41:19.720
3766
3766
13120
answer