Skip to content

LuneVoilee/ProjectRPG2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ProjectRPG2

English README

项目简介

ProjectRPG2 是一个基于 Unity 的 2D RPG 项目,核心目标是搭建一套可扩展、数据驱动的回合制战斗框架,并将其与探索、对话、剧情分支系统联动。

当前实现重点在:

  • 回合制战斗状态机
  • 技能/效果 ScriptableObject 数据驱动
  • 敌方 AI 策略评分系统
  • 战斗事件总线与 UI 解耦
  • 剧情选择对战斗技能和结局的影响

引擎与环境

  • Unity: 6000.2.8f1
  • 渲染管线: URP (com.unity.render-pipelines.universal)
  • 输入系统: New Input System (com.unity.inputsystem)
  • 主要语言: C#

核心战斗架构

1) 战斗入口与场景切换

  • 世界中触发战斗:NPCInteraction -> GameManager.StartBattle(...)
  • 通过 Additive 方式加载战斗场景 Battle
  • 战斗结束后卸载战斗场景,并将玩家血蓝等运行时结果写回主场景角色数据

2) 状态机驱动流程

战斗流程由 BattleController + StateMachine 维护,主循环状态为:

BattleInit -> TurnStart -> (PlayerInput / EnemyAI) -> ExecuteCommand -> CheckResult -> TurnEnd -> ... -> BattleEnd

对应状态位于:

  • Assets/Scripts/GamePlay/Battle/States/

3) 回合与单位系统

  • TurnOrderSystem 按速度排序行动顺序(同速玩家优先)
  • BattleUnit 封装单位运行时属性、技能 CD、持续效果(Buff/Debuff)
  • 支持即时效果与持续效果结算,回合结束自动 Tick

4) 技能与效果数据驱动

核心数据资产:

  • 角色配置:CharacterDataConfig (Assets/Data/Character/)
  • 技能配置:SkillData (Assets/Data/Skill/)
  • 效果配置:EffectData (Assets/Data/Skill/Effects/)

技能由多个效果组成;效果由多个 StatModifierData 组成,支持:

  • 固定值 / 百分比公式
  • 物理 / 魔法 / 真实伤害 / 治疗
  • 单体 / 群体 / 自身 / 全体目标
  • 即时与持续型效果

5) AI 策略系统

已实现两类评分式 AI:

  • AggressiveAIStrategy:偏进攻、偏集火、低防御倾向
  • BalancedAIStrategy:攻守平衡,按血量与威胁动态决策

可在 CharacterDataConfig 中配置策略类型或自定义权重参数。

6) 事件总线与 UI

BattleEvents 统一广播战斗生命周期、数值变化、技能释放、单位死亡等事件,UIController 订阅事件驱动 HUD、指令面板、技能面板、目标选择和结果面板更新。

剧情分支与战斗联动

  • 对话系统 DiaLogmanager 支持 CSV 对话脚本、选项分支、打字机效果
  • 玩家剧情变量保存在 ChoiceData
  • SkillConditionManager 根据 ChoiceData 过滤可用技能,实现“剧情选择影响战斗能力”
  • ChoiceDataManager 在场景切换间缓存玩家选择数据

目录结构(核心)

Assets/
  Data/                        # 角色、技能、效果等配置资产
  Scenes/                      # 主菜单、剧情、章节、战斗场景
  Scripts/
    Core/                      # GameManager/Input/Music/VFX
    GamePlay/Battle/           # 回合制战斗核心框架
    UI/                        # 战斗 UI 与面板系统
  Story/                       # 对话与剧情选择系统
  _GAME_/NPCs/Scripts/         # 场景交互、玩家控制、战斗触发

如何运行

  1. 使用 Unity Hub 打开项目根目录。
  2. Unity 版本选择 6000.2.8f1(或兼容的 Unity 6 版本)。
  3. 打开场景 Assets/Scenes/MainMenu.unity
  4. 点击 Play 运行,从主菜单进入教程/序章并触发战斗。

默认操作

  • 移动:WASD / 方向键
  • 交互:E
  • 取消/返回主菜单:Esc
  • UI 点击/推进对话:鼠标左键 / Enter(部分界面)

扩展战斗框架(建议流程)

  1. 新建 EffectDataBattle/Effect Data)定义数值修改器。
  2. 新建 SkillDataBattle/Skill Data)并组合多个效果。
  3. CharacterDataConfig 里挂载技能并配置 AI。
  4. 若技能受剧情影响,补充 SkillConditionRule
  5. 在场景中为实体绑定对应 CharacterDataConfig 即可参与战斗。

当前限制

  • 命中/闪避/暴击为简化实现(基础框架已预留)
  • 战斗入口当前主要以 1v1 演示为主,但回合系统本身支持多单位扩展

第三方资源说明

  • 项目内含第三方资源与插件目录(如 PixelWorld*NavMeshPlus 相关文件)
  • Assets/PixelWorldFantasy/ThreePartyLicense/README_NavMeshPlus.md 中可查看对应说明

About

一款侧重于回合制战斗框架的unityRPG游戏

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors