用途:该技能为 Defold 项目提供 xmath 的 API 参考与原地(in-place)数学优化模式,适用于编写性能敏感的数学代码、优化热循环中的向量与矩阵运算。
前置条件:使用前必须确认项目已引入 xmath。检查 game.project 中是否存在包含 thejustinwalsh/defold-xmath 的依赖 URL(如 dependencies#N = https://github.com/thejustinwalsh/defold-xmath/archive/...),或检查 .deps/ 目录下是否存在 xmath/。若两者都没有,则不应应用该技能,应告知用户项目未使用 xmath,并建议添加依赖: [project] dependencies#N = https://github.com/thejustinwalsh/defold-xmath/archive/refs/heads/main.zip
核心概念:标准 vmath 每次运算都会新建 Lua 对象,在热循环中造成持续的 GC 压力;xmath 则原地修改已有变量,结果写入第一个参数,只需分配一次即可反复复用。
关键规则:临时变量应在模块作用域或 init() 中预分配,绝不在 update() 或 on_message() 内分配;输出变量始终是第一个参数,这是与 vmath 的根本调用约定差异;函数无返回值,不能链式调用,每一步需使用临时变量;用 vmath 创建初始对象(vector3、vector4、quat、matrix4)作为缓冲区,再用 xmath 操作;部分函数(如 lerp)按输出参数类型支持 vector3、vector4 与四元数。
主要能力:向量运算(add、sub、mul、div、cross、mul_per_elem、normalize、rotate、vector);插值(lerp、slerp);四元数运算(quat、conj、quat_axis_angle、quat_basis、quat_from_to、quat_rotation_x/y/z);矩阵运算(matrix、matrix_axis_angle、matrix_from_quat、matrix_frustum、matrix_inv、matrix_look_at、matrix4_orthographic、matrix_ortho_inv、matrix4_perspective、matrix_rotation_x/y/z、matrix_translation)。所有函数均将结果写入第一个参数且无返回值。
限制:仅适用于已引入 xmath 的 Defold 项目;具体性能收益与平台支持等资料暂未提供。