主题
GameCore.CooldownSystem
Cooldown 双端
命名空间 GameCore.CooldownSystem
csharp
public abstract class Cooldown : DisposableObject, IAttachedObject<GameDataCooldown>, IAttachedObject, ISyncIdOwner, IDisposable, IGameObject<GameDataCooldown>, IGameObject, IPropertyOwner<PropertyAttachedObject>, IPropertyOwner, ISpendable构造函数
Cooldown 双端
csharp
public Cooldown(IGameLink<GameDataCooldown> link, ICooldownOwner owner)属性
CooldownHash 双端
csharp
protected long CooldownHash { get; }Owner 双端
csharp
public ICooldownOwner Owner { get; }MaxTime 双端
csharp
public TimeSpan? MaxTime { get; }RemainingTime 双端
csharp
public TimeSpan? RemainingTime { get; }IsRunning 双端
csharp
public abstract bool IsRunning { get; set; }Affordable 双端
csharp
public abstract bool Affordable { get; }Host 双端
csharp
public ICooldownHost Host { get; }SyncId 双端
csharp
public int SyncId { get; set; }Link 双端
csharp
public IGameLink<GameDataCooldown> Link { get; }Cache 双端
csharp
public GameDataCooldown Cache { get; }方法
OnCooldownUpdateInternal 仅客户端
csharp
protected internal virtual void OnCooldownUpdateInternal(TimeSpan remainingTime)OnCooldownStoppedEarlyInternal 仅客户端
csharp
protected internal virtual void OnCooldownStoppedEarlyInternal()OnCooldownInternal 双端
csharp
protected internal virtual void OnCooldownInternal()CheckAffordable 双端
csharp
public abstract CmdResult CheckAffordable()ToString 双端
csharp
public override string ToString()ReplicateFromKeyValue 仅客户端
csharp
public virtual bool ReplicateFromKeyValue(System.Enum propertyEnum, ReadOnlySpan<byte> value, bool isHostReplicating = false)DisposeManaged 双端
csharp
protected override void DisposeManaged()DisposeUnmanaged 双端
csharp
protected override void DisposeUnmanaged(bool finalizing)SetSyncType 仅服务端
csharp
public void SetSyncType(SyncType type)Start 仅服务端
csharp
protected void Start(IExecutionContext context)Restart 仅服务端
csharp
public virtual void Restart()重置冷却,使用上一次的最大时间
Stop 仅服务端
csharp
public virtual void Stop()Spend 仅服务端
csharp
public bool Spend(IExecutionContext context, bool checkAffordable = true)SpendInternal 仅服务端
csharp
protected abstract bool SpendInternal(IExecutionContext context)ForceCooldown 仅服务端
csharp
public virtual void ForceCooldown(TimeSpan max, TimeSpan? current = null)事件
OnCooldown 双端
csharp
public event Action? OnCooldownOnBecomeAffordable 仅服务端
csharp
public abstract event Action? OnBecomeAffordableCooldownActive 双端
命名空间 GameCore.CooldownSystem
csharp
public class CooldownActive : Cooldown, IGameObject<GameDataCooldownActive>, IGameObject构造函数
CooldownActive 双端
csharp
public CooldownActive(IGameLink<GameDataCooldownActive> link, ICooldownOwner owner)属性
Link 双端
csharp
public new IGameLink<GameDataCooldownActive> Link { get; }Cache 双端
csharp
public new GameDataCooldownActive Cache { get; }IsRunning 双端
csharp
public override bool IsRunning { get; set; }Affordable 双端
csharp
public override bool Affordable { get; }方法
CheckAffordable 双端
csharp
public override CmdResult CheckAffordable()DelayedAffordableCheck 仅服务端
csharp
protected Task DelayedAffordableCheck()SpendInternal 仅服务端
csharp
protected override bool SpendInternal(IExecutionContext context)事件
OnBecomeAffordable 仅服务端
csharp
public override event Action? OnBecomeAffordableCooldownCharge 双端
命名空间 GameCore.CooldownSystem
csharp
public class CooldownCharge : Cooldown, IGameObject<GameDataCooldownCharge>, IGameObject, IPropertyOwner<PropertyCooldownCharge>, IPropertyOwner, ISyncIdOwner构造函数
CooldownCharge 双端
csharp
public CooldownCharge(IGameLink<GameDataCooldownCharge> link, ICooldownOwner owner, IExecutionContext context)属性
Link 双端
csharp
public new IGameLink<GameDataCooldownCharge> Link { get; }Cache 双端
csharp
public new GameDataCooldownCharge Cache { get; }Context 双端
csharp
public IExecutionContext Context { get; }IsRunning 双端
csharp
public override bool IsRunning { get; set; }Affordable 双端
csharp
public override bool Affordable { get; }ChargeMax 双端
csharp
public double ChargeMax { get; }ChargeRemain 双端
csharp
public double ChargeRemain { get; }方法
CheckAffordable 双端
csharp
public override CmdResult CheckAffordable()GetProperty 双端
csharp
public TValue? GetProperty<TValue>(PropertyCooldownCharge property)SpendInternal 仅服务端
csharp
protected override bool SpendInternal(IExecutionContext context)ConsumeCharge 仅服务端
csharp
public bool ConsumeCharge(bool checkRemaining = true, double chargeToConsume = 1.0)RestoreCharge 仅服务端
csharp
public bool RestoreCharge(bool checkMax = true, double chargeToRestore = 1.0)ForceCharge 仅服务端
csharp
public void ForceCharge(double charge, bool checkRange = false)OnCooldownInternal 仅服务端
csharp
protected internal override void OnCooldownInternal()SetProperty 仅服务端
csharp
public void SetProperty<TValue>(PropertyCooldownCharge property, TValue value)AddProperty 仅服务端
csharp
public void AddProperty(PropertyCooldownCharge property, double value)事件
OnBecomeAffordable 仅服务端
csharp
public override event Action? OnBecomeAffordableGameDataCooldown 双端
命名空间 GameCore.CooldownSystem.Data
csharp
public abstract class GameDataCooldown : GameDataCategory<GameDataCooldown>, IAttachedData<GameDataCooldown>, IAttachedData, IGameData<GameDataCooldown>, IGameData, IGameDataCategory<GameDataCooldown>冷却数据基类:定义技能/物品的冷却时长、存储位置及同步方式。
构造函数
GameDataCooldown 双端
csharp
public GameDataCooldown(GameLink<GameDataCooldown, GameDataCooldown> link)GameDataCooldown 双端
csharp
public GameDataCooldown(IGameLink<GameDataCooldown> link)属性
Time 双端
csharp
public FuncTime Time { get; set; }冷却时长计算函数,传入上下文返回 TimeSpan;默认 0 表示无冷却。
Location 双端
csharp
public CooldownLocation Location { get; set; }冷却存储位置:Self/Item/Ability/Unit/Player/Game,决定冷却在哪个层级共享。
SyncType 双端
csharp
public SyncType SyncType { get; set; }同步范围:仅自己、队伍或全服可见。
方法
CreateCooldown 双端
csharp
protected internal abstract Cooldown CreateCooldown(ICooldownOwner owner)GameDataCooldownActive 双端
命名空间 GameCore.CooldownSystem.Data
csharp
public class GameDataCooldownActive : GameDataCooldown, IGameData<GameDataCooldownActive>, IGameData主动型冷却:使用后进入冷却,冷却结束后才能再次使用(传统技能 CD)。
构造函数
GameDataCooldownActive 双端
csharp
public GameDataCooldownActive(GameLink<GameDataCooldown, GameDataCooldownActive> link)GameDataCooldownActive 双端
csharp
public GameDataCooldownActive(IGameLink<GameDataCooldownActive> link)属性
Link 双端
csharp
public new IGameLink<GameDataCooldownActive> Link { get; }方法
CreateCooldown 双端
csharp
protected internal override Cooldown CreateCooldown(ICooldownOwner owner)GameDataCooldownCharge 双端
命名空间 GameCore.CooldownSystem.Data
csharp
public class GameDataCooldownCharge : GameDataCooldown, IGameData<GameDataCooldownCharge>, IGameData充能型冷却:技能拥有多段充能,使用后消耗一层并随时间恢复(如闪现 2 层充能)。
构造函数
GameDataCooldownCharge 双端
csharp
public GameDataCooldownCharge(GameLink<GameDataCooldown, GameDataCooldownCharge> link)GameDataCooldownCharge 双端
csharp
public GameDataCooldownCharge(IGameLink<GameDataCooldownCharge> link)属性
ChargeStart 双端
csharp
public FuncNumber ChargeStart { get; set; }初始充能层数,创建时即拥有的层数。
ChargeMax 双端
csharp
public FuncNumber ChargeMax { get; set; }最大充能层数上限。
Link 双端
csharp
public new IGameLink<GameDataCooldownCharge> Link { get; }方法
CreateCooldown 双端
csharp
protected internal override Cooldown CreateCooldown(ICooldownOwner owner)EPropertyCooldownHost 双端
命名空间 GameCore.CooldownSystem.Enum
csharp
public enum EPropertyCooldownHost定义冷却时间宿主的属性类型,用于标识和管理不同类型的冷却时间容器
备注
此枚举提供了扩展能力,允许在运行时动态添加新的冷却时间宿主属性类型。 冷却时间宿主属性用于识别和访问可以承载冷却时间的不同容器和组件, 为冷却时间系统提供了灵活的存储和管理机制。
枚举值
AttachedObjects— 附加对象列表 - 用于管理附加到实体上的对象的冷却时间
PropertyCooldownCharge 双端
命名空间 GameCore.CooldownSystem.Enum
csharp
public readonly struct PropertyCooldownCharge : IGameClass, IExtendableEnum<PropertyCooldownCharge>, IExtendableEnum, IExtendedEnum, ISyncIdOwner方法
ToString 双端
csharp
public override string? ToString()operator == 双端
csharp
public static bool operator ==(PropertyCooldownCharge left, PropertyCooldownCharge right)operator != 双端
csharp
public static bool operator !=(PropertyCooldownCharge left, PropertyCooldownCharge right)Equals 双端
csharp
public override bool Equals(object? obj)GetHashCode 双端
csharp
public override int GetHashCode()OnRegisterGameClass 双端
csharp
public static void OnRegisterGameClass()字段
InnerValue 双端
csharp
public readonly System.Enum InnerValueChargeRemain 双端
csharp
public static readonly PropertyCooldownCharge ChargeRemainPropertyCooldownHost 双端
命名空间 GameCore.CooldownSystem.Enum
csharp
public readonly struct PropertyCooldownHost : IGameClass, IExtendableEnum<PropertyCooldownHost>, IExtendableEnum, IExtendedEnum, ISyncIdOwner方法
ToString 双端
csharp
public override string? ToString()operator == 双端
csharp
public static bool operator ==(PropertyCooldownHost left, PropertyCooldownHost right)operator != 双端
csharp
public static bool operator !=(PropertyCooldownHost left, PropertyCooldownHost right)Equals 双端
csharp
public override bool Equals(object? obj)GetHashCode 双端
csharp
public override int GetHashCode()OnRegisterGameClass 双端
csharp
public static void OnRegisterGameClass()字段
InnerValue 双端
csharp
public readonly System.Enum InnerValueAttachedObjects 双端
csharp
public static readonly PropertyCooldownHost AttachedObjects附加对象列表 - 用于管理附加到实体上的对象的冷却时间
备注
表示一个附加对象的列表,这些对象可以承载冷却时间。 通常在数据链接设置完成后插入到列表中进行管理。 这种类型的宿主适用于动态附加的组件、技能、物品等对象的冷却时间管理。