【发布时间】:2020-05-19 20:13:21
【问题描述】:
Unity 新手在这里 :)
我有一个按钮,它调用这个函数,它基本上设置了一个要实例化的预制件。
public void setTurret()
{
towerNode.setTurretType(turret)
Debug.Log("selected shop turret:" + turret.name);
}
我的Tower_Node 类处理实际的实例化
public class Tower_Node : MonoBehaviour
{
private GameObject turret;
public void setTurretType(TowerType _turret)
{
turret= _turret.prefab;
}
private void OnMouseDown()
{
Instantiate(turret,GetBuildPosition(),Quaternion.identity);
}
...}
编辑:我也试过了
public class Tower_Node : MonoBehaviour
{
private TowerType turret;
public void setTurretType(TowerType _turret)
{
turret = _turret;
}
private void OnMouseDown()
{
Instantiate(turret.prefab,GetBuildPosition(),Quaternion.identity);
}
...}
--
使用setTurretType 方法设置炮塔有效。如果我用 Debug.Log() 检查它,我得到了正确的 TowerType,但在函数之外,游戏对象仍然是 =null,当我尝试实例化它时,它会给我一个 NullReferenceException(因为 Gameobject 显然是 null)
我在这里错过了什么?
感谢您的回答。
【问题讨论】:
-
是否有可能有多个
Tower_Node实例,但您没有在所有实例上都使用setTurretType? -
我的
Tower_Node是一个预制件,它在我的场景中多次存在。setTurretType应该更新所有这些,因为它是预制的,对吧?
标签: c# unity3d gameobject