Files
5.24BuYu/Assets/MyGame/CHANGELOG.md
T
2026-06-08 21:23:40 +08:00

6.5 KiB
Raw Blame History

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]
  • 原因:标签改为 PT+Default 匹配 Addressables 配置,字段对齐 JSON 实际数据,补充卸载和查询能力

扩展:TurretData.cs(UI面板属性)

  • 文件:Assets/MyGame/Scripts/Turret/TurretData.cs
  • 内容:原只有游戏内战斗属性,新增 [Header("UI面板属性")] 区段
  • 新增 Inspector 字段:
    • turretNumber(int)— 炮台编号,桥接 TurretResourcesData
    • turretType(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→3
    • OnItemSelectedCallback 回调改为传 int turretNumber
    • Dropdown 暂简化为"全部XX"(品质数据由服务器提供后恢复)
  • 原因:去掉无用的中间层,让面板直接消费 TurretResourcesData + AA 加载的 Sprite