Skip to content
写作日期:2026/05/13 更新日期:2026/05/16 状态:已整理 难度:进阶 证据:E3(多来源归纳)

创游世界实战项目模板 ​

一句话摘要 ​

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

适合谁阅读 ​

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

你将学到什么 ​

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

核心结论 ​

  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. 相关页面 ​

参与维护

发现文档问题?

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

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