我正在嘗試創建一個靜態 GameAssets 類,我可以在其中拖入它的參考我的 Prefabs 以管理我的游戲的每個 GameObject。
我在這里遇到的問題是,當我開始游戲時,我的 GameAssets 實體為空(我不想要),它正在實體化 GameAssets 的克隆而沒有鏈接到它的參考。
GameAssets 類的代碼
public class GameAssets : MonoBehaviour
{
private static GameAssets _i;
public static GameAssets i
{
get
{
if (_i == null)
_i = Instantiate(Resources.Load<GameAssets>("GameAssets"));
return _i;
}
}
public GameObject ProjectileLaserBall;
}
層次結構和檢查器
我們可以看到我有一個名為 GameAssets 的空游戲物件,預制件已經鏈接到它的參考!如何讓 Unity 理解使用現有的 GameAssets 而不是在沒有參考的情況下創建它的克隆?
(正如我的腳本中所要求的,創建了一個克隆) 類的克隆
uj5u.com熱心網友回復:
在這種情況下,如層次結構圖所示,您不需要創建類的新實體。您的場景中已經有一個實體。
因此,當您開始游戲時,您希望靜態參考指向 Unity 在加載場景后已經創建的已經實體化的類。
代碼將如下所示:
public class GameAssets : MonoBehaviour
{
private static GameAssets _i;
public static GameAssets i
{
get
{
if (_i == null)
_i = this;
return _i;
}
}
public GameObject ProjectileLaserBall;
}
您的代碼確實使用了該Resources檔案夾。這讓我覺得如果這個GameAssets專案也在那里,你也有一個預制件。在這種情況下,您的意圖可能是不在GamesAssets場景中定義物件,而是在運行時加載一個物件。
使用預制件,您不能添加對場景物件的參考(在常識中),但您可以添加對其他預制件的參考。因此,如果您想這樣做,請確保您ProjectileLaserBall的也是預制件,實體化GameAssets物件,添加確保您在場景中還沒有GameAssets物件(因為將創建一個新物件) . 此類的代碼仍與我在上面顯示的相同,但您將完全從不同的類實體化資產。如果您已正確完成所有操作,則層次結構中應該有一個GameAssets專案可以通過以下方式訪問GameAssets.i
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/513965.html
上一篇:計算谷歌表之間的轉換時間
