KITASENJU DESIGN BLOG

memo, html, javascript, unity

Loaderで外部ファイルを複数ロードする

import * as THREE from 'three';
import { OBJLoader } from 'three/examples/jsm/loaders/OBJLoader.js'

interface ObjData {
    url     : string;
    mesh : THREE.Mesh;
}

export class ObjLoaders {
    
    public list:ObjData[];
    private callback:()=>void;
    private index:number=0;

    load(callback:()=>void){

        this.callback = callback;
        this.list = [
            {
                url:"./data/q.obj",
                mesh:null,
            },
            {
                url:"./data/q3.obj",
                mesh:null,
            }
        ]

        this.loadObj();

    }


    private loadObj(){

        if(this.index>=this.list.length){
            this.callback();
            return;
        }

        const loader = new OBJLoader();
        loader.load(this.list[this.index].url, (obj)=>{

            this.list[this.index].mesh = obj.children[0] as THREE.Mesh;
            this.index++;
            this.loadObj();

        });
    }
    
}

"FOOTER"