SepComet
|
44498e5859
|
将 DisplayItemInfoForm 更名为 ItemTooltipForm
|
2026-06-15 11:23:44 +08:00 |
SepComet
|
bba17bbac2
|
对 DisplayItemInfoForm 按 5 层 UI 规范做结构整理
- 删除无用的 DisplayItemInfoUseCase,转为轻量 UI(Controller + Context + View)
- RawData 类型安全:object Data 拆分为 WeaponData + PropItem
- View 事件规范:回收按钮改用 UI 专用事件,由 Controller 通过回调转发
- 简化 _locked 状态管理,统一在 CloseUIAsync 中清理
|
2026-06-15 11:03:31 +08:00 |
SepComet
|
9dd4f57e6a
|
修复 CommonButton 导航功能失效的问题并重新绑定 UI 事件引用
|
2026-06-15 09:59:28 +08:00 |
SepComet
|
9c51f551c4
|
合并 MenuForm 的 6 个按钮事件为 MenuButtonClickEventArgs
新增 MenuButtonId 枚举区分按钮来源,MenuController 改为单订阅 + switch 分派,删除 Menu{StartGame,File,Guide,Setting,Quit,About}EventArgs 及其 meta。MenuForm 的 OnXxxButtonClick 方法名按 prefab 反射绑定保留,仅薄薄转发到统一事件。
|
2026-06-14 17:38:01 +08:00 |
SepComet
|
4fe75fc8c6
|
为随机角色卡补 hover 反向链路
新增 SelectRoleClearEventArgs:hover 随机卡时清空选中状态,让上方属性区回到 _randomRoleCard。
- SelectRoleForm.OnRandomHoverEnter 上报事件
- SelectRoleUseCase.ClearSelection 重置 SelectedRoleId 并重建 RawData
- SelectRoleController 订阅事件并刷新 Context
- SelectRoleForm.prefab 随机卡 _onPointerEnterAction 绑定新方法
|
2026-06-14 17:25:20 +08:00 |
SepComet
|
37b33c65f0
|
重构随机角色卡交互并清理 SelectRoleForm 视图层
按 5 层 UI 规范的 §3.5(View 只消费 Context、不内嵌业务/数据筛选) 对 SelectRoleForm 视图侧做一轮收敛,顺带把"随机角色卡"与"角色槽"在结构层面分离,让 prefab 不再依赖 GetComponentsInChildren 顺序来跳过随机卡上的 RoleItem 占位。
RoleItem:
- UpdateShowRole() → OnHoverEnter()。原方法名与 Form/Controller 上曾经存在的 UpdateShowRole 同名,但语义完全不同(后者是切换属性卡显示,这里是上报 hover 事件),改名消除歧义,与 prefab 上 PointerEnter 绑定的实际语义对齐。
- 补 _context == null 早退,不再把 RoleId = -1 的"伪 hover"上报到下游、依赖 UseCase 端的哨兵兜底。
SelectRoleForm:
- 新增 OnRandomConfirmClick(),给随机角色卡的 CommonButton 提供独立的 Click 入口,直接发 SelectRoleConfirmEventArgs,不再借 RoleItem.OnConfirmRoleClick 这条路径。
- RefreshUI 由 while + 双下标(itemIndex / roleIndex 同步推进、itemIndex 起步为 1 跳过随机卡上的 RoleItem 占位)收成单下标 for,起步下标恢复 0;槽位不足时 OnReset 放在 SetActive(false) 之前,语义顺序更自然。
- 清掉未使用的 using System。
|
2026-06-14 17:08:53 +08:00 |
SepComet
|
7360299fcd
|
对 SelectRoleController 按 5 层 UI 规范的做一轮残留清理
死方法清理:
-删除SelectRoleController.UpdateShowRole(RolePropertyAreaContext)。该方法没有任何调用方:hover 切换走 OnSelectRoleHoverAsync 全量重建 RawData / Context,SelectRoleForm.prefab 上的 "UpdateShowRole" 绑定指向 RoleItem.UpdateShowRole(),与 Controller 同名方法无关。
- 同步把 SelectRoleForm.UpdateShowRole(bool, RolePropertyAreaContext) 收为 private,只保留 RefreshUI 内部调用入口。
日志 tag 修正:
- BindUseCase 的 Log.Error tag 由 "SelectRoleUseCase.BindUseCase()" 改回 "SelectRoleController.BindUseCase()"。
- OnSelectRoleHoverAsync 的 Log.Error tag 由 "SelectRoleController.OnMenuSelectRoleSelected()" 改为 "SelectRoleController.OnSelectRoleHoverAsync()",与方法名对齐。
handler 命名收敛(§6.3):
- OnMenuSelectRoleConfirm → OnSelectRoleConfirm,订阅 / 解订阅 /方法体内日志 tag 全部同步,与 OnSelectRoleReturn / OnSelectRoleHover 命名一致。
风格统一:
- OnSelectRoleReturn 的 sender 校验改为 IsCurrentFormEventSender,与 Hover / Confirm 路径保持一致;原先的窄校验 (sender is SelectRoleForm && sender == Form)语义不变,只是不再让两套写法并存。
- OpenUIAsync(SelectRoleRawData, float) 返回值由 UniTask<int?> 简化为 UniTask:全代码无人消费 serialId,基类抽象签名也是 UniTask,这条便利入口跟着对齐。
|
2026-06-14 14:53:11 +08:00 |
SepComet
|
7df1d15efc
|
5 层 UI 规范收敛 SelectRoleForm 的 RawData / Context
围绕规范 §3.2 / §3.4 / §8 整理 SelectRoleForm 的数据传输与展示模型,让两层各自只承担规范允许的职责,并把子组件归位到模块目录内。
RawData层:
- RolePropertyAreaRawData 移除展示串 InitialPropertyText,改为业务字段 StatModifier[] InitialProperties,并补回 RoleId,避免 RawData 携带已格式化的展示文本(违反 §3.2)。
- SelectRoleRawData 拆掉平铺的 RoleIds / RoleIconNames 平行数组与 SelectedRoleId / SelectedRoleName / SelectedRoleInitialProperties 哨兵字段,聚合为 RoleItemRawData[] RoleItems 与 RolePropertyAreaRawData SelectedRole(null 表示未选中),跟 Context 端的子结构形态对称。
- SelectRoleUseCase.BuildModel 同步改造为构造子 RawData,不再处理 -1 哨兵 ID。
Context 层:
- 删除 SelectRoleContext.RoleIds 冗余字段(信息已由 RoleItemContexts[i].RoleId 承载)。
- 新增 bool ShowRoleProperty,把"显示属性卡 vs 显示随机卡"从 RolePropertyAreaContext == null 的隐式哨兵改成显式信号;Form 端 UpdateShowRole 改为读 ShowRoleProperty 切换卡片,不再用 null 当三态信号。
- Controller.BuildContext 用 rawData.SelectedRole != null 取代 >= 0 判定,InitialPropertyText 仍由 Controller 通过 ItemDescUtility.CreatePropDescription 拼装后注入 Context。
目录归属
事件命名
|
2026-06-14 14:33:56 +08:00 |
SepComet
|
8cf3802b9d
|
按 UI 五层规范重构 SelectRoleForm 并整理事件目录
- SelectRoleForm 五层归位:UseCase 改为构造注入 IProcedureMenu(新增 Runtime/ProcedureInterface),RawData 暴露原始 StatModifier[] 而非展示串,Controller 复用 ItemDescUtility 拼装属性文本,并修复 OpenUIAsync(object) 合法 RawData 分支缺少 return 的误报路径
- StatModifier 去展示职责:删除 _statTypeNames / ToString,富文本格式化下沉到 Presentation 层的 ItemDescUtility.Describe(StatModifier),CreatePropDescription 改用统一入口
- 事件目录按 UIForm 归档:Base/Event/UI/Menu/* 拆解到 SelectRoleForm/ MenuForm/ DialogForm/ DisplayItemInfoForm/ Combat/ 等各自子目录,MenuSelectRoleReturnEventArgs 改名 SelectRoleReturnEventArgs,语义归属本 UI 模块
- IUIFormController → IUIController 改名,联动 UIControllerBase / UIRouterComponent / Editor
- 同步更新 docs/UI-5层架构设计规范.md 中相关示例与 MenuForm.prefab、ProcedureMenu 引用
|
2026-06-14 13:19:12 +08:00 |
SepComet
|
dec18418f5
|
接入菜单导航并改造通用按钮交互
- 将 CommonButton 改为基于 Unity Button 实现,保留原有 pointer enter、click、pointer exit 三类事件配置,同时接入 Selectable/Button 的导航、选中和提交能力。补充 CommonButton 自定义 Inspector,保留项目自定义事件与背景配置的编辑体验。
- 同步调整菜单相关 UI,将 StartMenuForm 迁移为 MenuForm,并更新 UIForm 配置、菜单 Controller/Form 以及相关 prefab 引用。更新多个 UI prefab 和通用按钮 prefab,使菜单、商店、角色选择、道具展示等界面能够使用新的按钮选中与导航交互。
|
2026-06-12 17:23:34 +08:00 |
SepComet
|
024ec7be99
|
接入 Hud 输入提示并完善 InputModule 提示映射
|
2026-06-12 14:59:16 +08:00 |
SepComet
|
a2cd3ab7e7
|
扩充道具系统并统一图标命名规范
- 为 20 个道具赋予中文名称(铁护腕、狂战士药剂等)
- 移除数据表 IconAssetName 列,改为按 `类型_{id}_icon`
的命名约定自动推导图标路径
- 清理旧图标资源(Almighty_Icon、172 系列)
- 同步更新各数据表 Excel 源文件
|
2026-06-10 17:26:59 +08:00 |
SepComet
|
7a3a2cf17b
|
引入 Cinemachine 和 CameraModule,添加摄像机跟随缓动效果
|
2026-06-10 09:55:57 +08:00 |
SepComet
|
ee69efe965
|
扩充游戏内容,保持敌人基本行为不变,使用缩放和颜色区分不同敌人
|
2026-06-10 08:49:16 +08:00 |
SepComet
|
5ede6846db
|
清理项目目录,引入 InputModule 做多平台输入适配
|
2026-06-06 16:35:39 +08:00 |
SepComet
|
c8c26b8b2e
|
迁移 Coin/Exp/Projectile/Effect 实体的生成路径
|
2026-06-06 15:13:52 +08:00 |
SepComet
|
4790bd0091
|
调整 EnemyManagerComponent 部分逻辑到异步操作
|
2026-06-06 14:57:08 +08:00 |
SepComet
|
41ff2c6df8
|
迁移 Player/ProcedureGame/ShopUseCase 里的实体方法调用风格
- Player/ShopUseCase:调整了 Weapon 实体的打开方式
- ProcedureGame:调整初始化时的 Hud 和 Player 的初始化写法,流程更清楚
|
2026-06-06 14:12:05 +08:00 |
SepComet
|
f896a4a9c8
|
Update EntityAsyncExtension.cs
为 EntityAsyncExtension 添加了便利的打开各类实体的方法
|
2026-06-06 13:40:59 +08:00 |
SepComet
|
788f717335
|
调整 UIRouter 的打开关闭 UI 的返回值,统一成 UniTask
|
2026-06-06 13:33:33 +08:00 |
SepComet
|
7ac38cd999
|
Update AsyncTaskHelper.cs
- WaitEventAsync<T>() 增加可选 CancellationToken
- WaitSuccessOrFailureAsync<TSuccess, TFailure>() 增加可选 CancellationToken
- 保持现有调用兼容:原来的参数顺序和默认行为不变
- 抽出统一完成/清理逻辑:
- 成功
- 失败
- 超时
- 取消
- 防止重复完成导致重复 Unsubscribe
- 超时任务在事件完成后会被取消,避免后台 delay 继续跑
- 取消时会反订阅事件,适合后续 Procedure 生命周期迁移
|
2026-06-06 13:20:20 +08:00 |
SepComet
|
2a0cbc8f0e
|
调整 SpriteCache 的读取资源方式
将原来 UGF 事件回调风格的调用改成使用 UniTask 的异步操作
|
2026-06-04 22:37:55 +08:00 |
SepComet
|
edd7088804
|
规范命名空间
具体来说就是 SepCore 开头,然后接所属的模块名,比如 SepCore.Entity,SepCore.Simulation,SepCore.Procedure
|
2026-06-03 16:57:40 +08:00 |
SepComet
|
5de3fdc795
|
迁移 EntityData 到 Base 中
- 新增 EntityDataFactory 工厂类,提供创建 EntityData 的统一入口
- 移出 EntityData 及派生类对 GameEntry 的依赖并移入 SepCore.Base 程序集中
|
2026-06-03 15:12:55 +08:00 |
SepComet
|
91f70dd783
|
添加 SepCore.Runtime 和 SepCore.Base 程序集
- 暂时将 Entity 全部归进 Runtime 程序集里
- 调整部分 UI 的 UseCase/RawData/Context 之间的关系,让 RawData 更接近业务原始数据,Context 更接近 UI 直接可读的数据
- 调整其他程序集的引用关系
|
2026-06-03 11:15:58 +08:00 |
SepComet
|
7bba8bbb80
|
继续重构调整(UI)
- 引入 UniTask 和异步版本的 UIModule
- 调整 Runtime/UIBase 和 Presentation 下的脚本命名空间到 SepCore.UI
- 将原来的 5 层 UI 迁移到异步实现
- 规范各层的 UI 脚本命名
|
2026-06-03 09:58:37 +08:00 |
SepComet
|
6b8a6a8789
|
继续调整,创建 Procedure 与 Presentation 程序集
- 创建 Procedure 与 Presentation 两个程序集
- 初步解决这两个程序集与原程序集的引用关系
|
2026-06-02 23:26:08 +08:00 |
SepComet
|
affa44e4d0
|
调整 Event 和 Editor 命名空间
- 将原来的 CustomEvent 调整到 SepCore.Event
- 将 Editor 文件夹下的统一到 SepCore.Editor,顺带修改了 Editor 程序集
|
2026-06-02 19:26:21 +08:00 |
SepComet
|
34c0784190
|
第一批重构,主要是物理迁移脚本和部分命名空间的调整
- 结构上迁移文件,将脚本分成 Base/Runtime/Presentation/Procedure/Editor 五大文件夹
- 调整 DataTable 和 Definition 下脚本的命名空间
- 依据 UI-5层架构设计规范 拆分原先的 UI 到 Runtime 和 Presentation 下
|
2026-06-02 19:12:34 +08:00 |
SepComet
|
c6f48951d3
|
Fix UGF resource packaging errors
资源构建失败是因为资源集合中包含了 AssemblyDefinitionAsset,并且 StreamingAssets 文件夹的创建行为间歇性出现。
此更改移除了资源打包输入中的脚本相关条目,并保留了跟踪的 StreamingAssets 支架文件,使得包输出可以重新生成而不会触发元/文件夹不匹配警告。
限制:Unity/UGF 打包不能在 AssetBundles 中包含 AssemblyDefinitionAsset
限制:StreamingAssets 内容应保持被忽略,而文件夹身份仍被追踪
禁止:保留脚本资源并依赖平台标识 | bundle 包包含 Editor-only 对象
可信:高
范围风险:狭窄
可逆性:干净
指令:不要将 .asmdef/.cs 资产添加到 ResourceCollection 中;只有 runtime 资产才能进入 bundle
测试:资源构建器打包运行完成,且没有之前的两个错误
|
2026-05-10 16:30:36 +08:00 |
SepComet
|
6d6fa89fc5
|
Update NearestTargetSelector.cs
|
2026-04-02 13:26:27 +08:00 |
SepComet
|
af1fb7bf9d
|
fix test sample
|
2026-04-02 12:52:23 +08:00 |
SepComet
|
ffcd4e6b54
|
Cleanup 2
|
2026-04-02 12:36:01 +08:00 |
SepComet
|
1052cc0136
|
Cleanup 1
|
2026-04-02 11:21:07 +08:00 |
SepComet
|
0a281a5b1f
|
update P2-Job-System-+-Burst-落地.md
|
2026-04-02 08:32:37 +08:00 |
SepComet
|
0d7df18324
|
优化 WeaponLance 的攻击逻辑
|
2026-03-20 09:55:52 +08:00 |
SepComet
|
8d21d53c4d
|
添加武器长枪 + bug fix
- WeaponLance:Entity/Goods/Weapon 表,状态机
- Battle -> Shop/LevelUp:隐藏子弹
|
2026-03-19 17:53:24 +08:00 |
SepComet
|
f31babdb85
|
clear
|
2026-03-17 13:43:59 +08:00 |
SepComet
|
c5d113b35f
|
调整 convert.py 转换逻辑 + 规划后续开发
|
2026-03-17 13:21:49 +08:00 |
SepComet
|
59f1d02a18
|
测试修复安卓打包
|
2026-03-17 11:28:33 +08:00 |
SepComet
|
224db4cd5c
|
保留 Tick 作为唯一入口,但让 SimulationWorld 只做 orchestration
- Tick 仍然是唯一仿真入口。SimulationWorld 顶层现在只保留全局开关、bridge 服务和生命周期入口,原来散落在类上的大部分跨域状态已经从 SimulationWorld 收口到新的 SimulationWorld.RuntimeModules。
- 新的 runtime modules 把状态按域分成了 SimulationStateStore、JobDataRuntimeState、CollisionPipelineRuntimeState、TargetSelectionRuntimeState,并通过同名代理把现有 partial 的调用面基本保持不变。
- CollisionPipeline 和 target-selection 的配置也一起下沉到了运行时模块。为了避免现有反射型测试立刻失效,保留了 _collisionQueryInputs 和 _areaCollisionRequests 这两个顶层兼容字段。
|
2026-03-17 10:05:07 +08:00 |
SepComet
|
736a2a65bd
|
拆分 SimulationWorld.JobDataChannel
- 生命周期在 SimulationWorld.JobDataLifecycle
- 数据转换和输入输出缓冲准备在 SimulationWorld.JobDataConversion
- collision transient/runtime stats 在 SimulationWorld.CollisionTransient
- enemy separation temporal state 在 SimulationWorld.EnemySeparationTemporal
- output commit 在 SimulationWorld.JobOutputCommit
- SimulationWorld 的 partial 布局注释也同步到了 SimulationWorld
|
2026-03-17 09:32:08 +08:00 |
SepComet
|
2d822c02e6
|
拆分 CollisionPipeline
- 请求缓冲在 SimulationWorld.CollisionRequests
- broad-phase / Job 调度在 SimulationWorld.CollisionBroadPhase
- 主线程 resolve 在 SimulationWorld.CollisionResolve
- hit presentation dispatch 和实体/impact 解析在 SimulationWorld.CollisionPresentation
|
2026-03-17 09:21:11 +08:00 |
SepComet
|
aa081bcc3c
|
remove open spec skills
|
2026-03-17 08:58:56 +08:00 |
SepComet
|
f809af4e15
|
调整 UI 防御性编程
|
2026-03-17 08:34:38 +08:00 |
SepComet
|
ccbd27e87e
|
Checkpoint 9
|
2026-03-16 22:19:57 +08:00 |
SepComet
|
2e4108aebc
|
add test
1. MaxTargets 上限
2. 战斗中开关不生效
3. AOE 使用“请求时快照”而不是结算时实时状态
|
2026-02-23 12:17:08 +08:00 |
SepComet
|
76094b711b
|
fix 2
1. MaxTargets 现在严格生效(包含玩家候选)
- 玩家先被加入候选后,会计入 selectedCount,达到上限后不再继续查敌人桶。
2. UseSimulationMovement/UseJobSimulation 战斗中不生效
- 在 SimulationWorld 的 setter 中增加 Battle 状态保护:战斗中调用会被忽略并打 warning。
- 在 ProcedureGame 暴露当前状态类型,供 SimulationWorld 判断。
3. AOE 结算不再依赖结算时刻的 Weapon.IsAttacking
- 在 AOE query 入队时快照 source 活跃状态(武器用 IsAttacking)。
- Query 数据结构增加 SourceWasActiveAtQueryTime。
- 结算时使用该快照判定,并通过 AIUtility.PerformCollision(..., ignoreRuntimeState: true) 避免被实时状态误伤。
|
2026-02-23 11:48:05 +08:00 |
SepComet
|
688fefe848
|
fix 1
1. 修复投射物闪避口径(使用 Value,与全局伤害逻辑一致)
- 将 SimulationWorld 内投射物伤害计算改为直接复用 AIUtility.CalcDamageHP(...)。
- 删除了 SimulationWorld 里那套重复且使用 dodgeStat.Percent 的私有计算函数,避免再次分叉。
2. 修复目标选择索引“重建过于激进”
- 去掉了 Job Tick 末尾的“每帧强制 MarkDirty + Build”。
- 改为在 Job 输出回写时,只有敌人 XZ 坐标发生变化才标记 dirty。
- 空间索引构建条件改为“仅 dirty 时重建”,不再因跨帧自动重建。
|
2026-02-23 11:21:35 +08:00 |
SepComet
|
1a45b513f2
|
Checkpoint 8
1. 统一调度收口为单点 Complete
2. 移除 Job 内部 Complete(),改为返回 JobHandle
3. 修复调度后 NativeList 安全冲突(关键)
- 将 PrepareEnemyJobOutputBuffer/PrepareProjectileJobOutputBuffer/PrepareEnemySeparationJobBuffers 前置到 BuildInput
- 互斥候选统计改为读取 _enemyJobInputs,不再在 Complete 前读取 _enemyJobOutputs
4. 新增 CP8 profiler markers
5. 新增回归用例(验证使用最新敌人移动结果构建碰撞候选)
|
2026-02-23 10:53:15 +08:00 |