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,我不知道为什么。
有什么想法吗?
答案 0 :(得分:0)
FindObjectOfType在场景中查找并返回第一次出现的类型T.显然,场景中没有T对象(没有塔)因此假设必须找到一个是错误的,因此尝试检索属性会产生错误。
为什么你这样做呢?如果您正在尝试创建塔,则该预制件应该直接在脚本中引用(分配给检查器中的公共var),或者通过在运行时加载资源来提供。