Unity添加小米游戏SDK
因为游戏要上线小米的平台,所以游戏就要添加小米SDK,整了3天总算是把小米SDK添加上了~~
多亏找到了这个帖子:Unity3D接入小米盒子SDK。
(小米人家论坛有官方贴出来的其他开发者的接入经验~妈蛋的360!论坛里面找不到,微信客服回复让我发邮件,QQ客服根本是死人,加了N次就没通过过,发邮件回复的是让我加入5万元推广计划!狗屁的360!!!)
骂完感觉舒服多了...虽然360的还是要做接入...TMD~~
主要就是记录一下自己添加过程中的一些要注意的东西~~
首先游戏的包名要符合他小米的要求:

因为我们的是游戏,所以包名:com.HorizonGame.Crisis.mi
然后按照Unity3D接入小米盒子SDK帖子里面说的,在Eclipse里面打包我们要的Jar,
不过我的代码稍微跟他的有点区别,因为他的是小米盒子不存在旋转屏幕的问题,但是手机不行,
要是不处理的话,在手机旋转屏幕后,会遇到关闭Activity(也就是说我们的游戏被关闭了)或者OnCreate函数重复执行(也就是说我们的游戏重启了)
MainActivity.Java的代码如下:
package com.HorizonGame.Crisis.mi; import java.util.UUID; import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.os.Bundle; import com.unity3d.player.UnityPlayer;
import com.unity3d.player.UnityPlayerActivity;
import com.xiaomi.gamecenter.sdk.MiCommplatform;
import com.xiaomi.gamecenter.sdk.MiErrorCode;
import com.xiaomi.gamecenter.sdk.OnLoginProcessListener;
import com.xiaomi.gamecenter.sdk.OnPayProcessListener;
import com.xiaomi.gamecenter.sdk.entry.MiAccountInfo;
import com.xiaomi.gamecenter.sdk.entry.MiAppInfo;
import com.xiaomi.gamecenter.sdk.entry.MiBuyInfoOffline;
import com.xiaomi.gamecenter.sdk.entry.MiAppType; public class MainActivity extends UnityPlayerActivity implements OnLoginProcessListener,OnPayProcessListener { public static MiAppInfo appInfo; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
appInfo = new MiAppInfo();
appInfo.setAppId("***************");// 这个根据自己的游戏而定
appInfo.setAppKey("*************");// 这个根据自己的游戏而定
appInfo.setAppType(MiAppType.offline);
MiCommplatform.Init(this, appInfo);
} @Override
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
} public void Login() {
MiCommplatform.getInstance().miLogin(MainActivity.this,MainActivity.this);
} public void Buy(String m_str0, int m_int0) {
MiBuyInfoOffline offline = new MiBuyInfoOffline();
offline.setCpOrderId(UUID.randomUUID().toString());
offline.setProductCode(m_str0);
offline.setCount(m_int0);
try {
// 调用SDK执行购买操作
MiCommplatform.getInstance().miUniPayOffline(MainActivity.this,offline, MainActivity.this);
}
catch (Exception e) {
e.printStackTrace();
}
} @Override
public void finishLoginProcess(int arg0, MiAccountInfo arg1) { if (MiErrorCode.MI_XIAOMI_GAMECENTER_SUCCESS == arg0)
{
UnityPlayer.UnitySendMessage("MI_SDK", "Result","GAMECENTER_SUCCESS");
}
else if (MiErrorCode.MI_XIAOMI_GAMECENTER_ERROR_LOGINOUT_SUCCESS == arg0)
{
UnityPlayer.UnitySendMessage("MI_SDK", "messgae","ERROR_LOGINOUT_SUCCESS");
}
else if (MiErrorCode.MI_XIAOMI_GAMECENTER_ERROR_LOGINOUT_FAIL == arg0)
{
UnityPlayer.UnitySendMessage("MI_SDK", "Result","ERROR_LOGINOUT_FAIL");
}
else if (MiErrorCode.MI_XIAOMI_GAMECENTER_ERROR_ACTION_EXECUTED == arg0)
{
UnityPlayer.UnitySendMessage("MI_SDK", "Result","ERROR_ACTION_EXECUTED");
}
else {
UnityPlayer.UnitySendMessage("MI_SDK", "Result", "else");
}
} @Override
public void finishPayProcess(int arg0) {
if (arg0 == MiErrorCode.MI_XIAOMI_GAMECENTER_SUCCESS)// 成功
{
UnityPlayer.UnitySendMessage("MI_SDK", "Result","MI_XIAOMI_GAMECENTER_SUCCESS");
}
else if (arg0 == MiErrorCode.MI_XIAOMI_GAMECENTER_ERROR_CANCEL|| arg0 == MiErrorCode.MI_XIAOMI_GAMECENTER_ERROR_PAY_CANCEL)// 取消
{
UnityPlayer.UnitySendMessage("MI_SDK", "Result","MI_XIAOMI_GAMECENTER_ERROR_CANCEL");
}
else if (arg0 == MiErrorCode.MI_XIAOMI_GAMECENTER_ERROR_PAY_FAILURE)// 失败
{
UnityPlayer.UnitySendMessage("MI_SDK", "Result","MI_XIAOMI_GAMECENTER_ERROR_PAY_FAILURE");
}
else if (arg0 == MiErrorCode.MI_XIAOMI_GAMECENTER_ERROR_PAY_REPEAT)
{
UnityPlayer.UnitySendMessage("MI_SDK", "Result","MI_XIAOMI_GAMECENTER_ERROR_PAY_REPEAT");
}
else if (MiErrorCode.MI_XIAOMI_GAMECENTER_ERROR_ACTION_EXECUTED == arg0)
{
UnityPlayer.UnitySendMessage("MI_SDK", "Result","MI_XIAOMI_GAMECENTER_ERROR_ACTION_EXECUTED");
}
else if (arg0 == MiErrorCode.MI_XIAOMI_GAMECENTER_ERROR_LOGIN_FAIL)
{
UnityPlayer.UnitySendMessage("MI_SDK", "Result","MI_XIAOMI_GAMECENTER_ERROR_LOGIN_FAIL");
}
}
}
其实主要就是添加了下面这个函数:
@Override
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
}
然后AndroidManifest.xml如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.HorizonGame.Crisis.mi"
android:versionCode="1"
android:versionName="1.0" > <uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" /> <uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.HorizonGame.Crisis.mi.MainActivity"
android:label="@string/app_name"
android:configChanges="orientation|keyboardHidden|screenSize"
android:screenOrientation="landscape">
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application> </manifest>
在AndroidManifest.xml里面主要是在activity中添加了
android:configChanges="orientation|keyboardHidden|screenSize"
android:screenOrientation="landscape"
尤其是Android4.0往上,一定要添加screenSize这项,要不然无效的~~
然后其他的就继续参考Unity3D接入小米盒子SDK,
该打包的打包,该在Unity里面写代码的写代码就行了,
然后测试一下~
终于成功了~
Unity添加小米游戏SDK的更多相关文章
- air游戏接入小米支付sdk
小米支付sdk要求在Application.onCreate中进行初始化 为了这个初始化搞了半天,最终搞定了.今天将更改的步骤记录下了. 1. 创建ANE.ANE的创建就不罗嗦了,这里须要注意一点,这 ...
- GJM:Unity导入百度地图SDK [转载]
感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...
- Unity中制作游戏的快照游戏支持玩家拍快照
Unity中制作游戏的快照游戏支持玩家拍快照 有些游戏支持玩家“拍快照”,也就是将游戏的精彩瞬间以图片的形式记录下来的功能.这个功能比较有趣,而且以后的用途也会很广,为此本节打算介绍:截取矩形区域内游 ...
- Unity塔防游戏开发
Unity3D塔防开发流程 配置环境及场景搭建编程语言:C#,略懂些许设计模式,如果不了解设计模式,BUG More开发工具:Unity3D编辑器.Visual Studio编译器开发建议:了解Uni ...
- 添加启动游戏过渡场景Default Splash Scene(Unity3D开发之十三)
添加启动游戏过渡场景Default Splash Scene(Unity3D开发之十三) 猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blo ...
- unity开发android游戏
环境搭建: Unity+JDK+Android Studio+Android SDK(+NDK) 教程:unity开发android游戏(一)搭建Unity安卓开发环境 注意“Build System ...
- Siki_Unity_1-8_使用Unity开发2D游戏_PongGame
Unity 1-8 使用Unity开发2D游戏 PongGame 任务1:演示 http://pan.baidu.com/s/1pKUHsev; up2i 任务2:案例介绍 创建PongGame,注意 ...
- unity开发android游戏(一)搭建Unity安卓开发环境
unity开发android游戏(一)搭建Unity安卓开发环境 分类: Unity2014-03-23 16:14 5626人阅读 评论(2) 收藏 举报 unity开发androidunity安卓 ...
- 教你高速高效接入SDK——Unity统一接入渠道SDK(Android篇)
U8SDK的设计之初,就是为了可以支持各种游戏引擎开发的游戏,而不不过Android的原生平台.眼下一大半的手游,都是採用Unity3D和Cocos2dx开发,那么这里,我们就先来一步步给大家演示,用 ...
随机推荐
- pdf.js的使用(2)新的需求已经出现,怎么能够停止不前(迪迦奥特曼主题曲)哈哈哈。^_^
来,咱们看图说事 按钮1,2是pdf.js自带的,分别对应顺时针旋转90度,逆时针旋转90度.于是乎又要我做一个旋转180度的按钮,诺!按钮3来了. 1.别怂,干!首先顺藤摸瓜,看按钮1,2的html ...
- 什么是Rogue Histogram?
Rogue Histogram可以理解为AP的“流氓直方图”,这里大概记录了该AP附近的其他AP的信道和频宽. 例如如下图:可以通过show ap auto-rf 802.11a AP-name / ...
- 用js实现复制内容到操作系统粘贴板(兼容IE、谷歌、火狐等浏览器)
一.如果只考虑IE浏览器,可以直接用原声js实现 if(window.clipboardData){ //清空操作系统粘贴板 window.clipboardData.clearData(); //将 ...
- LeetCode简单题(三)
题目一: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润. 注意你不能在买入股票前卖出股 ...
- iOS 增强程序健壮性 - - 使用 NullSafe 对 <null> 处理
在项目开发中,和服务端交互数据时,若服务端数据为空时,会出现 <null>,客户端解析时会 Crash,为了增强程序的健壮性,减少 Crash 的发生,可以使用 NullSafe 这个类别 ...
- ArrayStack(栈)
顺序栈即数组型的栈.什么是栈呢?简单来说就像一个刚好装的下乒乓球大小的球筒,假设不能暴力打开球筒且只有一端有出口,那你放入或取出里面的球的操作都只能在一端进行,并且把球放进去或取出来都是由顺序决定的, ...
- idea设置代码提示忽略大小写
- 教育片- Economics by Crash Course(共35集)(未完结)
第一集Intro to Economics: Crash Course Econ #1 传送门:https://www.youtube.com/watch?v=3ez10ADR_gM&list ...
- 误删Django的model中的表解决办法
误删Django的model中的表解决办法 1.model里面的表格实际的操作都在migrations文件夹中,里面记录了操作过程,当在database和model中删除表格时要注意初始化数据库时会报 ...
- 第一个Tornado程序
环境:Python3.8 系统:win10 1903 工具:pycharm2019.3 import tornado.web # web服务基本功能都封装在此模块中 import tornado.io ...