首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UWP Xbox直播主板

UWP Xbox直播主板
EN

Stack Overflow用户
提问于 2017-12-05 04:08:17
回答 2查看 425关注 0票数 1

我正在尝试将领导板纳入我的UWP游戏。我正在使用C#和XAML创建我的游戏。我创造了一个高分数的主板,并在仪表板上按下测试按钮。

我已经把唱片推到了主板上,打电话说:

代码语言:javascript
复制
_stats.SetStatisticIntegerData(XboxUser, "score", XP);
_stats.RequestFlushToService(XboxUser, true);

我从服务器获得了成功的响应。

当我试图通过以下方法从服务器检索主板时:

代码语言:javascript
复制
_stats.GetLeaderboard(XboxUser, "score", new LeaderboardQuery());

我得到了一个成功的回应。

问题是我没有收到任何与我的响应行。我得到了一列与displayName高分,但没有行。

有人知道我做错了什么吗?

更新更多信息:

我创建了一个得分ID的主板。

当我打电话给以下人员时:

代码语言:javascript
复制
var val = _stats.GetStatistic(XboxUser, "score");

它引发以下异常:

代码语言:javascript
复制
The parameter is incorrect.

Stat not found in document

当我将数据存储到主板中时,会得到以下内容:

静态事件:

ErrorCode: 0

ErrorMessage:"“

EventArgs:空

EventType: StatisticUpdateComplete

用户:我的用户

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-09 18:18:06

我有答案了!在调用add或获取主板之前,您必须等待StatisticEventType.LocalUserAdded事件完成。

票数 0
EN

Stack Overflow用户

发布于 2022-04-13 16:36:42

_stats.DoWork不是异步方法或do方法,它就像一个检查方法,它只是检查前面操作的结果,所以您必须将这个DoWork放入游戏框架或DispatcherTimer来一次又一次地检查结果。直到您有了StatisticEventType.GetLeaderboardComplete结果,您才能得到LeaderBoard结果。下面是我使用DispatcherTimer的代码的一部分

代码语言:javascript
复制
enter code here
    public static DispatcherTimer timer = new DispatcherTimer();

    static void GetLeaderboard(string leaderBoardName)
    {
        if (!is_online) return;


        var statManager = StatisticManager.SingletonInstance;
        LeaderboardQuery query = new LeaderboardQuery
        {
            SkipResultToMe = true,
            //SkipResultToRank = 100,
            MaxItems = 5,
        };
        statManager.GetLeaderboard(xboxUser, leaderBoardName, query);

        timer.Interval = TimeSpan.FromSeconds(0.05);
        timer.Start();
        timer.Tick += (s, e) =>
        {

            IReadOnlyList<StatisticEvent> statEvents = statManager.DoWork();
            //In practice this should be called everyupdate frame

            foreach (StatisticEvent statEvent in statEvents)
            {
                if (statEvent.EventType == StatisticEventType.GetLeaderboardComplete
                && statEvent.ErrorCode == 0)
                {
                    LeaderboardResultEventArgs leaderArgs = (LeaderboardResultEventArgs)statEvent.EventArgs;
                    LeaderboardResult leaderboardResult = leaderArgs.Result;
                    foreach (LeaderboardRow leaderRow in leaderboardResult.Rows)
                    {
                        Debug.WriteLine(string.Format("Rank: {0} | Gamertag: {1} | {2}:{3}\n\n", leaderRow.Rank,
                        leaderRow.Gamertag, "test", leaderRow.Values[0]));
                    }
                    timer.Stop();
                }

                Debug.WriteLine(statEvent.EventType.ToString());
                Debug.WriteLine(statEvent.ErrorCode);

            }

            Debug.WriteLine(statEvents.Count);

        };


        
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47645936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档