2.3 Unity3D游戏接口
2.3.1开发前准备
1. 将SDK\game\u3d文件Copy到Assets\Plugins\Android\中;
2. AndroidManifest的文件:
(1)在游戏AndroidManifest.xml文件的application中添加由易接提供如下代码,可参考“网游\sdk\ AndroidManifest.xml "
标红处的KEY值需要替换成在易接用户中心申请获取的APPID,格式如下:{12345678-12345678}。
此外,以下activity由Unity3d提供,作为入口activity,请参考demo。具体使用请根据游戏实际情况;
(2)修改Application
1)若无自定义Applicatiion,则修改AndroidManifest.xml的Application如下:
2)若开发者自定义的Application。则自定义Application需要继承com.snowfish.cn.ganga.helper.SFOnlineApplication ,
(3)在游戏的AndroidManifest.xml中添加use-permision如下,可参考“网游\sdk\ AndroidManifest.xml "
3. 添加启动闪屏Activitiy和Unity3d游戏入口Activity
(1)Eclipse中建立一个与unity3d工程同包名工程,引入gangasf.jar库,引入gangaonlineyijie.jar和gangaonlinehelper.jar库;
(2)新建一个闪屏activity例如SplashActivity,继承com.snowfish.cn.ganga.helper.SFOnlineSplashActivity;(同2.2.1.6部分);
(3)新建一个游戏入口activity例如MainActivity继承Unity3D的UnityPlayerActivity类;
(4)将工程properties的android选项中Is Library选中,如下图
(5)将工程properties的android选项中Is Library选中,如下图将工程bin目录下生成的jar拷贝至unity工程 Assets\Plugins\Android\bin文件夹下;
(6)将Assets\Plugins\Android\AndroidManifest.xml中的主入口Activity配置为SplashActivity。例如:
(7)在Assets\Plugins\Android\AndroidManifest.xml中声明游戏的入口MainActivity,如下:
(8) 游戏的入口Activity(例如上述MainActivity)请添加到Assets\Plugins\Android\res\values\strings.xml中的zy_class_name字符串中,使得闪屏完成后即启动游戏,例如:
2.3.2接口说明
2.3.2.1 SDK初始化接口(必选接口)
本节方法在游戏入口Activity中调用,例如上述MainActivity。
1. SFOnlineHelper.onCreate(Activity arg0)
该方法在游戏Activity中的onCreate中调用;调用用例
2. SFOnlineHelper.onStop(Activity arg0)
该方法在游戏Activity中的onStop中调用,调用用例:
3. SFOnlineHelper.onDestroy(Activity arg0);
该方法在游戏Activity中的onStop中调用,调用用例:
4. SFOnlineHelper.onResume(Activity arg0);
该方法在游戏Activity中的onResume中调用,如果出现Unity3D界面刷新异常可以增加延迟调用,调用用例:
5. SFOnlineHelper.onPause(Activity arg0);
该方法在游戏Activity中的onPause中调用,调用用例:
6. SFOnlineHelper.onRestart(Activity arg0);
该方法在游戏Activity中的onRestart中调用,调用用例:
2.3.2.2用户登陆登出接口(必选接口)
以下小节所有接口,请在Unity3D脚本中使用。
1.[DllImport("gangaOnlineUnityHelper")]
该方法用于登录,调用用例:
2.[DllImport("gangaOnlineUnityHelper")]
该方法用于登出,调用用例:
3.[DllImport("gangaOnlineUnityHelper")]
该方法用于系统全局退出,listener为退出监听函数,调用用例:
如下方法在游戏主Activity中调用。
4.[DllImport("gangaOnlineUnityHelper")]
该接口方法用于设置登陆监听;
参数描述:
参数名称 | 类型 | 注释 |
context | IntPtr | currentActivity |
gameObject | string | 游 戏场景中的对象,SDK内部完成计费逻辑后,并把计费结 果通过Unity内部 API(com.unity3d.player.UnityPlayer.UnitySendMessage(String gameObject,StringruntimeScriptMethod,Stringargs)通知到Unity,故游戏开发者需要指定一个游戏对 象和该对象的运行脚本,用于侦听SDK的计费结果 |
listener | string | 隶属于gameObject对象的运行时脚本的方法名称,该方法会在收到通知后触发 |
调用用例
2.3.2.3非定额计费接口(必选接口)
1.[DllImport("gangaOnlineUnityHelper")]
该接口用于用户触发计费进行付费行为的入口函数。合作伙伴可以在需要计费的地方调用此接口进行计费。该接口用于非定额计费。
参数描述:
参数名称 | 类型 | 注释 |
context | IntPtr | 上下文Activity |
itemName | string | 虚拟货币名称 |
unitPrice | int | 游戏道具单位价格,单位为人民币分 |
count | int | 用户选择购买道具界面的默认道具数量.(count*unitPrice) |
callBackInfo | string | 由游戏开发者定义传入的字符串,会与支付结果一同发送给游戏服务器,游戏服务器可通过该字段判断交易的详细内容(金额角色等) |
callBackUrl | string | 将支付结果通知给游戏服务器时的通知地址url,交易结束后,系统会向该url发送http请求,通知交易的结果金额callbackInfo等信息 |
gameObject | string | 游 戏场景中的对象,SDK内部完成计费逻辑后,并把计费结果通过Unity内部 API(com.unity3d.player.UnityPlayer.UnitySendMessage(String gameObject,StringruntimeScriptMethod,Stringargs)通知到Unity,故游戏开发者需要指定一个游戏对 象和该对象的运行脚本,用于侦听SDK的计费结果。 |
payResultListener | string | 隶属于gameObject对象的运行时脚本的方法名称,该方法会在收到通知后触发 |
调用用例:
2.3.2.4定额计费接口(必选接口)
[DllImport("gangaOnlineUnityHelper")]
该接口用于定额支付的接口函数。合作伙伴在需要使用定额支付的时候使用该接口。
参数描述:
参数名称 | 类型 | 注释 |
context | IntPtr | 上下文Activity |
unitName | string | 虚拟货币名称 |
unitPrice | int | 当前1个虚拟货币需要支付金额,单位为人民币分 |
count | int | 用户选择购买道具界面的默认道具数量。(总价 count*unitPrice) |
callBackInfo | string | 由游戏开发者定义传入的字符串,会与支付结果一同发送给游戏服务器,游戏服务器可通过该字段判断交易的详细内容(金额角色等) |
callBackUrl | string | 将支付结果通知给游戏服务器时的通知地址url,交易结束后,系统会向该url发送http请求,通知交易的结果金额callbackInfo等信息 |
gameObject | string | 游 戏场景中的对象,SDK内部完成计费逻辑后,并把计费结果通过Unity内部 API(com.unity3d.player.UnityPlayer.UnitySendMessage(String gameObject,StringruntimeScriptMethod,Stringargs)通知到Unity,故游戏开发者需要指定一个游戏对 象和该对象的运行脚本,用于侦听SDK的计费结果。 |
payResultListener | string | 隶属于gameObject对象的运行时脚本的方法名称,该方法会在收到通知后触发 |
调用用例:
2.3.2.5设置角色基本数据(必选接口)
[DllImport("gangaOnlineUnityHelper")]
部分渠道如UC渠道,要对游戏人物数据进行统计,而且为接入规范,调用时间:在游戏角色登录成功后
参数描述:
参数名称 | 类型 | 注释 |
context | IntPtr | 上下文Activity |
roleId | string | 角色唯一标识 |
roleName | string | 角色名 |
roleLevel | string | 角色等级 |
zoneId | string | 区域唯一标识
|
zoneName | string | 区域名称 |
2.3.2.6特殊接口(非必选接口)
[DllImport("gangaOnlineUnityHelper")]
该方法用于判断SDK是否需要打开游戏声音,目前只有移动基地需要此接口,游戏开发者需要根据该返回值,设定游戏背景音乐是否开启,调用用例:
2.3.2.7回调消息定义
回调采用Json方式传递参数,定义如下:
1. 登陆回调:
回调返回的Json键值定义对应表:
Key | 值类型 | 注释 |
"reslut" | string | 登出 |
"customParams" | string | 自定义参数 |
"userinfo" | SFJSONOBject | 登录账户信息 |
键值定义对应表2.3.2.7.1
键值"result",Value值定义如下表:
名称 | 值 | 注释 |
LoginResult.LOGOUT | "0" | 登出 |
LoginResult.LOGIN_SUCCESS | "1" | 登入成功 |
LoginResult.LOGIN_FAILED | "2" | 登入失败 |
键值"result"值定义对应表2.3.2.7.2
键值" userinfo ",Value值定义如下表:
参数 | 键值 | 类型 | 注释 |
id | "id" | long | 易接内部userid,该值可能为0,请不要以此参数作为判定。 |
channelid | "channelid" | string | 易接平台标示的渠道SDK ID。 |
ChannelUserId | "channeluserid" | string | 渠道SDK标示的用户ID。 |
UserName | "username" | 渠道SDK的用户名称。 | |
Token | "token" | string | 渠道SDK登录完成后的Session ID。特别提醒:部分渠道此参数会包含特殊值如`+`,空格之类的,如直接使用URL参数传输到游戏服务器请求校验,请使用URLEncode编码。 |
ProductCode | "productcode" | string | 易接平台创建的游戏ID,appid键值" userinfo "值定义对应表2.3.2.7.2 |
键值" userinfo "值定义对应表2.3.2.7.2
调用用例:
详细代码请参考Unity3DDemo。
2.支付回调:
名称 | 值 | 注释 |
PayResult. PAY_SUCCESS | "0" | 支付成功 |
PayResult. PAY_FAILURE | "1" | 支付失败 |
PayResult. PAY_ORDER_NO | "2" | 返回支付订单号 |
使用方法参见unity3DDemo。
3.exit回调
名称 | 值 | 注释 |
PayResult.SDKEXIT | "0" | Exit |
PayResult.SDKEXIT_NO_PROVIDE | "1" | SDKEXIT_NO_PROVIDE |
使用方法参见unity3DDemo。