Skip to content
写作:待补充更新:2026-05-16字数:—阅读:—维护:Azek431

创游世界数据存储选择指南

一句话摘要

创游世界变量与数据存储位置的完整选择指南,帮你理解什么时候用局部变量、什么时候用属性、什么时候用变量表、什么时候用配置表,避免数据丢失和作用域混乱。

适合谁阅读

  • 遇到「变量值丢失」问题的开发者
  • 不知道数据该放哪里的新手
  • 需要设计数据架构的进阶用户

你将学到什么

  • 变量存储位置的四个层级
  • 每种存储方式的特点和生命周期
  • 数据存储位置的选择流程
  • 常见数据存储错误与正确做法
  • 配置表和变量表的区别

变量存储位置总览

创游世界有四种变量存储位置:

位置生命周期存储内容典型用途
局部变量当前脚本执行完消失临时计算循环计数、一次性判断
属性物体/地图/系统存在期间物体状态门是否开启、怪物是否激活
变量表绑定到玩家账号玩家数据金币、背包、任务进度
配置表只读静态数据策划数据怪物属性、道具数据

一、局部变量

什么时候用

局部变量适合「用完就扔」的临时数据:

场景示例
循环中的计数新建局部变量 计次 = 0
临时计算中间值新建局部变量 临时值 = a + b
一次性判断条件如果 获取局部变量 是否首日 = 真
不需要跨触发保留的值某个函数内的临时计算

什么时候不用

局部变量不适合需要持久化的数据:

场景❌ 错误做法✅ 正确做法
玩家金币局部变量存金币玩家变量表存金币
任务进度局部变量存进度玩家变量表存进度
门是否开启局部变量存状态自身属性存状态
当前波次局部变量存波次地图属性存波次

记忆口诀

局部变量 = 纸杯,用完就扔


二、属性

属性是挂载在「某个主体」上的数据,随主体存在。

四种属性的区别

属性类型挂载主体生命周期作用域
自身属性当前物体物体存在期间只有该物体能访问
地图属性当前地图地图存在期间当前地图所有物体能访问
系统属性系统游戏全程所有地图所有物体能访问
玩家属性玩家玩家会话当前玩家能访问

自身属性

什么时候用:某个物体自己的状态

场景示例
门是否开启获取自身属性 "是否开启"
怪物是否激活获取自身属性 "已激活"
机关状态获取自身属性 "机关状态"
冷却时间获取自身属性 "冷却剩余"

地图属性

什么时候用:同一地图内多个物体需要共享的数据

场景示例
当前波次获取当前地图属性 "波次"
地图倒计时获取当前地图属性 "倒计时"
怪物总数获取当前地图属性 "存活怪物数"
机关联动地图内多个机关共享状态

系统属性

什么时候用:需要跨地图共享的全局数据

场景示例
游戏全局设置获取系统属性 "难度"
跨地图流程控制当前游戏阶段
联机房间状态房间内共享数据

注意:不要滥用系统属性,否则会导致「所有逻辑都在抢同一层全局状态」。

玩家属性

什么时候用:与玩家相关的状态

场景示例
玩家等级获取玩家属性 "等级"
玩家金币获取玩家属性 "金币"
玩家位置跨地图记住玩家位置

记忆口诀

属性 = 口袋里的东西

  • 自身属性 = 我自己的口袋(只有我能访问)
  • 地图属性 = 房间里的黑板(房间内都能看)
  • 系统属性 = 大楼里的公告栏(整栋楼都能看)
  • 玩家属性 = 你的专属仓库(你的数据)

三、玩家变量表

什么时候用

玩家变量表适合结构化的持久化数据:

场景示例
玩家背包物品列表
玩家任务列表任务ID、状态、进度
玩家成就记录成就完成情况
玩家装备栏装备数据

玩家变量表 vs 属性

特性玩家变量表玩家属性
持久化支持云存储,跨会话绑定玩家会话
结构化多行多字段单个值
动态性可增删行固定字段
适用场景列表型数据单值数据

什么时候用变量表而不是属性

  • 数据是「列表」或「表」结构
  • 需要增删行
  • 需要跨会话持久化

四、配置表

什么时候用

配置表适合静态的策划数据:

场景示例
怪物属性表怪物名称、攻击力、生命值
道具数据表道具名称、效果、价格
关卡配置表关卡难度、通关条件
商店商品表商品ID、名称、价格

配置表 vs 变量表

特性配置表变量表
用途静态数据(只读)动态数据(可写)
修改来源策划配置玩家行为
运行时修改不建议可以
持久化通常不持久化可持久化

什么时候用配置表而不是属性

  • 数据是「规则」或「配置」
  • 不需要在运行时修改
  • 多个地方需要读取相同数据

五、数据存储选择流程

选择流程图

这个数据需要存储吗?
    ↓ 是
这个数据属于谁?
    ├── 单个物体 → 自身属性
    ├── 当前地图多个物体 → 当前地图属性
    ├── 某个玩家 → 玩家属性 / 玩家变量表
    └── 整个游戏 → 系统属性

这个数据需要持久化吗?
    ├── 是 → 玩家变量表(勾选云存储)
    └── 否 → 属性

这个数据是静态规则吗?
    ├── 是 → 配置表
    └── 否 → 属性 / 变量表

一句话选择法

场景选择
用完就扔的临时计算局部变量
这个物体自己的状态自身属性
这个地图共享的状态地图属性
全局/跨地图状态系统属性
玩家相关状态(单个值)玩家属性
玩家相关状态(列表/持久化)玩家变量表
静态策划数据配置表

六、常见错误与正确做法

错误1:把货币存到局部变量

// ❌ 错误
当点击按钮时
    新建局部变量 金币 = 100
    金币 - 10 = 金币
// 点击结束,金币值就消失了

// ✅ 正确
当点击按钮时
    获取玩家变量 "金币"
    如果 金币 >= 10
        设置玩家属性 "金币" 为 金币 - 10
    结束

错误2:把地图状态存到自身属性

// ❌ 错误
当被创建时
    设置自身属性 "当前波次" = 1
// 切换地图后自身属性丢失

// ✅ 正确
当被创建时
    设置当前地图属性 "当前波次" = 1
// 地图属性随地图存在

错误3:把玩家数据存到系统属性

// ❌ 错误
设置系统属性 "玩家金币" = 100
// 所有玩家共享同一个金币

// ✅ 正确
设置玩家属性 "金币" = 100
// 每个玩家有独立的金币

错误4:把静态配置写在变量表里

// ❌ 错误
当开始时
    设置玩家变量 "武器攻击力" = 10
    设置玩家变量 "武器名称" = "木剑"
// 配置写在运行时变量里

// ✅ 正确
当开始时
    获取配置表 名为 "木剑" 的行
    获取 木剑.攻击力
// 配置写在配置表里,代码只读配置

七、数据存储位置速查表

数据类型推荐存储位置说明
临时计算结果局部变量用完就扔
门的开关状态自身属性单个物体私有
怪物激活状态自身属性单个物体私有
机关冷却时间自身属性单个物体私有
当前波次地图属性地图内共享
地图倒计时地图属性地图内共享
怪物总数地图属性地图内共享
全局难度系统属性全局只读
联机房间状态系统属性全局共享
玩家金币玩家属性 / 变量表玩家私有
玩家等级玩家属性 / 变量表玩家私有
玩家背包玩家变量表列表结构
玩家任务进度玩家变量表列表结构
怪物属性配置表静态配置
道具数据配置表静态配置
关卡配置配置表静态配置

八、概念关系速查

数据存储位置 = 四种选择
  ├── 局部变量
  │   ├── 生命周期:当前脚本执行完消失
  │   ├── 用途:临时计算
  │   └── 记忆:纸杯,用完就扔
  ├── 属性
  │   ├── 自身属性:物体私有
  │   ├── 地图属性:地图内共享
  │   ├── 系统属性:全局共享
  │   └── 玩家属性:玩家私有
  ├── 变量表
  │   ├── 结构:多行多字段
  │   ├── 用途:列表型玩家数据
  │   └── 特点:可持久化
  └── 配置表
      ├── 结构:多行多字段
      ├── 用途:静态策划数据
      └── 特点:通常只读

相关页面


待验证问题

以下问题需要进一步验证:

问题状态验证方向
局部变量在联机环境下的具体行为🔄 待验证需要联机环境测试
玩家属性和变量表在联机同步时的差异🔄 待验证需要联机测试对比

📝 说明:数据存储选择核心用法已稳定,联机行为属于进阶内容。

后续优化方向

  • [ ] 补充更多实战案例
  • [ ] 增加数据备份与恢复说明
  • [ ] 完善联机数据同步专题

导航入口

维护报告


最后更新:2026-06-16维护者:Azek431

参与维护

发现文档问题?

你可以编辑页面、提交反馈,或复制链接给维护者,帮助这个资料库继续变好。

由 Azek431 整理与维护 | 基于 MIT 许可证开源