Mathijs-Bakker / Extenject

Dependency Injection Framework for Unity Game Engine
MIT License
512 stars 95 forks source link

Failed to remove SceneContext from SceneContextRegistry #61

Open bilalakil opened 1 year ago

bilalakil commented 1 year ago

Describe the bug I'm getting this warning message in the console for no significant reason: "Failed to remove SceneContext from SceneContextRegistry"

To Reproduce Add this static class to a project to unload a scene in case when the projected is started from the wrong scene:

public static class StartSceneController 
{
    [RuntimeInitializeOnLoadMethod]
    private static void onAppLoaded()
    {
        Scene scene = SceneManager.GetActiveScene();

        if (scene.buildIndex != 0)
                SceneManager.LoadScene(0);
    }
}

Expected behavior No warnings in the console.

Extenject and Unity info (please complete the following information):

Zenject version: 9.3.1
Unity version: 2021.3.12f1
Project's scripting backend [e.g. Mono/IL2CPP]: mono
wayheart commented 6 months ago
public async UniTaskVoid LoadSceneAsync(string nextScene, Action onLoaded = null)
{
    if (SceneManager.GetActiveScene().name == nextScene)
    {
        onLoaded?.Invoke();
        return;
    }

    AsyncOperation asyncOperation = SceneManager.LoadSceneAsync(nextScene);

    asyncOperation.completed += _ => onLoaded?.Invoke();

    await UniTask.WaitUntil(() => asyncOperation.isDone);
}

I have the same problem.

wayheart commented 6 months ago

The problem was that I called the scene change in Awake, changed it to Start. I realized this after reading the Extenject documentation