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安装目录EditorDataPlaybackEnginesandroidplayerin”下)修改MainActivity类的继承

4、将整个jar包导出,存放到Assets/Plugins/Android目录下,并将jar包中的libs、res、AndroidManifest.xml也放入同级目录下

5、在unity3d中通过jo.Call<返回类型>/jo.Call来调用Android插件接口,传入对应的参数

6、该行为不能在unity编辑器中测试,因为需要调用Android API

原文地址:https://www.cnblogs.com/met7/p/unity3d-android-share.html