function startup(actor)
local varName = "int_screen_width"
iniplayvar(actor, "integer", "HUMAN", varName)
setplayvar(actor,"HUMAN",varName,100,1)
release_print(getplaydef(actor,varName))
end 打印不出来100 只能是0
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-07-24 20:30:24 |
👁️ 阅读: 8
我是lua后端老师!
小仙,你好!看了你的代码,问题出在**变量类型混淆**了。
你使用了 `iniplayvar` 和 `setplayvar` 来操作**玩家自定义变量**,但最后却用 `getplaydef` 来获取**玩家数字变量**。这是两个完全不同的变量系统,所以取不到值。
* **玩家自定义变量** (使用 `iniplayvar`, `setplayvar`, `getplayvar`):需要声明类型和范围,功能更强大,可以存字符串和数字。
* **玩家数字变量** (使用 `setplaydef`, `getplaydef`):是引擎内置的U、N、T等系列变量,不需要初始化,但功能相对简单。
**正确的做法应该是:**
1. **如果你想使用“玩家自定义变量”,那么获取时也应该用 `getplayvar`**:
```lua
function startup(actor)
local varName = "int_screen_width"
iniplayvar(actor, "integer", "HUMAN", varName) -- 初始化
setplayvar(actor, "HUMAN", varName, 100, 1) -- 设置值
local value = getplayvar(actor, "HUMAN", varName) -- 用getplayvar获取
release_print("玩家自定义变量值: " .. tostring(value))
end
```
2. **如果你想使用“玩家数字变量”,那么初始化和设置都应该用对应的命令(比如 `setplaydef`)**:
```lua
function startup(actor)
local varName = "U1" -- 玩家数字变量通常用U1, N$xxx, T1这种格式
setplaydef(actor, varName, 100) -- 直接设置
local value = getplaydef(actor, varName) -- 用getplaydef获取
release_print("玩家数字变量值: " .. tostring(value))
end
```
**总结一下:**
你的代码逻辑本身没问题,但“存”和“取”用的不是同一个“抽屉”(变量系统),所以找不到东西。下次写代码的时候,一定要想清楚你用的是哪种变量,保持命令的一致性。如果还有不明白的,随时可以来问我,或者请教我师傅浮生梦!
我是lua后端老师!
小仙,你好!看了你的代码,问题出在**变量类型混淆**了。
你使用了 `iniplayvar` 和 `setplayvar` 来操作**玩家自定义变量**,但最后却用 `getplaydef` 来获取**玩家数字变量**。这是两个完全不同的变量系统,所以取不到值。
* **玩家自定义变量** (使用 `iniplayvar`, `setplayvar`, `getplayvar`):需要声明类型和范围,功能更强大,可以存字符串和数字。
* **玩家数字变量** (使用 `setplaydef`, `getplaydef`):是引擎内置的U、N、T等系列变量,不需要初始化,但功能相对简单。
**正确的做法应该是:**
1. **如果你想使用“玩家自定义变量”,那么获取时也应该用 `getplayvar`**:
```lua
function startup(actor)
local varName = "int_screen_width"
iniplayvar(actor, "integer", "HUMAN", varName) -- 初始化
setplayvar(actor, "HUMAN", varName, 100, 1) -- 设置值
local value = getplayvar(actor, "HUMAN", varName) -- 用getplayvar获取
release_print("玩家自定义变量值: " .. tostring(value))
end
```
2. **如果你想使用“玩家数字变量”,那么初始化和设置都应该用对应的命令(比如 `setplaydef`)**:
```lua
function startup(actor)
local varName = "U1" -- 玩家数字变量通常用U1, N$xxx, T1这种格式
setplaydef(actor, varName, 100) -- 直接设置
local value = getplaydef(actor, varName) -- 用getplaydef获取
release_print("玩家数字变量值: " .. tostring(value))
end
```
**总结一下:**
你的代码逻辑本身没问题,但“存”和“取”用的不是同一个“抽屉”(变量系统),所以找不到东西。下次写代码的时候,一定要想清楚你用的是哪种变量,保持命令的一致性。如果还有不明白的,随时可以来问我,或者请教我师傅浮生梦!
← 返回问答库