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

创游世界实战项目模板

一句话摘要

本文提供一个可直接使用的游戏项目结构模板,涵盖目录组织、文件命名规范、脚本分层架构和典型系统示例,帮助你快速建立可维护的项目基础。

适合谁阅读

  • 已经学会基础操作,想要开始做完整项目的创作者
  • 项目做到一半变得混乱,想要重构的项目开发者
  • 需要参考项目结构的教程学习者

你将学到什么

  • 如何组织项目的目录结构
  • 如何命名和管理素材、物体、脚本
  • 如何分层设计项目架构
  • 如何建立可复用的系统模板
  • 如何避免常见的项目混乱问题

核心结论

  1. 目录结构要清晰:把同类资源放在一起,方便查找和维护
  2. 命名要统一规范:使用一致的命名风格,避免混淆
  3. 分层要明确:UI 层、地图层、组件层、系统层各司其职
  4. 广播要解耦:通过广播连接不同层,避免硬绑死
  5. 配置要集中:把同类配置放在一起,便于调整

1. 项目目录结构

1.1 推荐目录组织

一个结构良好的创游世界项目,推荐按以下方式组织目录:

项目文件夹

├── 📁 素材库(按功能分类)
│   ├── 📁 角色
│   │   ├── 玩家_默认
│   │   ├── 敌人_近战
│   │   └── 敌人_远程
│   ├── 📁 道具
│   │   ├── 消耗品
│   │   └── 装备
│   ├── 📁 场景
│   │   ├── 地块
│   │   ├── 装饰
│   │   └── 机关
│   ├── 📁 UI素材
│   │   ├── 按钮
│   │   ├── 图标
│   │   └── 背景
│   └── 📁 特效
│       ├── 粒子
│       └── 动效

├── 📁 地图
│   ├── 📁 主界面
│   │   └── 主界面_地图
│   ├── 📁 关卡
│   │   ├── 关卡1_草地
│   │   ├── 关卡2_森林
│   │   └── 关卡3_洞穴
│   └── 📁 特殊场景
│       ├── 战斗场景
│       └── 结算场景

├── 📁 组件库(自定义组件)
│   ├── 📁 通用
│   │   ├── 血量管理
│   │   ├── 伤害计算
│   │   └── 状态机
│   ├── 📁 UI
│   │   ├── 刷新逻辑
│   │   └── 动画控制
│   └── 📁 系统
│       ├── 存档管理
│       └── 任务追踪

├── 📁 脚本库(常用脚本模板)
│   ├── 📁 UI脚本
│   ├── 📁 地图脚本
│   └── 📁 工具脚本

└── 📁 文档(项目说明)
    ├── 系统设计说明.md
    └── 广播命名规范.md

1.2 目录命名规范

类型命名规则示例
素材文件夹功能_类型角色_怪物、道具_消耗品
地图文件夹场景_编号_名称关卡1_草地、主界面_大厅
组件文件夹系统_功能通用_血量管理、UI_刷新逻辑
脚本文件夹类型_功能UI脚本_背包、工具_随机事件

1.3 素材命名规范

类型命名规则示例
角色素材角色类型_名称玩家_战士、敌人_哥布林
道具素材道具类型_名称消耗品_血瓶、装备_武器
地块素材地块类型_名称地面_草地、障碍_石头
UI素材UI类型_名称按钮_确定、图标_金币

2. 脚本分层架构

2.1 四层架构模型

创游世界项目推荐采用以下四层架构:

┌─────────────────────────────────────────┐
│           UI 层(表现层)                 │
│  - 负责显示和接收输入                    │
│  - 通过广播通知地图层处理请求             │
│  - 不直接修改核心数据                    │
└─────────────────────────────────────────┘
                    ↓ 广播
┌─────────────────────────────────────────┐
│          地图层(逻辑层)                 │
│  - 负责处理业务逻辑                      │
│  - 集中管理地图级数据                    │
│  - 发送结果广播通知 UI 更新              │
└─────────────────────────────────────────┘
                    ↓ 广播/指令
┌─────────────────────────────────────────┐
│         组件层(能力层)                  │
│  - 封装可复用的功能模块                  │
│  - 提供属性、指令、触发时机              │
│  - 通过广播与外界通信                    │
└─────────────────────────────────────────┘

┌─────────────────────────────────────────┐
│          数据层(持久层)                 │
│  - 存储项目配置                          │
│  - 管理存档和云变量                      │
│  - 提供数据读写接口                      │
└─────────────────────────────────────────┘

2.2 各层职责定义

UI 层职责

职责说明不做
显示信息显示玩家、金币、背包等不存储核心数据
接收输入按钮点击、滑动操作不直接处理业务逻辑
反馈动画按钮按下效果、获得提示不控制地图状态
发送请求发广播通知地图处理不修改玩家变量等核心数据

地图层职责

职责说明不做
处理业务逻辑扣金币、发道具、判定胜负不直接操作 UI 细节
管理地图状态波次、时间、开关状态不做 UI 动画
协调多对象敌人行为、触发器逻辑不单独处理每个敌人
发送结果通知发广播让 UI 刷新不改 UI 元素属性

组件层职责

职责说明不做
封装功能把通用能力封装成组件不直接调用其他组件
提供接口定义指令供外部调用不处理复杂流程
响应事件当触发时机发生时执行不管理全局状态

数据层职责

职责说明
配置管理静态配置放配置表
存档管理玩家数据存玩家变量
数据校验检查数据合法性

2.3 层间通信规范

UI → 地图:发送请求广播
      示例:发送广播 "请求购买" 并携带文本 "物品ID"

地图 → UI:发送结果广播
      示例:发送广播 "购买完成" 并携带文本 "结果"

地图 → 组件:调用指令
      示例:向目标 执行"扣血" 并携带数字 50

组件 → 地图:发送事件广播
      示例:发送广播 "角色死亡" 并携带文本 "角色ID"

3. 广播命名规范

3.1 命名格式

推荐使用「动作_对象_具体内容」的命名格式:

类型格式示例
请求广播请求_功能请求购买、请求使用道具
事件广播事件_对象道具获得、敌人死亡
结果广播结果_功能购买完成、使用成功
刷新广播刷新_目标刷新UI、刷新背包

3.2 推荐命名示例

UI 发给地图的请求

请求购买(参数:物品ID)
请求使用道具(参数:道具ID)
请求切换武器(参数:武器槽)
请求打开菜单
请求存档

地图发给 UI 的结果

购买成功(参数:物品ID)
购买失败(参数:错误原因)
道具已使用(参数:道具效果)
UI刷新_背包
UI刷新_货币

系统事件广播

玩家死亡(参数:玩家ID)
任务完成(参数:任务ID)
关卡开始(参数:关卡ID)
关卡结束(参数:结算数据)

3.3 不推荐的命名

❌ 刷新
❌ 更新
❌ 通知
❌ 1
❌ test
❌ 广播1
❌ 调一下

4. 典型系统模板

4.1 商店系统模板

【UI脚本】
当按钮_购买 被点击时
→ 发送广播 "请求购买" 并携带文本 物品ID

当收到广播 "购买成功" 时
→ 显示获得提示
→ 发送广播 "刷新UI_背包"

当收到广播 "购买失败" 时
→ 显示失败原因

【地图脚本】
当收到广播 "请求购买" 并携带文本 物品ID 时
→ 获取 物品表 的第 X 行
→ 获取玩家变量 金币
→ 如果 金币 >= 物品价格 则
  → 设置玩家变量 金币 = 金币 - 物品价格
  → 发送广播 "获得道具" 并携带文本 物品ID
  → 发送广播 "购买成功" 并携带文本 物品ID
→ 否则
  → 发送广播 "购买失败" 并携带文本 "金币不足"

4.2 背包系统模板

【UI脚本】
当界面被显示时
→ 发送广播 "请求背包数据"

当收到广播 "背包数据" 时
→ 更新背包显示

当道具被拖拽时
→ 发送广播 "请求整理背包"

【地图脚本】
当收到广播 "请求背包数据" 时
→ 获取玩家变量 背包数组
→ 发送广播 "背包数据" 并携带文本 背包数组

当收到广播 "请求整理背包" 时
→ 执行背包整理逻辑
→ 发送广播 "背包数据" 并携带文本 整理后数组

4.3 任务系统模板

【自定义组件:任务管理器】
属性:
  - 当前任务ID(数字)
  - 任务进度(数字)
  - 任务目标(文本)

指令:接取任务
  当执行"接取任务"时
  → 设置自身属性.当前任务ID = 参数[任务ID]
  → 设置自身属性.任务进度 = 0
  → 发送广播 "任务已接取" 并携带文本 当前任务ID

指令:更新进度
  当执行"更新进度"时
  → 设置自身属性.任务进度 = 自身属性.任务进度 + 参数[增加量]
  → 发送广播 "任务进度更新" 并携带数字 任务进度
  → 如果 任务进度 >= 任务目标 则
    → 发送广播 "任务完成" 并携带文本 当前任务ID

【地图脚本】
当收到广播 "任务完成" 并携带文本 任务ID 时
→ 执行奖励发放逻辑
→ 发送广播 "UI刷新_任务"

5. 变量管理规范

5.1 变量命名规范

类型命名示例说明
玩家变量金币、背包、任务进度跨地图持久
地图属性当前波次、地图时间同地图内共享
组件属性敌人血量、武器伤害单对象私有
局部变量临时计算、循环计数单次执行使用

5.2 变量存储位置选择

场景推荐存储位置原因
玩家金币玩家变量跨地图持久
敌人血量组件属性每个敌人独立
当前波次地图属性同地图内多对象访问
临时计算结果局部变量用完即消失
关卡配置配置表不常变化
玩家进度玩家变量存档需要

6. 项目维护建议

6.1 开发前

  1. 画系统关系图:在动手前画出各系统之间的关系
  2. 确定广播命名规范:统一命名风格并写在文档里
  3. 规划目录结构:把素材、地图、组件分类整理
  4. 建立组件库:把可复用功能封装成组件

6.2 开发中

  1. 保持目录整洁:及时整理新增素材
  2. 记录广播用途:在每个广播发送处注释用途
  3. 避免硬编码:把配置数据放配置表
  4. 定期备份项目:防止意外丢失

6.3 开发后

  1. 检查重复资源:合并相似的素材和组件
  2. 优化性能瓶颈:检查循环和广播使用
  3. 整理文档:更新项目说明和广播规范
  4. 测试各系统:确保各功能正常工作

7. 常见问题与解决

问题1:项目做到一半变得混乱

原因:没有统一的目录结构和命名规范

解决

  1. 停下手头工作,整理目录结构
  2. 按功能重新分类素材
  3. 建立命名规范文档
  4. 逐步重构现有资源

问题2:广播满天飞,不知道谁发给谁

原因:广播命名混乱,职责不清

解决

  1. 建立广播命名规范文档
  2. 给每个广播加上用途注释
  3. 画出广播流程图
  4. 合并职责相同的广播

问题3:变量放错位置导致数据丢失

原因:不清楚变量作用域

解决

  1. 复习变量作用域概念
  2. 明确每个数据的用途
  3. 选择正确的存储位置
  4. 测试切地图后数据是否保持

8. 相关页面


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

参与维护

发现文档问题?

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

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