创游世界变量作用域速查卡
一句话摘要
本文用一问一答的形式快速解释创游世界中的五种变量类型及其适用场景,帮助你快速判断「这个数据应该放在哪里」。
适合谁阅读
- 遇到「变量值丢失」或「数据放错位置」问题的新手
- 需要快速查阅变量作用域的开发者
- 想理解数据分层的进阶用户
你将学到什么
- 五种变量类型的核心区别
- 每种变量的生命周期和存储位置
- 什么时候用什么变量
- 常见错误与正确做法
Q1:什么是变量?
A:变量是存储数据的容器,就像一个有名字的盒子,你可以往里面放数字、文本、开关状态等信息。
Q2:创游世界有哪几种变量?
A:五种:
| 变量类型 | 通俗理解 | 生命周期 |
|---|---|---|
| 局部变量 | 一次性纸杯,用完就扔 | 当前脚本执行完就消失 |
| 自身属性 | 物体自己的口袋 | 随物体存在 |
| 地图属性 | 当前房间的公共区域 | 随地图存在 |
| 系统属性 | 整栋楼的公共区域 | 整个游戏运行期间 |
| 玩家变量 | 你的专属仓库(可存档) | 跨会话持久化 |
Q3:局部变量是什么?怎么用?
A:局部变量是脚本执行过程中临时创建的变量,只在当前脚本执行期间存在。
适合场景:
- 临时计算(比如
1+1=2用完就扔) - 循环中的计数变量
- 一次性判断条件
示例:
新建局部变量 为 0
重复 10 次
设置局部变量1 为 局部变量1 + 1
结束
发送广播 "完成第" + 局部变量1 + "次"⚠️ 注意:局部变量执行完就消失,不能跨脚本持久,不能跨物体访问。
Q4:自身属性是什么?怎么用?
A:自身属性是挂载在当前物体上的数据,记录这个物体自己的状态。
适合场景:
- 这个物体的生命值
- 这扇门是否开启
- 这个敌人是否已激活
- 这个技能是否在冷却
示例:
// 检查门的状态
如果 获取自身属性 "是否开启" 等于 假
设置自身属性 "是否开启" 为 真
播放动画 "开门"
结束⚠️ 注意:只有当前物体能访问自己的自身属性。
Q5:地图属性是什么?怎么用?
A:地图属性是挂载在当前地图上的数据,当前地图里所有物体都能访问。
适合场景:
- 当前波次(所有怪物都要知道)
- 地图内任务状态
- 地图倒计时
- 地图内货币池
示例:
// 增加波次
设置当前地图属性 "当前波次" 为 获取当前地图属性 "当前波次" + 1
如果 获取当前地图属性 "当前波次" 大于 获取当前地图属性 "总波次"
发送广播 "关卡完成"
结束⚠️ 注意:切换地图后数据会重置。
Q6:系统属性是什么?怎么用?
A:系统属性是挂载在系统层的数据,整个游戏里所有地方都能访问。
适合场景:
- 全局设置(难度、模式)
- 联机房间状态
- 跨地图的流程控制
⚠️ 注意:不要滥用系统属性,否则后期所有逻辑都在「抢写同一层全局状态」。
Q7:玩家变量是什么?怎么用?
A:玩家变量是绑定到玩家账号的数据,可以持久化保存。
适合场景:
- 玩家的金币数量
- 玩家的背包物品
- 玩家的任务进度
- 玩家的等级、装备
示例:
设置玩家变量 "金币" 为 100
设置玩家变量 "等级" 为 1⚠️ 注意:玩家变量是最可靠的持久化层。
Q8:什么时候用什么变量?
A:记住这个口诀:
| 场景 | 推荐变量 |
|---|---|
| 临时计算,用完就扔 | 局部变量 |
| 这个物体自己的状态 | 自身属性 |
| 地图里大家共享的状态 | 地图属性 |
| 全局/跨地图的状态 | 系统属性 |
| 玩家相关要存档的数据 | 玩家变量 |
Q9:为什么变量值会丢失?
A:大概率是你把应该存档的数据放在了局部变量或自身属性里。
| 问题原因 | 解决方法 |
|---|---|
| 局部变量执行完就消失 | 需要持久化的数据改用玩家变量 |
| 切换地图后数据丢失 | 跨地图数据改用玩家变量或系统属性 |
| 其他物体无法访问 | 改用地图属性或玩家变量 |
Q10:切换地图后数据丢失怎么办?
A:这通常是把「真值」放在了错误的地方。
| 问题 | 原因 | 解决 |
|---|---|---|
| UI 上的数值丢失 | UI 状态 ≠ 真值 | 真值放在地图层或系统层 |
| 玩家金币丢失 | 没用玩家变量 | 改用玩家变量 |
| 地图状态丢失 | 用了局部变量 | 改用地图属性或玩家变量 |
Q11:局部变量和自身属性有什么区别?
A:
| 区别 | 局部变量 | 自身属性 |
|---|---|---|
| 生命周期 | 脚本执行完就消失 | 随物体存在 |
| 访问范围 | 只有当前脚本能访问 | 只有当前物体能访问 |
| 跨触发保留 | ❌ 不保留 | ✅ 保留 |
| 跨对象访问 | ❌ 不能 | ❌ 不能 |
Q12:玩家变量和系统属性有什么区别?
A:
| 区别 | 玩家变量 | 系统属性 |
|---|---|---|
| 绑定的对象 | 玩家账号 | 游戏全局 |
| 持久化 | ✅ 可存档 | ❌ 通常不存档 |
| 跨玩家共享 | ❌ 各玩家独立 | ✅ 所有玩家共享 |
| 典型用途 | 金币、背包、进度 | 游戏模式、房间状态 |
Q13:怎么选择变量的存储位置?
A:问自己这四个问题:
1. 这个数据需要持久化吗?
→ 是 → 玩家变量
→ 否 → 继续看
2. 这个数据属于谁?
→ 单个物体 → 自身属性
→ 地图内共享 → 地图属性
→ 全局共享 → 系统属性
3. 这个数据是静态规则吗?
→ 是 → 配置表
→ 否 → 属性或变量Q14:常见错误有哪些?
A:
| 错误做法 | 问题 | 正确做法 |
|---|---|---|
| 把金币存到局部变量 | 切地图就消失 | 用玩家变量 |
| 把波次存到自身属性 | 其他怪物读不到 | 用地图属性 |
| 所有东西都放系统属性 | 后期逻辑混乱 | 按需分层 |
| 把 UI 当成数据来源 | 切地图数据丢失 | 真值放地图层 |
Q15:一句话总结
A:记住这三条:
- 临时计算用局部变量
- 状态用属性(自身/地图/系统,看范围)
- 要存档用玩家变量
相关页面
- 创游世界变量与作用域完全指南 - 完整版指南
- 脚本作用域与数据流深度研究 - 深度研究
- 核心概念速查手册 - 概念速查
- 常见问题与避坑指南 - 常见问题解决
待验证问题
以下问题需要进一步验证:
| 问题 | 状态 | 验证方向 |
|---|---|---|
| 局部变量在联机环境下的行为 | 🔄 待验证 | 需要联机环境测试 |
| 系统属性在不同版本下的生命周期细节 | 🔄 待验证 | 需要多版本对比 |
| 玩家变量在跨游戏存档的具体限制 | 🔄 待验证 | 需要官方文档确认 |
📝 说明:变量作用域核心概念已稳定,联机行为属于进阶内容。
后续优化方向
- [ ] 补充更多实战场景示例
- [ ] 添加变量选择的流程图
- [ ] 补充联机同步相关说明
