开发记录覆盖场景切换、状态恢复、A* 寻路、NPC 状态、条件对话、任务系统、商店、UI 路由、集成菜单和存档系统。代码围绕事件通信、ScriptableObject 数据和多场景结构组织,每个模块单独建类,数据依赖沿同一条主链传递。
318:项目初始化
工程已有玩家状态机、击退处理、商店入口和部分目录结构。加入挥砍射击动作及动画、敌人攻击动作及动画、瓦片地图、SO 通信系统、商店/技能树/状态栏 UI。重构玩家移动脚本中的状态机逻辑,分离状态枚举,加入击退状态 HandleKnockBackState。新建 TimeManager 管理暂停/恢复逻辑,ShopKeeper 从 ShopManager 迁移商店购买逻辑。
319~320:场景切换与项目整理
SceneChanger、GameManager 实现场景切换功能,Addressables 异步加载,加入 ConfinerFinder 处理相机边界。解决 UTF-8 BOM 编码问题,整理项目文件结构,脚本目录重整到 Assets/Scripts 下,加入字体资源和许可证。
321~323:商店调试与场景重构
调试场景切换和商店相关 bug。五次提交重写场景切换逻辑,精简 PersistentScene 和 Scene1 场景数据。
324~325:存档系统与 Loot 持久化
DataManager 实现 Save()/Load(),保存和读取玩家位置、物品数据,完善 InventoryManager 跨场景物品保存。Loot 拾取状态在场景切换时保持记忆,丢弃的物品会被清理。提交初始 A* 寻路代码。
328~331:A* 寻路
基础 A* 寻路完成。难点在于框架搭建和寻路逻辑处理——遍历最优路径、按父节点导出寻路链。扩展 A* 后做了三点优化:偏移带对角障碍的路径点并比对新旧路径、选取离起始点更近的头节点防止倒着走、加上朝向玩家的方向向量防止 flip 导致的鬼畜。两格及以上位置不再卡脚,扫描静态 Collider2D 加入 A* 地图作为 obstacle。
遗留问题:跨场景保存物品数量未处理好,A* 无法通过部分一格窄通道(拐角处),疑似与优化相关。
401~404:NPC 与动画
加入岩石、玩家动画资源,PurplePawn NPC 预制体和相关脚本框架。完善 PurplePawn 动画控制器,实现 NPC 随机游荡逻辑,开始实现 NPC 对话系统并完善对话功能。
405~406:NPC 状态机与对话
NPC 状态管理完成。对话管理器和 DialogSO 脚本进一步完善。
407~408:菜单场景与异步加载
创建 Menu 场景,按钮点击事件切换到游戏场景 1。跨场景自动初始化 Canvas。异步加载时先卸载场景并禁用移动,加载完成后再允许移动,防止玩家移动触发 teleport 干扰异步逻辑。问题:加载时打开 Canvas 会导致场景加载出错,建议用 InputSystem 全局禁用输入解决。
410:Retry 与 Bug 修复
修复了换场景血量直接刷满、Retry 逻辑错误导致乱加载场景的问题。RetryButton 功能完成。
414~415:对话选项与条件对话
加入对话选项 UI 和逻辑,完善 DialogSO。DialogManager 支持选项分支,场景目录重整到 GameScene 目录下。重构 AStarPathFinder、MovementController、NPCPatrol 等脚本。
通过可脚本化对象实现条件对话和分支控制。新增 ConversationHistoryManager、ItemHistoryManager、VisitedHistoryManager 管理对话历史。
417:场景淡入调试
修复 ButtonSceneToggler 和 SceneChanger 中的场景切换淡入问题。
419:对话历史与条件对话
重构对话历史管理脚本,加入 GuidSO 用于唯一标识。新增 YellowPawn NPC(第二个 NPC),完善对话 SO 数据结构。对话选项分支、物品条件检测、拒绝条件对话完成,DialogManager 和 NPCChat 完善条件对话逻辑。
420~421:任务系统框架
创建 QuestSO、LocationSO、QuestLogSlot 等脚本和预制体,实现任务日志 UI 框架。新增 QuestLogUI、QuestManager,完善 QuestSO 数据结构。新增 QuestObjectiveSlot、QuestRewardsSlot、EXP 物品 SO。任务系统大体完成,支持多个任务点,用事件系统解耦加载变更。
422~424:任务完善
加入任务系统并优化体验——打开后直接定位到第一个未完成任务。支持多个任务点,事件系统解耦加载变更。新增 QuestBoardManager、QuestBoard 预制体。新增多个任务(PickAndChat、Shopping、DefaultQuest),完善 QuestManager 逻辑。QuestOptionsButton(任务接受/拒绝/完成按钮)通过事件系统解耦任务交互。
新增 Scene2 场景,Retry 按钮修复。任务接受/拒绝/完成通过 QuestOptionsEventSO 事件驱动。任务板(QuestBoard)QuestLogUI 和 QuestManager 进一步优化。
426:Loot 事件与任务奖励
重构 loot 脚本事件系统,新增 LootEventSO,Loot 脚本通过事件系统与 InventoryManager 通信。任务奖励实装——现在可以真正获得任务奖励(包括经验),ExpManager 完善。优化任务完成提示和任务条目刷新逻辑。修复 Retry 后会卡住的 bug,修复角色切换时攻击会卡住动画的 bug。
428:商店重构与 UIManager 整合
使用事件通信重构商店系统,修复 ShopPortraitCameraController 处理跨场景商店 NPC 头像渲染的 bug。整合所有画布组到 UIManager 统一管理,改用事件订阅模式,移除各自 Update 中的 Input 检测。QuestLogSlot 新增状态重置,已完成任务在打开 board 时自动标记完成态。
501:集成菜单
实装集成菜单。新增 UIInputState 输入状态类,通过配置 SO、状态机逻辑结合枚举类,使集成菜单和其它面板互斥。
503:退出按钮与移动端适配
增加每个菜单界面的”X”退出按钮。新增 WebGL、移动端构建时的摇杆画布组,效果不佳。
504:条件对话重构
重构条件对话方案,创建依赖 DialogSO 的 RefuseDialogSO 子类,依赖管理更自然,不依赖枚举匹配。取消运行时 hasChated 布尔变量,收回到 HistoryManager 内记录。
505:背包系统
加入背包系统(卡了一些 bug),加入拖拽脚本。
506~508:UIManager 与 ShopKeeper 重构
重构 UIManager、ShopKeeper。一些重构加上 Save&Load 存档画布组和系统默认存档、新加载存档的逻辑。
509:存档系统完成
存档系统完成——打通了 UI 和逻辑层。补充开发日志并整理文档。根据游戏指南和当前工程状态撰写 README,同步整理项目入口、操作说明和存档说明。
部分信息可能已经过时
粤公网安备44011102484817号