Skip to content

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

获得奖励弹窗皮肤。邮件用国风,商店保持默认。

枚举值 ​

  • Default
  • Guofeng

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

资源获得后通知。不负责决定是否弹默认窗。