Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

《勇士传说》

一款使用 Unity 制作的 2D 横版动作冒险学习项目

Unity URP Platform

项目简介

《勇士传说》是一个完整的 Unity 2D 横版动作冒险项目。玩家可以在丛林与洞穴场景中移动、跳跃、攻击和滑铲,与敌人战斗,并通过宝箱、存档点和传送门完成探索。

项目以事件驱动方式组织音频、UI、场景切换和存档流程,使用 Addressables 进行增量场景加载,并通过 Persistent 场景保存玩家和全局管理器。

主要功能

  • 角色控制:移动、下蹲、跳跃、墙跳、攻击连段与滑铲。
  • 敌人系统:野猪和蜜蜂敌人,包含巡逻、追击与攻击状态。
  • 交互系统:统一的 IInteractable 接口、交互提示、宝箱、存档点和传送门。
  • 场景管理:Addressables 异步加载、Additive 场景切换、入口/出口出生点。
  • 转场效果:DOTween 黑屏渐入渐出,转场期间自动禁用输入并重置相机状态。
  • 相机系统:Cinemachine 跟随、场景边界约束与切换后的相机状态刷新。
  • 存档系统:JSON 本地存档,保存玩家、当前场景、宝箱及敌人状态。
  • 音频系统:AudioMixer 分组、事件驱动的 BGM/SFX 播放与主音量调节。
  • 输入系统:支持键盘与手柄,并根据当前设备切换交互提示图标。
  • 完整 UI:主菜单、玩家状态、暂停、设置、死亡复活和背景模糊效果。

操作方式

功能 键盘 手柄
移动 WASD / 方向键 左摇杆
下蹲 S / ↓ 左摇杆向下
跳跃 Space East 面键
攻击 J West 面键
滑铲 K North 面键
交互 / 确认 E South 面键
暂停 / 返回 Esc Start

暂停菜单也可以通过游戏界面右上角的齿轮按钮打开。

技术栈

  • Unity 2022.3.62f2c1
  • Universal Render Pipeline 14.0.12
  • Unity Input System 1.14.2
  • Addressables 1.22.3
  • Cinemachine 2.10.5
  • DOTween
  • Tilemap / Rule Tile / Sprite Atlas
  • AudioMixer
  • uGUI / TextMeshPro

架构概览

Initialization
    └── Addressables 加载 Persistent
            ├── Player 与全局 UI
            ├── ScenesController
            ├── SaveController
            ├── AudioManager
            └── Cinemachine 相机

ScenesController
    ├── 加载 Menu / Jungle / Cave
    ├── 设置玩家出生点
    ├── 更新相机边界
    └── 卸载旧场景

项目使用多个 ScriptableObject Event 连接不同系统:

触发方 → EventSO → 订阅方

交互物体 → ScenesEventSO → ScenesController
音频定义 → AudioEventSO → AudioManager
UI 按钮 → SaveLoadEventSO → SaveController
场景控制 → FadeEventSO → FadeScreen

这种方式可以减少场景物体之间的直接引用,让场景、UI、音频和存档系统保持相对独立。

项目结构

Assets/
├── AddressableAssetsData/   # Addressables 配置
├── ArtAssets/               # 角色、敌人、场景与 UI 素材
├── Blur/                    # UI 背景模糊渲染功能
├── Scenes/                  # 初始化、持久化、菜单及地图场景
├── Scripts/
│   ├── Audio/               # BGM、SFX 与 AudioMixer 管理
│   ├── Enemy/               # 敌人状态机
│   ├── General/             # 角色、攻击、物理检测等通用逻辑
│   ├── Interactables/       # 宝箱、存档点和传送门
│   ├── Player/              # 玩家控制、动画与存档
│   ├── Save/                # 存档数据与注册恢复流程
│   ├── Scenes/              # 场景加载和出生点管理
│   ├── ScriptableObjects/   # EventSO 与场景配置
│   ├── UI/                  # HUD、暂停、设置、死亡和交互提示
│   └── Utils/               # 枚举、接口和相机工具
└── Settings/                # Input System、Renderer 与 AudioMixer

运行项目

  1. 安装 Unity Hub。
  2. 使用 Unity 2022.3.62f2c1 打开项目。
  3. 等待 Package Manager 和 Addressables 导入完成。
  4. 打开 Assets/Scenes/Initialization.unity。
  5. 点击 Unity 编辑器顶部的 Play 按钮。

Initialization 是 Build Settings 中唯一需要直接加载的场景,其他场景通过 Addressables 以 Additive 模式加载。

构建项目

  1. 打开 Window > Asset Management > Addressables > Groups。
  2. 执行 Build > New Build > Default Build Script。
  3. 打开 File > Build Settings。
  4. 确认 Initialization 已加入 Scenes In Build。
  5. 选择目标平台并执行 Build。

当前仓库已经生成 macOS 构建:

MyGame/MeryAdventure.app

存档说明

存档使用 JsonUtility 序列化,并保存在:

Application.persistentDataPath/SAVE DATA/{存档槽位}/data.sav

当前存档内容包括:

  • 玩家位置、生命值、体力和朝向。
  • 当前场景与主音量。
  • 宝箱开启状态。
  • 敌人位置、朝向与死亡状态。

场景物体通过 PersistentID 获得稳定标识,再由 SaveableBehavior 注册到 SaveController 完成统一保存与恢复。

学习重点

这个项目主要实践了以下 Unity 开发内容:

  • MonoBehaviour 生命周期与组件通信。
  • ScriptableObject 事件系统与发布订阅。
  • 新 Input System 的 Action Map 管理。
  • Addressables 异步场景加载与句柄释放。
  • Additive 场景和 Persistent 场景架构。
  • 角色状态、敌人状态机与 2D 物理。
  • 可扩展的对象存档与稳定 ID 设计。
  • URP 2D、Cinemachine、AudioMixer 与 UI 渲染。

参考

本项目用于 Unity 学习与功能复刻,项目课程来源:https://space.bilibili.com/370283072?spm_id_from=333.1387.follow.user_card.click

项目所使用的美术、字体和音频资源,其版权归各自原作者所有。请在用于公开发布或商业用途前确认对应资源许可。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages