Skip to content

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; }

是否显示可完成指示器

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>, IGameData

BubbleUI组件的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; }

可完成指示器图片

csharp
public new IGameLink<GameDataControlBubbleUI> Link { get; }

GameDataControlConversationChoiceItem 双端 ​

命名空间 GameSystemUI.ConversationSystemUI.Data

csharp
public class GameDataControlConversationChoiceItem : GameDataControlPanel, IGameData<GameDataControlConversationChoiceItem>, IGameData

ConversationChoiceItem控件UI创建部分 - 仅客户端

构造函数 ​

GameDataControlConversationChoiceItem 双端 ​

csharp
public GameDataControlConversationChoiceItem(GameLink<GameDataControl, GameDataControlConversationChoiceItem> link)

GameDataControlConversationChoiceItem 双端 ​

csharp
public GameDataControlConversationChoiceItem(IGameLink<GameDataControlConversationChoiceItem> link)

属性 ​

Icon 双端 ​

csharp
public Icon Icon { get; set; }

默认图标

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>, IGameData

ConversationPanel 控件的 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; }

选择项模板配置

csharp
public new IGameLink<GameDataControlConversationPanel> Link { get; }

方法 ​

CreateControl 仅客户端 ​

csharp
public override Control CreateControl()

CreateConversationPanel 仅客户端 ​

csharp
public ConversationPanel CreateConversationPanel()