8.5 KiB
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系统的详细技术分析,包含所有主要组件的实现细节和依赖关系。