• 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

  • 相关阅读:
    spring cloud学习(五) 配置中心
    spring cloud学习(四) 动态路由
    spring cloud学习(三) 断路器
    spring cloud学习(二) 调用服务
    spring cloud学习(一) 服务注册
    spring boot实现异步调用
    openlayers 5.3记录
    asp.net core3.1 实战开发(EF+Mysql 从数据库生成实体类到项目)
    asp.net core3.1 实战开发(EF+Sqlserver 从数据库生成实体类到项目)
    Jexus独立版(专业版)的安装
  • 原文地址:https://www.cnblogs.com/met7/p/unity3d-android-share.html
Copyright © 2020-2023  润新知