Skip to content

Godot:BackgroundLoading

(새로운 레벨로 가는 것과 같이) 메인 씬을 교체하려 할 때, 로딩 진행상황을 알려주는 화면을 보여주고 싶을 때가 있을 겁니다. 메인 로드 메소드(ResourceLoader#Load 또는 그냥 GDScript에서 load 함수)는 스레드를 블로킹하기 때문에 리소스가 불러와지기 전까지는 게임이 멈추고 반응하지 않는 것처럼 보일 것입니다. 이 문서에서는 대신 ResourceInteractiveLoader 클래스를 사용하여 보다 부드러운 로딩 화면을 만드는 법에 대해 이야기할 것입니다.

ResourceInteractiveLoader

ResourceInteractiveLoader 클래스는 리소스를 여러 단계에 걸쳐 로드할 수 있도록 합니다. poll 함수가 호출될 때마다 새로운 스테이지가 로드되며 호출한 함수에게로 제어가 반환됩니다. 각 스테이지는 일반적으로 메인 리소스에 의해 로드되는 서브 리소스입니다. 예를 들어 여러분이 10개의 이미지를 로드하는 씬 하나를 불러온다면, 각 이미지가 하나의 스테이지가 될 것입니다.

사용례

대개 아래와 같이 사용합니다

ResourceInteractiveLoader 가져오기

Ref<ResourceInteractiveLoader> ResourceLoader::load_interactive(String p_path);

이 함수에서 반환된 ResourceInteractiveLoader를 사용하여 로딩 작업을 관리할 수 있습니다.

폴링(Polling)

Error ResourceInteractiveLoader::poll();

이 함수로 로딩을 한단계 더 진행시킵니다. poll 의 각 호출마다 여러분의 리소스의 다음 스테이지를 로드합니다. 각 스테이지는 이미지 하나 또는 메쉬 하나와 같은 하나의 "원자적"인 리소스임을 명심하시기 바랍니다. 그렇기 때문에 로딩에 몇 프레임을 사용할 수 있습니다.

에러가 없으면 OK 가 반환되며, 로딩이 끝나면 ERR_FILE_EOF 가 반환됩니다. 그 외의 다른 리턴값은 에러가 발생했으며 로딩이 멈췄음을 의미합니다.

로딩 진행도(선택사항)

현재 로딩 상황을 알아보려면 다음 함수들을 사용해 보세요:

int ResourceInteractiveLoader::get_stage_count() const;
int ResourceInteractiveLoader::get_stage() const;
  • get_stage_count 는 로딩에 필요한 전체 스테이지 수를 반환합니다.
  • get_stage 는 현재 불러오는 중이 스테이지를 반환합니다.

강제로 완료시키기 (선택사항)

Error ResourceInteractiveLoader::wait();

전체 리소스를 추가 스텝 없이 현재 프레임에 전부 불러오려면 이 함수를 사용합니다.

리소스 가져오기

Ref<Resource> ResourceInteractiveLoader::get_resource();

모든 일들이 잘 진행됐다면 아래 함수로 불러온 리소스를 가져올 수 있습니다.

See also

Favorite site