SDK学院--易接网游SDK中间件接入使用说明-Unity3D游戏接口

来源:互联网 发布:淘宝led灯外发加工真假 编辑:程序博客网 时间:2024/05/17 12:52

2.3 Unity3D游戏接口

 2.3.1 开发前准备

 2.3.2 接口说明

  2.3.2.1 SDK初始化接口(必选接口)

  2.3.2.2 用户登陆登出接口(必选接口)

  2.3.2.3 非定额计费接口

  2.3.2.4 定额计费接口(必选接口)

  2.3.2.5 设置角色基本数据(必选接口)

  2.3.2.6 特殊接口(非必选接口)

  2.3.2.7 回调消息定义

 

2.3 Unity3D游戏接口

2.3.1开发前准备

1. 将SDK\game\u3d文件Copy到Assets\Plugins\Android\中;


2. AndroidManifest的文件:

    (1)在游戏AndroidManifest.xml文件的application中添加由易接提供如下代码,可参考“网游\sdk\ AndroidManifest.xml "

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
<activity
    android:name="com.snowfish.a.a.s.PA"
    android:configChanges="keyboardHidden|orientation"
    android:theme="@android:style/Theme.Translucent.NoTitleBar"
    android:windowSoftInputMode="stateHidden">
</activity>
<service
    android:name="com.snowfish.a.a.s.ABGSvc"
    android:enabled="true"
    android:process="com.snowfish.a.a.bg">
    <intent-filter>
        <action android:name="com.snowfish.a.a.s.ABGSvc"/>
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</service>
<meta-data
    android:name="com.snowfish.customer"
    android:value="SNOWFISH">
</meta-data>
<meta-data
    android:name="com.snowfish.channel"
    android:value="SNOWFISH">
</meta-data>
<meta-data
    android:name="com.snowfish.sdk.version"
    android:value="2">
</meta-data>
<meta-data
    android:name="com.snowfish.appid"
    android:value="KEY">
</meta-data>
<meta-data
    android:name="com.snowfish.channelid"
    android:value="{4ff036a1-3254eafe}">
</meta-data>

    标红处的KEY值需要替换成在易接用户中心申请获取的APPID,格式如下:{12345678-12345678}。

    此外,以下activity由Unity3d提供,作为入口activity,请参考demo。具体使用请根据游戏实际情况;

1
2
3
com.unity3d.player.UnityPlayerProxyActivity
com.unity3d.player.UnityPlayerActivity
com.unity3d.player.UnityPlayerNativeActivity

    (2)修改Application

        1)若无自定义Applicatiion,则修改AndroidManifest.xml的Application如下:

1
<application android:name="com.snowfish.cn.ganga.helper.SFOnlineApplication"/>

        2)若开发者自定义的Application。则自定义Application需要继承com.snowfish.cn.ganga.helper.SFOnlineApplication ,

1
AndroidManifest.xml修改如下:<application android:name="自定义Application"/>

    (3)在游戏的AndroidManifest.xml中添加use-permision如下,可参考“网游\sdk\ AndroidManifest.xml "

1
2
3
4
5
6
7
8
9
10
11
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.GET_TASKS"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>

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。例如:

1
2
3
4
5
6
<activityandroid:name=".SplashActivity">
<intent-filter>
<actionandroid:name="android.intent.action.MAIN"/>
易接网游 SDK 中间件接入标准流程
<categoryandroid:name="android.intent.category.LAUNCHER"/>
</intent-filter>

    (7)在Assets\Plugins\Android\AndroidManifest.xml中声明游戏的入口MainActivity,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<activity
    android:name=".MainActivity"
    android:configChanges="orientation|navigation|screenSize
    |keyboard|keyboardHidden"
    android:label="@string/app_name"
    android:screenOrientation="portrait"
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
    <meta-data
        android:name="unityplayer.UnityActivity"
        android:value="true"/>
    <meta-data
        android:name="unityplayer.ForwardNativeEventsToDalvik"
        android:value="true">
    </meta-data>
</activity>

    (8) 游戏的入口Activity(例如上述MainActivity)请添加到Assets\Plugins\Android\res\values\strings.xml中的zy_class_name字符串中,使得闪屏完成后即启动游戏,例如:

1
2
3
<string
    name="zy_class_name"> com.yijie.cn.sdk.demo.MainActivity
</string>

2.3.2接口说明

2.3.2.1 SDK初始化接口(必选接口)

本节方法在游戏入口Activity中调用,例如上述MainActivity。

1. SFOnlineHelper.onCreate(Activity arg0)

该方法在游戏Activity中的onCreate中调用;调用用例

1
2
3
4
5
@Override
protectedvoid onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    SFOnlineHelper.onCreate(this);
}

2. SFOnlineHelper.onStop(Activity arg0)

该方法在游戏Activity中的onStop中调用,调用用例:

1
2
3
4
5
@Override
protectedvoid onStop() {
    super.onStop();
    SFOnlineHelper.onStop(this);
}

3. SFOnlineHelper.onDestroy(Activity arg0);

该方法在游戏Activity中的onStop中调用,调用用例:

1
2
3
4
5
@Override
protectedvoid onDestroy() {
    super.onDestroy();
    SFOnlineHelper.onDestroy(this);
}

4. SFOnlineHelper.onResume(Activity arg0);

该方法在游戏Activity中的onResume中调用,如果出现Unity3D界面刷新异常可以增加延迟调用,调用用例:

1
2
3
4
5
6
7
8
9
@Override
protectedvoid onResume() {
    super.onResume();
    handel.postDelayed(newRunnable() {
        publicvoid run() {
            SFOnlineHelper.onResume(MainActivity.this);
        }
    }, 1000);
}

5. SFOnlineHelper.onPause(Activity arg0);

该方法在游戏Activity中的onPause中调用,调用用例:

1
2
3
4
5
@Override
protectedvoid onPause() {
    super.onPause();
    SFOnlineHelper.onPause(this);
}

6. SFOnlineHelper.onRestart(Activity arg0);

该方法在游戏Activity中的onRestart中调用,调用用例:

1
2
3
4
5
@Override
protectedvoid onRestart() {
    super.onRestart();
    SFOnlineHelper.onRestart(this);
}

2.3.2.2用户登陆登出接口(必选接口)

以下小节所有接口,请在Unity3D脚本中使用。

1.[DllImport("gangaOnlineUnityHelper")]

1
privatestatic extern voidlogin(IntPtr context, string customParams);

该方法用于登录,调用用例:

1
login(curActivity.GetRawObject(),"Login");

2.[DllImport("gangaOnlineUnityHelper")]

1
privatestatic extern voidlogout(IntPtr context, string customParams);

该方法用于登出,调用用例:

1
logout(curActivity.GetRawObject(),"LoginOut");

3.[DllImport("gangaOnlineUnityHelper")]

1
2
privatestatic extern voidexit(IntPtr context, string gameObject,
string listener);

该方法用于系统全局退出,listener为退出监听函数,调用用例:

1
exit(curActivity.GetRawObject(),"Main Camera","ExitResult");

如下方法在游戏主Activity中调用。

4.[DllImport("gangaOnlineUnityHelper")]

1
privatestatic extern voidonCreate(IntPtr context,string gameObject, string listener);

该接口方法用于设置登陆监听

参数描述:

 参数名称

 类型

 注释

 context

 IntPtr

 currentActivity

 gameObject

 string

游 戏场景中的对象,SDK内部完成计费逻辑后,并把计费结     果通过Unity内部                 API(com.unity3d.player.UnityPlayer.UnitySendMessage(String gameObject,StringruntimeScriptMethod,Stringargs)通知到Unity,故游戏开发者需要指定一个游戏对 象和该对象的运行脚本,用于侦听SDK的计费结果

 listener

 string

隶属于gameObject对象的运行时脚本的方法名称,该方法会在收到通知后触发

调用用例

1
setLoginListener (curActivity.GetRawObject(),"Main Camera""LoginResult");

2.3.2.3非定额计费接口(必选接口)

1.[DllImport("gangaOnlineUnityHelper")]

1
2
3
privatestatic extern voidcharge(IntPtr context, string gameObject, string
itemName, intunitPrice, intcount, string callBackInfo, 
string callBackUrl, string payResultListener);(<span style="color: #ff0000;">必选接口</span>)

该接口用于用户触发计费进行付费行为的入口函数。合作伙伴可以在需要计费的地方调用此接口进行计费。该接口用于非定额计费。

参数描述:

 参数名称

 类型

 注释

 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对象的运行时脚本的方法名称,该方法会在收到通知后触发

 调用用例:

1
2
charge(curActivity.GetRawObject(), "Main Camera","200金币",2001,"购买金币",
"http://192.168.0.224:8980/omsdk-cp/user/paylog /sync","PayResult");

2.3.2.4定额计费接口(必选接口

[DllImport("gangaOnlineUnityHelper")]

1
2
3
privatestatic extern voidpay(IntPtr context, string gameObject,
intunitPrice, string unitName, intcount, string callBackInfo, string callBackUrl,
string payResultListener);

该接口用于定额支付的接口函数。合作伙伴在需要使用定额支付的时候使用该接口。

参数描述:

 参数名称

 类型

 注释

 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对象的运行时脚本的方法名称,该方法会在收到通知后触发

 

调用用例:

1
2
pay(curActivity.GetRawObject(),"Main Camera",100,"100金币",1,"购买金币",
"http://192.168.0.224:8980/omsdk-cp/user /paylog/sync","PayResult"); 

2.3.2.5设置角色基本数据(必选接口

[DllImport("gangaOnlineUnityHelper")]

1
2
3
privatestatic extern voidsetRoleData(IntPtr context, string roleId, 
stringroleName, string roleLevel,
string zoneId, string zoneName);

部分渠道如UC渠道,要对游戏人物数据进行统计,而且为接入规范,调用时间:在游戏角色登录成功后

参数描述:

 参数名称

 类型

 注释

 context

 IntPtr

 上下文Activity

 roleId

 string

 角色唯一标识

 roleName

 string

 角色名

 roleLevel

 string

 角色等级

 zoneId

 string

 区域唯一标识

 

 zoneName

 string

 区域名称

2.3.2.6特殊接口(非必选接口)

[DllImport("gangaOnlineUnityHelper")]

1
privatestatic extern Boolean isMusicEnabled (IntPtr context);

该方法用于判断SDK是否需要打开游戏声音,目前只有移动基地需要此接口,游戏开发者需要根据该返回值,设定游戏背景音乐是否开启,调用用例:

1
Boolean isOpen = isMusicEnabled(curActivity.GetRawObject ());

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。

0 0
原创粉丝点击