更新日期:2024年 12月 24日海外版Unity 接入文档
<h3>
<span style="font-size:16px;">一、接入配置</span>
</h3>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<br />
</p>
<h4>
<span style="font-size:14px;">1.1 Unity配置</span>
</h4>
<p>
<br />
</p>
<p>
<span style="font-size:14px;">勾选下图配置,在 Assets/Plugins/Android 目录下生成 mainTemplate.gradle 文件</span>
</p>
<p>
<br />
</p>
<p>
<span style="font-size:14px;">unity2018 版本</span>
</p>
<p>
<img src="https://staticsite.quickapi.net/data/newFiles/20241224/20241224101639MXrE652.png" alt="" />
</p>
<p>
<br />
</p>
<p>
<span style="font-size:14px;">unity2020 版本</span>
</p>
<p>
<img src="https://staticsite.quickapi.net/data/newFiles/20241224/20241224101649XbHi578.png" alt="" /><span style="font-size:14px;"></span>
</p>
<p>
<br />
</p>
<p>
<br />
</p>
<h4>
<span style="font-size:14px;">1.2 拷贝SDK 资源</span>
</h4>
<p>
<br />
</p>
<p>
<span style="font-size:14px;">拷贝下列文件到 Assets/Plugins/Android 目录:</span>
</p>
<p>
<br />
</p>
<span style="font-size:14px;">Unity SDK Resources/quickgame_hw_x.x.x.aar (x.x.x 为具体版本)</span><br />
<p>
<span style="font-size:14px;">Unity SDK Resources/unity_imp_libs-release.aar</span>
</p>
<p>
<br />
</p>
<p>
<span style="font-size:14px;">拷贝Unity SDK Resources/QHinfo 到 Assets/Plugins/Android/assets 目录:</span>
</p>
<p>
<br />
</p>
<span style="font-size:14px;">将游戏的域名(需要解析到quick提供的ip)写入 QHinfo 文件中(使用文本编辑器打开写入)</span><br />
<span style="font-size:14px;"> 例如:域名为api.xxx.com,QHinfo文件中写入的是 http://api.xxx.com ;如果使用了https则为</span><br />
<span style="font-size:14px;"> https://api.xxx.com</span><br />
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">Unity 2021不支持assets目录,请看<a href="https://www.quicksdk.com/doc-1127.html?cid=45" target="_blank">《Unity 2021添加assets & res说明》</a></span>
</p>
<p>
<br />
</p>
<span style="font-size:14px;">拷贝 Unity SDK Resources/script 中的文件到 Unity 项目的 Assets/Plugins/script 目录:</span><br />
<p>
<span style="font-size:14px;">导入 Unity SDK Resources/JsonNet.9.0.1.unitypackage 到 Unity 项目</span>
</p>
<p>
<br />
</p>
<p>
<br />
</p>
<h4>
<span style="font-size:14px;">1.3 修改 mainTemplate.gradle 文件</span>
</h4>
<p>
<br />
</p>
<p>
<span style="font-size:14px;">在 dependencies 里面添加如下代码</span>
</p>
<pre class="brush:js;toolbar:false">dependencies {
//必需依赖的库
api 'androidx.appcompat:appcompat:1.3.0'
api "org.jetbrains.kotlin:kotlin-stdlib:1.4.10"
api 'com.android.billingclient:billing:7.0.0'
//根据需求添加的依赖库
//添加后sdk会获取adid
api 'com.google.android.gms:play-services-ads-identifier:17.0.1'
// 使用google登录需要添加
api 'com.google.android.gms:play-services-auth:19.0.0'
}</pre>
<p>
<br />
</p>
<p>
<br />
</p>
<h4>
<span style="font-size:14px;">1.4 AndroidManifest 配置</span>
</h4>
<p>
<br />
</p>
<p>
<span style="font-size:14px;">1. AndroidManifest 在 Assets/Plugins/Android 目录,在 AndroidManifest 的 application 节点下添加如下代码</span>
</p>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false"><!--value值的格式为 QK+quick sdk后台的ProductCode-->
<meta-data
android:name="QKproductCode"
android:value="QK{这里替换为SDK的ProductCode,包括大括号}"/></pre>
<p>
<br />
</p>
<p>
<br />
</p>
<p>
<span style="font-size:14px;">2. 删掉 AndroidManifest 中配置的主 Activity,即 activity 的 <intent-filter> 中包含如下代码</span>
</p>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false"><category android:name="android.intent.category.LAUNCHER" /></pre>
<p>
<br />
</p>
<p>
<br />
</p>
<p>
<span style="font-size:14px;">3. 添加 Google 登录配置(按需配置)</span>
</p>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false"><!--没有Google登录可以不加,value值直接写在这里,不能用@string引用-->
<meta-data
android:name="google-signin-client_id"
android:value="替换为google后台申请的clientid"/></pre>
<p>
<br />
</p>
<p>
<br />
</p>
<h4>
<span style="font-size:14px;">1.5 gradle.properties 配置 (Unity 2020)</span>
</h4>
<p>
<br />
</p>
<p>
<span style="font-size:14px;">gradle.properties 对应 Assets/Plugins/AndroidgradleTemplate.properties 文件,在gradle.properties 里面添加</span>
</p>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false">android.useAndroidX=true
android.enableJetifier=true</pre>
<p>
<br />
</p>
<p>
<br />
</p>
<h4>
<span style="font-size:14px;">1.6 修改闪屏方向</span>
</h4>
<p>
<br />
</p>
<p>
<span style="font-size:14px;">闪屏默认是横屏,如果要修改闪屏方向,在AndroidManifest里面添加下面的Activity配置修改 android:screenOrientation 的值</span>
</p>
<p>
<span style="font-size:14px;"> </span>
</p>
<pre class="brush:js;toolbar:false"><activity
android:name="com.qk.unity.QuickUnityPlayerProxyActivity"
android:configChanges="fontScale|orientation|keyboardHidden|locale|navigation|screenSize|uiMode"
tools:replace="android:screenOrientation,android:configChanges"
android:screenOrientation="portrait"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data
android:name="unityplayer.UnityActivity"
android:value="true" />
</activity></pre>
<br />
<p>
<br />
</p>
<p>
<br />
</p>
<p>
<br />
</p>
<p>
<br />
</p>
<p>
<br />
</p>
<h3>
<span style="font-size:16px;">二、接口调用</span>
</h3>
<p>
<br />
</p>
<p>
<br />
</p>
<span style="font-size:14px;">添加 quicksdk 的命名空间 using quicksdk</span><br />
<p>
<span style="font-size:14px;">如下方法获取 SDK 实例,SDK 接口都通过该实例调用</span>
</p>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false">QuickSDK.getInstance()</pre>
<p>
<br />
</p>
<p>
<br />
</p>
<h4>
<span style="font-size:14px;">2.1 设置监听器</span>
</h4>
<p>
<br />
</p>
<p>
<span style="font-size:14px;">调用方法</span>
</p>
<pre class="brush:js;toolbar:false">public void setListener(QuickSDKListener quickSDKListener )</pre>
<p>
<br />
</p>
<p>
<span style="font-size:14px;">示例</span>
</p>
<span style="font-size:14px;">参考 Unity Demo/Assets/demo/EventHandle.cs 文件</span><br />
<span style="font-size:14px;"> 注: onLoginFailed 回调包括登录取消和登录失败</span><br />
<span style="font-size:14px;"> 可以通过ErrorMsg的code来区分,code为 2 表示登录取消,为 3 是登录失败</span><br />
<p>
<br />
</p>
<p>
<br />
</p>
<h4>
<span style="font-size:14px;">2.2 初始化</span>
</h4>
<p>
<br />
</p>
<p>
<span style="font-size:14px;">调用方法</span>
</p>
<pre class="brush:js;toolbar:false">public void init()</pre>
<p>
<br />
</p>
<p>
<span style="font-size:14px;">示例</span>
</p>
<pre class="brush:js;toolbar:false">QuickSDK.getInstance().init();</pre>
<p>
<br />
</p>
<p>
<br />
</p>
<h4>
<span style="font-size:14px;">2.3 登录</span>
</h4>
<p>
<br />
</p>
<p>
<span style="font-size:14px;">调用方法</span>
</p>
<pre class="brush:js;toolbar:false">public void login()</pre>
<p>
<br />
</p>
<p>
<span style="font-size:14px;">示例</span>
</p>
<pre class="brush:js;toolbar:false">QuickSDK.getInstance().login();</pre>
<p>
<br />
</p>
<p>
<span style="font-size:14px;">静默登录可以调用下面的方法</span>
</p>
<pre class="brush:js;toolbar:false">public void freeLogin()</pre>
<p>
<br />
</p>
<h4>
<span style="font-size:14px;">2.4 上报角色信息</span>
</h4>
<p>
<br />
</p>
<p>
<span style="font-size:14px;">调用方法</span>
</p>
<pre class="brush:js;toolbar:false">public void updateRole(GameRoleInfo gameRoleInfo)</pre>
<p>
<br />
</p>
<p>
<span style="font-size:14px;">GameRoleInfo</span>
</p>
<p>
<table style="width:100%;" cellpadding="2" cellspacing="0" border="1" bordercolor="#000000">
<tbody>
<tr>
<td>
<span style="white-space:normal;font-size:14px;">字段</span><br />
</td>
<td>
<span style="white-space:normal;font-size:14px;">类型</span><br />
</td>
<td>
<span style="white-space:normal;font-size:14px;">说明</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">serverID</span><br />
</td>
<td>
<span style="font-size:14px;">String</span><br />
</td>
<td>
<span style="font-size:14px;">服务器 ID</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">serverName</span><br />
</td>
<td>
<span style="font-size:14px;">String</span><br />
</td>
<td>
<span style="font-size:14px;">服务器名称</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">gameRoleName</span><br />
</td>
<td>
<span style="font-size:14px;">String</span><br />
</td>
<td>
<span style="font-size:14px;">角色名称</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">gameRoleID</span><br />
</td>
<td>
<span style="font-size:14px;">String</span><br />
</td>
<td>
<span style="font-size:14px;">角色 ID</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">vipLevel</span><br />
</td>
<td>
<span style="font-size:14px;">String</span><br />
</td>
<td>
<span style="font-size:14px;">角色 VIP 等级</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">gameRoleLevel</span><br />
</td>
<td>
<span style="font-size:14px;">String</span><br />
</td>
<td>
<span style="font-size:14px;">角色等级</span><br />
</td>
</tr>
</tbody>
</table>
</p>
<br />
<span style="font-size:14px;"> </span><br />
<h4>
<span style="font-size:14px;">2.5 支付</span>
</h4>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false">public void pay (OrderInfo orderInfo, GameRoleInfo gameRoleInfo)</pre>
<p>
<br />
</p>
<p>
<br />
</p>
<p>
<span style="font-size:14px;">OrderInfo</span>
</p>
<p>
<table style="width:100%;" cellpadding="2" cellspacing="0" border="1" bordercolor="#000000">
<tbody>
<tr>
<td>
<span style="font-size:14px;">字段</span><br />
</td>
<td>
<span style="font-size:14px;">类型</span><br />
</td>
<td>
<span style="font-size:14px;">说明</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">skuType</span><br />
</td>
<td>
<span style="font-size:14px;">String</span><br />
</td>
<td>
<span style="font-size:14px;">商品类型,默认消耗性(inapp),订阅请设置为 subs</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">goodsID</span><br />
</td>
<td>
<span style="font-size:14px;">String</span><br />
</td>
<td>
<span style="font-size:14px;">商品 ID,用来识别购买的产品</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">goodsDesc</span><br />
</td>
<td>
<span style="font-size:14px;">String</span><br />
</td>
<td>
<span style="font-size:14px;">商品名称</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">amount</span><br />
</td>
<td>
<span style="font-size:14px;">double</span><br />
</td>
<td>
<span style="font-size:14px;">支付金额</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">currency</span><br />
</td>
<td>
<span style="font-size:14px;">String</span><br />
</td>
<td>
<span style="font-size:14px;">支付金额单位(如 USD、CNY)</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">cpOrderID</span><br />
</td>
<td>
<span style="font-size:14px;">String</span><br />
</td>
<td>
<span style="font-size:14px;">游戏方的订单号</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">extrasParams</span><br />
</td>
<td>
<span style="font-size:14px;">String</span><br />
</td>
<td>
<span style="font-size:14px;">透传参数</span><br />
<span style="font-size:14px;"> 请勿传特殊符号,如果无法避免建议进行 base64 编码</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">callBackUrl</span><br />
</td>
<td>
<span style="font-size:14px;">String</span><br />
</td>
<td>
<span style="font-size:14px;">支付回调地址</span><br />
<span style="font-size:14px;"> 可选参数,可配置在后台;优先读取后台配置的回调地址</span><br />
</td>
</tr>
</tbody>
</table>
</p>
<p>
<br />
</p>
<p>
<br />
</p>
<h4>
<span style="font-size:14px;">2.6 退出登录</span>
</h4>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false">public void logout()</pre>
<p>
<br />
</p>
<p>
<br />
</p>
<h4>
<span style="font-size:14px;">2.7 显示个人中心</span>
</h4>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false">public void userCenter()</pre>
<p>
<br />
</p>
<p>
<br />
</p>
<h4>
<span style="font-size:14px;">2.8 获取uid</span>
</h4>
<p>
<br />
</p>
<p>
<span style="font-size:14px;">可以在登录之后再次获取Uid,如果没有登录返回空字符串</span>
</p>
<pre class="brush:js;toolbar:false">public string getUserId()</pre>
<p>
<br />
</p>
<p>
<br />
</p>
<h4>
<span style="font-size:14px;">2.9 销毁账号</span>
</h4>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false">public void userTrash()</pre>
<p>
<br />
</p>
<p>
<br />
</p>
<h3>
<span style="font-size:16px;">三、其他接口</span>
</h3>
<p>
<br />
</p>
<h4>
<span style="font-size:14px;">3.1 绑定账号接口(按需接入)</span>
</h4>
<p>
<br />
</p>
<span style="font-size:14px;">如果游戏内有按钮,需要绑定第三方账号可以调用此接口</span><br />
<span style="font-size:14px;"> 若指定类型未绑定,调用会走绑定流程;若已经绑定用户,调用该方法则为解绑账</span><br />
<p>
<span style="font-size:14px;">接收绑定结果需要重写 QuickSDKListener 中的 onBindUnbindUserSuccess 和 onBindUnbindUserFailed</span>
</p>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false">public void bindUser(string bindType)</pre>
<p>
<br />
</p>
<p>
<span style="font-size:14px;">bindType 要绑定的类型,详细见下表</span>
</p>
<p>
<table style="width:100%;" cellpadding="2" cellspacing="0" border="1" bordercolor="#000000">
<tbody>
<tr>
<td>
<span style="font-size:14px;">绑定/解绑类型</span><br />
</td>
<td>
<span style="font-size:14px;">类型参数(数字字符串)</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">FaceBook</span><br />
</td>
<td>
<span style="font-size:14px;">6</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">Google</span><br />
</td>
<td>
<span style="font-size:14px;">8</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">Naver</span><br />
</td>
<td>
<span style="font-size:14px;">9</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">Line</span><br />
</td>
<td>
<span style="font-size:14px;">11</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">Email</span><br />
</td>
<td>
<span style="font-size:14px;">13</span>
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">VK</span><br />
</td>
<td>
<span style="font-size:14px;">14</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">PlayGame</span><br />
</td>
<td>
<span style="font-size:14px;">17</span><br />
</td>
</tr>
</tbody>
</table>
</p>