196 lines
6.7 KiB
Markdown
196 lines
6.7 KiB
Markdown
|
资源介绍:
|
|||
|
----------
|
|||
|
|
|||
|
* png 贴图文件 ----ImageTexture
|
|||
|
|
|||
|
* jpg 贴图文件 ----ImageTexture
|
|||
|
|
|||
|
* dds 贴图文件 ----Texture
|
|||
|
|
|||
|
* tga 贴图文件 ----Texture
|
|||
|
|
|||
|
* hdr 贴图文件 ----Texture
|
|||
|
|
|||
|
* esm 模型数据文件,Unity3d插件可以导出 ----Geometry
|
|||
|
|
|||
|
* eam 骨骼动画文件,Unity3d插件可以导出 ----SkeletonAnimationClip
|
|||
|
|
|||
|
* epa 属性动画文件,Unity3d插件可以导出(物体动画或相机动画) ----PropertyAnim
|
|||
|
|
|||
|
* xml 普通数据 ---- any
|
|||
|
|
|||
|
* json 普通数据 ---- any
|
|||
|
|
|||
|
* json Unity3d插件导出的文件
|
|||
|
|
|||
|
---- Object3D
|
|||
|
|
|||
|
---- Scene3D 场景文件
|
|||
|
|
|||
|
---- Role 角色文件
|
|||
|
|
|||
|
---- EffectGroup 特效组文件
|
|||
|
|
|||
|
贴图文件如果宽高不是2的N次方则会输出错误log
|
|||
|
|
|||
|
----------
|
|||
|
|
|||
|
资源加载:
|
|||
|
----------
|
|||
|
|
|||
|
egret3d引擎中会对一部分资源加载之后进行解析,解析为引擎中对应的一些数据对象进行存储。其它的文件加载之后都将以二进制数据进行返回。
|
|||
|
|
|||
|
加载方式有3种: 使用QueueLoader可以完成所有加载
|
|||
|
|
|||
|
* URLLoader 加载
|
|||
|
----------
|
|||
|
|
|||
|
是基础的文件加载解析,不会由一个文件的配置进行加载另一个文件。一次只能加载一个文件
|
|||
|
|
|||
|
事件:
|
|||
|
LOADER_COMPLETE 加载完成后触发
|
|||
|
LOADER_ONCE_COMPLETE 加载完成后触发
|
|||
|
LOADER_PROGRESS 加载进度
|
|||
|
|
|||
|
```
|
|||
|
protected doURLLoader() {
|
|||
|
|
|||
|
// ------------------ 使用URLLoader加载 ---------------------
|
|||
|
|
|||
|
var urlLoader: egret3d.URLLoader = new egret3d.URLLoader("resource/doc/brick-diffuse.jpg");
|
|||
|
// 监听完成事件
|
|||
|
urlLoader.addEventListener(egret3d.LoaderEvent3D.LOADER_COMPLETE, this.onLoader, this);
|
|||
|
|
|||
|
// ------------------ 使用URLLoader加载 ---------------------
|
|||
|
}
|
|||
|
|
|||
|
protected onLoader(e: egret3d.LoaderEvent3D) {
|
|||
|
// 加载完成后数据
|
|||
|
var img: egret3d.ImageTexture = e.data;
|
|||
|
|
|||
|
// 创建一个box 加载场景中
|
|||
|
var box: egret3d.Mesh = new egret3d.Mesh(new egret3d.CubeGeometry(), new egret3d.TextureMaterial(img));
|
|||
|
this.view.addChild3D(box);
|
|||
|
}
|
|||
|
|
|||
|
```
|
|||
|
|
|||
|
----------
|
|||
|
|
|||
|
* UnitLoader 加载
|
|||
|
----------
|
|||
|
|
|||
|
单体加载文件 把普通的文件和配置文件都算成一个单体 会对文件进行加载 还会对配置文件中的内容进行解析,
|
|||
|
并且会根据配置文件中的内容进行加载 所有文件加载完成,会响应 LOADER_COMPLETE事件
|
|||
|
每个文件加载完成会响应 LOADER_ONCE_COMPLETE事件
|
|||
|
加载进度会响应 LOADER_PROGRESS事件
|
|||
|
|
|||
|
在加载Unity插件导出的配置文件时 加载进度会从0-1
|
|||
|
|
|||
|
事件:
|
|||
|
LOADER_COMPLETE 加载完成后触发
|
|||
|
LOADER_ONCE_COMPLETE 加载完成后触发
|
|||
|
LOADER_PROGRESS 加载进度
|
|||
|
|
|||
|
----------
|
|||
|
|
|||
|
* QueueLoader 加载
|
|||
|
----------
|
|||
|
|
|||
|
每个加载对象都是一个UnitLoader对象 可以加载多个文件,队列式进行加载。
|
|||
|
加载完一个文件后,如果是配置文件,会由配置文件索引加载其它文件。
|
|||
|
|
|||
|
事件:
|
|||
|
LOADER_COMPLETE 加载完成后触发
|
|||
|
LOADER_ONCE_COMPLETE 加载完成后触发
|
|||
|
LOADER_PROGRESS 加载进度
|
|||
|
|
|||
|
```
|
|||
|
|
|||
|
protected doQueueLoader() {
|
|||
|
|
|||
|
// ------------------ 使用QueueLoader加载 ---------------------
|
|||
|
|
|||
|
var queueLoader: egret3d.QueueLoader = new egret3d.QueueLoader();
|
|||
|
|
|||
|
queueLoader.load("resource/doc/ganning/Ganning.esm");
|
|||
|
queueLoader.load("resource/doc/ganning/Idle.eam");
|
|||
|
queueLoader.load("resource/doc/ganning/Run.eam");
|
|||
|
queueLoader.load("resource/doc/ganning/Attack1.eam");
|
|||
|
queueLoader.load("resource/doc/ganning/Death.eam");
|
|||
|
queueLoader.load("resource/doc/ganning/Ganning.png");
|
|||
|
queueLoader.load("resource/doc/ganning/Ganning_f.png");
|
|||
|
queueLoader.load("resource/doc/ganning/Ganning_Weapon.png");
|
|||
|
|
|||
|
|
|||
|
|
|||
|
// 这个资源是unity3d插件导出的场景资源
|
|||
|
var sponzaLoader :egret3d.UnitLoader = queueLoader.load("resource/doc/sponza_Demo/MapConfig.json");
|
|||
|
|
|||
|
// 监听某个文件的加载进度事件
|
|||
|
sponzaLoader.addEventListener(egret3d.LoaderEvent3D.LOADER_PROGRESS, this.onSceneProgress, this);
|
|||
|
|
|||
|
// 监听某个文件的加载完成事件
|
|||
|
sponzaLoader.addEventListener(egret3d.LoaderEvent3D.LOADER_ONCE_COMPLETE, this.onSceneOnceProgress, this);
|
|||
|
|
|||
|
|
|||
|
// 监听完成事件
|
|||
|
queueLoader.addEventListener(egret3d.LoaderEvent3D.LOADER_COMPLETE, this.onQueueLoader, this);
|
|||
|
|
|||
|
// 监听单个文件完成事件
|
|||
|
queueLoader.addEventListener(egret3d.LoaderEvent3D.LOADER_ONCE_COMPLETE, this.onOnceComplete, this);
|
|||
|
// ------------------ 使用QueueLoader加载 ---------------------
|
|||
|
}
|
|||
|
|
|||
|
protected onQueueLoader(e: egret3d.LoaderEvent3D) {
|
|||
|
var queueLoader: egret3d.QueueLoader = e.target;
|
|||
|
|
|||
|
// 加载完成后用url查找资源
|
|||
|
var geo: egret3d.Geometry = queueLoader.getAsset("resource/doc/ganning/Ganning.esm");
|
|||
|
var clip0: egret3d.SkeletonAnimationClip = queueLoader.getAsset("resource/doc/ganning/Idle.eam");
|
|||
|
var clip1: egret3d.SkeletonAnimationClip = queueLoader.getAsset("resource/doc/ganning/Run.eam");
|
|||
|
var clip2: egret3d.SkeletonAnimationClip = queueLoader.getAsset("resource/doc/ganning/Attack1.eam");
|
|||
|
var clip3: egret3d.SkeletonAnimationClip = queueLoader.getAsset("resource/doc/ganning/Death.eam");
|
|||
|
var textures: egret3d.ITexture[] = [];
|
|||
|
|
|||
|
textures[0] = queueLoader.getAsset("resource/doc/ganning/Ganning.png");
|
|||
|
textures[1] = queueLoader.getAsset("resource/doc/ganning/Ganning_f.png");
|
|||
|
textures[2] = queueLoader.getAsset("resource/doc/ganning/Ganning_Weapon.png");
|
|||
|
|
|||
|
clip0.animationName = "Idle";
|
|||
|
clip1.animationName = "Run";
|
|||
|
clip2.animationName = "Attack1";
|
|||
|
clip3.animationName = "Death";
|
|||
|
|
|||
|
// 创建Mesh
|
|||
|
var mesh: egret3d.Mesh = new egret3d.Mesh(geo, new egret3d.TextureMaterial());
|
|||
|
for (var i: number = 0; i < geo.subGeometrys.length; ++i) {
|
|||
|
var mat: egret3d.MaterialBase = mesh.getMaterial(i);
|
|||
|
if (!mat) {
|
|||
|
mat = new egret3d.TextureMaterial();
|
|||
|
mesh.addSubMaterial(i, mat);
|
|||
|
}
|
|||
|
|
|||
|
mat.diffuseTexture = textures[i];
|
|||
|
}
|
|||
|
|
|||
|
mesh.z = 100;
|
|||
|
|
|||
|
mesh.animation.skeletonAnimationController.addSkeletonAnimationClip(clip0);
|
|||
|
mesh.animation.skeletonAnimationController.addSkeletonAnimationClip(clip1);
|
|||
|
mesh.animation.skeletonAnimationController.addSkeletonAnimationClip(clip2);
|
|||
|
mesh.animation.skeletonAnimationController.addSkeletonAnimationClip(clip3);
|
|||
|
mesh.animation.play("Idle");
|
|||
|
|
|||
|
this.view.addChild3D(mesh);
|
|||
|
|
|||
|
|
|||
|
// 加载完场景资源可以直接替换View3D中的Scene对象
|
|||
|
var scene3d: egret3d.Scene3D = queueLoader.getAsset("resource/doc/sponza_Demo/MapConfig.json");
|
|||
|
this.view.scene = scene3d;
|
|||
|
}
|
|||
|
|
|||
|
```
|
|||
|
|
|||
|
|
|||
|
![](Img_0.png)
|