触动精灵脚本中变量定义须用local限定作用域,避免全局污染和多脚本冲突;基础变量直接赋值,支持多变量逗号分隔定义;函数内变量需local声明,调用后仅返回值可被外部变量接收。

在触动精灵脚本中定义变量,本质就是写标准 Lua 代码,但必须严格遵循其运行环境对作用域和初始化的隐性要求——不加 local 的变量会意外污染全局命名空间,导致多脚本冲突或后续执行异常。
定义一个基础变量(字符串/数字/布尔)
直接赋值即可,无需声明类型:
name = "张三"
level = 99
is_ready = true
这三行代码分别创建了全局变量 name、level、is_ready。触动精灵默认以全局模式加载脚本,所以不加 local 就是全局变量。
为什么推荐一律用 local?
触动精灵多个脚本共存时,若两个脚本都写 x = 10,后加载的脚本会覆盖前一个的 x 值,造成逻辑错乱。local 可彻底隔离变量作用域。
【必须加 local,否则可能被其他脚本意外改写】
local player_name = "战士"
local hp_max = 1200.5
local can_use_skill = false
这些变量只在当前脚本块(或函数内)有效,退出作用域后自动释放,内存更干净。
一次性定义多个变量
方法一:用逗号分隔变量名,等号后用逗号分隔对应值
local a, b, c = 1, "hello", true
方法二:分步赋值(适合初学者理解顺序)
local x, y
x = 100
y = "test"
注意:如果只写 local x, y 而不赋值,x 和 y 的值都是 nil,不是空字符串或 0 —— 这在条件判断中容易出错。
在函数内定义并使用变量
第一步:用 function 关键字声明函数
function calc_damage()
第二步:在函数内部用 local 定义临时变量
local base = 150
local bonus = 30
local crit_rate = 0.25
第三步:计算并返回结果
return base + bonus * (1 + crit_rate)
end
第四步:调用函数获取返回值,并存入新变量
local final_dmg = calc_damage()
这一步很关键:final_dmg 是函数外定义的局部变量,它只保存函数返回的数值,不会继承函数内部的 base/bonus 等变量。











