• laya的开发文档


    一、 先在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的注意事项需要更多的人来完善 如果有纰漏或者改善的 欢迎更新文档

  • 相关阅读:
    反思二
    安装Electron时卡在install.js不动的解决方案
    解决npm 下载速度慢的问题
    覆盖第三方jar包中的某一个类。妙!!
    关于拦截器是用注解方便,还是用配置文件写死方便的总结。
    yapi 启动后,老是自动关闭的问题。
    BaseResponse公共响应类,与我的设计一模一样,靠、ApiResponse
    HashMap 的 7 种遍历方式与性能分析!(强烈推荐)、forEach
    Jackson objectMapper.readValue 方法 详解
    yapi tag的问题,暂时只保留一个tag
  • 原文地址:https://www.cnblogs.com/StevenChancxy/p/9644507.html
Copyright © 2020-2023  润新知