layabox 学习笔记
初次接触laya,随手写了点个人笔记。
this.owner //相当于 cc this.node
as 类型断言,很多时候laya的编译报错,就需要类型断言,比如一个图片,绑定一个脚本,在脚本内写上 this.owner.x = 100; 这样的就可能编译不通过,所以需要这么写 (this.owner as Laya.Sprite).x = 100; 同理,如果你确定有某个属性,但是编译又通不过,也可以 as any。
Laya.stage //舞台对象的引用。。
Vscode f5调试后打开空白网页,不显示游戏
原因:vscode升级导致的问题
解决办法:.vscode中的settings.json加上
"git.ignoreLimitWarning": true,
"debug.javascript.usePreview":false
安装npm i layaair2-cmd -g 的时候,如果安装包不成功就加上 --force to overwrite
设置透明度 alpha 值为 0-1 1默认不透明
使用foreach,参数是value在前,key在后,但是foreach又是异步的。
3d节点添加点击使用射线检测,将3d节点需要添加meshCollider或者其他的碰撞盒,但meshCollider很耗性能,建议用boxColider或者其他的碰撞体替代。
Csvtojs转换的js代码在laya中,module.export不能用,转换完成后选中module,ctrl+.将其转换为es6模块就可以了。
在laya中打开js不能用require,语法:报错面向 ECMAScript 模块时,不能使用导入分配。请考虑改用 "import * as ns from "mod""、"import {a} from "mod""、"import d from "mod"" 或另一种模块格式。
可以使用import *as 导入。
写法分别如下:
import *as MoreLanguage from "../../eric_gg/config/MoreLanguage";
import MoreLanguage = require("../../eric_gg/config/MoreLanguage");
但是在cocos中两种方法都是可以的。
laya存储本地数据又setItem 和 setJson
creator只有setItem 想存json就 使用Json.stringify 和 Json.parse 序列化和反序列化
laya如果用setJson,就不需要序列化存储了,但是这个存取就显得复杂了点,可以用setItem代替setJson。为了方便和习惯,我还是选择全部用setItem序列化存储
定义在组件外部的变量,相当于页面内的全局变量,这样所有的加载了这个脚本的组件都会公用这个变量,一个脚本里边更改了数值,其他挂载这个脚本的值都会同步更新。也就相当于一个静态变量,全局只保存一个,无论调用多少次。
所以,慎用页面全局变量,记得加const。
layabox的mouseUp和mouseOut在真机上会重复调用,注册一个就好了,调试的过程中才会有up和out的区别。
如果出现各个平台代码执行逻辑不一致,可能是缓存问题。比如调试,和本地局域网都没问题,上传到服务器上出现了问题。
坐标系转换:
sprite下有个方法 localToGlobal
(this.btn_building as Laya.Sprite).localToGlobal(new Laya.Point(0,0))
2d组件visible不可见,active不会不可见,active会进onEnable 和 onDisable
3d组件相反。但还是active控制onEnable
每调用一次onEnable都会进入active 如果在onEnable里边注册了事件,手动调用active = true会多注册一次。
{受光和不受光材质,材质可以用同一个,贴图可以用不同的,但是同一种材质只有一种贴图,可以复制材质,更换贴图}。
laya的animation真的神经刀,莫名其妙的会texture会有值,还是他妈的随机的,还不是必现的,操。所以最好还是将Animation组件的texture属性拖一个帧动画的图片进去,防止莫名其妙有其他图片混进来。我已经出现两次了。所以一有那种图片错乱的,首先想帧动画。