我正在異步加載一個可尋址的預制件,其中包含一個名為 Window 的單一行為腳本。視窗具有在實體化時加載的字串變數“請求”。
視窗類定義
public class Window: MonoBehaviour{
public string request;
void Awake(){
request = "load_data";
}
}
實體化預制件并獲取“視窗”參考的代碼。
AsyncOperationHandle<GameObject> loadOp = Addressables.LoadAssetAsync<GameObject>(address);
yield return loadOp;
if (loadOp.Status == AsyncOperationStatus.Succeeded){
var op = Addressables.InstantiateAsync(address);
if (op.IsDone)
{
Window window = loadOp.Result.GetComponent<Window>();
var data = window.request; <------ this is empty
}
}
}
問題 我在資料變數中得到空字串,因為 window.request 是空的。如果我除錯代碼,我可以看到如何呼叫 Window 類中的“Awake”函式并加載變數請求,但稍后我得到空字串,我不明白為什么。
uj5u.com熱心網友回復:
正在運行的 WindowAwake是由 創建的實體InstantiateAsync,而不是由創建的預制件LoadAssetAsync。您應該參考request實體的 :
if (loadOp.Status == AsyncOperationStatus.Succeeded){
Addressables.InstantiateAsync(address).Completed = op =>
{
if (op.Status == AsyncOperationStatus.Succeeded)
{
Window window = op.Result.GetComponent<Window>();
var data = window.request;
}
};
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/362702.html
上一篇:子彈不破壞
下一篇:在Unity中移動預制件
