常用的UI组件
Canvas(画布)
Widget(对齐挂件)
Button(按钮)
EditBox(文本框)
ScrollView (滚动容器)
生命周期回调函数
onLoad:组件加载时调用,常进行初始化操作,比如获取节点、注册事件
start:组件第一次update前调用,可以进行需要在update前执行的操作
update:每一帧都会调用,可以进行一些逻辑的更新操作
lateUpdate:在update之后调用,用于处理需要再update之后执行的操作
onEnable:在组件被启用时调用,可以进行些与其他组件的交互的操作
onDisable:在组件被禁用时调用,可以进行些清理工作
onDestroy:在组件被销毁时调用,可以进行些资源的释放操作
TiledMap(地图)
- 用于在游戏中显示tmx格式的地图
- 属性检查器添加TiledMap组件后,从资源管理器拖拽一个.tmx格式的地图资源到Tmx Asset,在 TiledMap 组件中添加了 Tmx Asset 属性后,会在节点中自动添加与地图中的 Layer 对应的节点。这些节点都添加了 TiledLayer 组件。
DragonBones(骨骼动画)
- 可以对骨骼动画资源进行渲染和播放
- 在 层级管理器 中选中需要添加 DragonBones 组件的节点,然后属性检查器添加DragonBones ,即可添加 DragonBones 组件到节点上。
Graphics (绘图)
- Graphics组件提供了一系列绘画接口,这些接口参考了 canvas 的绘画接口来进行实现。
- 属性检查器添加Graphics,即可添加 Graphics 组件到节点上。
draw call
- draw call是指将图形渲染到屏幕上的每个独立渲染操作,每个draw call都需要CPU和GPU之间的通信,并对性能产生影响。
- 在游戏或应用程序中,当需要渲染大量的图形元素时,draw call的数量会成为性能的瓶颈。因此,优化draw call的数量对于提高游戏性能至关重要。
- 减少draw call的方法:
- 批量渲染:将相同材质、相邻的图形元素合并为一个draw call。这可以通过使用SpriteBatchNode或者SpriteFrameCache来实现。
- 使用纹理图集:将多个小纹理合并为一个大纹理图集,以减少draw call的数量。这可以通过使用TexturePacker等工具来实现。
- 使用合理的渲染顺序:根据图形元素的渲染顺序,将相同材质的图形元素放在一起渲染,以减少draw call的切换。
- 减少透明度:透明度较低的图形元素需要进行混合操作,这会增加draw call的数量。因此,尽量减少透明度较低的图形元素的使用。
js判断变量a是否为数组
let a = [1, 2, 3];
//Array.isArray()
if (Array.isArray(a)) {
console.log("a是一个数组");
} else {
console.log("a不是一个数组");
}
//instanceof
if (a instanceof Array) {
console.log("a是一个数组");
} else {
console.log("a不是一个数组");
}
//Array.prototype.isPrototypeOf()
if (Array.prototype.isPrototypeOf(a)) {
console.log("a是一个数组");
} else {
console.log("a不是一个数组");
}
//Object.prototype.toString.call()
if (Object.prototype.toString.call(a) === '[object Array]') {
console.log("a是一个数组");
} else {
console.log("a不是一个数组");
}
//Array.from()
if (Array.from(a).length === a.length) {
console.log("a是一个数组");
} else {
console.log("a不是一个数组");
}
js基本数据类型
Number(数字)、String(字符串)、Boolean(布尔值)、Null(空值)、Undefined(未定义)、Symbol(符号)