본문으로 건너뛰기

사전 로드 및 스트리밍 (Preloading and Streaming)

웹에서는 페이지를 로드한 후 가능한 한 빨리 사용자를 애플리케이션으로 가져오는 것이 중요합니다. 로딩 바를 표시하고 사람들에게 기다리라고 요청하면 애플리케이션이 시작되기도 전에 방문자가 페이지를 떠나게 됩니다. OasisW 에셋 시스템은 로딩 프로세스를 간소화하고 애플리케이션을 가능한 한 빨리 실행할 수 있도록 도와주는 여러 기능을 구현합니다.

사전 로드

에셋 속성

프로젝트의 모든 에셋에는 preload라는 속성이 있습니다. 기본적으로 이것은 true로 설정됩니다. 에셋이 사전 로드로 표시되면 애플리케이션의 초기화 단계가 시작되기 전에 다운로드되고 생성됩니다.

애플리케이션 시작 시 필요한 모든 에셋이 있는지 확인하기 위해 사전 로드를 사용해야 합니다. 이렇게 하면 애플리케이션이 시작된 후 에셋이 '팝업'되는 것을 방지할 수 있습니다.

스트리밍

스트리밍

씬의 엔티티가 에셋을 참조하는 경우, 엔티티가 활성화될 때 로딩 요청이 시작됩니다. 엔티티가 씬에서 활성화되어 있으면 애플리케이션이 시작되자마자 이 요청이 이루어집니다.

모든 컴포넌트는 동적으로 로딩되는 에셋을 우아하게 처리하고 에셋이 로드되면 정상적으로 작동하기 시작합니다. 이렇게 동적으로 에셋을 스트리밍할 때는 종종 "팝업"을 볼 수 있습니다. 모델은 아직 재질이나 텍스처가 없더라도 로드되자마자 나타날 것입니다.

에셋은 언제 로드되나요?

특정 에셋이 언제 로드될지 결정하려면 다음 규칙을 따를 수 있습니다.

  • preload = true인 경우 에셋은 애플리케이션이 시작되기 전에 로드됩니다. 그렇지 않으면:
  • 에셋이 활성화되고 씬 계층 구조에 있는 엔티티에서 활성화된 컴포넌트에 의해 참조되는 경우 로드됩니다. 에셋은 엔티티나 컴포넌트가 활성화되거나 에셋이 컴포넌트에 할당될 때 로드됩니다. 에디터에서 활성화된 엔티티의 경우, 이는 사전 로드가 완료된 직후 애플리케이션이 시작되자마자 발생합니다. 컴포넌트는 활성화되어 있고 그 위의 계층 구조에 있는 모든 엔티티가 활성화되어 있으면 활성화된 것으로 정의됩니다.
  • 에셋이 로드된 다른 에셋에 의해 참조되는 경우 로드됩니다. 예를 들어, 모델이 로드되고 재질을 참조하면 재질이 로드되고, 재질이 텍스처를 참조하면 텍스처가 로드됩니다.

에셋 태그

많은 경우, 에셋이 로드될 때 "팝업"되는 것을 원하지 않습니다. 에셋 세트를 로드한 다음 표시하는 것이 선호됩니다. 이를 위해 에셋 태그를 사용하여 에셋 그룹을 만들 수 있습니다. 그런 다음 사용하기 전에 특정 태그가 있는 모든 에셋을 로드할 수 있습니다.

태그를 사용하여 에셋 세트를 로드하는 방법을 보여주는 JavaScript 예시입니다.

const assets = this.app.assets.findByTag("level-1");
let count = 0;

for (let i = 0; i < assets.length; i++) {
assets[i].once("load", function () {
count++;
if (count === assets.length) {
// 에셋 로딩 완료
}
});
this.app.assets.load(assets[i]);
}