Unity C# - 实例化预调用方法

时间:2016-09-17 21:44:12

标签: c# instantiation unity5

在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 个答案:

答案 0 :(得分:0)

您的控制器类有一个名为" player"但它没有设置为任何东西,它是null,这就是你得到NullReferenceException的原因。你做到的第一种方式是正确的。

答案 1 :(得分:0)

当你对彼得的帖子发表评论时。 首先检查Start函数是你的引用“player”等于null。 GetComponent只是尝试获取组件,但如果找不到它将返回null。

如果它不为null那么检查,也许在某些代码中你会在玩家参考下销毁对象。