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的代碼如下:

  1 package com.HorizonGame.Crisis.mi;
  2 
  3 import java.util.UUID;
  4 
  5 import android.content.pm.ActivityInfo;
  6 import android.content.res.Configuration;
  7 import android.os.Bundle;
  8 
  9 import com.unity3d.player.UnityPlayer;
 10 import com.unity3d.player.UnityPlayerActivity;
 11 import com.xiaomi.gamecenter.sdk.MiCommplatform;
 12 import com.xiaomi.gamecenter.sdk.MiErrorCode;
 13 import com.xiaomi.gamecenter.sdk.OnLoginProcessListener;
 14 import com.xiaomi.gamecenter.sdk.OnPayProcessListener;
 15 import com.xiaomi.gamecenter.sdk.entry.MiAccountInfo;
 16 import com.xiaomi.gamecenter.sdk.entry.MiAppInfo;
 17 import com.xiaomi.gamecenter.sdk.entry.MiBuyInfoOffline;
 18 import com.xiaomi.gamecenter.sdk.entry.MiAppType;
 19 
 20 public class MainActivity extends UnityPlayerActivity implements OnLoginProcessListener,OnPayProcessListener {
 21 
 22     public static MiAppInfo appInfo;
 23     
 24     @Override
 25     protected void onCreate(Bundle savedInstanceState) {
 26         super.onCreate(savedInstanceState);
 27         appInfo = new MiAppInfo();
 28         appInfo.setAppId("***************");// 這個根據自己的游戲而定  29         appInfo.setAppKey("*************");// 這個根據自己的游戲而定  30         appInfo.setAppType(MiAppType.offline);
 31         MiCommplatform.Init(this, appInfo);
 32     }
 33     
 34     @Override 
 35     public void onConfigurationChanged(Configuration newConfig)
 36     { 
 37         super.onConfigurationChanged(newConfig); 
 38     }
 39     
 40     public void Login() {
 41         MiCommplatform.getInstance().miLogin(MainActivity.this,MainActivity.this);
 42     }
 43 
 44     public void Buy(String m_str0, int m_int0) {
 45         MiBuyInfoOffline offline = new MiBuyInfoOffline();
 46         offline.setCpOrderId(UUID.randomUUID().toString());
 47         offline.setProductCode(m_str0);
 48         offline.setCount(m_int0);
 49         try {
 50             // 調用SDK執行購買操作
 51             MiCommplatform.getInstance().miUniPayOffline(MainActivity.this,offline, MainActivity.this);
 52         } 
 53         catch (Exception e) {
 54             e.printStackTrace();
 55         }
 56     }
 57     
 58     @Override
 59     public void finishLoginProcess(int arg0, MiAccountInfo arg1) {
 60 
 61         if (MiErrorCode.MI_XIAOMI_GAMECENTER_SUCCESS == arg0) 
 62         {
 63             UnityPlayer.UnitySendMessage("MI_SDK", "Result","GAMECENTER_SUCCESS");
 64         } 
 65         else if (MiErrorCode.MI_XIAOMI_GAMECENTER_ERROR_LOGINOUT_SUCCESS == arg0) 
 66         {
 67             UnityPlayer.UnitySendMessage("MI_SDK", "messgae","ERROR_LOGINOUT_SUCCESS");
 68         } 
 69         else if (MiErrorCode.MI_XIAOMI_GAMECENTER_ERROR_LOGINOUT_FAIL == arg0) 
 70         {
 71             UnityPlayer.UnitySendMessage("MI_SDK", "Result","ERROR_LOGINOUT_FAIL");
 72         } 
 73         else if (MiErrorCode.MI_XIAOMI_GAMECENTER_ERROR_ACTION_EXECUTED == arg0) 
 74         {
 75             UnityPlayer.UnitySendMessage("MI_SDK", "Result","ERROR_ACTION_EXECUTED");
 76         } 
 77         else {
 78             UnityPlayer.UnitySendMessage("MI_SDK", "Result", "else");
 79         }
 80     }
 81     
 82     @Override
 83     public void finishPayProcess(int arg0) {
 84         if (arg0 == MiErrorCode.MI_XIAOMI_GAMECENTER_SUCCESS)// 成功
 85         {
 86             UnityPlayer.UnitySendMessage("MI_SDK", "Result","MI_XIAOMI_GAMECENTER_SUCCESS");
 87         } 
 88         else if (arg0 == MiErrorCode.MI_XIAOMI_GAMECENTER_ERROR_CANCEL|| arg0 == MiErrorCode.MI_XIAOMI_GAMECENTER_ERROR_PAY_CANCEL)// 取消
 89         {
 90             UnityPlayer.UnitySendMessage("MI_SDK", "Result","MI_XIAOMI_GAMECENTER_ERROR_CANCEL");
 91         } 
 92         else if (arg0 == MiErrorCode.MI_XIAOMI_GAMECENTER_ERROR_PAY_FAILURE)// 失敗
 93         {
 94             UnityPlayer.UnitySendMessage("MI_SDK", "Result","MI_XIAOMI_GAMECENTER_ERROR_PAY_FAILURE");
 95         } 
 96         else if (arg0 == MiErrorCode.MI_XIAOMI_GAMECENTER_ERROR_PAY_REPEAT)
 97         {
 98             UnityPlayer.UnitySendMessage("MI_SDK", "Result","MI_XIAOMI_GAMECENTER_ERROR_PAY_REPEAT");
 99         } 
100         else if (MiErrorCode.MI_XIAOMI_GAMECENTER_ERROR_ACTION_EXECUTED == arg0) 
101         {
102             UnityPlayer.UnitySendMessage("MI_SDK", "Result","MI_XIAOMI_GAMECENTER_ERROR_ACTION_EXECUTED");
103         } 
104         else if (arg0 == MiErrorCode.MI_XIAOMI_GAMECENTER_ERROR_LOGIN_FAIL)
105         {
106             UnityPlayer.UnitySendMessage("MI_SDK", "Result","MI_XIAOMI_GAMECENTER_ERROR_LOGIN_FAIL");
107         }
108     }
109 }

其實主要就是添加了下面這個函數:

    @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里面寫代碼的寫代碼就行了,

然后測試一下~

終於成功了~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM