编写苹果游戏中心应用程序(翻译 1.14 向游戏中心提交成就)

2024-04-08 10:58

本文主要是介绍编写苹果游戏中心应用程序(翻译 1.14 向游戏中心提交成就),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.14 向游戏中心提交成就

问题

    你已准备好在游戏中使用成就。

解决方案

    使用GKAchievement类。

讨论

    提交成就的过程和提交成绩(条目1.10)相似,步骤是:

    1. 验证本地玩家(条目1.5)。

    2. 分配和初始化GKAchievement类型的对象。分配对象有两种方法:一是使用initWithIdentifier:方法;二是先简单地使用init方法,然后再使用setIdentifier:方法设置标识符。标识符是我们创建成就(条目1.13)时指定的“Achievement ID”。

    3. 使用对象的setPercentComplete:方法设置成就的完成度(0%-100%)。

    4. 调用reportAchievementWithCompletionHandler:方法,传递一个返回void、接受一个NSError类型参数的块对象。

    下面的示例代码提交ID为“MGL1HP1C”(条目1.13)的成就50%的完成度

    - (BOOL) reportAchievementWithID:(NSString *)paramAchievementID
                 percentageCompleted:(double)paramPercentageCompleted{

        BOOL result = NO;

        if ([paramAchievementID length] == 0){
            NSLog(@"Achievement ID cannot be empty.");
            return NO;
        }

        GKAchievement *achievement =
            [[[GKAchievement alloc] initWithIdentifier:paramAchievementID]
autorelease];

        NSLog(@"Setting percentage to %.02f", paramPercentageCompleted);
        [achievement setPercentComplete:paramPercentageCompleted];

        NSLog(@"Reporting the achievement...");
        [achievement reportAchievementWithCompletionHandler:^(NSError *error) {

            if (error == nil){
                NSLog(@"Successfully reported the achievement.");
            } else {
                NSLog(@"Failed to report the achievement. %@", error);
            }

        }];

        return result;

    }

    - (void) authenticateLocalPlayerAndReportAchievement{

        GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];

        NSLog(@"Authenticating the local player...");
        [localPlayer authenticateWithCompletionHandler:^(NSError *error) {

            if (error == nil){
                NSLog(@"Successfully authenticated the local player.");
                NSLog(@"Reporting achievement...");
                [self reportAchievementWithID:@"MGL1HP1C"
                          percentageCompleted:50.0f];
            } else {
                NSLog(@"Failed to authenticate the local player. %@", error);
            }

        }];
    }

    在调用authenticateLocalPlayerAndReportAchievement方法后,控制台输出类似如下的结果(除非有错误发生;在这种情况下,将输出错误信息):

        Authenticating the local player...
        Successfully authenticated the local player.
        Reporting achievement...
        Setting percentage to 50.00
        Reporting the achievement...
        Successfully reported the achievement.

    在成就提交到游戏中心之后,如果成就没有被设置为隐藏,那么本地玩家就可以打开游戏中心应用程序查看它(当然,还有该玩家使用该程序所获得的所有其他成就),如图1-14所示。


图 1-14 iOS模拟器上的成就

    一旦玩家选择“Achievements”选项,他将看到程序提交给游戏中心的所有成就,以及每个成就的进度,如图1-15所示。


图 1-15 iOS模拟器上的成就进度

    在iTunes Connect中创建成就之后,可能需要延迟一小段时间,你才能提交该成就的进度。如果你得到的错误说成就不存在,但你确信它存在,请等待5-10分钟,然后重试。

这篇关于编写苹果游戏中心应用程序(翻译 1.14 向游戏中心提交成就)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/885399

相关文章

作业提交过程之HDFSMapReduce

作业提交全过程详解 (1)作业提交 第1步:Client调用job.waitForCompletion方法,向整个集群提交MapReduce作业。 第2步:Client向RM申请一个作业id。 第3步:RM给Client返回该job资源的提交路径和作业id。 第4步:Client提交jar包、切片信息和配置文件到指定的资源提交路径。 第5步:Client提交完资源后,向RM申请运行MrAp

跨国公司撤出在华研发中心的启示:中国IT产业的挑战与机遇

近日,IBM中国宣布撤出在华的两大研发中心,这一决定在IT行业引发了广泛的讨论和关注。跨国公司在华研发中心的撤出,不仅对众多IT从业者的职业发展带来了直接的冲击,也引发了人们对全球化背景下中国IT产业竞争力和未来发展方向的深思。面对这一突如其来的变化,我们应如何看待跨国公司的决策?中国IT人才又该如何应对?中国IT产业将何去何从?本文将围绕这些问题展开探讨。 跨国公司撤出的背景与

cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个?

跨平台系列 cross-plateform 跨平台应用程序-01-概览 cross-plateform 跨平台应用程序-02-有哪些主流技术栈? cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个? cross-plateform 跨平台应用程序-04-React Native 介绍 cross-plateform 跨平台应用程序-05-Flutte

国产游戏崛起:技术革新与文化自信的双重推动

近年来,国产游戏行业发展迅猛,技术水平和作品质量均得到了显著提升。特别是以《黑神话:悟空》为代表的一系列优秀作品,成功打破了过去中国游戏市场以手游和网游为主的局限,向全球玩家展示了中国在单机游戏领域的实力与潜力。随着中国开发者在画面渲染、物理引擎、AI 技术和服务器架构等方面取得了显著进展,国产游戏正逐步赢得国际市场的认可。然而,面对全球游戏行业的激烈竞争,国产游戏技术依然面临诸多挑战,未来的

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

如何编写Linux PCIe设备驱动器 之二

如何编写Linux PCIe设备驱动器 之二 功能(capability)集功能(capability)APIs通过pci_bus_read_config完成功能存取功能APIs参数pos常量值PCI功能结构 PCI功能IDMSI功能电源功率管理功能 功能(capability)集 功能(capability)APIs int pcie_capability_read_wo

HTML提交表单给python

python 代码 from flask import Flask, request, render_template, redirect, url_forapp = Flask(__name__)@app.route('/')def form():# 渲染表单页面return render_template('./index.html')@app.route('/submit_form',

Python3 BeautifulSoup爬虫 POJ自动提交

POJ 提交代码采用Base64加密方式 import http.cookiejarimport loggingimport urllib.parseimport urllib.requestimport base64from bs4 import BeautifulSoupfrom submitcode import SubmitCodeclass SubmitPoj():de

查看提交历史 —— Git 学习笔记 11

查看提交历史 查看提交历史 不带任何选项的git log-p选项--stat 选项--pretty=oneline选项--pretty=format选项git log常用选项列表参考资料 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的 工具是 git log 命令。 接下来的例子会用一个用于演示的 simplegit

form表单提交编码的问题

浏览器在form提交后,会生成一个HTTP的头部信息"content-type",标准规定其形式为Content-type: application/x-www-form-urlencoded; charset=UTF-8        那么我们如果需要修改编码,不使用默认的,那么可以如下这样操作修改编码,来满足需求: hmtl代码:   <meta http-equiv="Conte