SceneManager.sceneLoaded = jumpCallBack;
我把它放進去Start()使用
private void jumpCallBack(Scene scene, LoadSceneMode sceneType)
{
Debug.Log("ok");
}
作為回呼列印,我還有一個按鈕,單擊并再次加載此場景。
第一次sceneLoaded完成,它列印一次“ok”,我點擊按鈕再次加載場景,但這一次,它列印了兩次“ok”。還單擊按鈕并再次加載它列印 3 次。為什么 ?每次呼叫sceneLoaded時,如何讓這個回呼只運行一次?
uj5u.com熱心網友回復:
一般來說,如果你想避免多次回呼
首先,我通常會在訂閱之前取消訂閱。即使尚未添加回呼但確保它肯定只存在一次,這也是有效的 - 對于這個物件
SceneManager.sceneLoaded -= jumpCallBack; SceneManager.sceneLoaded = jumpCallBack;然后我認為到目前為止,你只是幸運的是你只使用了一個靜態方法
Debug.Log,而在你的回呼中沒有其他任何東西。我懷疑您的物件被銷毀時忘記取消訂閱private void OnDestroy() { SceneManager.sceneLoaded -= jumpCallBack; }
除此之外,如果沒有有關您的專案的更多詳細資訊,很難說。如果您正在使用例如DontDestroyOnLoad,那么您還需要確保該物件只有一個實體(單例模式)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/432334.html
上一篇:繼續執行“GetKeyUp”命令
