栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > Unity3D

Unity2019.4.0f1与Android通信

Unity3D 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Unity2019.4.0f1与Android通信

安卓端使用Android Studio 3.0版本

一、创建Android工程

输入工程名后点击Next按钮

选择安卓版本后接着下一步

 选择Empty Activity后接着下一步

使用默认参数即可,点击Finish,创建工程

 选择Project。

右键工程名,选择New——>Module,创建Module。

选好后接着下一步

点击Finish,创建Module。

将unity文件夹E:UnityHUB2019.4.0f1EditorDataPlaybackEnginesAndroidPlayerVariationsmonoReleaseClasses 中的classes.jar文件复制到Module中的libs文件夹中。如图所示:

(我的unity2019.4.0f1是安装在E盘)

将classes.jar文件导入

 

 打开bulid.grade文件将

implementation files('libs/classes.jar')

改为 

compileOnly files('libs/classes.jar')  意思为直编译时使用,不参与打包

但是导出AAR包的时候lib好像也参与导出了(脑阔疼)

 将E:UnityHUB2019.4.0f1EditorDataPlaybackEnginesAndroidPlayerSourcecomunity3dplayer文件夹中的UnityPlayerActivity.java复制到

 

 创建MainActivity

 

 然后将E:UnityHUB2019.4.0f1EditorDataPlaybackEnginesAndroidPlayerApkres中的文件放到res文件夹中,原res文件夹中的文件全部删除

修改AndroidManifest.xml文件




    
        
            
                

                
            
            
        
    

 编写Android端代码

package defaultcompany.com.unitytest;

import android.app.Activity;
import android.widget.Toast;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;



public class UntiyDemo {
    
    private Activity _unityActivity;
    
    Activity getActivity(){
        if(null == _unityActivity) {
            try {
                Class classtype = Class.forName("com.unity3d.player.UnityPlayer");
                Activity activity = (Activity) classtype.getDeclaredField("currentActivity").get(classtype);
                _unityActivity = activity;
            } catch (ClassNotFoundException e) {

            } catch (IllegalAccessException e) {

            } catch (NoSuchFieldException e) {

            }
        }
        return _unityActivity;
    }

    
    boolean callUnity(String gameObjectName, String functionName, String args){
        try {
            Class classtype = Class.forName("com.unity3d.player.UnityPlayer");
            Method method =classtype.getMethod("UnitySendMessage", String.class,String.class,String.class);
            method.invoke(classtype,gameObjectName,functionName,args);
            return true;
        } catch (ClassNotFoundException e) {

        } catch (NoSuchMethodException e) {

        } catch (IllegalAccessException e) {

        } catch (InvocationTargetException e) {

        }
        return false;
    }

    
    public boolean showToast(String content){
        Toast.makeText(getActivity(),content, Toast.LENGTH_SHORT).show();
        //这里是主动调用Unity中的方法,该方法之后unity部分会讲到
        callUnity("Main Camera","FromAndroid", "hello unity i'm android");
        return true;
    }
}

 修改MainActivity代码

package defaultcompany.com.unitytest;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;

public class MainActivity extends UnityPlayerActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.activity_main);
        Toast.makeText(this, "DemoActivity -> onCreate", Toast.LENGTH_SHORT).show();
    }
}

 打包成aar文件

 等待打包完成后会看到aar文件,将aar文件与AndroidManifest.xml文件复制到unity的AssetsPluginsAndroid

编写unity端的代码

public class UnityAndroidDemo1 : MonoBehaviour
{
    public Text m_TxtAndroid;
    private AndroidJavaObject mJavaObj;

    private void Start()
    {
        mJavaObj = new AndroidJavaObject("defaultcompany.com.unitytest.UntiyDemo");
    }

    public void OnClick()
    {
        bool success = mJavaObj.Call("showToast", "Unity Call.");
        Debug.Log(success);
    }

    public void FromAndroid(string content)
    {
        m_TxtAndroid.text = content;
    }
}

 

1、mJavaObj 表示是defaultcompany.com.unitytest包下的UntiyDemo类

 2、表示调用类中的方法

 打包前需要将aar文件中的lib删除

用360解压工具打开,然后删除即可(我的已删除)

unity中Project Settings设置

如果安装后,发现有两个文件则需要修改 AssetsPluginsAndroid文件夹下的AndroidManifest.xml

将红框中的部分删除即可 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/900015.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号