首页 文章

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

提问于
浏览
0

我想在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

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

  • 0

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

    如果它不为null那么检查,也许在某些代码中你破坏了玩家引用下的对象 .

相关问题