사전 로드 및 스트리밍 (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]);
}