主题
GameSystemUI.ConversationSystemUI
ScopeData 仅客户端
命名空间 GameSystemUI.ConversationSystemUI
csharp
public class ScopeData : IGameClass构造函数
ScopeData 仅客户端
csharp
public ScopeData()方法
OnRegisterGameClass 仅客户端
csharp
public static void OnRegisterGameClass()BubbleUI 仅客户端
命名空间 GameSystemUI.ConversationSystemUI.Advanced
csharp
public class BubbleUI : Panel, IThinker, IGameObject<GameDataControlBubbleUI>, IGameObject气泡UI组件 - 跟随单位显示的UI气泡
备注
主要功能: 实现IThinker接口,每帧更新UI位置 可以绑定单位,自动跟随单位位置 使用世界坐标到UI坐标的转换 包含Label子控件用于显示文本 支持打字机效果 包含可完成指示器(canFinishPanel) 偏移量说明: OffsetX/OffsetY: UI坐标的偏移(在世界坐标转换为UI坐标后应用) 不受相机角度影响,始终是屏幕坐标偏移 使用示例: 对话气泡
构造函数
BubbleUI 仅客户端
csharp
public BubbleUI()默认构造函数
BubbleUI 仅客户端
csharp
public BubbleUI(IGameLink<GameDataControlBubbleUI> link)GameData构造函数
属性
UIOffset 仅客户端
csharp
public UIPosition UIOffset { get; set; }UI 坐标偏移(X/Y 轴,屏幕坐标,不受镜头旋转影响)
OffsetZ 仅客户端
csharp
public float OffsetZ { get; set; }Z 轴偏移(世界坐标,影响深度/前后位置)
Direction 仅客户端
csharp
public BubbleDirection Direction { get; set; }气泡方向
BindUnit 仅客户端
csharp
public Unit? BindUnit { get; set; }绑定的单位
Label 仅客户端
csharp
public Label Label { get; }获取Label控件(用于高级自定义)
EnableTypewriter 仅客户端
csharp
public bool EnableTypewriter { get; set; }是否启用打字机效果
TypewriterSpeed 仅客户端
csharp
public float TypewriterSpeed { get; set; }打字速度:每帧显示的字符数
IsTypewriterPlaying 仅客户端
csharp
public bool IsTypewriterPlaying { get; }打字机效果是否正在播放
ShowCanFinish 仅客户端
csharp
public bool ShowCanFinish { get; set; }是否显示可完成指示器
Link 仅客户端
csharp
public new IGameLink<GameDataControlBubbleUI> Link { get; }Cache 仅客户端
csharp
public new GameDataControlBubbleUI Cache { get; }方法
Think 仅客户端
csharp
public void Think(int delta)IThinker接口实现 - 每帧更新UI位置
delta— 时间间隔(毫秒)
Show 仅客户端
csharp
public void Show()显示气泡UI
Hide 仅客户端
csharp
public void Hide()隐藏气泡UI
ShowText 仅客户端
csharp
public void ShowText(string text)设置文本并显示(支持打字机效果)
text— 要显示的文本
CompleteTypewriter 仅客户端
csharp
public void CompleteTypewriter()立即完成打字效果(如果正在播放)
StopTypewriter 仅客户端
csharp
public void StopTypewriter()停止打字效果(如果正在播放)
DisposeManaged 仅客户端
csharp
protected override void DisposeManaged()释放托管资源
字段
DefaultTemplate 仅客户端
csharp
public new static readonly IGameLink<GameDataControlBubbleUI> DefaultTemplate默认模板
ConversationChoiceItem 仅客户端
命名空间 GameSystemUI.ConversationSystemUI.Advanced
csharp
public class ConversationChoiceItem : Panel对话选择项控件
构造函数
ConversationChoiceItem 仅客户端
csharp
public ConversationChoiceItem()ConversationChoiceItem 仅客户端
csharp
public ConversationChoiceItem(IGameLink<GameDataControlConversationChoiceItem> link)属性
IconPanel 仅客户端
csharp
protected Panel IconPanel { get; }SeparatorPanel 仅客户端
csharp
protected Panel SeparatorPanel { get; }TextLabel 仅客户端
csharp
protected Label TextLabel { get; }ChoiceInfo 仅客户端
csharp
public ConversationChoiceInfo? ChoiceInfo { get; set; }方法
InitializeUI 仅客户端
csharp
protected virtual void InitializeUI()SetIcon 仅客户端
csharp
public virtual void SetIcon(string? iconPath)设置选择项图标(可选)
ConversationPanel 仅客户端
命名空间 GameSystemUI.ConversationSystemUI.Advanced
csharp
public class ConversationPanel : ConversationPanelBase对话面板的默认实现
构造函数
ConversationPanel 仅客户端
csharp
public ConversationPanel()ConversationPanel 仅客户端
csharp
public ConversationPanel(IGameLink<GameDataControlConversationPanel>? link)属性
EnableTypewriter 仅客户端
csharp
public bool EnableTypewriter { get; set; }是否启用打字机效果(默认关闭)
TypewriterSpeed 仅客户端
csharp
public float TypewriterSpeed { get; set; }打字机速度:每帧显示的字符数(默认0.5)
BubbleUITemplate 仅客户端
csharp
public IGameLink<GameDataControlBubbleUI> BubbleUITemplate { get; set; }BubbleUI模板配置
BubbleDirection 仅客户端
csharp
public BubbleDirection BubbleDirection { get; set; }BubbleUI气泡方向
BackgroundVisible 仅客户端
csharp
public bool BackgroundVisible { get; set; }方法
Clear 仅客户端
csharp
public override void Clear()Hide 仅客户端
csharp
public override void Hide()ShowChoices 仅客户端
csharp
public override void ShowChoices(List<ConversationChoiceInfo> choices, ConversationChoicePromptInfo? promptInfo, GameDataConversationChoiceGroup? choiceGroupData)ShowLine 仅客户端
csharp
public override void ShowLine(ConversationLineInfo lineInfo, GameDataConversationLine? lineData)CompleteLineDisplay 仅客户端
csharp
protected override void CompleteLineDisplay()HideLine 仅客户端
csharp
public override void HideLine()隐藏台词显示UI(文本、角色名、立绘等)
OnCanFinishChanged 仅客户端
csharp
protected override void OnCanFinishChanged(bool canFinish)当 CanFinish 状态改变时的回调
HideChoices 仅客户端
csharp
public override void HideChoices()隐藏选择列表UI,但保持面板可见
DisposeManaged 仅客户端
csharp
protected override void DisposeManaged()ConversationPanelBase 仅客户端
命名空间 GameSystemUI.ConversationSystemUI.Advanced
csharp
public abstract class ConversationPanelBase : Panel, IConversationUI对话面板基类,用于显示对话台词和选择
备注
派生类需要实现以下抽象方法: ShowLine: 显示对话台词 ShowChoices: 显示对话选择 Clear: 清空对话内容 Hide: 隐藏对话面板 HideLine: 隐藏台词 HideChoices: 隐藏选择 派生类可以使用以下可选功能: TypewriterEffectBehavior: 为台词添加打字机效果(文字逐个显示) 派生类应在适当时机(通常是交互的回调中)调用以下受保护方法通知对话系统: CompleteLineDisplay(): 台词显示完成 CompleteChoiceSelection(int): 用户选择完成
构造函数
ConversationPanelBase 仅客户端
csharp
public ConversationPanelBase()属性
CanFinish 仅客户端
csharp
public bool CanFinish { get; set; }当前台词是否可以完成(通过点击等方式) 如果 AllowSkip 为 true,则始终为 true 如果 WaitForConfirmation 为 true,则在 Duration 结束后变为 true
方法
ShowLine 仅客户端
csharp
public abstract void ShowLine(ConversationLineInfo lineInfo, GameDataConversationLine? lineData)ShowChoices 仅客户端
csharp
public abstract void ShowChoices(List<ConversationChoiceInfo> choices, ConversationChoicePromptInfo? promptInfo, GameDataConversationChoiceGroup? choiceGroupData)HideLine 仅客户端
csharp
public abstract void HideLine()HideChoices 仅客户端
csharp
public abstract void HideChoices()Clear 仅客户端
csharp
public abstract void Clear()Hide 仅客户端
csharp
public abstract void Hide()CompleteLineDisplay 仅客户端
csharp
protected virtual void CompleteLineDisplay()派生类在台词显示完成后调用此方法,用于通知对话系统继续
CompleteChoiceSelection 仅客户端
csharp
protected virtual void CompleteChoiceSelection(int choiceIndex)派生类在用户选择完成后调用此方法,用于通知对话系统用户的选择
choiceIndex— 用户选择的选项索引(从choices列表中,从0开始)
CancelLineDisplay 仅客户端
csharp
protected virtual void CancelLineDisplay()派生类可以调用此方法取消当前的台词显示
CancelChoiceSelection 仅客户端
csharp
protected virtual void CancelChoiceSelection()派生类可以调用此方法取消当前的选择
OnCanFinishChanged 仅客户端
csharp
protected virtual void OnCanFinishChanged(bool canFinish)当 CanFinish 状态改变时调用,派生类可以重写此方法来响应变化
canFinish— 新的 CanFinish 状态
ShowChoicesAsync 仅客户端
csharp
public Task<int> ShowChoicesAsync(List<ConversationChoiceInfo> choices, ConversationChoicePromptInfo? promptInfo, ConversationChoiceGroup? choiceGroup, CancellationToken cancellationToken = default(CancellationToken))ShowLineAsync 仅客户端
csharp
public Task ShowLineAsync(ConversationLineInfo lineInfo, ConversationLine? line, CancellationToken cancellationToken = default(CancellationToken))DisposeManaged 仅客户端
csharp
protected override void DisposeManaged()释放托管资源
TypewriterEffectBehavior 仅客户端
命名空间 GameSystemUI.ConversationSystemUI.Advanced
csharp
public class TypewriterEffectBehavior : DisposableObject, IThinker打字机效果行为组件 为Label控件提供文字逐个显示的效果
构造函数
TypewriterEffectBehavior 仅客户端
csharp
public TypewriterEffectBehavior(Label targetLabel)创建打字机效果行为组件
targetLabel— 目标Label控件
TypewriterEffectBehavior 仅客户端
csharp
public TypewriterEffectBehavior(Label targetLabel, Action? onCompleted)创建打字机效果行为组件(带完成回调)
targetLabel— 目标Label控件onCompleted— 完成回调函数
属性
CharsPerFrame 仅客户端
csharp
public float CharsPerFrame { get; set; }打字速度:每帧显示的字符数(可以是小数,如0.5表示每2帧显示1个字符)
Enabled 仅客户端
csharp
public bool Enabled { get; set; }是否启用打字机效果
OnCompleted 仅客户端
csharp
public Action? OnCompleted { get; set; }打字完成时的回调函数
OnStarted 仅客户端
csharp
public Action? OnStarted { get; set; }打字开始时的回调函数
IsPlaying 仅客户端
csharp
public bool IsPlaying { get; }是否正在播放打字效果
IsCompleted 仅客户端
csharp
public bool IsCompleted { get; }是否已完成打字
方法
Play 仅客户端
csharp
public void Play(string text)开始播放打字机效果
text— 要显示的完整文本
Complete 仅客户端
csharp
public void Complete()立即完成打字效果,显示完整文本
Stop 仅客户端
csharp
public void Stop()停止打字效果(不触发完成回调)
Reset 仅客户端
csharp
public void Reset()重置状态
Think 仅客户端
csharp
public void Think(int delta)每帧更新打字效果
DisposeManaged 仅客户端
csharp
protected override void DisposeManaged()释放托管资源
BubbleDirection 双端
命名空间 GameSystemUI.ConversationSystemUI.Data
csharp
public enum BubbleDirection气泡方向枚举
枚举值
Up— 上方(气泡指向上方,显示在单位下方)Down— 下方(气泡指向下方,显示在单位上方)Left— 左侧(气泡指向左侧,显示在单位右侧)Right— 右侧(气泡指向右侧,显示在单位左侧)
GameDataBubbleUILayout 双端
命名空间 GameSystemUI.ConversationSystemUI.Data
csharp
public class GameDataBubbleUILayout : GameDataCategory<GameDataBubbleUILayout>, IGameDataCategory<GameDataBubbleUILayout>, IGameData<GameDataBubbleUILayout>, IGameData气泡UI布局配置 - 定义气泡的外观和布局
构造函数
GameDataBubbleUILayout 双端
csharp
public GameDataBubbleUILayout(GameLink<GameDataBubbleUILayout, GameDataBubbleUILayout> link)GameDataBubbleUILayout 双端
csharp
public GameDataBubbleUILayout(IGameLink<GameDataBubbleUILayout> link)属性
BubbleImage 双端
csharp
public Image? BubbleImage { get; set; }气泡背景图片
UIOffset 双端
csharp
public UIPosition UIOffset { get; set; }UI 坐标偏移(X/Y 轴,屏幕坐标,不受镜头旋转影响)
OffsetZ 双端
csharp
public float OffsetZ { get; set; }Z 轴偏移(世界坐标,影响深度/前后位置)
CharsPerLine 双端
csharp
public int CharsPerLine { get; set; }每行文字数(用于计算气泡宽度:Width = CharsPerLine * FontSize + TextMargin.Left + TextMargin.Right)
TextMargin 双端
csharp
public Thickness TextMargin { get; set; }文本边距
SlicedEdges 双端
csharp
public Thickness? SlicedEdges { get; set; }九宫格切片边界(用于图片拉伸时保持边角不变形)
SocketName 双端
csharp
public string SocketName { get; set; }绑点名称(气泡UI将跟随单位的这个绑点,默认为 "socket_root")
GameDataControlBubbleUI 双端
命名空间 GameSystemUI.ConversationSystemUI.Data
csharp
public class GameDataControlBubbleUI : GameDataControlPanel, IGameData<GameDataControlBubbleUI>, IGameDataBubbleUI组件的GameData配置类
构造函数
GameDataControlBubbleUI 双端
csharp
public GameDataControlBubbleUI(GameLink<GameDataControl, GameDataControlBubbleUI> link)GameDataControlBubbleUI 双端
csharp
public GameDataControlBubbleUI(IGameLink<GameDataControlBubbleUI> link)属性
DefaultDirection 双端
csharp
public BubbleDirection DefaultDirection { get; set; }默认方向(当没有指定方向或找不到对应方向配置时使用)
DirectionLayouts 双端
csharp
public Dictionary<BubbleDirection, IGameLink<GameDataBubbleUILayout>> DirectionLayouts { get; set; }方向布局配置字典(方向 -> 布局配置)
FontSize 双端
csharp
public int FontSize { get; set; }Label字体大小
CanFinishIndicatorImage 双端
csharp
public Image? CanFinishIndicatorImage { get; set; }可完成指示器图片
Link 双端
csharp
public new IGameLink<GameDataControlBubbleUI> Link { get; }GameDataControlConversationChoiceItem 双端
命名空间 GameSystemUI.ConversationSystemUI.Data
csharp
public class GameDataControlConversationChoiceItem : GameDataControlPanel, IGameData<GameDataControlConversationChoiceItem>, IGameDataConversationChoiceItem控件UI创建部分 - 仅客户端
构造函数
GameDataControlConversationChoiceItem 双端
csharp
public GameDataControlConversationChoiceItem(GameLink<GameDataControl, GameDataControlConversationChoiceItem> link)GameDataControlConversationChoiceItem 双端
csharp
public GameDataControlConversationChoiceItem(IGameLink<GameDataControlConversationChoiceItem> link)属性
Icon 双端
csharp
public Icon Icon { get; set; }默认图标
Link 双端
csharp
public new IGameLink<GameDataControlConversationChoiceItem> Link { get; }方法
CreateControl 仅客户端
csharp
public override Control CreateControl()CreateConversationChoiceItem 仅客户端
csharp
public ConversationChoiceItem CreateConversationChoiceItem()GameDataControlConversationPanel 双端
命名空间 GameSystemUI.ConversationSystemUI.Data
csharp
public class GameDataControlConversationPanel : GameDataControlPanel, IGameData<GameDataControlConversationPanel>, IGameDataConversationPanel 控件的 GameData 配置类
构造函数
GameDataControlConversationPanel 双端
csharp
public GameDataControlConversationPanel(GameLink<GameDataControl, GameDataControlConversationPanel> link)GameDataControlConversationPanel 双端
csharp
public GameDataControlConversationPanel(IGameLink<GameDataControlConversationPanel> link)属性
BackgroundImage 双端
csharp
public Image? BackgroundImage { get; set; }背景图片
SplitLineImage 双端
csharp
public Image? SplitLineImage { get; set; }分割线图片
SkipButtonImage 双端
csharp
public Image? SkipButtonImage { get; set; }跳过按钮图片
CanFinishIndicatorImage 双端
csharp
public Image? CanFinishIndicatorImage { get; set; }可完成指示器图片
EnableTypewriter 双端
csharp
public bool EnableTypewriter { get; set; }是否启用打字机效果(默认关闭)
TypewriterSpeed 双端
csharp
public float TypewriterSpeed { get; set; }打字机速度:每帧显示的字符数(默认0.5)
BubbleUITemplate 双端
csharp
public IGameLink<GameDataControlBubbleUI>? BubbleUITemplate { get; set; }BubbleUI模板配置
BubbleDirection 双端
csharp
public BubbleDirection BubbleDirection { get; set; }BubbleUI气泡方向(默认为 Right)
ChoiceItemTemplate 双端
csharp
public IGameLink<GameDataControlConversationChoiceItem>? ChoiceItemTemplate { get; set; }选择项模板配置
Link 双端
csharp
public new IGameLink<GameDataControlConversationPanel> Link { get; }方法
CreateControl 仅客户端
csharp
public override Control CreateControl()CreateConversationPanel 仅客户端
csharp
public ConversationPanel CreateConversationPanel()