创游世界变量入门完全指南
一句话摘要
本文帮助零基础用户理解创游世界的四种变量层级(局部变量、自身属性、地图属性、玩家变量),掌握每种变量的适用场景和使用技巧,通过最小练习项目建立正确的变量使用习惯。
适合谁阅读
- 刚学会拖素材但不知道变量怎么用的新手
- 遇到"数据丢失"问题的创作者
- 想理解变量作用域的入门学习者
你将学到什么
- 四种变量层级的区别
- 什么时候用什么变量
- 如何避免数据丢失
- 变量使用的最佳实践
核心结论
⚠️ 重要:变量选错层级,是新手最常犯的错误!
| 问题 | 原因 | 解决 |
|---|---|---|
| 切换地图后数据没了 | 用了局部变量或地图属性 | 改用玩家变量 |
| 玩家数据丢失 | 用了错误层级的变量 | 确认数据应该放哪层 |
| 变量值不对 | 作用域理解错误 | 检查变量的生命周期 |
第一章:什么是变量
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
// ❌ 错误:用地图属性(切换地图会丢)
当获得金币时
→ 设置地图属性 "金币" 为 地图属性 "金币" + 1003.3 数据持久性总结
| 变量类型 | 关闭游戏后 | 切换地图后 | 对象销毁后 |
|---|---|---|---|
| 局部变量 | ❌ 丢失 | ❌ 丢失 | ❌ 丢失 |
| 自身属性 | ❌ 丢失 | ❌ 丢失 | ❌ 丢失 |
| 地图属性 | ❌ 丢失 | ❌ 丢失 | ✅ 保留 |
| 玩家变量 | ✅ 保留 | ✅ 保留 | ✅ 保留 |
第四章:最小练习项目
项目目标
做一个"收集金币"的练习,掌握变量的正确使用。
练习步骤
第1步:创建变量
- 创建玩家变量:
金币(初始值 0) - 创建自身属性:
是否已收集(初始值 0) - 创建局部变量:
临时计数(仅脚本内使用)
第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:避免滥用全局变量
不是所有数据都要用玩家变量:
- 临时计算用局部变量
- 物体私有数据用自身属性
- 地图共享数据用地图属性
- 只有需要持久保存的才用玩家变量
相关页面
- 创游世界变量作用域速查卡 - 快速查阅
- 创游世界数据分层模型 - 深入理解
- 创游世界数据存储选择指南 - 选择指南
- 创游世界快速入门完全指南 - 综合入门
待验证问题
以下问题需要进一步验证:
| 问题 | 状态 | 验证方向 |
|---|---|---|
| 变量类型转换的具体行为 | 🔄 待验证 | 需官方文档确认 |
| 数组变量的操作限制 | 🔄 待验证 | 需实际测试 |
| 变量名的最大长度限制 | 🔄 待验证 | 需实际测试 |
📝 说明:基本变量使用已稳定,以上问题对日常开发影响较小。
后续优化方向
- [ ] 补充变量操作的截图示例
- [ ] 添加更多实战练习案例
- [ ] 完善变量调试方法说明
