Godot:BackgroundLoading
(새로운 레벨로 가는 것과 같이) 메인 씬을 교체하려 할 때, 로딩 진행상황을 알려주는 화면을 보여주고 싶을 때가 있을 겁니다. 메인 로드 메소드(ResourceLoader#Load 또는 그냥 GDScript에서 load
함수)는 스레드를 블로킹하기 때문에 리소스가 불러와지기 전까지는 게임이 멈추고 반응하지 않는 것처럼 보일 것입니다. 이 문서에서는 대신 ResourceInteractiveLoader 클래스를 사용하여 보다 부드러운 로딩 화면을 만드는 법에 대해 이야기할 것입니다.
ResourceInteractiveLoader
ResourceInteractiveLoader 클래스는 리소스를 여러 단계에 걸쳐 로드할 수 있도록 합니다. poll
함수가 호출될 때마다 새로운 스테이지가 로드되며 호출한 함수에게로 제어가 반환됩니다. 각 스테이지는 일반적으로 메인 리소스에 의해 로드되는 서브 리소스입니다. 예를 들어 여러분이 10개의 이미지를 로드하는 씬 하나를 불러온다면, 각 이미지가 하나의 스테이지가 될 것입니다.
사용례
대개 아래와 같이 사용합니다
ResourceInteractiveLoader 가져오기
이 함수에서 반환된 ResourceInteractiveLoader를 사용하여 로딩 작업을 관리할 수 있습니다.
폴링(Polling)
이 함수로 로딩을 한단계 더 진행시킵니다. poll 의 각 호출마다 여러분의 리소스의 다음 스테이지를 로드합니다. 각 스테이지는 이미지 하나 또는 메쉬 하나와 같은 하나의 "원자적"인 리소스임을 명심하시기 바랍니다. 그렇기 때문에 로딩에 몇 프레임을 사용할 수 있습니다.
에러가 없으면 OK 가 반환되며, 로딩이 끝나면 ERR_FILE_EOF 가 반환됩니다. 그 외의 다른 리턴값은 에러가 발생했으며 로딩이 멈췄음을 의미합니다.
로딩 진행도(선택사항)
현재 로딩 상황을 알아보려면 다음 함수들을 사용해 보세요:
int ResourceInteractiveLoader::get_stage_count() const;
int ResourceInteractiveLoader::get_stage() const;
- get_stage_count 는 로딩에 필요한 전체 스테이지 수를 반환합니다.
- get_stage 는 현재 불러오는 중이 스테이지를 반환합니다.
강제로 완료시키기 (선택사항)
전체 리소스를 추가 스텝 없이 현재 프레임에 전부 불러오려면 이 함수를 사용합니다.
리소스 가져오기
모든 일들이 잘 진행됐다면 아래 함수로 불러온 리소스를 가져올 수 있습니다.