因为游戏要上线小米的平台,所以游戏就要添加小米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的更多相关文章

  1. air游戏接入小米支付sdk

    小米支付sdk要求在Application.onCreate中进行初始化 为了这个初始化搞了半天,最终搞定了.今天将更改的步骤记录下了. 1. 创建ANE.ANE的创建就不罗嗦了,这里须要注意一点,这 ...

  2. GJM:Unity导入百度地图SDK [转载]

    感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...

  3. Unity中制作游戏的快照游戏支持玩家拍快照

    Unity中制作游戏的快照游戏支持玩家拍快照 有些游戏支持玩家“拍快照”,也就是将游戏的精彩瞬间以图片的形式记录下来的功能.这个功能比较有趣,而且以后的用途也会很广,为此本节打算介绍:截取矩形区域内游 ...

  4. Unity塔防游戏开发

    Unity3D塔防开发流程 配置环境及场景搭建编程语言:C#,略懂些许设计模式,如果不了解设计模式,BUG More开发工具:Unity3D编辑器.Visual Studio编译器开发建议:了解Uni ...

  5. 添加启动游戏过渡场景Default Splash Scene(Unity3D开发之十三)

    添加启动游戏过渡场景Default Splash Scene(Unity3D开发之十三) 猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blo ...

  6. unity开发android游戏

    环境搭建: Unity+JDK+Android Studio+Android SDK(+NDK) 教程:unity开发android游戏(一)搭建Unity安卓开发环境 注意“Build System ...

  7. Siki_Unity_1-8_使用Unity开发2D游戏_PongGame

    Unity 1-8 使用Unity开发2D游戏 PongGame 任务1:演示 http://pan.baidu.com/s/1pKUHsev; up2i 任务2:案例介绍 创建PongGame,注意 ...

  8. unity开发android游戏(一)搭建Unity安卓开发环境

    unity开发android游戏(一)搭建Unity安卓开发环境 分类: Unity2014-03-23 16:14 5626人阅读 评论(2) 收藏 举报 unity开发androidunity安卓 ...

  9. 教你高速高效接入SDK——Unity统一接入渠道SDK(Android篇)

    U8SDK的设计之初,就是为了可以支持各种游戏引擎开发的游戏,而不不过Android的原生平台.眼下一大半的手游,都是採用Unity3D和Cocos2dx开发,那么这里,我们就先来一步步给大家演示,用 ...

随机推荐

  1. Codeforces Round #620 (Div. 2) B. Longest Palindrome

    Returning back to problem solving, Gildong is now studying about palindromes. He learned that a pali ...

  2. 关于java继承条件下的构造方法调用

    首先是测试代码: class Grandparent { public Grandparent() { System.out.println("GrandParent Created.&qu ...

  3. 重新梳理IT知识之java-02语法(二)

    1.如何获取一个随机数 比如:10-99 调用方法:Math.random //Math.random方法得到的是double类型的值范围在[0.0,1.0),一般需要加工后才可满足开发要求. 代码: ...

  4. STM32F4/F7运算性能

    参考http://bbs.21ic.com/icview-1622796-1-1.html

  5. mvn无法下载fastdfs-client-java依赖解决办法

    1.下载fastdfs-client-java源码 https://github.com/happyfish100/fastdfs-client-java 2.修改pom.xml文件 添加打包插件 & ...

  6. IDEA工具java开发之 代码重构Refactor 重命名 删除移动复制 生成变量 抽取方法

    一.重命名 用shift + F6 或者右键单击 二.抽取方法 .三.生成变量 . 四.文件移动复制和删除 可以右键

  7. css样式和定义的class都没问题,但样式却没生效

    今天开发遇到过这样的问题,主要原因是 css 文件格式有问题导致的.有问题的 css 样式的那一行下面的 css 样式不能生效

  8. Mysql ,用户管理命令

    添加用户.删除用户与授权以下对数据库的操作完全可以利用管理软件完成,比如在Navicat上进行操作,对数据库进行用户和权限管理. 1.创建用户:以root用户登录到数据库进行用户创建 命令: CREA ...

  9. (转)notepad++去重

    notepad++  真是强大,几乎你能想到的处理文本方法都可以用它来实现,因为他有强大的插件团! 例如1:去除重复行 先安装TextFx插件 在菜单TextFX-->TextFX Tools下 ...

  10. MyEclipse和Eclipse中常用的快捷键

    ##########################快捷键分类速查##########################     *******常用类********[Ctrl+O]   显示类中方法和 ...