Unity c# -实例化调用方法的预制

本文关键字:方法 调用 实例化 Unity | 更新日期: 2023-09-27 18:07:38

我试图实例化一个预制在PlayerController脚本中的方法,当一个掉落事件发生在TileController脚本。

如果我在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;
}

我想这是一个非常简单的东西,我错过了,但我不能确定它是什么。

Unity c# -实例化调用方法的预制

你的控制器类有一个名为"player"的成员,但它没有设置为任何东西,它是空的,这就是为什么你得到一个NullReferenceException。第一种方法是正确的。

就像你评论Peter的帖子一样。首先在开始函数中检查你的参考"玩家"是否等于null。GetComponent只是尝试获取组件,但如果找不到它将返回null。

如果它不是null,那么检查一下,也许在某些代码中你销毁了播放器引用下的对象