主题
GameSystemUI.LobbyResource
EventLobbyResourceGranted 仅服务端
命名空间 GameSystemUI.LobbyResource.Data
csharp
public class EventLobbyResourceGranted : EventPlayer, ITriggerEvent<EventLobbyResourceGranted>玩家在 CloudData 事务提交成功后获得大厅资源。对齐旧库「获得局外资源」。 Gains 为运行时 (资源, 数量),不是数编条目,不要 new GameDataResourceAmount。 发奖请用 OnAcquire;本事件只做事后逻辑。
构造函数
EventLobbyResourceGranted 仅服务端
csharp
public EventLobbyResourceGranted(Player player, IReadOnlyList<(IGameLink<GameDataLobbyResource> Resource, long Amount)> gains)属性
Gains 仅服务端
csharp
public IReadOnlyList<(IGameLink<GameDataLobbyResource> Resource, long Amount)> Gains { get; }GameDataLobbyResource 双端
命名空间 GameSystemUI.LobbyResource.Data
csharp
public class GameDataLobbyResource : GameDataCategory<GameDataLobbyResource>, IGameDataCategory<GameDataLobbyResource>, IGameData<GameDataLobbyResource>, IGameData大厅资源配置(可用于资源栏显示等场景)
构造函数
GameDataLobbyResource 双端
csharp
public GameDataLobbyResource(GameLink<GameDataLobbyResource, GameDataLobbyResource> link)GameDataLobbyResource 双端
csharp
public GameDataLobbyResource(IGameLink<GameDataLobbyResource> link)属性
CloudDataKey 双端
csharp
public string CloudDataKey { get; set; }云数据Key(用于设置/获取数量)
ResourceName 双端
csharp
public string ResourceName { get; set; }资源名称
IconPath 双端
csharp
public Icon IconPath { get; set; }图标路径
IsPremiumCurrency 双端
csharp
public bool IsPremiumCurrency { get; set; }是否为真实货币(用于区分虚拟货币和真实付费货币)
OnAcquire 仅服务端
csharp
public OnResourceAcquireDelegate? OnAcquire { get; set; }资源获得回调。为了保证与加货币原子提交,必须用传入的 builder 写 CloudData,不要另开事务。返回 false 中止整笔。
方法
EnqueueGrant 仅服务端
csharp
public LobbyResourceGrantResult EnqueueGrant(Player? player, long amount, TransactionBuilder builder, ICollection<(IGameLink<GameDataLobbyResource> Resource, long Amount)>? granted = null)GameDataResourceAmount 双端
命名空间 GameSystemUI.LobbyResource.Data
csharp
public class GameDataResourceAmount : GameDataCategory<GameDataResourceAmount>, IGameDataCategory<GameDataResourceAmount>, IGameData<GameDataResourceAmount>, IGameData资源数量配置(资源 Link + 数量)
构造函数
GameDataResourceAmount 双端
csharp
public GameDataResourceAmount(GameLink<GameDataResourceAmount, GameDataResourceAmount> link)GameDataResourceAmount 双端
csharp
public GameDataResourceAmount(IGameLink<GameDataResourceAmount> link)属性
Resource 双端
csharp
public IGameLink<GameDataLobbyResource>? Resource { get; set; }资源 Link
Amount 双端
csharp
public int Amount { get; set; }数量
LobbyResourceGrant 仅服务端
命名空间 GameSystemUI.LobbyResource.Data
csharp
public static class LobbyResourceGrant大厅资源发放:事务内排队,以及提交成功后发布 EventLobbyResourceGranted。
方法
NotifyGranted 仅服务端
csharp
public static void NotifyGranted(Player player, IReadOnlyList<(IGameLink<GameDataLobbyResource> Resource, long Amount)> gains)LobbyResourceGrantResult 仅服务端
命名空间 GameSystemUI.LobbyResource.Data
csharp
public enum LobbyResourceGrantResult把一次资源获得排进当前 CloudData 事务的结果。
枚举值
Applied— 已排队 OnAcquire 和/或 AddCurrency。Skipped— 没有 CloudDataKey 也没有 OnAcquire,调用方可跳过。Rejected— OnAcquire 拒绝,或回调需要在线玩家。
OnResourceAcquireDelegate 仅服务端
命名空间 GameSystemUI.LobbyResource.Data
csharp
public delegate OnResourceAcquireDelegate资源获得回调。商店购买、邮件领取会在同一笔 CloudData 事务提交前调用。
player— 获得资源的玩家resource— 资源配置(自身)amount— 本次获得数量builder— 当前事务。为了保证原子性,必须用这个 builder 写 CloudData,不要另开事务。
返回: true 继续提交;false 中止整笔(货币也不会加)。
LobbyResourceGainStyle 仅客户端
命名空间 GameSystemUI.LobbyResource.UI
csharp
public enum LobbyResourceGainStyle获得奖励弹窗皮肤。邮件用国风,商店保持默认。
枚举值
DefaultGuofeng
LobbyResourceGainView 仅客户端
命名空间 GameSystemUI.LobbyResource.UI
csharp
public sealed class LobbyResourceGainView大厅资源获得弹窗里的一条展示。
构造函数
LobbyResourceGainView 仅客户端
csharp
public LobbyResourceGainView()属性
IconPath 仅客户端
csharp
public Icon IconPath { get; set; }Amount 仅客户端
csharp
public long Amount { get; set; }Name 仅客户端
csharp
public string? Name { get; set; }LobbyResourceUI 仅客户端
命名空间 GameSystemUI.LobbyResource.UI
csharp
public static class LobbyResourceUI大厅资源客户端展示。商店购买、邮件领取成功后请调这里,不要各自弹窗。 EnableDefaultGainDialog 为 false 时不弹内置获得窗。
属性
EnableDefaultGainDialog 仅客户端
csharp
public static bool EnableDefaultGainDialog { get; set; }是否弹出内置获得窗。自定义展示时设为 false,并订阅 OnResourceGained。
方法
ShowGained 仅客户端
csharp
public static void ShowGained(IEnumerable<LobbyResourceGainView> items, string? title = null, string? hint = null, LobbyResourceGainStyle style = LobbyResourceGainStyle.Default)ShowGained 仅客户端
csharp
public static void ShowGained(IEnumerable<(IGameLink<GameDataLobbyResource> Resource, long Amount)> gains, string? title = null, string? hint = null)ShowGained 仅客户端
csharp
public static void ShowGained(IEnumerable<IGameLink<GameDataResourceAmount>> rewards, string? title = null, string? hint = null)事件
OnResourceGained 仅客户端
csharp
public static event EventHandler<(IReadOnlyList<LobbyResourceGainView> Items, string? Title, string? Hint, LobbyResourceGainStyle Style)>? OnResourceGained资源获得后通知。不负责决定是否弹默认窗。