6.5 KiB
6.5 KiB
CHANGELOG - MyGame 脚本变更记录
2026-06-05
新增:UIHome_BY_ItemToggleDisplay.cs
- 文件:
Assets/MyGame/aa/UI/Home/Sub/UIHome_BY_ItemToggleDisplay.cs - 内容:TurretPanel 中 Toggle 模板节点(图层 17)的展示组件脚本
- 功能:
- 支持三种展示模式:Sprite(静态图片)、Spine(骨骼动画,反射方式避免硬引用)、RawImage3D(3D投影 RenderTexture)
- 提供 SetSprite / SetSpine / SetRawImage3D / ClearDisplay 接口
- 锁定状态控制(lockMask / lockIcon)
- 背景(底板/品质框)设置接口
- 选中勾标识显隐控制
- 原因:pao 子节点后续可能用图片/Spine/3D投影 RawImage,需要统一管理切换逻辑
重写:UIHome_BY_ItemListPanels.cs
- 文件:
Assets/MyGame/aa/UI/Home/Sub/UIHome_BY_ItemListPanels.cs - 内容:从基础框架扩展为完整的炮台/翅膀/战神面板脚本
- 变更摘要:
- 新增
TurretItemInfo数据模型(id/name/category/displayType/sprite/spineAsset/renderTex3D/isUnlocked 等) - 新增
ItemSubType枚举(品质分类:普通/稀有/史诗/传说 + 战神独有攻击/防御/辅助) - 分类 Tab 切换:
UpdateSelectType驱动全链路更新(高亮→Dropdown→列表重建→详情) - Dropdown 动态刷新:不同分类显示不同子类型选项(炮台10级品质、翅膀品质线、战神三系)
- 列表重建:
RebuildItemList从 TurretItemInfo 数据生成 Toggle 实例,绑定 UIHome_BY_ItemToggleDisplay 展示 - 选中事件:
OnItemSelectedCallback回调 + 右边详情面板联动 - 获取/装备:
OnClickGet根据解锁状态分叉到 EquipItem / TryUnlockItem Show(args)支持传入ItemPanelSelect指定默认选中分类,无参数默认炮台
- 新增
- 原因:补充炮台/翅膀/战神三个分支的完整业务逻辑,与 TurretPanel.prefab 的 UI 结构对齐
重写:TurretResources.cs(fishResources)
- 文件:
Assets/MyGame/Scripts/fishResources/TurretResources.cs - 内容:参照 FishResourcesData 模式重写,匹配 tbturretresources.json 的完整字段
- 变更摘要:
- 字段对齐 JSON:新增
attackAudioID(攻击音效ID)、bulletID(子弹ID列表),原attackAudio→attackAudioID - Addressables 标签:三标签(TurretPrefab/TurretSpine/TurretSprite)合并为统一标签
PT+Default(Intersection 加载) - 新增
UnLoadTurretAssetsData()卸载方法(参照 AudioResourcesData 的 Load/Unload 对称模式) - 新增查询接口:
GetAllTurretData()获取全量、GetTurretDataByType(int turretType)按类型筛选(1=炮台/2=战神/3=翅膀) - 所有 Debug.Log 前缀统一为
[TurretResourcesData]
- 字段对齐 JSON:新增
- 原因:标签改为 PT+Default 匹配 Addressables 配置,字段对齐 JSON 实际数据,补充卸载和查询能力
扩展:TurretData.cs(UI面板属性)
- 文件:
Assets/MyGame/Scripts/Turret/TurretData.cs - 内容:原只有游戏内战斗属性,新增
[Header("UI面板属性")]区段 - 新增 Inspector 字段:
turretNumber(int)— 炮台编号,桥接 TurretResourcesDataturretType(int)— 1=普通炮台 2=战神 3=翅膀displayName(string)— UI 展示名称quality(int, Range 1-5)— 品质等级unlockLevel(int)— 解锁所需等级(0=默认拥有)uiIconSprite(Sprite)— UI 缩略图description(string, TextArea)— 描述文字
- 新增运行时状态(NonSerialized):
isUnlocked/isEquipped/ownStarLevel— 由服务器或 UI 面板读写
- 新增方法:
GetResourcesData()→ 便捷获取关联的 TurretResourcesData(表里没有返回 null,不报错)GetAttackAudioID()/GetBulletIDs()/GetAnimationType()→ 安全读取,表里没有就用 TurretData 自身的 Inspector 默认值
- 原因:TurretPanel 需要从 TurretData 读取展示/解锁/装备信息,实现游戏对象 ↔ UI 面板的数据桥接
加固:TurretResourcesData.Init() + TurretData 容错
- TurretResourcesData.Init():json 文件不存在或解析失败时不再 NPE 崩溃,改为
Debug.LogWarning后降级为空字典 - TurretData:新增
GetAttackAudioID()/GetBulletIDs()/GetAnimationType()安全方法,表里查不到就用 Inspector 默认值(0 / 空列表 / currTurretType) - 原因:表里没有配置的 turretNumber 不应报错——用组件自身的默认值即可
炮台UI图片提取 + AA标签配置
- 图片提取:从
#TurretResources.xlsx解析 DISPIMG 内嵌图片,按 prefabTurretResourcesPath 命名- 输出目录:
Assets/MyGame/aa/Game/Turrets/Sprites/paotai11001~11045.png(共 45 张) - 命名规则:
paotai+ turretNumber,与 JSON 的prefabTurretResourcesPath字段一致 - 映射逻辑:DISPIMG ID → Drawing XML pic name → rId → xl/media/imageXX.png
- 输出目录:
- Editor 脚本:
Assets/Editor/TurretSpriteAALabeler.cs- 菜单:Tools → 炮台 → 配置AA标签(PT+Default)
- 功能:遍历 Sprites/ 下所有 paotai*.png,添加 Addressable 标签 PT + Default,地址 = 文件名
- 放入 "Default Local Group",确保 TextureImporter 为 Sprite 模式
- 运行时加载链(无需手动绑定 Prefab):
TurretResourcesData.LoadTurretAssetsData()→Addressables.LoadAssetsAsync<Sprite>("PT","Default")→turretSpriteDic[turretNumber]→toggleDisplay.SetSprite() - 原因:项目使用 Addressables,图片通过标签 PT+Default 运行时加载,TurretResourcesData.GetTurretSprite() 提供查询,不依赖直接引用
融合:UIHome_BY_ItemListPanels ↔ TurretResourcesData
- 文件:
Assets/MyGame/aa/UI/Home/Sub/UIHome_BY_ItemListPanels.cs - 核心变更:去掉中间数据模型
TurretItemInfo,面板直读TurretResourcesData - 数据流:
UpdateSelectType(type)→TurretResourcesData.GetTurretDataByType(turretType)→RebuildItemList→ 每个 Toggle 调用GetTurretSprite(id)拿到 AA 加载的 Sprite →toggleDisplay.SetSprite() - 简化项:
- 删除
TurretItemInfo类、SetItemData()、_allItemData ItemPanelSelect↔turretType映射:Turrect→1, ZS→2, Wing→3OnItemSelectedCallback回调改为传int turretNumber- Dropdown 暂简化为"全部XX"(品质数据由服务器提供后恢复)
- 删除
- 原因:去掉无用的中间层,让面板直接消费 TurretResourcesData + AA 加载的 Sprite