laya踩坑记录

发布于 2020-04-05  315 次阅读


场景名不能用Game否则qq小游戏发布时会和系统内的Game类冲突造成Game.scene找不到。

挂到场景和场景内物体的组件从Laya.Script派生,文档类和Sprite的runtime类要派生自Sprite以及后继类

Script要获取物体引用调用.owner 然后as成Sprite或者它的runtime类

Sprite.getComponent(xxx)获取其上挂载的Script类

很多操作在Script的构造函数被调用时没有完成,所以在onEnable里处理初始化是最合适的

Script有一组对应生命周期阶段的虚函数可以直接被覆盖 注意覆盖时保证返回值和参数类型都一致

Sprite需要自己注册事件

重力感应:

微信小程序和QQ小程序需要先启动重力感应,并且使用不同于H5的另外一个API设置回调,下面例子

        if (Laya.Browser.onWeiXin || Laya.Browser.onQQMiniGame) {
            //小游戏环境
            let obj:any = {
                success:()=>{
                    wx.onAccelerometerChange((evt) => { this.acc = evt.x;});
                },
                fail:()=>{
                    console.log("重力感应启动失败");
                }
            };
            wx.startAccelerometer(obj);
        } else {
            //H5
            Laya.Accelerator.instance.on(Laya.Event.CHANGE, this, this.onMotoin);
        }

读取rotation有时候会变成NaN 用默认值0 

x.rotation = xxx || 0;

解决

可在属性窗口看到的Laya.Script成员变量:

/** @prop {name:"属性显示名",tips:"提示",type:"属性类型名",default:属性默认值} */

public propName:XXX = YYY

上面的空格都不能省略 否则属性窗口会显示不出

默认值需要在default和 = YYY一起指定



点击数:204


一沙一世界,一花一天堂。君掌盛无边,刹那成永恒。