我想在TileController脚本中发生drop事件时使用PlayerController脚本中的方法实例化预制件 .
如果我在TileController中使用:
public void OnDrop (PointerEventData eventData){
GameObject instance = Instantiate(Resources.Load("Player", typeof(GameObject))) as GameObject;
}
预制件在场景上正确加载 .
但如果我使用:
public void OnDrop (PointerEventData eventData){
player.instantiatePlayer ();
}
然后返回错误:
NullReferenceException: Object reference not set to an instance of an object
我正在使用的PlayerController方法是:
public void instantiatePlayer() {
GameObject instance = Instantiate(Resources.Load("Player", typeof(GameObject))) as GameObject;
}
我认为这是非常简单的我缺少但我无法确定它是什么 .
2 回答
你的控制器类有一个名为“player”的成员,但它没有被设置为任何东西,它是null,这就是你得到NullReferenceException的原因 . 你做到的第一种方式是正确的 .
当你评论彼得的帖子时 . 首先检查Start函数是你的引用“player”等于null . GetComponent只是尝试获取组件,但如果找不到它将返回null .
如果它不为null那么检查,也许在某些代码中你破坏了玩家引用下的对象 .