创游世界数据存储选择指南
一句话摘要
创游世界变量与数据存储位置的完整选择指南,帮你理解什么时候用局部变量、什么时候用属性、什么时候用变量表、什么时候用配置表,避免数据丢失和作用域混乱。
适合谁阅读
- 遇到「变量值丢失」问题的开发者
- 不知道数据该放哪里的新手
- 需要设计数据架构的进阶用户
你将学到什么
- 变量存储位置的四个层级
- 每种存储方式的特点和生命周期
- 数据存储位置的选择流程
- 常见数据存储错误与正确做法
- 配置表和变量表的区别
变量存储位置总览
创游世界有四种变量存储位置:
| 位置 | 生命周期 | 存储内容 | 典型用途 |
|---|---|---|---|
| 局部变量 | 当前脚本执行完消失 | 临时计算 | 循环计数、一次性判断 |
| 属性 | 物体/地图/系统存在期间 | 物体状态 | 门是否开启、怪物是否激活 |
| 变量表 | 绑定到玩家账号 | 玩家数据 | 金币、背包、任务进度 |
| 配置表 | 只读静态数据 | 策划数据 | 怪物属性、道具数据 |
一、局部变量
什么时候用
局部变量适合「用完就扔」的临时数据:
| 场景 | 示例 |
|---|---|
| 循环中的计数 | 新建局部变量 计次 = 0 |
| 临时计算中间值 | 新建局部变量 临时值 = a + b |
| 一次性判断条件 | 如果 获取局部变量 是否首日 = 真 |
| 不需要跨触发保留的值 | 某个函数内的临时计算 |
什么时候不用
局部变量不适合需要持久化的数据:
| 场景 | ❌ 错误做法 | ✅ 正确做法 |
|---|---|---|
| 玩家金币 | 局部变量存金币 | 玩家变量表存金币 |
| 任务进度 | 局部变量存进度 | 玩家变量表存进度 |
| 门是否开启 | 局部变量存状态 | 自身属性存状态 |
| 当前波次 | 局部变量存波次 | 地图属性存波次 |
记忆口诀
局部变量 = 纸杯,用完就扔
二、属性
属性是挂载在「某个主体」上的数据,随主体存在。
四种属性的区别
| 属性类型 | 挂载主体 | 生命周期 | 作用域 |
|---|---|---|---|
| 自身属性 | 当前物体 | 物体存在期间 | 只有该物体能访问 |
| 地图属性 | 当前地图 | 地图存在期间 | 当前地图所有物体能访问 |
| 系统属性 | 系统 | 游戏全程 | 所有地图所有物体能访问 |
| 玩家属性 | 玩家 | 玩家会话 | 当前玩家能访问 |
自身属性
什么时候用:某个物体自己的状态
| 场景 | 示例 |
|---|---|
| 门是否开启 | 获取自身属性 "是否开启" |
| 怪物是否激活 | 获取自身属性 "已激活" |
| 机关状态 | 获取自身属性 "机关状态" |
| 冷却时间 | 获取自身属性 "冷却剩余" |
地图属性
什么时候用:同一地图内多个物体需要共享的数据
| 场景 | 示例 |
|---|---|
| 当前波次 | 获取当前地图属性 "波次" |
| 地图倒计时 | 获取当前地图属性 "倒计时" |
| 怪物总数 | 获取当前地图属性 "存活怪物数" |
| 机关联动 | 地图内多个机关共享状态 |
系统属性
什么时候用:需要跨地图共享的全局数据
| 场景 | 示例 |
|---|---|
| 游戏全局设置 | 获取系统属性 "难度" |
| 跨地图流程控制 | 当前游戏阶段 |
| 联机房间状态 | 房间内共享数据 |
注意:不要滥用系统属性,否则会导致「所有逻辑都在抢同一层全局状态」。
玩家属性
什么时候用:与玩家相关的状态
| 场景 | 示例 |
|---|---|
| 玩家等级 | 获取玩家属性 "等级" |
| 玩家金币 | 获取玩家属性 "金币" |
| 玩家位置 | 跨地图记住玩家位置 |
记忆口诀
属性 = 口袋里的东西
- 自身属性 = 我自己的口袋(只有我能访问)
- 地图属性 = 房间里的黑板(房间内都能看)
- 系统属性 = 大楼里的公告栏(整栋楼都能看)
- 玩家属性 = 你的专属仓库(你的数据)
三、玩家变量表
什么时候用
玩家变量表适合结构化的持久化数据:
| 场景 | 示例 |
|---|---|
| 玩家背包 | 物品列表 |
| 玩家任务列表 | 任务ID、状态、进度 |
| 玩家成就记录 | 成就完成情况 |
| 玩家装备栏 | 装备数据 |
玩家变量表 vs 属性
| 特性 | 玩家变量表 | 玩家属性 |
|---|---|---|
| 持久化 | 支持云存储,跨会话 | 绑定玩家会话 |
| 结构化 | 多行多字段 | 单个值 |
| 动态性 | 可增删行 | 固定字段 |
| 适用场景 | 列表型数据 | 单值数据 |
什么时候用变量表而不是属性
- 数据是「列表」或「表」结构
- 需要增删行
- 需要跨会话持久化
四、配置表
什么时候用
配置表适合静态的策划数据:
| 场景 | 示例 |
|---|---|
| 怪物属性表 | 怪物名称、攻击力、生命值 |
| 道具数据表 | 道具名称、效果、价格 |
| 关卡配置表 | 关卡难度、通关条件 |
| 商店商品表 | 商品ID、名称、价格 |
配置表 vs 变量表
| 特性 | 配置表 | 变量表 |
|---|---|---|
| 用途 | 静态数据(只读) | 动态数据(可写) |
| 修改来源 | 策划配置 | 玩家行为 |
| 运行时修改 | 不建议 | 可以 |
| 持久化 | 通常不持久化 | 可持久化 |
什么时候用配置表而不是属性
- 数据是「规则」或「配置」
- 不需要在运行时修改
- 多个地方需要读取相同数据
五、数据存储选择流程
选择流程图
这个数据需要存储吗?
↓ 是
这个数据属于谁?
├── 单个物体 → 自身属性
├── 当前地图多个物体 → 当前地图属性
├── 某个玩家 → 玩家属性 / 玩家变量表
└── 整个游戏 → 系统属性
这个数据需要持久化吗?
├── 是 → 玩家变量表(勾选云存储)
└── 否 → 属性
这个数据是静态规则吗?
├── 是 → 配置表
└── 否 → 属性 / 变量表一句话选择法
| 场景 | 选择 |
|---|---|
| 用完就扔的临时计算 | 局部变量 |
| 这个物体自己的状态 | 自身属性 |
| 这个地图共享的状态 | 地图属性 |
| 全局/跨地图状态 | 系统属性 |
| 玩家相关状态(单个值) | 玩家属性 |
| 玩家相关状态(列表/持久化) | 玩家变量表 |
| 静态策划数据 | 配置表 |
六、常见错误与正确做法
错误1:把货币存到局部变量
// ❌ 错误
当点击按钮时
新建局部变量 金币 = 100
金币 - 10 = 金币
// 点击结束,金币值就消失了
// ✅ 正确
当点击按钮时
获取玩家变量 "金币"
如果 金币 >= 10
设置玩家属性 "金币" 为 金币 - 10
结束错误2:把地图状态存到自身属性
// ❌ 错误
当被创建时
设置自身属性 "当前波次" = 1
// 切换地图后自身属性丢失
// ✅ 正确
当被创建时
设置当前地图属性 "当前波次" = 1
// 地图属性随地图存在错误3:把玩家数据存到系统属性
// ❌ 错误
设置系统属性 "玩家金币" = 100
// 所有玩家共享同一个金币
// ✅ 正确
设置玩家属性 "金币" = 100
// 每个玩家有独立的金币错误4:把静态配置写在变量表里
// ❌ 错误
当开始时
设置玩家变量 "武器攻击力" = 10
设置玩家变量 "武器名称" = "木剑"
// 配置写在运行时变量里
// ✅ 正确
当开始时
获取配置表 名为 "木剑" 的行
获取 木剑.攻击力
// 配置写在配置表里,代码只读配置七、数据存储位置速查表
| 数据类型 | 推荐存储位置 | 说明 |
|---|---|---|
| 临时计算结果 | 局部变量 | 用完就扔 |
| 门的开关状态 | 自身属性 | 单个物体私有 |
| 怪物激活状态 | 自身属性 | 单个物体私有 |
| 机关冷却时间 | 自身属性 | 单个物体私有 |
| 当前波次 | 地图属性 | 地图内共享 |
| 地图倒计时 | 地图属性 | 地图内共享 |
| 怪物总数 | 地图属性 | 地图内共享 |
| 全局难度 | 系统属性 | 全局只读 |
| 联机房间状态 | 系统属性 | 全局共享 |
| 玩家金币 | 玩家属性 / 变量表 | 玩家私有 |
| 玩家等级 | 玩家属性 / 变量表 | 玩家私有 |
| 玩家背包 | 玩家变量表 | 列表结构 |
| 玩家任务进度 | 玩家变量表 | 列表结构 |
| 怪物属性 | 配置表 | 静态配置 |
| 道具数据 | 配置表 | 静态配置 |
| 关卡配置 | 配置表 | 静态配置 |
八、概念关系速查
数据存储位置 = 四种选择
├── 局部变量
│ ├── 生命周期:当前脚本执行完消失
│ ├── 用途:临时计算
│ └── 记忆:纸杯,用完就扔
├── 属性
│ ├── 自身属性:物体私有
│ ├── 地图属性:地图内共享
│ ├── 系统属性:全局共享
│ └── 玩家属性:玩家私有
├── 变量表
│ ├── 结构:多行多字段
│ ├── 用途:列表型玩家数据
│ └── 特点:可持久化
└── 配置表
├── 结构:多行多字段
├── 用途:静态策划数据
└── 特点:通常只读相关页面
待验证问题
以下问题需要进一步验证:
| 问题 | 状态 | 验证方向 |
|---|---|---|
| 局部变量在联机环境下的具体行为 | 🔄 待验证 | 需要联机环境测试 |
| 玩家属性和变量表在联机同步时的差异 | 🔄 待验证 | 需要联机测试对比 |
📝 说明:数据存储选择核心用法已稳定,联机行为属于进阶内容。
后续优化方向
- [ ] 补充更多实战案例
- [ ] 增加数据备份与恢复说明
- [ ] 完善联机数据同步专题
导航入口
- 新手阅读路线 - 学习路线导航
- 创游世界知识库总导航 - 知识库总导航
- 自动生成文档目录 - 文档目录总览
维护报告
- 维护与报告导航 - 维护报告总入口
- AI自动维护复盘记录 - 维护复盘记录
- 错误点与优化点汇总 - 错误点汇总
- 待验证问题清单 - 待验证问题
- 后续研究路线图 - 研究路线图
最后更新:2026-06-16维护者:Azek431
