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

创游世界变量入门完全指南

一句话摘要

本文帮助零基础用户理解创游世界的四种变量层级(局部变量、自身属性、地图属性、玩家变量),掌握每种变量的适用场景和使用技巧,通过最小练习项目建立正确的变量使用习惯。

适合谁阅读

  • 刚学会拖素材但不知道变量怎么用的新手
  • 遇到"数据丢失"问题的创作者
  • 想理解变量作用域的入门学习者

你将学到什么

  • 四种变量层级的区别
  • 什么时候用什么变量
  • 如何避免数据丢失
  • 变量使用的最佳实践

核心结论

⚠️ 重要:变量选错层级,是新手最常犯的错误!

问题原因解决
切换地图后数据没了用了局部变量或地图属性改用玩家变量
玩家数据丢失用了错误层级的变量确认数据应该放哪层
变量值不对作用域理解错误检查变量的生命周期

第一章:什么是变量

1.1 变量的定义

变量 = 存储数据的容器

就像一个带标签的盒子:

  • 变量名:盒子的标签
  • 变量值:盒子里的东西
  • 变量类型:盒子能装什么东西
变量 "金币数量" = 100
变量 "玩家名字" = "小明"
变量 "是否通关" = 真

1.2 创游世界的变量类型

类型说明示例
数字整数或小数100、3.14、-50
文字一串字符"你好"、"玩家"
真假值是/否真、假
数组一组数据[1, 2, 3]、["a", "b"]

第二章:四种变量层级

这是创游世界变量系统最核心的概念!

2.1 层级概览

┌─────────────────────────────────────────┐
│         玩家变量(跨会话持久化)          │ ← 存档用这个!
│  ┌─────────────────────────────────────┐ │
│  │       系统属性(整个游戏)          │ │
│  │  ┌────────────────────────────────┐ │ │
│  │  │     地图属性(当前地图)        │ │ │
│  │  │  ┌──────────────────────────┐  │ │ │
│  │  │  │   自身属性(当前物体)    │  │ │ │
│  │  │  │  ┌────────────────────┐  │  │ │ │
│  │  │  │  │ 局部变量(脚本内) │  │  │ │ │
│  │  │  │  └────────────────────┘  │  │ │
│  │  │  └──────────────────────────┘  │ │
│  │  └────────────────────────────────┘ │
│  └─────────────────────────────────────┘ │
└─────────────────────────────────────────┘

层级越高,数据越持久

2.2 局部变量

定义:只在当前脚本执行期间存在

特点说明
生命周期脚本执行完就消失
作用域只在当前脚本内
典型用途临时计算、中间值

示例

当点击按钮时
  → 新建局部变量 "临时值" 为 0
  → 设置临时值 为 临时值 + 10
  → 显示 "你获得了" + 临时值 + "金币"
// 脚本结束后,临时值就没了

适合场景

  • 计算 1+1=2 这种临时结果
  • 循环中的计数器
  • 只需要用一次的中间值

2.3 自身属性

定义:绑定在当前物体上,随物体存在

特点说明
生命周期随物体存在
作用域当前物体
典型用途物体私有数据

示例

敌人脚本:
当生命值变为 0 时
  → 设置自身属性 "是否已死亡" = 1
  → 播放死亡动画

// 切换地图后物体被销毁,属性会重置

适合场景

  • 这个物体的生命值
  • 敌人的状态
  • 门的开关状态

2.4 地图属性

定义:当前地图内所有物体共享

特点说明
生命周期随地图存在
作用域当前地图内
典型用途地图级共享数据

示例

地图脚本:
当开始时
  → 设置地图属性 "当前波次" = 1

怪物脚本:
当被击败时
  → 设置地图属性 "当前波次" = 地图属性 "当前波次" + 1
  → 发送广播 "波次更新"

适合场景

  • 敌人波次
  • 地图上的机关状态
  • 当前关卡难度

2.5 玩家变量

定义:绑定在玩家账号上,跨会话持久化

特点说明
生命周期永久保存
作用域全局(所有地图)
典型用途玩家存档数据

示例

领取奖励脚本:
当点击时
  → 设置玩家变量 "金币" = 玩家变量 "金币" + 100
  → 广播 "刷新货币"

// 关闭游戏再打开,金币仍然在!

适合场景

  • 玩家金币数量
  • 任务进度
  • 已获得的道具
  • 已解锁的内容

第三章:什么时候用什么变量

3.1 选择指南

需求正确选择错误选择
计算临时结果局部变量玩家变量
物体私有数据自身属性局部变量
地图内共享数据地图属性玩家变量
玩家存档数据玩家变量地图属性

3.2 典型场景对照

场景 1:按钮点击显示提示

// ✅ 正确:用局部变量
当点击时
  → 新建局部变量 "提示文字" 为 "Hello!"
  → 显示提示文字

// ❌ 错误:用玩家变量(浪费)
当点击时
  → 设置玩家变量 "提示" 为 "Hello!"
  → 显示玩家变量 "提示"

场景 2:存储敌人生命值

// ✅ 正确:用自身属性
敌人脚本:
当受到伤害 10 时
  → 设置自身属性 "生命值" 为 自身属性 "生命值" - 10

// ❌ 错误:用局部变量(换触发时机就丢了)
敌人脚本:
当受到伤害 10 时
  → 新建局部变量 "生命值" 为 100
  → 设置局部变量 "生命值" 为 局部变量 "生命值" - 10

场景 3:存储玩家金币

// ✅ 正确:用玩家变量
当获得金币时
  → 设置玩家变量 "金币" 为 玩家变量 "金币" + 100

// ❌ 错误:用地图属性(切换地图会丢)
当获得金币时
  → 设置地图属性 "金币" 为 地图属性 "金币" + 100

3.3 数据持久性总结

变量类型关闭游戏后切换地图后对象销毁后
局部变量❌ 丢失❌ 丢失❌ 丢失
自身属性❌ 丢失❌ 丢失❌ 丢失
地图属性❌ 丢失❌ 丢失✅ 保留
玩家变量✅ 保留✅ 保留✅ 保留

第四章:最小练习项目

项目目标

做一个"收集金币"的练习,掌握变量的正确使用。

练习步骤

第1步:创建变量

  1. 创建玩家变量:金币(初始值 0)
  2. 创建自身属性:是否已收集(初始值 0)
  3. 创建局部变量:临时计数(仅脚本内使用)

第2步:编写收集脚本

金币物体脚本:
当碰撞时
  → 如果 自身属性 "是否已收集" = 0
  → → 设置自身属性 "是否已收集" = 1
  → → 销毁自身
  → → 设置玩家变量 "金币" = 玩家变量 "金币" + 10
  → → 广播 "刷新UI"

第3步:编写UI刷新脚本

UI脚本:
当收到广播 "刷新UI" 时
  → 设置文本 "金币显示" 为 "金币:" + 玩家变量 "金币"

练习检查

检查项结果
玩家变量能正确+10吗?
切换地图后金币还在吗?
重开游戏后金币还在吗?
金币物体只被收集一次吗?

第五章:常见问题

Q:为什么我的变量值变成0了?

A:检查变量的层级是否正确。

常见原因:

  • 用了局部变量,脚本执行完就重置
  • 用了自身属性,对象销毁后重置
  • 用了地图属性,切换地图后重置

解决方法:根据数据需要的持久程度,选择正确层级的变量。

Q:为什么不同物体的同一个变量名互相影响?

A:检查是否用了地图属性。地图属性在该地图内是共享的。

如果需要物体私有数据,应该用自身属性。

Q:怎么知道当前用的是哪个变量?

A:在脚本编辑时,变量名称前的标签会显示变量类型:

  • 局部: = 局部变量
  • 属性: = 自身属性
  • 地图: = 地图属性
  • 玩家: = 玩家变量

Q:玩家变量可以改名字吗?

A:可以,但要注意:

  • 如果游戏已经有人使用,改名后旧存档会丢失这个数据
  • 建议在游戏发布前确定变量名
  • 如果必须改名,考虑添加数据迁移逻辑

第六章:最佳实践

实践1:初始化时机

在游戏开始时统一初始化玩家变量:

当游戏开始时
  → 如果玩家变量 "金币" 不存在
  → → 设置玩家变量 "金币" = 0
  → → 设置玩家变量 "生命值" = 100
  → → 广播 "刷新UI"

实践2:变量命名规范

类别命名示例说明
金币/货币金币钻石积分清晰易懂
状态是否完成是否解锁带是否前缀
计数击杀数收集数明确用途
配置难度等级音乐开关明确含义

实践3:避免滥用全局变量

不是所有数据都要用玩家变量:

  • 临时计算用局部变量
  • 物体私有数据用自身属性
  • 地图共享数据用地图属性
  • 只有需要持久保存的才用玩家变量

相关页面


待验证问题

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

问题状态验证方向
变量类型转换的具体行为🔄 待验证需官方文档确认
数组变量的操作限制🔄 待验证需实际测试
变量名的最大长度限制🔄 待验证需实际测试

📝 说明:基本变量使用已稳定,以上问题对日常开发影响较小。

后续优化方向

  • [ ] 补充变量操作的截图示例
  • [ ] 添加更多实战练习案例
  • [ ] 完善变量调试方法说明

参与维护

发现文档问题?

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

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