laya的开发文档
2018-09-14 08:55 陈徐永 阅读(3975) 评论(0) 编辑 收藏 举报一、 先在unity3d里面做好游戏 为了保证和laya显示一致,所有材质的shader选择LayaAir3D/Blinnphong 材质 如图所示
二、 导出舞台和所需prefab
1) 首先设置导出选项 如图所示
分2种情况导出:
1、导出场景只保留相机和灯光或者需要一开始就需要显示的prefab
2、导出prefab 只保留prefab 场景和灯光需要删除,这些prefab作为动态加载使用
三 在laya创建项目
1) 新建空白项目如图所示 根据自己要用的语言选择 这里选择AS3版本
2) 创建完毕后 文件树如下
LayaSample.as为启动文件 可以在.actionScriptProperties修改启动文件
在构造函数中 需要设置设配方式 如何是竖屏设置高适应
Laya.stage.scaleMode = "fixedheight";
横屏设置宽适应
Laya.stage.scaleMode = "fixedWidth";
所有的适配方式可以在stage类的scaleMode方法里面找到
四 在laya中加载场景和prefab
1)一般使用预加载的方法
Laya.loader.create([{url:"res/LayaScene_Main/Main.ls","type":Scene},{url:"res/LayaScene_Model/Model.lh","type":Sprite3D}],Handler.create(this,this.onCreateComplete));
加载完成后会回调onCreateComplete 如果需要分包则需要加入baseurl设置成网络地址同时设置本地已有资源白名单
Laya.URL.basePath = "https://XXX.com";//请把XXX换成自己的真实网址;
MiniAdpter.nativefiles = ["wxlocal","res/atlas/houzi.atlas"];//白名单
加载场景和获取场景元素 示例
scene = Laya.loader.getRes("res/LayaScene_Main/Main.ls");
Laya.stage.addChild(scene);
mainCamera = scene.getChildByName("Env").getChildByName("Main Camera") as Camera;
动态加载prefab示例
Sprite3D.instantiate((Laya.loader.getRes("res/LayaScene_Model/Model.lh")
.getChildByName(spName) as Sprite3D));
parent.addChild(obj);
注意:
1、laya的3d坐标系和unity3d的不一样 X轴相反 laya遵循右手坐标系
2、Vector使用部分预制在特定情况下会有意外的bug 比如Vector.Zero,使用new Vector(0,0,0)则不会
3、没有unity3d自带的domove,dorotate等transform相关的tween方法 需要自己实现或者使用第三方类库 自己实现参考如下
Tween.to(pos,{y:1.5,complete:Handler.create(this,OnTriggerEnterWithJumpMid),update:new Handler(this,onUpdatePosY)},100);
private function onUpdatePosY():void{
if( (owner as Sprite3D)!=null && (owner as Sprite3D).transform!=null){
((this.owner as Sprite3D).getChildByName("GameObject") as Sprite3D).transform.localPosition=pos;
}
}
4、Laya.timer类里面所有的delay都是毫秒为单位 unity3d是秒为单位
5、Laya 挂脚本方式为 my.addComponent(Class); 获取组件方式或者调用挂在脚本的函数
方式为(my. getComponentByType(Class) as Class).callFunction();
6、需要做物理检测相关的类 需要继承自Script,相当于uniyt3d里面的MonoBehaviour
里面的生命周期 基本一致
7、laya里面 没有unity3d里面的tag概念 只能通过名字判断
8、laya转出的模型 无论之前在unity3d里面是那个layer 在laya里面都是默认的default
9、raycastHit中的distance数据为 距离/检测的射线长度 同样的还有 颜色值/255 ,角度/180,弧度/PI
PS Laya的注意事项需要更多的人来完善 如果有纰漏或者改善的 欢迎更新文档