Unity接入UC sdk

2015年02月01日 10:23 0 点赞 0 评论 更新于 2017-05-09 17:27

在本文中,我们将重点探讨Unity接入UC SDK的详细内容。如前文所述,对于每款游戏,仅需接入抽象层,而每个渠道SDK的接入,实际上就是该抽象层的一个具体实现,最终可通过一键打包工具完成产出。接下来,我们先了解游戏如何调用这个抽象层。

假设我们已经开发了一款即将上线的游戏,需要接入UC、当乐、91、360、小米等渠道的SDK。由于采用了U8 SDK统一接入框架的理念,游戏工程本身不会与具体的每个渠道SDK耦合,而是仅调用U8 SDK抽象层。下面,我们依据上一篇文章中提到的抽象层,来详细看看如何进行调用。

1. 创建模拟游戏工程

首先,我们使用Eclipse新建一个Android工程,将其作为模拟的游戏工程。需要说明的是,若你并非直接使用Android开发游戏,而是采用Unity3D、Cocos2D等游戏引擎,接入方式本质上是相同的,只是会多一层JNI调用。

我们新建一个主运行的Activity,代码如下:

package com.u8.sdk.demo;

import com.u8.sdk.IU8SDKListener;
import com.u8.sdk.LoginResult;
import com.u8.sdk.PayParams;
import com.u8.sdk.U8SDK;
import com.u8.sdk.components.U8Pay;
import com.u8.sdk.components.U8User;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;

public class MainActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

// 设置SDK监听器
U8SDK.getInstance().setSDKListener(new IU8SDKListener() {

@SuppressLint("ShowToast")
@Override
public void onResult(int arg0, String msg) {
Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show();
}

@SuppressLint("ShowToast")
@Override
public void onLoginResult(LoginResult loginResult) {
Toast.makeText(MainActivity.this, "登录成功,sid:" + loginResult.getSid(), Toast.LENGTH_SHORT).show();
}
});

// 绑定支付按钮点击事件
Button btn = (Button) findViewById(R.id.button1);
btn.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
pay();
}
});

// 绑定登录按钮点击事件
Button btnLogin = (Button) findViewById(R.id.button2);
btnLogin.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
login();
}
});

// 初始化U8 SDK
U8SDK.getInstance().init(MainActivity.this);
}

private void login() {
U8SDK.getInstance().runOnMainThread(new Runnable() {

@Override
public void run() {
U8User.getInstance().login();
}
});
}

private void pay() {
U8SDK.getInstance().runOnMainThread(new Runnable() {

@Override
public void run() {
PayParams params = new PayParams();
params.setPrice(100);
params.setServerId("1");
params.setRoleId("1");
U8Pay.getInstance().pay(params);
}
});
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
U8SDK.getInstance().onActivityResult(requestCode, resultCode, data);
super.onActivityResult(requestCode, resultCode, data);
}

@Override
public void onPause() {
U8SDK.getInstance().onPause();
super.onPause();
}

@Override
public void onResume() {
U8SDK.getInstance().onResume();
super.onResume();
}

@Override
public void onNewIntent(Intent newIntent) {
U8SDK.getInstance().onNewIntent(newIntent);
super.onNewIntent(newIntent);
}

@Override
public void onStop() {
U8SDK.getInstance().onStop();
super.onStop();
}

@Override
public void onDestroy() {
U8SDK.getInstance().onDestroy();
super.onDestroy();
}

@Override
public void onRestart() {
U8SDK.getInstance().onRestart();
super.onRestart();
}

@Override
public void onBackPressed() {
U8SDK.getInstance().onBackPressed();
super.onBackPressed();
}
}

2. 接入SDK抽象层的要点

从上述模拟游戏的代码中可以看出,接入SDK抽象层其实非常简单。主要步骤如下:

2.1 初始化操作

onCreate方法中进行初始化操作:

U8SDK.getInstance().init(MainActivity.this);

2.2 设置监听器

由于采用了监听器模式设计,我们需要设置一个监听器,以便在具体SDK状态发生变更(成功或失败)时获取详细信息:

U8SDK.getInstance().setSDKListener(new IU8SDKListener() {

@SuppressLint("ShowToast")
@Override
public void onResult(int arg0, String msg) {
Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show();
}

@SuppressLint("ShowToast")
@Override
public void onLoginResult(LoginResult loginResult) {
Toast.makeText(MainActivity.this, "登录成功,sid:" + loginResult.getSid(), Toast.LENGTH_SHORT).show();
}
});

其中,onResult方法在调试时可通过Toast输出信息,而onLoginResult方法则是渠道SDK登录成功时的回调函数。在此处,需要执行整个登录流程中的第四步,即使用(u8appid, sid)访问U8 Server以获取后续登录认证所需的token。

2.3 调用登录界面

初始化完成后,在需要调用登录界面的地方,调用如下代码:

U8User.getInstance().login();

通过以上步骤,我们就完成了Unity接入UC SDK的基本流程,实现了游戏与UC SDK的集成。

作者信息

boke

boke

共发布了 1025 篇文章