主题
TriggerEncapsulation.QuestSystem
ChapterManager 双端
命名空间 TriggerEncapsulation.QuestSystem
csharp
public static class ChapterManager章节管理器 - 管理玩家的章节进度
方法
BindUI 仅客户端
csharp
public static void BindUI(IChapterUI ui)绑定章节UI
UnbindUI 仅客户端
csharp
public static void UnbindUI()解绑章节UI
InitializeClient 仅客户端
csharp
public static void InitializeClient()客户端初始化
ShutdownClient 仅客户端
csharp
public static void ShutdownClient()客户端关闭
GetLocalPlayerChapterProgress 仅客户端
csharp
public static ChapterProgress? GetLocalPlayerChapterProgress(IGameLink<GameDataQuestChapter> chapterLink)获取本地玩家的章节进度
GetLocalPlayerAllChapterProgress 仅客户端
csharp
public static IEnumerable<ChapterProgress> GetLocalPlayerAllChapterProgress()获取本地玩家所有章节进度
GetLocalPlayerUnlockedChapters 仅客户端
csharp
public static IEnumerable<ChapterProgress> GetLocalPlayerUnlockedChapters()获取本地玩家已解锁的章节
GetLocalPlayerInProgressChapters 仅客户端
csharp
public static IEnumerable<ChapterProgress> GetLocalPlayerInProgressChapters()获取本地玩家进行中的章节
GetLocalPlayerCompletedChapters 仅客户端
csharp
public static IEnumerable<ChapterProgress> GetLocalPlayerCompletedChapters()获取本地玩家已完成的章节
GetChapterProgress 双端
csharp
public static ChapterProgress? GetChapterProgress(Player player, IGameLink<GameDataQuestChapter> chapterLink)获取玩家的章节进度
GetOrCreateChapterProgress 双端
csharp
public static ChapterProgress GetOrCreateChapterProgress(Player player, IGameLink<GameDataQuestChapter> chapterLink)获取或创建章节进度
GetAllChapterProgress 双端
csharp
public static IEnumerable<ChapterProgress> GetAllChapterProgress(Player player)获取玩家所有章节进度
GetUnlockedChapters 双端
csharp
public static IEnumerable<ChapterProgress> GetUnlockedChapters(Player player)获取玩家已解锁的章节
GetInProgressChapters 双端
csharp
public static IEnumerable<ChapterProgress> GetInProgressChapters(Player player)获取玩家进行中的章节
GetCompletedChapters 双端
csharp
public static IEnumerable<ChapterProgress> GetCompletedChapters(Player player)获取玩家已完成的章节
IsChapterUnlocked 双端
csharp
public static bool IsChapterUnlocked(Player player, IGameLink<GameDataQuestChapter> chapterLink)检查章节是否已解锁
IsChapterCompleted 双端
csharp
public static bool IsChapterCompleted(Player player, IGameLink<GameDataQuestChapter> chapterLink)检查章节是否已完成
InitializePlayerChapters 双端
csharp
public static void InitializePlayerChapters(Player player, IEnumerable<IGameLink<GameDataQuestChapter>> allChapters)初始化玩家的章节数据
player— 玩家allChapters— 所有可用章节
ClearPlayerData 双端
csharp
public static void ClearPlayerData(Player player)清理玩家数据
ClearAll 双端
csharp
public static void ClearAll()清理所有数据
Initialize 仅服务端
csharp
public static void Initialize()注册事件监听
Shutdown 仅服务端
csharp
public static void Shutdown()取消事件监听
UnlockChapter 仅服务端
csharp
public static CmdResult UnlockChapter(Player player, IGameLink<GameDataQuestChapter> chapterLink)解锁章节
StartChapter 仅服务端
csharp
public static CmdResult StartChapter(Player player, IGameLink<GameDataQuestChapter> chapterLink)开始章节
ClaimChapterRewardsAsync 仅服务端
csharp
public static ValueTask<CmdResult> ClaimChapterRewardsAsync(Player player, IGameLink<GameDataQuestChapter> chapterLink)领取章节奖励
ChapterProgress 双端
命名空间 TriggerEncapsulation.QuestSystem
csharp
public class ChapterProgress章节进度追踪
构造函数
ChapterProgress 双端
csharp
public ChapterProgress(IGameLink<GameDataQuestChapter> link)属性
Link 双端
csharp
public IGameLink<GameDataQuestChapter> Link { get; }章节链接
Cache 双端
csharp
public GameDataQuestChapter Cache { get; }章节数据缓存
Status 双端
csharp
public ChapterStatus Status { get; }章节状态
CompletedQuestCount 双端
csharp
public int CompletedQuestCount { get; }已完成的任务数量
TotalQuestCount 双端
csharp
public int TotalQuestCount { get; }总任务数量
Progress 双端
csharp
public float Progress { get; }完成进度 (0.0 - 1.0)
IsCompleted 双端
csharp
public bool IsCompleted { get; }是否已完成
CanClaimRewards 双端
csharp
public bool CanClaimRewards { get; }是否可以领取奖励
UnlockedTime 双端
csharp
public DateTime? UnlockedTime { get; }解锁时间
CompletedTime 双端
csharp
public DateTime? CompletedTime { get; }完成时间
ChapterStatus 双端
命名空间 TriggerEncapsulation.QuestSystem
csharp
public enum ChapterStatus章节状态
枚举值
Locked— 锁定(前置条件未满足)Unlocked— 已解锁,可以开始InProgress— 进行中Completed— 已完成(可领取奖励)RewardsClaimed— 奖励已领取
IChapterUI 双端
命名空间 TriggerEncapsulation.QuestSystem
csharp
public interface IChapterUI章节UI接口 - 用于与游戏UI系统解耦
备注
实现此接口以接收章节系统的UI事件通知。 通过 ChapterManager.BindUI 绑定实现。 public class MyChapterUI : MonoBehaviour, IChapterUI { void Start() { ChapterManager.BindUI(this); } void OnDestroy() { ChapterManager.UnbindUI(); } public void OnChapterUnlocked(IGameLink<GameDataQuestChapter> chapter, Player player) { // 显示章节解锁动画 ShowUnlockAnimation(chapter.Data?.Name?.ToString()); } // ... 其他方法实现 }
方法
OnChapterUnlocked 双端
csharp
void OnChapterUnlocked(IGameLink<GameDataQuestChapter> chapter, Player player)章节解锁时调用
chapter— 解锁的章节player— 玩家
OnChapterProgressUpdated 双端
csharp
void OnChapterProgressUpdated(IGameLink<GameDataQuestChapter> chapter, Player player, int completedQuests, int totalQuests)章节进度更新时调用
chapter— 章节player— 玩家completedQuests— 已完成任务数totalQuests— 总任务数
OnChapterCompleted 双端
csharp
void OnChapterCompleted(IGameLink<GameDataQuestChapter> chapter, Player player)章节完成时调用
chapter— 完成的章节player— 玩家
OnChapterRewardsClaimed 双端
csharp
void OnChapterRewardsClaimed(IGameLink<GameDataQuestChapter> chapter, Player player)章节奖励领取时调用
chapter— 章节player— 玩家
RefreshChapterList 双端
csharp
void RefreshChapterList(IEnumerable<ChapterProgress> chapters)刷新章节列表显示
chapters— 所有章节进度
ShowChapterDetails 双端
csharp
void ShowChapterDetails(ChapterProgress chapter)显示章节详情
chapter— 章节进度
HideChapterDetails 双端
csharp
void HideChapterDetails()隐藏章节详情
ShowChapterCompleteCelebration 双端
csharp
void ShowChapterCompleteCelebration(ChapterProgress chapter, IEnumerable<string>? rewards = null)显示章节完成庆祝界面
chapter— 完成的章节rewards— 章节奖励描述
IQuestUI 双端
命名空间 TriggerEncapsulation.QuestSystem
csharp
public interface IQuestUI任务UI接口,用于在客户端显示任务相关信息
备注
游戏需要实现此接口来提供具体的UI表现。任务系统会通过此接口与UI层交互, 在任务状态变化时通知UI更新。 实现要点: 所有方法都应该是非阻塞的 UI实现应该处理重复调用的情况 实现应该支持多个任务同时追踪 注册方式: // 在游戏初始化时注册UI实现 QuestUI.Register(new MyQuestUI());
方法
OnQuestAccepted 双端
csharp
void OnQuestAccepted(QuestInfo info)通知任务接受
info— 任务信息
OnQuestCompleted 双端
csharp
void OnQuestCompleted(QuestInfo info)通知任务完成(目标达成,等待提交)
info— 任务信息
OnQuestTurnedIn 双端
csharp
void OnQuestTurnedIn(QuestInfo info)通知任务提交成功
info— 任务信息
OnQuestFailed 双端
csharp
void OnQuestFailed(QuestInfo info, string? reason)通知任务失败
info— 任务信息reason— 失败原因
OnQuestAbandoned 双端
csharp
void OnQuestAbandoned(QuestInfo info)通知任务放弃
info— 任务信息
OnObjectiveProgress 双端
csharp
void OnObjectiveProgress(QuestInfo questInfo, QuestObjectiveInfo objectiveInfo)通知目标进度更新
questInfo— 任务信息objectiveInfo— 目标信息
OnObjectiveCompleted 双端
csharp
void OnObjectiveCompleted(QuestInfo questInfo, QuestObjectiveInfo objectiveInfo)通知目标完成
questInfo— 任务信息objectiveInfo— 目标信息
OnTrackingChanged 双端
csharp
void OnTrackingChanged(QuestInfo info, bool isTracked)通知任务追踪状态变化
info— 任务信息isTracked— 是否追踪
ShowQuestDetail 双端
csharp
void ShowQuestDetail(QuestInfo info)显示任务详情面板
info— 任务信息
HideQuestDetail 双端
csharp
void HideQuestDetail()隐藏任务详情面板
RefreshQuestList 双端
csharp
void RefreshQuestList(IEnumerable<QuestInfo> quests)刷新任务列表
quests— 任务列表
RefreshTracker 双端
csharp
void RefreshTracker(IEnumerable<QuestInfo> trackedQuests)刷新追踪面板
trackedQuests— 追踪的任务列表
Quest 双端
命名空间 TriggerEncapsulation.QuestSystem
csharp
public class Quest : IExecutableObject, IExecutionContext, IGameObject, IGameObject<GameDataQuest>任务运行时实例
备注
表示一个任务的运行时状态,包括任务进度、状态和目标。 任务实例由 QuestManager 创建和管理。 任务状态流程: Inactive → InProgress → Completed → TurnedIn ↓ ↓ Failed Abandoned
构造函数
Quest 双端
csharp
public Quest(IGameLink<GameDataQuest> link, Player player)创建任务实例
link— 任务数据链接player— 任务所属玩家
属性
Link 双端
csharp
public IGameLink<GameDataQuest> Link { get; }任务数据链接
Cache 双端
csharp
public GameDataQuest Cache { get; }任务数据缓存
Player 双端
csharp
public Player Player { get; }任务所属玩家
Status 双端
csharp
public QuestStatus Status { get; }任务当前状态
AcceptedTime 双端
csharp
public DateTime? AcceptedTime { get; }接受任务的时间
CompletedTime 双端
csharp
public DateTime? CompletedTime { get; }完成任务的时间
IsTracked 双端
csharp
public bool IsTracked { get; }是否正在追踪
AcceptCount 双端
csharp
public int AcceptCount { get; }任务接受次数(用于可重复任务)
Objectives 双端
csharp
public IReadOnlyList<QuestObjective> Objectives { get; }任务目标列表
RequiredObjectives 双端
csharp
public IEnumerable<QuestObjective> RequiredObjectives { get; }获取必要目标列表(非可选)
OptionalObjectives 双端
csharp
public IEnumerable<QuestObjective> OptionalObjectives { get; }获取可选目标列表
AllRequiredObjectivesCompleted 双端
csharp
public bool AllRequiredObjectivesCompleted { get; }所有必要目标是否已完成
TotalProgress 双端
csharp
public float TotalProgress { get; }获取任务总进度(0-1)
IsActive 双端
csharp
public bool IsActive { get; }任务是否处于活动状态
CanAccept 双端
csharp
public bool CanAccept { get; }任务是否可接受
CanTurnIn 双端
csharp
public bool CanTurnIn { get; }任务是否可提交
CanAbandon 双端
csharp
public bool CanAbandon { get; }任务是否可放弃
IsExpired 双端
csharp
public bool IsExpired { get; }任务是否已过期(超时)
RemainingTime 双端
csharp
public TimeSpan? RemainingTime { get; }剩余时间(如果有时限)
Parent 双端
csharp
public IExecutableObject? Parent { get; }Shared 双端
csharp
public ExecutionParamShared Shared { get; }Source 双端
csharp
public ITarget Source { get; }方法
InitializeClientEventListeners 仅客户端
csharp
public static void InitializeClientEventListeners()初始化客户端事件监听
CleanupClientEventListeners 仅客户端
csharp
public static void CleanupClientEventListeners()清理客户端事件监听
RefreshQuestListUI 仅客户端
csharp
public static void RefreshQuestListUI()刷新任务列表UI
ShowQuestDetailUI 仅客户端
csharp
public static void ShowQuestDetailUI(Quest quest)显示任务详情
HideQuestDetailUI 仅客户端
csharp
public static void HideQuestDetailUI()隐藏任务详情
GetObjective 双端
csharp
public QuestObjective? GetObjective(int index)根据索引获取目标
GetObjectiveByCustomId 双端
csharp
public QuestObjective? GetObjectiveByCustomId(string customId)根据自定义ID获取目标
Accept 仅服务端
csharp
public CmdResult Accept()接受任务
返回: 操作结果
TurnInAsync 仅服务端
csharp
public ValueTask<CmdResult> TurnInAsync()提交任务
返回: 操作结果
Abandon 仅服务端
csharp
public CmdResult Abandon()放弃任务
返回: 操作结果
Fail 仅服务端
csharp
public CmdResult Fail(string? reason = null)使任务失败
reason— 失败原因
返回: 操作结果
SetTracked 仅服务端
csharp
public void SetTracked(bool tracked)设置追踪状态
UpdateObjectiveProgress 仅服务端
csharp
public bool UpdateObjectiveProgress(int objectiveIndex, int delta = 1)更新指定目标的进度
objectiveIndex— 目标索引delta— 进度变化量
返回: 是否成功
UpdateObjectiveProgress 仅服务端
csharp
public bool UpdateObjectiveProgress(string customId, int delta = 1)更新自定义目标的进度
customId— 自定义目标IDdelta— 进度变化量
返回: 是否成功
CompleteObjective 仅服务端
csharp
public void CompleteObjective(int objectiveIndex)完成指定目标
objectiveIndex— 目标索引
CompleteObjective 仅服务端
csharp
public void CompleteObjective(string customId)完成自定义目标
customId— 自定义目标ID
CheckTimeout 仅服务端
csharp
public bool CheckTimeout()检查并处理超时
返回: 是否已超时
QuestInfo 双端
命名空间 TriggerEncapsulation.QuestSystem
csharp
public class QuestInfo任务信息(用于UI显示)
构造函数
QuestInfo 双端
csharp
public QuestInfo()属性
Link 双端
csharp
public required IGameLink<GameDataQuest> Link { get; init; }任务数据链接
Name 双端
csharp
public required string Name { get; init; }任务名称
Description 双端
csharp
public string? Description { get; init; }任务描述
Category 双端
csharp
public string? Category { get; init; }任务分类
Status 双端
csharp
public QuestStatus Status { get; init; }任务状态
IsTracked 双端
csharp
public bool IsTracked { get; init; }是否正在追踪
TotalProgress 双端
csharp
public float TotalProgress { get; init; }总进度(0-1)
Objectives 双端
csharp
public required List<QuestObjectiveInfo> Objectives { get; init; }目标列表
RemainingTime 双端
csharp
public TimeSpan? RemainingTime { get; init; }剩余时间(如果有时限)
RequiredLevel 双端
csharp
public int? RequiredLevel { get; init; }等级要求
CanTurnIn 双端
csharp
public bool CanTurnIn { get; init; }是否可提交
CanAbandon 双端
csharp
public bool CanAbandon { get; init; }是否可放弃
QuestManager 双端
命名空间 TriggerEncapsulation.QuestSystem
csharp
public static class QuestManager任务管理器 - 管理玩家的所有任务
备注
QuestManager 是任务系统的核心管理类,负责: 创建和管理玩家的任务实例 处理任务进度更新 监听游戏事件自动更新任务进度 提供任务查询接口 任务管理器是服务端权威的,所有任务操作都在服务端进行验证。
方法
Initialize 双端
csharp
public static void Initialize()初始化任务管理器
ClearPlayer 双端
csharp
public static void ClearPlayer(Player player)清理玩家的任务数据
Clear 双端
csharp
public static void Clear()清理所有数据
CreateQuest 双端
csharp
public static Quest? CreateQuest(Player player, IGameLink<GameDataQuest> questLink)创建任务实例(不自动接受)
player— 玩家questLink— 任务数据链接
返回: 任务实例,如果已存在返回现有实例
GetQuest 双端
csharp
public static Quest? GetQuest(Player player, IGameLink<GameDataQuest> questLink)获取玩家的任务实例
player— 玩家questLink— 任务数据链接
返回: 任务实例,不存在返回 null
GetAllQuests 双端
csharp
public static IEnumerable<Quest> GetAllQuests(Player player)获取玩家的所有任务
GetActiveQuests 双端
csharp
public static IEnumerable<Quest> GetActiveQuests(Player player)获取玩家的活动任务(进行中或已完成)
GetInProgressQuests 双端
csharp
public static IEnumerable<Quest> GetInProgressQuests(Player player)获取玩家的进行中任务
GetCompletedQuests 双端
csharp
public static IEnumerable<Quest> GetCompletedQuests(Player player)获取玩家的已完成任务(等待提交)
GetTrackedQuests 双端
csharp
public static IEnumerable<Quest> GetTrackedQuests(Player player)获取玩家正在追踪的任务
RemoveQuest 双端
csharp
public static void RemoveQuest(Player player, Quest quest)移除任务实例
NotifyQuestAvailable 双端
csharp
public static void NotifyQuestAvailable(Player player, IGameLink<GameDataQuest> questLink)标记任务可接受
IsQuestAvailable 双端
csharp
public static bool IsQuestAvailable(Player player, IGameLink<GameDataQuest> questLink)检查任务是否可接受
GetAvailableQuests 双端
csharp
public static IEnumerable<IGameLink<GameDataQuest>> GetAvailableQuests(Player player)获取玩家可接受的任务列表
AcceptQuest 双端
csharp
public static CmdResult AcceptQuest(Player player, IGameLink<GameDataQuest> questLink)接受任务(创建并接受)
TurnInQuestAsync 双端
csharp
public static ValueTask<CmdResult> TurnInQuestAsync(Player player, IGameLink<GameDataQuest> questLink)提交任务
AbandonQuest 双端
csharp
public static CmdResult AbandonQuest(Player player, IGameLink<GameDataQuest> questLink)放弃任务
RegisterEventListeners 仅服务端
csharp
public static void RegisterEventListeners()注册游戏事件监听器,用于自动更新任务进度
备注
在游戏初始化时调用此方法,自动监听以下事件: 单位死亡事件 - 更新击杀目标 物品变化事件 - 更新收集目标 注意:区域进入事件由各个任务实例单独注册到具体的区域对象上, 参见 RegisterRegionTriggers 和 UnregisterRegionTriggers。
UnregisterEventListeners 仅服务端
csharp
public static void UnregisterEventListeners()注销事件监听器
CheckAllTimeouts 仅服务端
csharp
public static void CheckAllTimeouts()检查所有玩家的任务超时
NotifyTalkToNpc 仅服务端
csharp
public static void NotifyTalkToNpc(Player player, IGameLink<GameDataUnit> npcUnit)通知与NPC对话完成
player— 玩家npcUnit— NPC单位数据
NotifyCustomObjectiveProgress 仅服务端
csharp
public static void NotifyCustomObjectiveProgress(Player player, string customId, int delta = 1)通知自定义目标进度更新
player— 玩家customId— 自定义目标IDdelta— 进度变化量
NotifyCustomObjectiveComplete 仅服务端
csharp
public static void NotifyCustomObjectiveComplete(Player player, string customId)通知自定义目标完成
player— 玩家customId— 自定义目标ID
QuestObjective 双端
命名空间 TriggerEncapsulation.QuestSystem
csharp
public class QuestObjective : IGameObject<GameDataQuestObjective>, IGameObject任务目标运行时实例
备注
表示一个任务目标的运行时状态,包括当前进度和完成状态。 进度更新通过 UpdateProgress 方法进行, 该方法会自动触发相关事件并检查目标是否完成。
构造函数
QuestObjective 双端
csharp
public QuestObjective(IGameLink<GameDataQuestObjective> link, Quest quest, int index)创建任务目标实例
link— 目标数据链接quest— 所属任务index— 目标在任务中的索引
属性
Link 双端
csharp
public IGameLink<GameDataQuestObjective> Link { get; }目标数据链接
Cache 双端
csharp
public GameDataQuestObjective Cache { get; }目标数据缓存
Quest 双端
csharp
public Quest Quest { get; }所属任务
Index 双端
csharp
public int Index { get; }目标在任务中的索引
CurrentProgress 双端
csharp
public int CurrentProgress { get; }当前进度
TargetCount 双端
csharp
public int TargetCount { get; }目标数量
IsCompleted 双端
csharp
public bool IsCompleted { get; }是否已完成
IsOptional 双端
csharp
public bool IsOptional { get; }是否可选目标
IsHidden 双端
csharp
public bool IsHidden { get; }是否隐藏
ObjectiveType 双端
csharp
public QuestObjectiveType ObjectiveType { get; }目标类型
ProgressPercentage 双端
csharp
public float ProgressPercentage { get; }获取进度百分比(0-1)
方法
GetDescription 双端
csharp
public string GetDescription()获取描述文本
返回: 格式化的描述文本
UpdateProgress 仅服务端
csharp
public bool UpdateProgress(int delta)更新进度(服务端)
delta— 进度变化量
返回: 是否更新成功
SetProgress 仅服务端
csharp
public void SetProgress(int progress)设置进度(服务端)
progress— 新进度值
Complete 仅服务端
csharp
public void Complete()完成目标(服务端)
Reset 仅服务端
csharp
public void Reset()重置进度(服务端)
QuestObjectiveInfo 双端
命名空间 TriggerEncapsulation.QuestSystem
csharp
public class QuestObjectiveInfo任务目标信息(用于UI显示)
构造函数
QuestObjectiveInfo 双端
csharp
public QuestObjectiveInfo()属性
Index 双端
csharp
public int Index { get; init; }目标索引
ObjectiveType 双端
csharp
public QuestObjectiveType ObjectiveType { get; init; }目标类型
Description 双端
csharp
public required string Description { get; init; }目标描述
CurrentProgress 双端
csharp
public int CurrentProgress { get; init; }当前进度
TargetCount 双端
csharp
public int TargetCount { get; init; }目标数量
IsCompleted 双端
csharp
public bool IsCompleted { get; init; }是否已完成
IsOptional 双端
csharp
public bool IsOptional { get; init; }是否可选
IsHidden 双端
csharp
public bool IsHidden { get; init; }是否隐藏
ProgressPercentage 双端
csharp
public float ProgressPercentage { get; }进度百分比(0-1)
QuestSystem 双端
命名空间 TriggerEncapsulation.QuestSystem
csharp
public class QuestSystem : IGameClass任务系统注册类
构造函数
QuestSystem 双端
csharp
public QuestSystem()方法
OnRegisterGameClass 双端
csharp
public static void OnRegisterGameClass()注册游戏类时调用
QuestUI 双端
命名空间 TriggerEncapsulation.QuestSystem
csharp
public static class QuestUI任务UI管理器,用于注册和获取当前的任务UI实现
属性
Current 双端
csharp
public static IQuestUI? Current { get; }当前的任务UI实现
方法
Register 双端
csharp
public static void Register(IQuestUI ui)注册任务UI实现
Unregister 双端
csharp
public static void Unregister()注销任务UI实现
CreateInfo 双端
csharp
public static QuestInfo CreateInfo(Quest quest)从Quest实例创建QuestInfo
CreateObjectiveInfo 双端
csharp
public static QuestObjectiveInfo CreateObjectiveInfo(QuestObjective objective)从QuestObjective实例创建QuestObjectiveInfo
ChapterCompletionType 双端
命名空间 TriggerEncapsulation.QuestSystem.Data
csharp
public enum ChapterCompletionType章节完成类型
枚举值
AllQuests— 完成所有任务MinimumQuests— 完成指定的最少任务数AnyQuest— 完成任意一个任务FinalQuest— 完成最后一个任务(主线任务链模式)
GameDataQuest 双端
命名空间 TriggerEncapsulation.QuestSystem.Data
csharp
public class GameDataQuest : GameDataCategory<GameDataQuest>, IGameDataCategory<GameDataQuest>, IGameData<GameDataQuest>, IGameData任务数据定义
备注
任务系统是 WasiCore 框架中用于管理游戏任务的核心系统。 它提供了灵活的任务定义、追踪和奖励机制。 任务系统特性: 支持多种任务目标类型(击杀、收集、对话、探索等) 支持任务链和前置任务 与奖励系统无缝集成 支持任务超时和失败条件 UI 接口解耦,支持自定义 UI 实现 服务端权威,防止客户端作弊
构造函数
GameDataQuest 双端
csharp
public GameDataQuest(GameLink<GameDataQuest, GameDataQuest> link)GameDataQuest 双端
csharp
public GameDataQuest(IGameLink<GameDataQuest> link)属性
DisplayName 双端
csharp
public LocalizedString? DisplayName { get; set; }任务名称(支持本地化)
Description 双端
csharp
public LocalizedString? Description { get; set; }任务描述(支持本地化)
Category 双端
csharp
public LocalizedString? Category { get; set; }任务分类标签
备注
用于 UI 分类显示,例如 "主线"、"支线"、"日常" 等
RequiredLevel 双端
csharp
public int? RequiredLevel { get; set; }任务等级要求(可选)
Icon 双端
csharp
public Icon? Icon { get; set; }任务图标路径
Objectives 双端
csharp
public List<IGameLink<GameDataQuestObjective>?>? Objectives { get; set; }任务目标列表
备注
一个任务可以有多个目标。默认情况下,所有非可选目标都需要完成才能提交任务。 目标按照 DisplayOrder 排序显示。
Rewards 双端
csharp
public List<IGameLink<GameDataReward>?>? Rewards { get; set; }任务完成奖励
备注
任务提交时发放的奖励。使用框架的奖励系统 GameDataReward
Prerequisites 双端
csharp
public List<IGameLink<GameDataQuest>?>? Prerequisites { get; set; }前置任务列表
备注
只有完成所有前置任务后,此任务才能被接受
AcceptValidators 双端
csharp
public Validator? AcceptValidators { get; set; }接受任务的验证器
备注
用于验证玩家是否满足接受任务的条件,例如等级、物品持有等
CompleteValidators 双端
csharp
public Validator? CompleteValidators { get; set; }完成任务的验证器(额外条件)
备注
除了完成所有目标外,还需要满足此验证器才能提交任务
IsRepeatable 双端
csharp
public bool IsRepeatable { get; set; }是否可重复接受
RepeatCooldown 双端
csharp
public TimeSpan? RepeatCooldown { get; set; }重复接受的冷却时间
备注
仅在 IsRepeatable 为 true 时有效
MaxAcceptCount 双端
csharp
public int MaxAcceptCount { get; set; }最大可接受次数(0表示无限制)
TimeLimit 双端
csharp
public TimeSpan? TimeLimit { get; set; }任务时限
备注
如果设置了时限,任务必须在此时间内完成,否则自动失败
AutoAbandonOnFail 双端
csharp
public bool AutoAbandonOnFail { get; set; }失败时是否自动放弃
备注
如果为 true,任务失败时会自动从任务列表中移除
CanAbandon 双端
csharp
public bool CanAbandon { get; set; }是否允许放弃任务
Visibility 双端
csharp
public QuestVisibility Visibility { get; set; }任务可见性
AutoTrack 双端
csharp
public bool AutoTrack { get; set; }是否自动追踪
备注
接受任务后是否自动添加到追踪列表
OnAcceptEffect 双端
csharp
public IGameLink<GameDataEffect>? OnAcceptEffect { get; set; }接受任务时执行的效果
OnCompleteEffect 双端
csharp
public IGameLink<GameDataEffect>? OnCompleteEffect { get; set; }完成任务时执行的效果(提交前)
OnTurnInEffect 双端
csharp
public IGameLink<GameDataEffect>? OnTurnInEffect { get; set; }提交任务时执行的效果
OnFailEffect 双端
csharp
public IGameLink<GameDataEffect>? OnFailEffect { get; set; }任务失败时执行的效果
OnAbandonEffect 双端
csharp
public IGameLink<GameDataEffect>? OnAbandonEffect { get; set; }任务放弃时执行的效果
NextQuest 双端
csharp
public IGameLink<GameDataQuest>? NextQuest { get; set; }后续任务(简单模式)
备注
提交此任务后自动触发的任务(自动接受或可接受)。 如果需要条件分支,请使用 NextQuestBranches 代替。 如果同时设置了 NextQuest 和 NextQuestBranches, 优先使用 NextQuestBranches。
AutoAcceptNextQuest 双端
csharp
public bool AutoAcceptNextQuest { get; set; }是否自动接受后续任务
备注
仅在使用 NextQuest 时有效。 使用 NextQuestBranches 时,请在各分支中单独设置。
NextQuestBranches 双端
csharp
public List<QuestBranch>? NextQuestBranches { get; set; }后续任务分支列表(高级模式)
备注
用于创建复杂的任务链,根据不同条件触发不同的后续任务。 分支选择规则: 按优先级(Priority)从小到大检查各分支 选择第一个条件满足的分支 如果没有分支满足条件,选择默认分支(IsDefault = true) 如果没有默认分支,则不触发后续任务
Chapter 双端
csharp
public IGameLink<GameDataQuestChapter>? Chapter { get; set; }所属章节
备注
可选,用于将任务归类到特定章节中进行管理。
IsChapterMainQuest 双端
csharp
public bool IsChapterMainQuest { get; set; }是否为章节主线任务
备注
如果为 true,完成此任务将影响章节的主线进度。
QuestGiver 双端
csharp
public IGameLink<GameDataUnit>? QuestGiver { get; set; }任务给予者
备注
显示在任务信息中,用于UI显示和地图标记
QuestTurnIn 双端
csharp
public IGameLink<GameDataUnit>? QuestTurnIn { get; set; }任务提交者
备注
如果不设置,默认使用 QuestGiver
GameDataQuestChapter 双端
命名空间 TriggerEncapsulation.QuestSystem.Data
csharp
public class GameDataQuestChapter : GameDataCategory<GameDataQuestChapter>, IGameDataCategory<GameDataQuestChapter>, IGameData<GameDataQuestChapter>, IGameData任务章节 - 用于组织和管理一组相关任务
备注
任务章节提供了一种将多个任务组织成逻辑单元的方式, 适用于主线剧情、支线故事线等场景。 章节特性: 包含多个任务,按顺序或并行完成 支持章节完成奖励 支持章节前置条件 支持章节进度追踪
构造函数
GameDataQuestChapter 双端
csharp
public GameDataQuestChapter(GameLink<GameDataQuestChapter, GameDataQuestChapter> link)GameDataQuestChapter 双端
csharp
public GameDataQuestChapter(IGameLink<GameDataQuestChapter> link)属性
DisplayName 双端
csharp
public LocalizedString? DisplayName { get; set; }章节名称
Description 双端
csharp
public LocalizedString? Description { get; set; }章节描述
Icon 双端
csharp
public Icon? Icon { get; set; }章节图标
BackgroundImage 双端
csharp
public Icon? BackgroundImage { get; set; }章节背景图
Quests 双端
csharp
public List<IGameLink<GameDataQuest>?>? Quests { get; set; }章节内的任务列表
备注
任务按列表顺序显示,但不一定需要按顺序完成(取决于各任务的前置条件)。
CompletionType 双端
csharp
public ChapterCompletionType CompletionType { get; set; }章节完成类型
MinimumQuestsRequired 双端
csharp
public int MinimumQuestsRequired { get; set; }完成章节需要的最少任务数
备注
仅在 CompletionType 为 MinimumQuests 时有效。
Rewards 双端
csharp
public List<IGameLink<GameDataReward>?>? Rewards { get; set; }章节完成奖励
Prerequisites 双端
csharp
public List<IGameLink<GameDataQuestChapter>?>? Prerequisites { get; set; }前置章节列表
备注
只有完成所有前置章节后,此章节才会解锁。
NextChapter 双端
csharp
public IGameLink<GameDataQuestChapter>? NextChapter { get; set; }后续章节
SortOrder 双端
csharp
public int SortOrder { get; set; }章节排序顺序
ShowProgress 双端
csharp
public bool ShowProgress { get; set; }是否在UI中显示章节进度
GameDataQuestObjective 双端
命名空间 TriggerEncapsulation.QuestSystem.Data
csharp
public abstract class GameDataQuestObjective : GameDataCategory<GameDataQuestObjective>, IGameDataCategory<GameDataQuestObjective>, IGameData<GameDataQuestObjective>, IGameData任务目标数据基类
备注
任务目标定义了完成任务所需达成的条件。每个任务可以有多个目标, 目标之间可以是顺序关系或并行关系。 支持的目标类型: GameDataQuestObjectiveKill - 击杀目标 GameDataQuestObjectiveCollect - 收集物品 GameDataQuestObjectiveTalkTo - 对话 GameDataQuestObjectiveReachLocation - 到达区域 GameDataQuestObjectiveCustom - 自定义目标
构造函数
GameDataQuestObjective 双端
csharp
public GameDataQuestObjective(GameLink<GameDataQuestObjective, GameDataQuestObjective> link)GameDataQuestObjective 双端
csharp
public GameDataQuestObjective(IGameLink<GameDataQuestObjective> link)属性
ObjectiveType 双端
csharp
public abstract QuestObjectiveType ObjectiveType { get; }目标类型
Description 双端
csharp
public LocalizedString? Description { get; set; }目标描述(支持本地化)
备注
描述文本支持参数化,例如 "击杀 {0}/{1} 只狼", 其中 {0} 是当前进度,{1} 是目标数量
TargetCount 双端
csharp
public int TargetCount { get; set; }目标数量(默认为1)
备注
需要完成的次数或数量。例如击杀5只狼,收集10个物品等。
IsOptional 双端
csharp
public bool IsOptional { get; set; }是否可选目标
备注
可选目标不影响任务完成,但可能提供额外奖励
IsHidden 双端
csharp
public bool IsHidden { get; set; }是否隐藏目标
备注
隐藏目标不在UI中显示,但仍然追踪进度
DisplayOrder 双端
csharp
public int DisplayOrder { get; set; }目标显示顺序
OnCompleteEffect 双端
csharp
public IGameLink<GameDataEffect>? OnCompleteEffect { get; set; }目标完成时的效果(可选)
备注
当目标完成时,服务端会自动执行此效果。 可用于播放音效、显示提示等。
ProgressValidators 双端
csharp
public Validator? ProgressValidators { get; set; }目标进度更新时的验证器
备注
用于验证进度更新是否有效,例如验证击杀的是否是正确的怪物
GameDataQuestObjectiveCollect 双端
命名空间 TriggerEncapsulation.QuestSystem.Data
csharp
public class GameDataQuestObjectiveCollect : GameDataQuestObjective, IGameData<GameDataQuestObjectiveCollect>, IGameData收集目标 - 收集指定类型/数量的物品
备注
用于创建需要收集特定物品的任务目标。 // 收集10个苹果 var collectApples = new GameDataQuestObjectiveCollect { Description = new LocalizedString("收集 {0}/{1} 个苹果"), TargetItems = [appleItem.ToLink()], TargetCount = 10 }; // 收集任意草药5个 var collectHerbs = new GameDataQuestObjectiveCollect { Description = new LocalizedString("收集 {0}/{1} 种草药"), ItemCategory = "Herb", TargetCount = 5 };
构造函数
GameDataQuestObjectiveCollect 双端
csharp
public GameDataQuestObjectiveCollect(GameLink<GameDataQuestObjective, GameDataQuestObjectiveCollect> link)GameDataQuestObjectiveCollect 双端
csharp
public GameDataQuestObjectiveCollect(IGameLink<GameDataQuestObjectiveCollect> link)属性
ObjectiveType 双端
csharp
public override QuestObjectiveType ObjectiveType { get; }TargetItems 双端
csharp
public List<IGameLink<GameDataItem>?>? TargetItems { get; set; }目标物品类型列表
备注
收集列表中任意一种物品都会计入进度
ItemCategory 双端
csharp
public string? ItemCategory { get; set; }物品分类(替代具体物品列表)
备注
如果设置,收集该分类下的任意物品都计入进度
ConsumeOnComplete 双端
csharp
public bool ConsumeOnComplete { get; set; }是否在任务完成时消耗物品
备注
如果为 true,提交任务时会从玩家背包中移除这些物品
TrackCurrentInventory 双端
csharp
public bool TrackCurrentInventory { get; set; }是否实时追踪背包数量
备注
如果为 true,进度会根据玩家当前持有的物品数量更新(丢弃物品会减少进度)。 如果为 false,只追踪累计获得的数量。
Link 双端
csharp
public new IGameLink<GameDataQuestObjectiveCollect> Link { get; }GameDataQuestObjectiveCustom 双端
命名空间 TriggerEncapsulation.QuestSystem.Data
csharp
public class GameDataQuestObjectiveCustom : GameDataQuestObjective, IGameData<GameDataQuestObjectiveCustom>, IGameData自定义目标 - 通过脚本自定义条件
备注
用于创建需要自定义逻辑的任务目标。 游戏代码需要手动调用 Quest.UpdateObjectiveProgress 来更新进度。 // 自定义目标:赢得比赛 var winRace = new GameDataQuestObjectiveCustom { Description = new LocalizedString("赢得比赛"), CustomId = "win_race", TargetCount = 1 }; // 在游戏逻辑中更新进度: // quest.UpdateObjectiveProgress("win_race", 1);
构造函数
GameDataQuestObjectiveCustom 双端
csharp
public GameDataQuestObjectiveCustom(GameLink<GameDataQuestObjective, GameDataQuestObjectiveCustom> link)GameDataQuestObjectiveCustom 双端
csharp
public GameDataQuestObjectiveCustom(IGameLink<GameDataQuestObjectiveCustom> link)属性
ObjectiveType 双端
csharp
public override QuestObjectiveType ObjectiveType { get; }CustomId 双端
csharp
public string CustomId { get; set; }自定义目标ID
备注
用于在代码中识别和更新此目标的进度
CompletionChecker 双端
csharp
public Func<IExecutionContext, bool>? CompletionChecker { get; set; }完成条件检查器
备注
用于检查目标是否完成的自定义逻辑。 返回 true 表示目标已完成。
ProgressGetter 双端
csharp
public Func<IExecutionContext, int>? ProgressGetter { get; set; }进度获取器
备注
用于获取当前进度的自定义逻辑。 返回当前进度值。
Link 双端
csharp
public new IGameLink<GameDataQuestObjectiveCustom> Link { get; }GameDataQuestObjectiveKill 双端
命名空间 TriggerEncapsulation.QuestSystem.Data
csharp
public class GameDataQuestObjectiveKill : GameDataQuestObjective, IGameData<GameDataQuestObjectiveKill>, IGameData击杀目标 - 击杀指定类型/数量的单位
备注
用于创建需要击杀特定单位的任务目标。 // 击杀5只狼 var killWolves = new GameDataQuestObjectiveKill { Description = new LocalizedString("击杀 {0}/{1} 只狼"), TargetUnits = [wolfUnit.ToLink()], TargetCount = 5 }; // 击杀任意敌对单位10个 var killAnyEnemy = new GameDataQuestObjectiveKill { Description = new LocalizedString("击杀 {0}/{1} 个敌人"), TargetCount = 10, CountAnyEnemy = true }; // 在指定区域内击杀 var killInRegion = new GameDataQuestObjectiveKill { Description = new LocalizedString("在森林区域击杀 {0}/{1} 只狼"), TargetUnits = [wolfUnit.ToLink()], TargetCount = 3, RequiredRegions = [forestRegion1, forestRegion2] // 地编中预设的区域 };
构造函数
GameDataQuestObjectiveKill 双端
csharp
public GameDataQuestObjectiveKill(GameLink<GameDataQuestObjective, GameDataQuestObjectiveKill> link)GameDataQuestObjectiveKill 双端
csharp
public GameDataQuestObjectiveKill(IGameLink<GameDataQuestObjectiveKill> link)属性
ObjectiveType 双端
csharp
public override QuestObjectiveType ObjectiveType { get; }TargetUnits 双端
csharp
public List<IGameLink<GameDataUnit>?>? TargetUnits { get; set; }目标单位类型列表
备注
击杀列表中任意一种单位都会计入进度。 如果为空且 CountAnyEnemy 为 true,则击杀任意敌对单位都计入。
CountAnyEnemy 双端
csharp
public bool CountAnyEnemy { get; set; }是否计算任意敌对单位
备注
如果为 true,击杀任何敌对单位都会计入进度(忽略 TargetUnits)
KillSource 双端
csharp
public KillSourceType KillSource { get; set; }击杀来源限制
备注
定义哪些单位的击杀可以计入任务进度: MainUnitOnly - 仅玩家主控单位击杀 PlayerOwnedUnit - 玩家拥有的任意单位击杀 PlayerOrAlly - 玩家或其盟友的单位击杀 AnyUserPlayer - 任意真实用户玩家击杀 AnyPlayer - 任意玩家击杀
RequiredScenes 双端
csharp
public List<IGameLink<GameDataScene>?>? RequiredScenes { get; set; }击杀需要在指定场景列表中的任意一个内
备注
指定允许的场景列表。击杀必须发生在这些场景中的任意一个内才计入进度。 如果同时设置了 RequiredRegions,则需要同时满足场景和区域条件。 如果为 null 或空,则不限制击杀场景(除非设置了 RequiredRegions)。
RequiredRegions 双端
csharp
public List<IPlacedRegion>? RequiredRegions { get; set; }击杀需要在指定的预设区域内
备注
指定在地形编辑器中预设的区域列表。击杀必须发生在这些区域中的任意一个内才计入进度。 支持 PlacedRegionCircle 和 PlacedRegionRectangle 类型的区域。 如果为 null 或空,则不限制击杀区域。
Link 双端
csharp
public new IGameLink<GameDataQuestObjectiveKill> Link { get; }GameDataQuestObjectiveReachLocation 双端
命名空间 TriggerEncapsulation.QuestSystem.Data
csharp
public class GameDataQuestObjectiveReachLocation : GameDataQuestObjective, IGameData<GameDataQuestObjectiveReachLocation>, IGameData到达区域目标 - 到达指定区域/位置
备注
用于创建需要玩家到达特定位置的任务目标。 玩家进入 TargetRegions 中任意一个区域即可完成目标。 // 到达森林区域(任意一个即可) var reachForest = new GameDataQuestObjectiveReachLocation { Description = new LocalizedString("探索森林深处"), TargetRegions = [forestRegion1, forestRegion2] // 地编中预设的区域 };
构造函数
GameDataQuestObjectiveReachLocation 双端
csharp
public GameDataQuestObjectiveReachLocation(GameLink<GameDataQuestObjective, GameDataQuestObjectiveReachLocation> link)GameDataQuestObjectiveReachLocation 双端
csharp
public GameDataQuestObjectiveReachLocation(IGameLink<GameDataQuestObjectiveReachLocation> link)属性
ObjectiveType 双端
csharp
public override QuestObjectiveType ObjectiveType { get; }TargetRegions 双端
csharp
public List<IPlacedRegion>? TargetRegions { get; set; }目标区域列表(地编预设区域)
备注
指定在地形编辑器中预设的区域列表。玩家进入这些区域中的任意一个即可完成目标。 支持 PlacedRegionCircle 和 PlacedRegionRectangle 类型的区域。 区域可以位于不同场景中。
RequiredStayDuration 双端
csharp
public TimeSpan? RequiredStayDuration { get; set; }需要停留的时间
备注
如果设置,玩家必须在区域内停留指定时间才算完成
CompleteOnReach 双端
csharp
public bool CompleteOnReach { get; set; }是否在到达后自动完成
备注
如果为 false,需要玩家在区域内进行交互才能完成
MarkerText 双端
csharp
public LocalizedString? MarkerText { get; set; }地图标记显示文本
Link 双端
csharp
public new IGameLink<GameDataQuestObjectiveReachLocation> Link { get; }GameDataQuestObjectiveTalkTo 双端
命名空间 TriggerEncapsulation.QuestSystem.Data
csharp
public class GameDataQuestObjectiveTalkTo : GameDataQuestObjective, IGameData<GameDataQuestObjectiveTalkTo>, IGameData对话目标 - 与指定NPC进行对话
备注
用于创建需要与特定NPC对话的任务目标。 // 与村长对话 var talkToChief = new GameDataQuestObjectiveTalkTo { Description = new LocalizedString("与村长交谈"), TargetUnit = villageChief.ToLink() };
构造函数
GameDataQuestObjectiveTalkTo 双端
csharp
public GameDataQuestObjectiveTalkTo(GameLink<GameDataQuestObjective, GameDataQuestObjectiveTalkTo> link)GameDataQuestObjectiveTalkTo 双端
csharp
public GameDataQuestObjectiveTalkTo(IGameLink<GameDataQuestObjectiveTalkTo> link)属性
ObjectiveType 双端
csharp
public override QuestObjectiveType ObjectiveType { get; }TargetUnit 双端
csharp
public IGameLink<GameDataUnit>? TargetUnit { get; set; }目标NPC单位数据
TargetDisplayName 双端
csharp
public LocalizedString? TargetDisplayName { get; set; }目标NPC的显示名称(用于UI显示)
备注
如果不设置,将使用 TargetUnit 的名称
Conversation 仅客户端
csharp
public IGameLink<GameDataConversation>? Conversation { get; set; }对话内容(可选)
备注
如果设置,与NPC对话时会自动播放此对话内容
RequireConversationComplete 双端
csharp
public bool RequireConversationComplete { get; set; }是否需要完成特定对话
备注
如果为 true,必须完成 Conversation 才算完成目标。 如果为 false,只要接近NPC并交互即可。
Link 双端
csharp
public new IGameLink<GameDataQuestObjectiveTalkTo> Link { get; }QuestBranch 双端
命名空间 TriggerEncapsulation.QuestSystem.Data
csharp
public class QuestBranch任务分支 - 定义条件性后续任务
备注
用于创建复杂的任务链,根据不同条件触发不同的后续任务。 // 创建一个有多个分支的任务 var quest = new GameDataQuest { Name = new LocalizedString("选择你的道路"), NextQuestBranches = [ new QuestBranch { NextQuest = lightPathQuest.ToLink(), Condition = lightPathValidator, Priority = 1, Description = new LocalizedString("光明之路") }, new QuestBranch { NextQuest = darkPathQuest.ToLink(), Condition = darkPathValidator, Priority = 2, Description = new LocalizedString("黑暗之路") }, new QuestBranch { NextQuest = neutralPathQuest.ToLink(), IsDefault = true, Description = new LocalizedString("中立之路") } ] };
构造函数
QuestBranch 双端
csharp
public QuestBranch()属性
NextQuest 双端
csharp
public IGameLink<GameDataQuest>? NextQuest { get; set; }后续任务
Condition 双端
csharp
public Validator? Condition { get; set; }触发条件
备注
如果条件为 null 或验证通过,则此分支可被触发。 多个分支都满足条件时,按 Priority 选择。
Priority 双端
csharp
public int Priority { get; set; }优先级(数值越小优先级越高)
备注
当多个分支的条件都满足时,选择优先级最高(数值最小)的分支。
IsDefault 双端
csharp
public bool IsDefault { get; set; }是否为默认分支
备注
如果没有任何分支的条件满足,则触发默认分支。 一个任务只应有一个默认分支。
AutoAccept 双端
csharp
public bool AutoAccept { get; set; }是否自动接受此分支的后续任务
Description 双端
csharp
public LocalizedString? Description { get; set; }分支描述(可选,用于UI显示)
KillSourceType 双端
命名空间 TriggerEncapsulation.QuestSystem.Data.Enum
csharp
public enum KillSourceType击杀来源类型 - 定义哪些单位的击杀可以计入任务进度
枚举值
MainUnitOnly— 仅玩家主控单位击杀PlayerOwnedUnit— 玩家拥有的任意单位击杀PlayerOrAlly— 玩家或其盟友的单位击杀AnyUserPlayer— 任意真实用户玩家击杀AnyPlayer— 任意玩家击杀
QuestObjectiveType 双端
命名空间 TriggerEncapsulation.QuestSystem.Data.Enum
csharp
public enum QuestObjectiveType任务目标类型
枚举值
Kill— 击杀目标 - 击杀指定类型/数量的单位Collect— 收集物品 - 收集指定类型/数量的物品TalkTo— 与NPC对话 - 与指定NPC进行对话ReachLocation— 到达区域 - 到达指定区域/位置UseItem— 使用物品 - 使用指定物品UseAbility— 使用技能 - 使用指定技能Interact— 交互 - 与指定对象交互Escort— 护送 - 护送目标到达指定位置Survive— 存活 - 存活指定时间Custom— 自定义 - 通过脚本自定义条件
QuestStatus 双端
命名空间 TriggerEncapsulation.QuestSystem.Data.Enum
csharp
public enum QuestStatus任务状态
枚举值
Inactive— 未激活 - 任务尚未被接受InProgress— 进行中 - 任务已被接受,正在进行Completed— 已完成 - 任务目标已达成,等待提交TurnedIn— 已提交 - 任务已提交并领取奖励Failed— 已失败 - 任务失败Abandoned— 已放弃 - 任务被玩家主动放弃
QuestVisibility 双端
命名空间 TriggerEncapsulation.QuestSystem.Data.Enum
csharp
public enum QuestVisibility任务可见性
枚举值
Visible— 可见 - 任务在任务列表中显示Hidden— 隐藏 - 任务不在任务列表中显示,但仍然追踪进度Tracked— 追踪 - 任务显示在屏幕追踪区域
EventChapterCompleted 双端
命名空间 TriggerEncapsulation.QuestSystem.Event
csharp
public class EventChapterCompleted : ITriggerEvent<EventChapterCompleted>章节完成事件
构造函数
EventChapterCompleted 双端
csharp
public EventChapterCompleted(IGameLink<GameDataQuestChapter> chapter, Player player)章节完成事件
属性
Chapter 双端
csharp
public IGameLink<GameDataQuestChapter> Chapter { get; }Player 双端
csharp
public Player Player { get; }EventChapterProgressUpdated 双端
命名空间 TriggerEncapsulation.QuestSystem.Event
csharp
public class EventChapterProgressUpdated : ITriggerEvent<EventChapterProgressUpdated>章节进度更新事件
构造函数
EventChapterProgressUpdated 双端
csharp
public EventChapterProgressUpdated(IGameLink<GameDataQuestChapter> chapter, Player player, int completedQuests, int totalQuests)章节进度更新事件
属性
Chapter 双端
csharp
public IGameLink<GameDataQuestChapter> Chapter { get; }Player 双端
csharp
public Player Player { get; }CompletedQuests 双端
csharp
public int CompletedQuests { get; }TotalQuests 双端
csharp
public int TotalQuests { get; }Progress 双端
csharp
public float Progress { get; }EventChapterRewardsClaimed 双端
命名空间 TriggerEncapsulation.QuestSystem.Event
csharp
public class EventChapterRewardsClaimed : ITriggerEvent<EventChapterRewardsClaimed>章节奖励领取事件
构造函数
EventChapterRewardsClaimed 双端
csharp
public EventChapterRewardsClaimed(IGameLink<GameDataQuestChapter> chapter, Player player)章节奖励领取事件
属性
Chapter 双端
csharp
public IGameLink<GameDataQuestChapter> Chapter { get; }Player 双端
csharp
public Player Player { get; }EventChapterUnlocked 双端
命名空间 TriggerEncapsulation.QuestSystem.Event
csharp
public class EventChapterUnlocked : ITriggerEvent<EventChapterUnlocked>章节解锁事件
构造函数
EventChapterUnlocked 双端
csharp
public EventChapterUnlocked(IGameLink<GameDataQuestChapter> chapter, Player player)章节解锁事件
属性
Chapter 双端
csharp
public IGameLink<GameDataQuestChapter> Chapter { get; }Player 双端
csharp
public Player Player { get; }EventQuestAbandoned 双端
命名空间 TriggerEncapsulation.QuestSystem.Event
csharp
public class EventQuestAbandoned : ITriggerEvent<EventQuestAbandoned>任务放弃事件
构造函数
EventQuestAbandoned 双端
csharp
public EventQuestAbandoned(Quest quest, Player player)任务放弃事件
属性
Quest 双端
csharp
public Quest Quest { get; }Player 双端
csharp
public Player Player { get; }QuestLink 双端
csharp
public IGameLink<GameDataQuest> QuestLink { get; }EventQuestAccepted 双端
命名空间 TriggerEncapsulation.QuestSystem.Event
csharp
public class EventQuestAccepted : ITriggerEvent<EventQuestAccepted>任务接受事件
构造函数
EventQuestAccepted 双端
csharp
public EventQuestAccepted(Quest quest, Player player)任务接受事件
属性
Quest 双端
csharp
public Quest Quest { get; }Player 双端
csharp
public Player Player { get; }QuestLink 双端
csharp
public IGameLink<GameDataQuest> QuestLink { get; }EventQuestCompleted 双端
命名空间 TriggerEncapsulation.QuestSystem.Event
csharp
public class EventQuestCompleted : ITriggerEvent<EventQuestCompleted>任务完成事件(目标全部达成,等待提交)
构造函数
EventQuestCompleted 双端
csharp
public EventQuestCompleted(Quest quest, Player player)任务完成事件(目标全部达成,等待提交)
属性
Quest 双端
csharp
public Quest Quest { get; }Player 双端
csharp
public Player Player { get; }QuestLink 双端
csharp
public IGameLink<GameDataQuest> QuestLink { get; }EventQuestFailed 双端
命名空间 TriggerEncapsulation.QuestSystem.Event
csharp
public class EventQuestFailed : ITriggerEvent<EventQuestFailed>任务失败事件
构造函数
EventQuestFailed 双端
csharp
public EventQuestFailed(Quest quest, Player player, string? reason)任务失败事件
属性
Quest 双端
csharp
public Quest Quest { get; }Player 双端
csharp
public Player Player { get; }Reason 双端
csharp
public string? Reason { get; }QuestLink 双端
csharp
public IGameLink<GameDataQuest> QuestLink { get; }EventQuestObjectiveCompleted 双端
命名空间 TriggerEncapsulation.QuestSystem.Event
csharp
public class EventQuestObjectiveCompleted : ITriggerEvent<EventQuestObjectiveCompleted>目标完成事件
构造函数
EventQuestObjectiveCompleted 双端
csharp
public EventQuestObjectiveCompleted(Quest quest, QuestObjective objective, Player player)目标完成事件
属性
Quest 双端
csharp
public Quest Quest { get; }Objective 双端
csharp
public QuestObjective Objective { get; }Player 双端
csharp
public Player Player { get; }QuestLink 双端
csharp
public IGameLink<GameDataQuest> QuestLink { get; }ObjectiveLink 双端
csharp
public IGameLink<GameDataQuestObjective> ObjectiveLink { get; }EventQuestObjectiveProgress 双端
命名空间 TriggerEncapsulation.QuestSystem.Event
csharp
public class EventQuestObjectiveProgress : ITriggerEvent<EventQuestObjectiveProgress>目标进度更新事件
构造函数
EventQuestObjectiveProgress 双端
csharp
public EventQuestObjectiveProgress(Quest quest, QuestObjective objective, Player player, int oldProgress, int newProgress)目标进度更新事件
属性
Quest 双端
csharp
public Quest Quest { get; }Objective 双端
csharp
public QuestObjective Objective { get; }Player 双端
csharp
public Player Player { get; }OldProgress 双端
csharp
public int OldProgress { get; }NewProgress 双端
csharp
public int NewProgress { get; }QuestLink 双端
csharp
public IGameLink<GameDataQuest> QuestLink { get; }ObjectiveLink 双端
csharp
public IGameLink<GameDataQuestObjective> ObjectiveLink { get; }TargetCount 双端
csharp
public int TargetCount { get; }IsCompleted 双端
csharp
public bool IsCompleted { get; }EventQuestStatusChanged 双端
命名空间 TriggerEncapsulation.QuestSystem.Event
csharp
public class EventQuestStatusChanged : ITriggerEvent<EventQuestStatusChanged>任务状态变化事件
构造函数
EventQuestStatusChanged 双端
csharp
public EventQuestStatusChanged(Quest quest, Player player, QuestStatus oldStatus, QuestStatus newStatus)任务状态变化事件
属性
Quest 双端
csharp
public Quest Quest { get; }Player 双端
csharp
public Player Player { get; }OldStatus 双端
csharp
public QuestStatus OldStatus { get; }NewStatus 双端
csharp
public QuestStatus NewStatus { get; }QuestLink 双端
csharp
public IGameLink<GameDataQuest> QuestLink { get; }EventQuestTrackingChanged 双端
命名空间 TriggerEncapsulation.QuestSystem.Event
csharp
public class EventQuestTrackingChanged : ITriggerEvent<EventQuestTrackingChanged>任务追踪状态变化事件
构造函数
EventQuestTrackingChanged 双端
csharp
public EventQuestTrackingChanged(Quest quest, Player player, bool isTracked)任务追踪状态变化事件
属性
Quest 双端
csharp
public Quest Quest { get; }Player 双端
csharp
public Player Player { get; }IsTracked 双端
csharp
public bool IsTracked { get; }QuestLink 双端
csharp
public IGameLink<GameDataQuest> QuestLink { get; }EventQuestTurnedIn 双端
命名空间 TriggerEncapsulation.QuestSystem.Event
csharp
public class EventQuestTurnedIn : ITriggerEvent<EventQuestTurnedIn>任务提交事件(已领取奖励)
构造函数
EventQuestTurnedIn 双端
csharp
public EventQuestTurnedIn(Quest quest, Player player)任务提交事件(已领取奖励)
属性
Quest 双端
csharp
public Quest Quest { get; }Player 双端
csharp
public Player Player { get; }QuestLink 双端
csharp
public IGameLink<GameDataQuest> QuestLink { get; }ChapterMessageType 双端
命名空间 TriggerEncapsulation.QuestSystem.Protocol
csharp
public enum ChapterMessageType章节消息类型
枚举值
Unlocked— 章节解锁ProgressUpdated— 章节进度更新Completed— 章节完成RewardsClaimed— 章节奖励已领取
ProtoChapterMessage 双端
命名空间 TriggerEncapsulation.QuestSystem.Protocol
csharp
public struct ProtoChapterMessage : IProtocolServerTransient<ProtoChapterMessage>, IBytesReplicableUnmanaged<ProtoChapterMessage>, IBytesReplicable<ProtoChapterMessage>, IProtocolServerTransient, IGameClass章节协议消息 - 用于服务端到客户端的章节状态同步
备注
此消息用于将服务端的章节状态变化同步到客户端。 使用示例: // 服务端:发送章节解锁消息给玩家 ProtoChapterMessage.SendUnlocked(player, chapterLink); // 服务端:发送章节进度更新 ProtoChapterMessage.SendProgressUpdated(player, chapterLink, completedQuests, totalQuests);
属性
MessageType 双端
csharp
public ChapterMessageType MessageType { get; set; }消息类型
ChapterHashCode 双端
csharp
public int ChapterHashCode { get; set; }章节链接的哈希码
CompletedQuests 双端
csharp
public int CompletedQuests { get; set; }已完成的任务数(用于进度更新)
TotalQuests 双端
csharp
public int TotalQuests { get; set; }总任务数(用于进度更新)
方法
Handle 仅客户端
csharp
public readonly void Handle()客户端处理从服务器接收到的章节消息
SendUnlocked 仅服务端
csharp
public static bool SendUnlocked(Player player, IGameLink<GameDataQuestChapter> chapterLink)发送章节解锁消息给玩家
SendProgressUpdated 仅服务端
csharp
public static bool SendProgressUpdated(Player player, IGameLink<GameDataQuestChapter> chapterLink, int completedQuests, int totalQuests)发送章节进度更新消息给玩家
SendCompleted 仅服务端
csharp
public static bool SendCompleted(Player player, IGameLink<GameDataQuestChapter> chapterLink)发送章节完成消息给玩家
SendRewardsClaimed 仅服务端
csharp
public static bool SendRewardsClaimed(Player player, IGameLink<GameDataQuestChapter> chapterLink)发送章节奖励已领取消息给玩家