TH1/Unity/AIAna/TH1_UI_Component_Details.md
2025-10-14 00:39:50 +08:00

8.5 KiB
Raw Blame History

TH1 UI组件详细分析

1. 核心架构组件

CommonUI.cs (Assets/Scripts/TH1_UI/Core/CommonUI.cs)

行数: 100行 命名空间: UI.Core 基类: abstract class

核心字段

public GameObject UIObject;                    // UI游戏对象引用
private bool _isShowing = false;              // 当前显示状态
private bool _isAnimating = false;            // 动画播放状态
private bool _needShow = false;               // 需要显示的标志
private AnimancerComponent _animancer;        // 动画组件

核心方法

  • Update(): 状态机主更新逻辑
  • Show(): 显示UI播放淡入动画
  • Hide(): 隐藏UI播放淡出动画
  • UpdateData(): 数据更新(虚方法,子类重写)
  • SetShow()/SetHide(): 设置显示/隐藏请求

设计特点

  • 使用Animancer系统进行动画管理
  • 三态管理系统:显示中、动画中、需要显示
  • 统一的0.2秒动画时长
  • Timer系统集成用于动画完成回调

BaseUIView.cs (Assets/Scripts/TH1_UI/Core/BaseUIView.cs)

行数: 67行 命名空间: TH1_UI.Core 泛型约束: where TData : IUIData

核心字段

public GameObject Instance { get; private set; }  // UI实例
protected TData Data { get; private set; }      // 绑定数据
protected abstract string PrefabPath { get; }   // Prefab路径

核心方法

  • Init(TData data): 初始化UI加载Prefab并绑定
  • Show()/Hide(): 显示/隐藏实例
  • Refresh(): 刷新数据显示
  • Dispose(): 销毁UI实例
  • OnBind(): 抽象方法,子类实现组件绑定
  • OnRefresh(): 抽象方法,子类实现数据刷新

设计特点

  • 强类型数据绑定
  • 自动资源管理
  • 生命周期完整
  • 支持热更新

UIInfoManager.cs (Assets/Scripts/TH1_UI/Core/UIInfoManager.cs)

行数: 119行 命名空间: TH1_UI.Core

核心组件

private UIInfoTask _task = null;  // 当前任务

核心方法

  • StartNewTask(UIInfoTask task): 启动新任务
  • HideCurTask(): 隐藏当前任务
  • OnTaskCompleted(): 任务完成回调

UIInfoTask内部类

  • 支持参数化UI显示
  • 回调链管理
  • 异步执行模式

2. 主要界面组件

MainUI.cs (Assets/Scripts/TH1_UI/MainUI.cs)

行数: 239行 依赖项: Main, MapData, Animancer, ET, TMPro, Logic, TH1_Core, TH1Resource

UI结构

public GameObject ROMainUI;                    // 主UI根对象
public Button NewGameButton;                    // 新游戏按钮
public Button ResumeGameButton;                 // 继续游戏按钮
public Button StoryModeButton;                  // 故事模式按钮
public Button LibraryButton;                    // 图书馆按钮
public Button SettingButton;                    // 设置按钮
public Button HistoryButton;                    // 历史按钮
public Button AboutButton;                      // 关于按钮
public Button BoardingButton;                   // 启动按钮
public TextMeshProUGUI QQHintVersion;          // 版本显示1
public TextMeshProUGUI QQHintVersion2;         // 版本显示2

核心功能

  • 主菜单导航
  • 存档状态检测
  • 版本信息显示
  • 语言提示支持
  • 快速动画模式
  • 加载界面协调

事件处理

  • OnNewGameClicked(): 跳转到选择界面
  • OnResumeGameClicked(): 加载存档
  • OnLibraryClicked(): 打开图书馆
  • OnSettingClicked(): 打开设置
  • OnHistoryClicked(): 打开历史
  • OnAboutClicked(): 打开关于

BottomBarUI.cs (Assets/Scripts/TH1_UI/BottomBarUI.cs)

行数: 249行 依赖项: Animancer, Unity, Logic, MongoDB, RuntimeData, TH1_Core, TH1_Logic

UI结构

public GameObject ROBottomBarUI;                // 底部栏根对象
public Button SettingsButton;                   // 设置按钮
public Button QuitButton;                       // 退出按钮
public Button TutorButton;                      // 教程按钮
public Button SLButton;                         // 存读档按钮
public Button RankingButton;                    // 排行榜按钮
public Button TechTreeButton;                   // 科技树按钮
public Button NextTurnButton;                   // 下一回合按钮
public Button MessageButton;                    // 消息按钮
public Button HeroButton;                       // 英雄按钮
public Transform QuitHint;                      // 退出提示面板
public Transform TutorPanel;                    // 教程面板

状态管理

public bool UIBottomBarStatus = true;          // 底部栏状态
private bool _isAnimating = false;              // 动画状态
private float _fadeTime = 0f;                  // 淡入淡出时间
private bool _isShow = false;                  // 显示状态

核心功能

  • 游戏内导航功能
  • 英雄头像更新
  • 退出确认对话框
  • 教程面板管理
  • 动画渐变效果
  • 多人游戏状态处理

事件处理

  • OnSettingsClicked(): 切换设置界面
  • OnQuitClicked(): 显示退出确认
  • OnTutorClicked(): 切换教程面板
  • OnSLClicked(): 存读档操作
  • OnRankingClicked(): 切换排行榜
  • OnTechTreeClicked(): 打开科技树
  • OnNextTurnClicked(): 回合结束处理
  • OnMessageClicked(): 切换消息界面
  • OnHeroButtonClicked(): 英雄信息显示

3. 通用组件分析

Common/目录组件

ChooseUIButtonHoverColor.cs

功能: 选择界面按钮悬停颜色效果 行数: ~15行

ChooseUISnapScrollRect.cs

功能: 选择界面滚动视图吸附功能 行数: ~50行

MainUIButtonHoverEffect.cs

功能: 主按钮悬停特效 行数: ~40行

SetButtonTextColor.cs

功能: 按钮文本颜色设置 行数: ~10行

ToggleButtonController.cs

功能: 切换按钮控制器 行数: ~20行

TribeHoverEffect.cs

功能: 部落悬停效果 行数: ~35行


4. 其他重要界面

ChooseUI.cs

文件大小: 12,245 bytes (约300行) 推测功能: 英雄/单位选择界面

TechTreeUI.cs

文件大小: 24,953 bytes (约600行) 推测功能: 科技树界面最复杂的UI组件之一

BottomInfoUI.cs

文件大小: 57,431 bytes (约1300行) 推测功能: 底部信息显示最大的UI组件

BoardingUI.cs

文件大小: 8,157 bytes (约200行) 功能: 启动/登船界面

CameraController.cs

文件大小: 8,936 bytes (约220行) 功能: UI相机控制


5. 工具类组件

ActionClickedEvent.cs

行数: ~8行 功能: 行为点击事件

ActionIdMono.cs

行数: ~5行 功能: 行为ID标识器

SkillIdMono.cs

行数: ~8行 功能: 技能ID标识器

TechListMono.cs

行数: ~10行 功能: 科技列表标识器

TechTypeMono.cs

行数: ~6行 功能: 科技类型标识器

UnitTypeMono.cs

行数: ~8行 功能: 单位类型标识器

TooltipTigger.cs

行数: ~8行 功能: 工具提示触发器

VersionLabelMono.cs

行数: ~8行 功能: 版本标签标识器


6. 样式和视觉效果

RoundedRectImage.cs

行数: ~25行 功能: 圆角矩形图片组件

BottomBarButtonUIAnimator.cs

行数: ~25行 功能: 底部栏按钮动画器

TechTreeButtonAnimator.cs

行数: ~10行 功能: 科技树按钮动画器


7. 交互控制

UIBlockCameraDrag.cs

行数: ~25行 功能: UI阻止相机拖拽

PreviewCameraController.cs

行数: ~3行 功能: 预览相机控制


8. 系统集成

Dependencies Mapping

MainUI
├── Logic.Main
├── RuntimeData.MapData
├── Animancer.Animation
├── ET.Framework
├── TMPro.Text
├── Logic.Audio
├── Logic.Config
├── TH1_Core.Managers
├── TH1_Logic.Core
├── TH1Resource.Cache
└── UI.UIManager

BottomBarUI
├── Main Game Reference
├── Resource Management
├── Event System
├── Network Logic
├── Steam Integration
├── Core Managers
└── UI Systems

Resource Dependencies

// 动画资源
ResourceCache.Instance.AnimCache.UICommonPanelFadeIn
ResourceCache.Instance.AnimCache.UICommonPanelFadeOut

// UI资源
UIManager.Instance.ROUIManager
UIManager.Instance.SettingUI
UIManager.Instance.RankingUI
UIManager.Instance.TechTreeUI
UIManager.Instance.BottomInfoUI

// 音频资源
AudioManager.Instance.PlayMusic("Main")

此文档提供了TH1 UI系统的详细技术分析包含所有主要组件的实现细节和依赖关系。