簡體   English   中英

Unity C#-實例化預制調用方法

[英]Unity C# - Instantiate prefab calling a method

當TileController腳本中發生放置事件時,我正在嘗試使用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;
}

我認為這確實很簡單,但我無法確定它是什么。

您的控制器類具有一個名為“ player”的成員,但未設置任何內容,它為null,這就是為什么要獲取NullReferenceException的原因。 您的第一種方式是正確的。

當您評論Peter的帖子時。 開始功能中的第一個檢查是您的參考“玩家”是否等於null。 GetComponent只是嘗試獲取組件,但是如果找不到,它將返回null。

如果它不為null,請檢查,也許在某些代碼中您可以銷毀玩家參考下的對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM