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开发,那么这里,我们就先来一步步给大家演示,用 ...
随机推荐
- Notepad++查看文本文件的总的字符数、GBK字节数、UTF8字节数
如果其编码是 小结:UTF-8编码下,一个汉字占3字节,GBK编码下,一个汉字占2字节:
- iOS 混合开发之 Cordova 实践
在15年时,之前公司使用 Cordova 做混合开发使用,后来公司没有用到了,现在重新记录下. Cordova (官网:http://cordova.apache.org/)简介: Apache Co ...
- 安装oracle11g时出现:在注册表中没有找到指定的主目录名
我碰到这个问题,不过我没去管它.直接安装了,后来数据库实例,什么的都能安装,目前没有发现什么问题. 造成这个的原因:是卸载oracle时注册表没有彻底删除! 如果后面出现问题,再记录.
- 5 JSON&与JavaScript转换&JavaScript:void(0)&JavaScript代码规范
JSON:JavaScript Object Notation JS对象简谱 一种轻量级的数据交换格式,用于存储和传输数据的格式,通常用于服务端向网页传递数据 是独立的语言,易于理解 JSON语法 ...
- .net core 2.1控制台使用Quartz.net实现定时任务执行
权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/qq_33435149/article/de ...
- 在IDEA中为SpringBoot配置热部署
版本:IDEA Community 2019.2.2,Spring Boot 2.1.8.RELEASE 流程:pom文件中添加依赖: <dependency> <groupId& ...
- 【转】Docker学习_本地/容器文件互传(5)
将容器内文件拷贝到宿主机 docker cp <containerId>:/导出文件的位置/xxx.sql /宿主机的位置 示例:docker cp bf4c4fff338c:/root/ ...
- Android音频录制MediaRecorder之简易的录音软件实现代码(转)
原文:http://www.jb51.net/article/46182.htm Android音频录制MediaRecorder之简易的录音软件实现代码 这篇文章主要介绍了Android音频录制Me ...
- 使用eclipse部署springcloud config从GitHub上获取配置内容出现错误:Auth fail
Eclipse点击Window > Preferences > General > Network Connections > SSH2 点击"Key Managem ...
- idea右键新建选项没有类和包的创建方式
Intelidea创建好项目之后,右键新建Java class的时候发现没有改选项,只有以下几个选项 把sec目录设为源码目录,首先打开Project Structure