unity3d應用內分享(微信、微博等)的實現


問題:如何在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


免責聲明!

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



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