- 博客(61)
- 资源 (1)
- 收藏
- 关注
原创 layaAir3中drawcall的优化
文章摘要:本文分析了导致drawcall中断的8种常见情况,包括不同图集、图文混排、后处理效果、透明度差异、混合模式不同、遮罩使用和裁剪等。针对这些情况提出了优化建议:集中处理文本和标签、合理组织图集资源、利用zIndex调整渲染顺序、隐藏屏幕外元素等。最后推荐使用Spector.js工具检测优化效果,并参考WebGraphicsBatch类源码实现。这些方法能有效减少drawcall次数,提升渲染性能。
2025-12-31 15:19:52
388
原创 LayaAir的场景管理
LayaAir中Scene继承Sprite,包含Dialog和Scene两种类型。场景管理主要通过Open和Close方法实现:Open返回Promise,先加载资源再打开;Close方法若不设置autoDestroyAtClosed则仅移除场景而不销毁,未销毁场景会存储在unDestroyedScenes中。建议非手动管理时勾选autoDestroyAtClosed属性,Dialog管理与Scene相同。需注意销毁后场景节点的事件和timer会被清除。
2025-12-08 12:51:15
197
原创 在LayaAir3.3中使用2D物理射线检测
本文介绍了Laya3.3版本中物理系统的两个实用方法:1)通过场景名获取Physics2DWorldManager的封装方法,遍历物理世界映射表匹配场景名称;2)使用RayCast进行射线检测的实现,包括接口参数说明和调用示例,并指出检测结果不会自动按距离排序,需要开发者自行处理排序逻辑。文章提供了完整的代码实现,展示了如何从指定场景获取物理管理器并执行射线检测操作,适用于2D物理碰撞检测场景开发。
2025-11-06 12:53:08
283
原创 ts类型声明全总结
TypeScript 类型系统摘要:包含基本类型(number/string/boolean)、特殊类型(any/unknown/never/null/undefined)、对象与数组类型、元组、联合/交叉类型。支持类型别名(type)、接口(interface)、泛型、条件类型和映射类型等高级特性,提供枚举、只读/可选修饰符等功能,实现灵活的类型定义与安全校验。
2025-09-16 10:55:19
471
原创 Vector2工具类(神仙工具超好用)
该代码定义了一个二维向量类V2,提供了丰富的向量操作方法。主要包括:1)基础属性x,y和构造方法;2)常用静态向量(ZERO、UP等);3)向量运算方法(加减、点积、缩放、旋转等);4)向量长度计算和归一化;5)角度计算和转换;6)克隆、比较等工具方法。该类支持链式调用,并提供了静态方法和实例方法两种调用方式,适合处理2D游戏开发、图形计算等场景中的向量运算需求。
2025-09-12 16:02:54
180
原创 通用游戏前端架构设计思考
本文探讨了游戏前端架构的设计思路,提出分层与模块化相结合的设计方案。架构分为三个层级:底层(接口层、数据层、工具层)、核心层(实体层、管理层)和UI层。通过模块化设计可将各功能模块(如角色、装备等)按层级划分。模块间采用接口依赖和事件管理器进行通讯,避免直接依赖。这种架构实现了各层之间的解耦,为游戏开发提供了清晰的结构化设计思路。
2025-07-09 23:55:40
469
原创 laya2D射线检测
不过没关系,先看下laya集成的源码laya.physics.js, 通过搜索raycast关键字我们可以就可以发现对应接口,虽然laya的libs声明文件中Laya.physics.I.world为any类型,但通过输出到控制台我们可以发现这个就是laya.physics.js文件中的b2World类型,而且有对应的射线检测方法,如下图。有了源码,我们是不是就可以照着上面使用了呢?前言:在实际开发中,发现laya并没有提供2D射线检测的接口,查看源码发现laya的2D物理采用的是。
2023-05-23 23:19:44
566
原创 Ts 数组的使用
数组的常用操作,增、删、改、查、置空、遍历、迭代、初始化、与字符串的相互转换、连接两个数组、查找符合条件的多个数组元素、判断该数组的所有元素或者单一元素是否符合某个条件等内容............
2022-06-08 16:21:41
10915
2
原创 laya-字体大小根据当前设置的宽度动态变化
由于laya暂时无相关设置,故自己动手实现一个字体大小根据当前设置的宽度动态变化的工具,将该类拖入到对应text的组件的runtime中即可生效,该类适用于文本内容可能超出设置的文本边界情况时。
2022-06-01 10:15:11
921
3
原创 工厂方法模式
/** 工厂方法模式中的产品基类 */export default class ProductBase { constructor() {}}/** 具体的产品A */export class ProductA extends ProductBase { constructor() { super(); console.log("[ProductA].constructor(): "); }}/** 具体的产品B */export cl.
2021-12-15 19:03:16
1148
原创 2d贝塞尔曲线ts递归实现算法
export default class BezierCurve { /** * 获取贝塞尔曲线的点的集合 * @param points 点的集合, 至少包含起点和终点 * @param num 想要生成多少点 * @returns */ public static getCurvePointsInNum(points:Array<any>, num:number): Array<any> { .
2021-11-26 16:28:21
703
原创 js 关于文件的操作
1.读取某个文件的内容var fs = require('fs');// 读取文件let buf = fs.readFileSync("test.json");let data = fs.readFileSync("test.json", "utf8");console.log("readFileSync(): buf",buf); // Buffer 数据console.log("readFileSync(): data",data); // 按照 utf8 格式编码解析// 异步
2021-11-22 17:50:21
2465
2
原创 laya2d 物体从起点移动到目标点(按一定角速度平滑偏转)
可方便的实现火箭弹追踪效果import MathE from "./MathE";import Script = Laya.Script;import Image = Laya.Image;import Point = Laya.Point;export default class MoveAngleToTarget extends Script { private _targetPos: Point = null; public get targetPos(): Po
2021-11-16 14:35:54
1280
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅