layabox 学习笔记

初次接触laya,随手写了点个人笔记。

this.owner   //相当于 cc   this.node

layabox 学习笔记_第1张图片

as 类型断言,很多时候laya的编译报错,就需要类型断言,比如一个图片,绑定一个脚本,在脚本内写上  this.owner.x = 100; 这样的就可能编译不通过,所以需要这么写 (this.owner as Laya.Sprite).x = 100;   同理,如果你确定有某个属性,但是编译又通不过,也可以 as any。

Laya.stage   //舞台对象的引用。

 

Vscode  f5调试后打开空白网页,不显示游戏

layabox 学习笔记_第2张图片

原因: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属性拖一个帧动画的图片进去,防止莫名其妙有其他图片混进来。我已经出现两次了。所以一有那种图片错乱的,首先想帧动画。

你可能感兴趣的:(layabox 学习笔记)