問題:如何在unity3d的游戲中實現分享功能,如圖
思路:
1、分享功能的實現方式有多種,較方便快捷的一種是直接調用android的API來調出系統的分享界面
2、unity3d里面調用android的API需要為此編寫一個android的插件
3、在插件(android的jar包)里面調用Intent類來實現Activity間的消息傳遞,換出系統的分享控制台
代碼:
Android插件代碼
1 package com.XXX.XXX; 2 3 import android.content.Intent; 4 import android.os.Bundle; 5 import com.unity3d.player.UnityPlayerActivity; 6 7 public class MainActivity extends UnityPlayerActivity { 8 9 @Override 10 protected void onCreate(Bundle savedInstanceState) { 11 super.onCreate(savedInstanceState); 12 13 } 14 15 public void onPress(String msg) 16 { 17 Intent shareInt = new Intent(Intent.ACTION_SEND); 18 shareInt.setType("text/plain"); 19 shareInt.putExtra(Intent.EXTRA_SUBJECT, "選擇分享方式"); 20 shareInt.putExtra(Intent.EXTRA_TEXT, msg); // 要分享的內容 21 shareInt.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 22 23 startActivity(Intent.createChooser(shareInt, getTitle())); 24 } 25 }
unity3d調用代碼
1 void OnGUI() 2 { 3 if (GUILayout.Button("Send WeChat", GUILayout.Height(200))) 4 { 5 AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); 6 AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity"); 7 jo.Call("onPress", new object[] {"這游戲真好玩,快來下載吧!"}); 8 } 9 }
注意:
1、編寫插件需要用到eclipse ADT,可以在Android Develop官網下載Android SDK,直接使用里面的eclipse就OK
2、創建一個Android工程,將bundle標示設置為與unity3d一致,比如都叫com.xxx.yyy
3、導入com.unity.player.UnityPlayerActivity包(路徑在“Unity安裝目錄\Editor\Data\PlaybackEngines\androidplayer\bin”下)修改MainActivity類的繼承
4、將整個jar包導出,存放到Assets/Plugins/Android目錄下,並將jar包中的libs、res、AndroidManifest.xml也放入同級目錄下
5、在unity3d中通過jo.Call<返回類型>/jo.Call來調用Android插件接口,傳入對應的參數
6、該行為不能在unity編輯器中測試,因為需要調用Android API