장면이 완전히로드 될 때까지 기다리는 방법은 무엇입니까?

Wojtek Wencel

gameObject에서 DontDestroyOnLoad으로 이동하려면 씬이 완전히로드 될 때까지 기다려야 합니다. 너무 빨리하면 (을 호출 한 직후 SceneManager.LoadScene())가 gameObject사라집니다. 이 게시물을 기반 으로이 문제를 해결하기 위해 장면 로딩 클래스를 구현했습니다.

public static class CustomSceneManager
{
    public delegate void SceneChange(string sceneName);

    public static event SceneChange LoadScene;
    public static event SceneChange UnloadScene;

    private static IEnumerator LoadLevel (string sceneName){
        var asyncLoadLevel = SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Single);
        while (!asyncLoadLevel.isDone){
            Debug.Log("Loading the Scene"); 
            yield return null;
        }
    }
    
    public static void OnLoadScene(string newSceneName)
    {
        OnUnloadScene(newSceneName);
        LoadLevel(newSceneName);
        LoadScene?.Invoke(newSceneName);
    }
    private static void OnUnloadScene(string newSceneName)
    {
        UnloadScene?.Invoke(newSceneName);
    }
}

두 개의 이벤트를 호출하고 있습니다 ( LoadSceneUnloadScene). 그러나 LoadLevel(newSceneName)작동하지 않습니다. 단순히 장면을로드하지 않습니다. 내가 여기서 뭘 잘못하고 있니?

편집하다:

이제 다음과 같이 methid를 MonoBehavior호출하는 스크립트 참조를 전달합니다 OnLoadScene.

    public static void OnLoadScene(MonoBehaviour loader, string newSceneName)
    {
        UnloadScene?.Invoke(newSceneName);
        loader.StartCoroutine(LoadLevel(newSceneName));
        Debug.Log(SceneManager.GetActiveScene().name); // this line returns previous scene
        LoadScene?.Invoke(newSceneName);
    }

이제 장면이로드되지만 현재로드 된 장면을 확인하면 이전 장면 이름을 반환합니다.

편집 2 :

더 정확히 말하면 내가 교체 Debug.Log(SceneManager.GetActiveScene().name);Debug.Log(SceneManager.GetSceneByName(newSceneName).isLoaded);그것은 반환 False.

derHugo

을 사용하여 coroutienes를 실행해야합니다 StartCoroutine.

MonoBehaviour코 루틴을 실행할 참조를 전달 하거나 단순히 클래스를 절대 파괴되지 않는 싱글 톤으로 만들어야합니다.

실제로 이벤트가 아직로드되지 않았을 때 이벤트를 너무 일찍 호출하지만 방금로드하기 시작 했으므로 예를 들어

public class CustomSceneManager : MonoBehaviour
{
    public delegate void SceneChange(string sceneName);

    public static event SceneChange LoadScene;
    public static event SceneChange UnloadScene;

    private CustomNetworkManager singleton;

    private void Awake ()
    {
        if(singleton && singleton != this)
        {
            Destroy(gameObject);
        }

        singleton = this;
        DontDestroyOnLoad (gameObject);
    }
    
    private static IEnumerator LoadLevel (string sceneName){
        var asyncLoadLevel = SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Single);
        while (!asyncLoadLevel.isDone){
            Debug.Log("Loading the Scene"); 
            yield return null;
        }

        LoadScene?.Invoke(newSceneName);
    }
    
    public static void OnLoadScene(string newSceneName)
    {
        if(! singleton)
        {
            singleton = new GameObject("CustomNetworkManager").AddComponent<CustomNetworkManager>();
        }

        OnUnloadScene(newSceneName);
        singleton.StartCoroutine(LoadLevel(newSceneName));
    }

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

웹 사이트 콘텐츠가 완전히로드 될 때까지 숨기는 방법은 무엇입니까?

분류에서Dev

Observable이 완료 될 때까지 기다리는 방법은 무엇입니까?

분류에서Dev

DotNetBrowser에서 인쇄하기 전에 녹아웃 페이지로드가 완료 될 때까지 기다리는 방법은 무엇입니까?

분류에서Dev

Synchron Ajax Call-또는 : 모든 것이로드 될 때까지 기다리는 방법은 무엇입니까?

분류에서Dev

헤드리스 크롬을 설정하는 방법은 인쇄하기 전에 페이지가 완전히로드 될 때까지 대기합니까?

분류에서Dev

오디오 클립이로드 될 때까지 기다리는 방법은 무엇입니까?

분류에서Dev

Angular 모듈이로드 될 때까지 기다리는 방법은 무엇입니까?

분류에서Dev

컨테이너 뷰의 뷰가로드 될 때까지 기다리는 방법은 무엇입니까?

분류에서Dev

Terraform이 cloudinit가 완료 될 때까지 기다리도록하는 방법은 무엇입니까?

분류에서Dev

"onAuthStateChanged"가 "currentUser.updateProfile"이 완료 될 때까지 기다리도록하는 방법은 무엇입니까?

분류에서Dev

계속하기 전에 메서드가 완전히 완료 될 때까지 기다리는 방법은 무엇입니까?

분류에서Dev

모든 스크립트가 완전히로드 될 때까지 이미지 클릭을 방지하는 방법

분류에서Dev

완료 될 때까지 기다리지 않고 세 번째 애플리케이션 스레드를 닫는 선호하는 방법은 무엇입니까?

분류에서Dev

스레드 풀의 모든 작업자가 완료 될 때까지 기다리는 가장 좋은 방법은 무엇입니까?

분류에서Dev

VueJS 및 Firebase 저장소 : URI를 데이터베이스에 제출하기 전에 이미지 업로드가 완료 될 때까지 기다리는 방법은 무엇입니까?

분류에서Dev

계속 진행하기 전에 http 요청이 완료 될 때까지 기다리는 방법은 무엇입니까?

분류에서Dev

이전 작업이 완료 될 때까지 파이썬을 기다리게하는 방법은 무엇입니까?

분류에서Dev

JavaScript + Node.js에서 이전 게시물 요청이 완료 될 때까지 기다리는 방법은 무엇입니까?

분류에서Dev

복사 프로세스 (cp)가 완료 될 때까지 기다리는 방법은 무엇입니까?

분류에서Dev

프로그램을 종료하기 전에 동시 ML 스레드가 완료 될 때까지 기다리는 방법은 무엇입니까?

분류에서Dev

Python에서로드 될 때까지 기다리지 않고 Selenium WebDriver (Chrome)로 페이지를 여는 방법은 무엇입니까?

분류에서Dev

기본 활동이 완전히로드 될 때까지로드 활동 표시

분류에서Dev

Azure DevOps Pipeline이 외부 프로세스가 완료 될 때까지 기다리도록하는 방법은 무엇입니까?

분류에서Dev

Google지도 길 찾기 서비스, 모든 요청이 완료 될 때까지 기다리는 방법은 무엇입니까?

분류에서Dev

마지막 결합 요청이 완료 될 때까지 대기하거나 기다리는 방법은 무엇입니까?

분류에서Dev

모든 비동기가 완료 될 때까지 기다리는 방법은 무엇입니까?

분류에서Dev

모든 jQuery로드 기능이 완료 될 때까지 웹 페이지로드를 중지하는 방법은 무엇입니까?

분류에서Dev

완전히로드 될 때까지 벽돌 숨기기 이미지

분류에서Dev

콘텐츠가 완전히로드 될 때까지 기능 방지 시도

Related 관련 기사

  1. 1

    웹 사이트 콘텐츠가 완전히로드 될 때까지 숨기는 방법은 무엇입니까?

  2. 2

    Observable이 완료 될 때까지 기다리는 방법은 무엇입니까?

  3. 3

    DotNetBrowser에서 인쇄하기 전에 녹아웃 페이지로드가 완료 될 때까지 기다리는 방법은 무엇입니까?

  4. 4

    Synchron Ajax Call-또는 : 모든 것이로드 될 때까지 기다리는 방법은 무엇입니까?

  5. 5

    헤드리스 크롬을 설정하는 방법은 인쇄하기 전에 페이지가 완전히로드 될 때까지 대기합니까?

  6. 6

    오디오 클립이로드 될 때까지 기다리는 방법은 무엇입니까?

  7. 7

    Angular 모듈이로드 될 때까지 기다리는 방법은 무엇입니까?

  8. 8

    컨테이너 뷰의 뷰가로드 될 때까지 기다리는 방법은 무엇입니까?

  9. 9

    Terraform이 cloudinit가 완료 될 때까지 기다리도록하는 방법은 무엇입니까?

  10. 10

    "onAuthStateChanged"가 "currentUser.updateProfile"이 완료 될 때까지 기다리도록하는 방법은 무엇입니까?

  11. 11

    계속하기 전에 메서드가 완전히 완료 될 때까지 기다리는 방법은 무엇입니까?

  12. 12

    모든 스크립트가 완전히로드 될 때까지 이미지 클릭을 방지하는 방법

  13. 13

    완료 될 때까지 기다리지 않고 세 번째 애플리케이션 스레드를 닫는 선호하는 방법은 무엇입니까?

  14. 14

    스레드 풀의 모든 작업자가 완료 될 때까지 기다리는 가장 좋은 방법은 무엇입니까?

  15. 15

    VueJS 및 Firebase 저장소 : URI를 데이터베이스에 제출하기 전에 이미지 업로드가 완료 될 때까지 기다리는 방법은 무엇입니까?

  16. 16

    계속 진행하기 전에 http 요청이 완료 될 때까지 기다리는 방법은 무엇입니까?

  17. 17

    이전 작업이 완료 될 때까지 파이썬을 기다리게하는 방법은 무엇입니까?

  18. 18

    JavaScript + Node.js에서 이전 게시물 요청이 완료 될 때까지 기다리는 방법은 무엇입니까?

  19. 19

    복사 프로세스 (cp)가 완료 될 때까지 기다리는 방법은 무엇입니까?

  20. 20

    프로그램을 종료하기 전에 동시 ML 스레드가 완료 될 때까지 기다리는 방법은 무엇입니까?

  21. 21

    Python에서로드 될 때까지 기다리지 않고 Selenium WebDriver (Chrome)로 페이지를 여는 방법은 무엇입니까?

  22. 22

    기본 활동이 완전히로드 될 때까지로드 활동 표시

  23. 23

    Azure DevOps Pipeline이 외부 프로세스가 완료 될 때까지 기다리도록하는 방법은 무엇입니까?

  24. 24

    Google지도 길 찾기 서비스, 모든 요청이 완료 될 때까지 기다리는 방법은 무엇입니까?

  25. 25

    마지막 결합 요청이 완료 될 때까지 대기하거나 기다리는 방법은 무엇입니까?

  26. 26

    모든 비동기가 완료 될 때까지 기다리는 방법은 무엇입니까?

  27. 27

    모든 jQuery로드 기능이 완료 될 때까지 웹 페이지로드를 중지하는 방법은 무엇입니까?

  28. 28

    완전히로드 될 때까지 벽돌 숨기기 이미지

  29. 29

    콘텐츠가 완전히로드 될 때까지 기능 방지 시도

뜨겁다태그

보관