Layaair 3D资源加载(Unity3D 导出资源)

                                                 Layaair 3D资源加载

layaair 预加载3D资源(Unity3D 导出资源)  和  2D 资源还是有些区别的。

2D资源的预加载 https://blog.csdn.net/nicepainkiller/article/details/82971636

这个就是我们加载  U3D 导出的 资源文件

基本就这块

// 程序入口
class GameMain {
    constructor() {

 
       //let  screenRatioFitter :ScreenRatioFitter = new   ScreenRatioFitter();
       //Laya3D.init(screenRatioFitter.Width,screenRatioFitter.Height, true);


        //初始化引擎
        Laya3D.init(SetupConfig.widthDesign,SetupConfig.heightDesign, true);

 
        //适配模式
        //Laya.stage.bgColor   = "#000000";
        Laya.stage.scaleMode = Laya.Stage.SCALE_NOBORDER; 
        //Laya.stage.scaleMode = Laya.Stage.SCALE_EXACTFIT;
        Laya.stage.alignH    = Laya.Stage.ALIGN_CENTER;
        Laya.stage.alignV    = Laya.Stage.ALIGN_MIDDLE;
        Laya.stage.screenMode= Laya.Stage.SCREEN_VERTICAL;

        //开启统计信息
        Laya.Stat.show();

        // //添加3D场景
        // var scene: Laya.Scene = Laya.stage.addChild(new Laya.Scene()) as Laya.Scene;

        // //添加照相机
        // var camera: Laya.Camera = (scene.addChild(new Laya.Camera(0, 0.1, 100))) as Laya.Camera;
        // camera.transform.translate(new Laya.Vector3(0, 3, 3));
        // camera.transform.rotate(new Laya.Vector3(-30, 0, 0), true, false);
        // camera.clearColor = null;

        // //添加方向光
        // var directionLight: Laya.DirectionLight = scene.addChild(new Laya.DirectionLight()) as Laya.DirectionLight;
        // directionLight.color = new Laya.Vector3(0.6, 0.6, 0.6);
        // directionLight.direction = new Laya.Vector3(1, -1, 0);

        // // //添加自定义模型
        // // var box: Laya.MeshSprite3D = scene.addChild(new Laya.MeshSprite3D(new Laya.BoxMesh(1, 1, 1))) as Laya.MeshSprite3D;
        // // box.transform.rotate(new Laya.Vector3(0, 45, 0), false, false);
        // // var material: Laya.StandardMaterial = new Laya.StandardMaterial();
        // // material.diffuseTexture = Laya.Texture2D.load("res/layabox.png");
        // // box.meshRender.material = material;

        // let fish :Laya.Sprite3D = Laya.Sprite3D.load("res/fishPrefab/Fish0/Laya.lh");
      
        // scene.addChild(fish);
        // fish.transform.translate ( new Laya.Vector3(10000,0, 1000000)); 
 
  

        // let scene: Laya.Scene=  Laya.Scene.load("res/LayaScene_Person/Person.ls");
 
        // Laya.stage.addChild(scene);
        // //创建摄像机(横纵比,近距裁剪,远距裁剪)
        // var camera: Laya.Camera = new Laya.Camera(0, 0.1, 1000);
        // //加载到场景
        // scene.addChild(camera);
        // //移动摄像机位置
        // camera.transform.position = new Laya.Vector3(0, 0, -10);
        // //旋转摄像机角度
        // camera.transform.rotate(new Laya.Vector3(0, 0, 0), true, false);
        // //设置摄像机视野范围(角度)
        // camera.fieldOfView = 35;
        // //设置背景颜色
        // camera.clearColor = new Laya.Vector4(0, 0, 0.6, 1);
        // //加入摄像机移动控制脚本
 
        // //创建方向光 -------------------
        // var light: Laya.DirectionLight = scene.addChild(new Laya.DirectionLight()) as Laya.DirectionLight;
        // //移动灯光位置
        // light.transform.translate(new Laya.Vector3(0, 2, 5));
        // //调整灯光方向
        // light.transform.worldMatrix.setForward(new Laya.Vector3(0, -0.5, 0));
        // //设置灯光环境色
        // light.color = new Laya.Vector3(1, 1, 1);
 

        // Laya.timer.loop(100,this,()=>
        // {
        //     // scene.transform.rotate(new Laya.Vector3(0, 0, 0), true, false);     
        // });



        let scene:Laya.Scene = new  Laya.Scene();
        Laya.stage.addChild(scene);


        let camera:Laya.Camera = new Laya.Camera();
        scene.addChild(camera);
 

        let box: Laya.MeshSprite3D = scene.addChild(new Laya.MeshSprite3D(new Laya.BoxMesh(2, 2, 2))) as Laya.MeshSprite3D;
        //let material: Laya.StandardMaterial = new Laya.StandardMaterial();
        //material.diffuseTexture = Laya.Texture2D.load("res/layabox.png");
        //box.meshRender.material = material;

        let build:Laya.Sprite3D = Laya.Sprite3D.load("res/fishPrefab/Fish0/Laya.lh");
        box.addChild(build);    

        box.transform.localPosition = new Laya.Vector3(0,0,-100);
        scene.addChild(box);

         

        // ///需要加载的资源列表   
        // let resArray : Array<any> = [
        //     { url:"res/background/back.jpg",            type:Laya.Loader.IMAGE },
        //     { url:"res/atlas/button.atlas",             type:Laya.Loader.ATLAS },
        // ];
 
        // Laya.loader.load( resArray, Laya.Handler.create(this, this.onCompelt), Laya.Handler.create(this, this.onprogress) );

     

        
        ///需要加载的3D资源列表   
        let res3DArray : Array<any> = [
            { url:"res/fishPrefab/Fish0/Laya.lh",            type:Laya.Sprite3D },
            { url:"res/fishPrefab/Fish1/Laya.lh",            type:Laya.Sprite3D },
            { url:"res/fishPrefab/Fish2/Laya.lh",            type:Laya.Sprite3D },
            { url:"res/fishPrefab/Fish3/Laya.lh",            type:Laya.Sprite3D },
            { url:"res/fishPrefab/Fish4/Laya.lh",            type:Laya.Sprite3D },
            { url:"res/fishPrefab/Fish5/Laya.lh",            type:Laya.Sprite3D },
            { url:"res/fishPrefab/Fish6/Laya.lh",            type:Laya.Sprite3D },
        ];

     
        Laya.loader.create(res3DArray, Laya.Handler.create(this,()=>
        {
            console.log("加载3D完成");

            for(let i = 0; i < res3DArray.length; i++)
            {
                   let box: Laya.MeshSprite3D = scene.addChild(new Laya.MeshSprite3D(new Laya.BoxMesh(2, 2, 2))) as Laya.MeshSprite3D;
                   let build:Laya.Sprite3D    = Laya.Sprite3D.load(res3DArray[i].url);
                   box.addChild(build);  
                   scene.addChild(box);

                   box.transform.localPosition = new Laya.Vector3(0,10*i,-100);
            }

            //预加载完成后  有两种方式 获得资源
            ////////////////////////////////////////////////////////////
            ///第一种是  
           let build:Laya.Sprite3D   =  Laya.Sprite3D.load("res/fishPrefab/Fish2/Laya.lh");

           ///第二种是
           let build2:Laya.Sprite3D  =  Laya.loader.getRes("res/fishPrefab/Fish2/Laya.lh");//这个函数 是2d 还是 u3d 通用的接口, 返回资源类型是根据资源的类型来的


        }),
        Laya.Handler.create(this, (pro)=>
        {
            console.log("加载3D进度:"+pro);
        }));





    }

        //加载完成
    private onCompelt():void   
    {
        //UIManager.getInstance();
    }
     //加载进度
    private onprogress(pro:number):void
    {
        console.log("加载进度:"+pro);
    }
      
}
new GameMain();

猜你喜欢

转载自blog.csdn.net/nicepainkiller/article/details/83994540