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();
---------------------
作者:nicepainkiller
来源:CSDN
原文:https://blog.csdn.net/nicepainkiller/article/details/83994540
版权声明:本文为博主原创文章,转载请附上博文链接!