Unity On Click错误

时间:2016-08-05 22:54:28

标签: unity3d onclick

TowerSelection类我认为工作正常。

 public class TowerSelection : MonoBehaviour {

        public GameObject towerType;

        void Start()  {}

        void Update() {
        }

        public void TowerType (GameObject prefab) {
            towerType = prefab;
            Debug.Log (towerType.name);
        }

    }

TowerSpot类,问题出在OnMouseUp方法" prefabTower = GameObject.FindObject ..."

public class TowerSpot : MonoBehaviour {

    private GameObject prefabTower;

    private GameObject tower;
    private int gold;

    // Use this for initialization
    void Start () {

    }

    // Update is called once per frame
    void Update () {

    }

    public void OnMouseUp()
    {
        if (placeTower())
        {

            **prefabTower = GameObject.FindObjectOfType<TowerSelection>().towerType;**

            Debug.Log (prefabTower.name);

            gold = GameManager.Manager.getGold();

            if (gold > 0)
            {
                Instantiate( prefabTower , this.transform.position, this.transform.rotation);
                GameManager.Manager.currentGold(-20);
            }
            else
            {
                Debug.Log("No hay suficiente dinero");
            }

        }


    }

    private bool placeTower()
    {
        return tower == null;
    }
}

这是我认为它返回的行&#34; NULL&#34;,我尝试过很多事情,但错误仍在继续。

prefabTower = GameObject.FindObjectOfType<TowerSelection>().towerType;

错误就是这个,对象引用没有设置为对象的实例。

我正在做的是塔防游戏,我有2个按钮,取决于我选择的塔,塔1或塔2,在检查员中使用On Click我称之为TowerType方法,我添加了塔&#39; s预制,但是当使用方法FindObjectOfType&lt;&gt;()时,它每次都返回null,我不知道为什么。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

FindObjectOfType在场景中查找并返回第一次出现的类型T.显然,场景中没有T对象(没有塔)因此假设必须找到一个是错误的,因此尝试检索属性会产生错误。

为什么你这样做呢?如果您正在尝试创建塔,则该预制件应该直接在脚本中引用(分配给检查器中的公共var),或者通过在运行时加载资源来提供。