Game Center 的 Leaderboard 中提交浮点数据(float)

问题背景

iOS 的 GameKit 中,使用 GKScore 来提交分数,而它的 value 是一个 int64_t 官方文档,难道说我们只能提交整数类型(int)的分数吗?如果我有有个游戏要提交浮点数(float)的分数怎么办?

解决方案

其实 Game Center 可以帮我们做到。文档中说:

The value provided by a score object is interpreted by Game Center only when formatted for display. You determine how your scores are formatted when you define the leaderboard on iTunes Connect.

也就是说,提交的时候传的数据,会根据你在 iTunes Connect 中的设置,造成最终显示的不同。

比如我用 GKScore 提交分数 123,如果在 iTunes Connect 中设置为分数格式类型为整数(Integer),那么在 排行榜(Leaderboard)中显示分数为 123;
而如果设置分数格式类型为 Fixed Point - To 2 Decimals,那么在排行榜(Leaderboard)中显示分数为 1.23。

应用举例

我有个小游戏,参与排行的数据为玩家的生存时间,以秒为单位,精确到小数点后2位。
那么我在提交前将数值 * 100,并转换为 int64_t,并在 iTunes Connect 中设置分数格式类型为 Fixed Point - To 2 Decimals 即可。

int64_t intBestScore = (int64_t)([DataUtil getBestScore] * 100);
NSString *leaderboardId = @"grp.StoneCrashBestRecord";
[[ABGameKitHelper sharedHelper] reportScore:intBestScore forLeaderboard:leaderboardId];

P.s: 这里严重推荐一下 ABGameKitHelper 这个开源项目,游戏中集成 Game Center 用它很方便。

时间: 2024-10-12 08:02:51

Game Center 的 Leaderboard 中提交浮点数据(float)的相关文章

struts中的请求数据自动封装

Struts 2框架会将表单的参数以同名的方式设置给对应Action的属性中.该工作主要是由Parameters拦截器做的.而该拦截器中已经自动的实现了String到基本数据类型之间的转换工作.在struts中,默认使用拦截器 <interceptor name="params" class="com.opensymphony.xwork2.interceptor.ParametersInterceptor"/> 进行请求数据自动封装,它会JSP中提交的

asp.net MVC中控制器获取表单form提交的数据之实体类数据

第一次写记录文章,难免有不足之处:欢迎指出. 1.新建一个mvc项目如: 2.新建一个Test.cs 注意get,set方法不能简写 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 using System; using System.Collections.Generic; using System.Linq; usi

WebAPI的AuthorizeAttribute扩展类中获取POST提交的数据

在WEBAPI中,AuthorizeAttribute类重写时,如何获取post数据是个难题,网上找资料也不好使,只能自己研究,通过研究发现,WEBAPI给了我们获取POST数据的可能,下面介绍一下: //将POST数据以字符串的形式读取,例如post的json数据,就可以以这种方式读取 actionContext.Request.Content.ReadAsStringAsync(); //将POST数据以内容流的形式读取 actionContext.Request.Content.ReadA

php中提交表单数据的POST()方法和GET()方法

提交获取表单数据是表单应用中最常用的操作,经常需要PHP后台从前台页面中获取用户在前台表单页面中提交的各种数据.表单数据传递的方式有以下的两种方法,一种为POST()方法,另外一种为GET()方法.具体采用哪种获取数据的方法是由<form>表单的 method 属性所指定的,下面讲解这两种方法在 Web 表单中的具体应用.大理石平台厂家 使用POST()方法提交表单 在使用POST()方法时,只需要将<form>表单中的属性 method 设置成POST即可. POST()方法不依

解决tomcat提交的数据乱码的问题

有时,开发过程中会遇到前端传入"中文"并返回时,会出现乱码!主要是因为前端通过tomcat7提交的数据就出现了乱码的问题,也就说根源在于tomcat7. 有2中方案解决该问题: (1)使用tomcat8,代替tomcat7 (2)可以修改tomcat7的server.xml中配置:

向mysql中批量插入数据的性能分析

MYSQL批量插入数据库实现语句性能分析 假定我们的表结构如下 代码如下   CREATE TABLE example (example_id INT NOT NULL,name VARCHAR( 50 ) NOT NULL,value VARCHAR( 50 ) NOT NULL,other_value VARCHAR( 50 ) NOT NULL) 通常情况下单条插入的sql语句我们会这么写: 代码如下   INSERT INTO example(example_id, name, valu

SQL Server 利用批量(batchsize)提交加快数据生成/导入

在最小化日志操作解析,应用的文章中有朋友反映生成测试数据较慢.在此跟大家分享一个简单的应用,在生成数据过程中采用批量提交的方式以加快数据导入. 此应用不光生成测试数据上,在BCP导入数据中,复制初始化快照过程中等都可以根据系统环境调整 batchSize 的大小来提高导入/初始化速度. 应用思想:这里简单介绍下组提交概念,由于关系型数据库依靠日志来保证数据完整性,即先写日志,每当一个事务完成时就需要commit日志刷入磁盘,在高并发短小事务的前提下由于日志频繁落盘导致整体写吞吐下降.用Group

解决表单GET提交后台数据乱码问题

?在页面上提交数据到服务器有两种方式"GET"和"POST",当使用"GET"时,传输的数据是直接拼接在URL后面的.当数据中含有对HTML来说不安全的字符例如中文时,就会被编码,一般采用的是UTF-8编码.这时URL已经被转义成相对安全的字符串.此时再经过ios-8859-1的编码方式转换成二进制的形式跟随请求头一起发送到服务器端. ?到达服务器端时,服务器也对数据进行两次解码,服务器先把数据经过ios-8859-1解码,然后根据服务器默认的编

PHP之fsockopen提交POST数据讲解

对比表单[url=javascript:;]POST[/url]和fsockopen提交两种不同方式的区别. 表单POST方式提交情况下$_POST 与 [url=javascript:;]php[/url]://input可以取到值,$HTTP_RAW_POST_DATA 为空$_POST 以关联数组方式组织提交的数据,并对此进行编码处理,如urldecode,甚至编码转换.php://input 可通过输入流以文件读取方式取得未经处理的POST原始数据 php://input 允许读取 PO