监听unity在Android中加载速度 unity调用安卓

第一种:Unity 为主导使用 使用安卓中的类和方法

1  写安卓脚本

监听unity在Android中加载速度 unity调用安卓_System

复制:

登录后复制


public class MainActivity extends UnityPlayerActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    }

    public String UnityCallAndroid(){
        return "unity 调用 安卓里的方法";
    }
}

2  导出jar包到unity

1. 编译文件

监听unity在Android中加载速度 unity调用安卓_3d_02



2. 使用Project 视图,寻找AndroidManifest.xml,和classes.jar包。放到一个空的文件里,方便我们进行修改。

监听unity在Android中加载速度 unity调用安卓_System_03

监听unity在Android中加载速度 unity调用安卓_3d_04



3. 修改AndroidManifest文件:也可以不修改,这里我们默认包名和设置的应用名字。

监听unity在Android中加载速度 unity调用安卓_System_05



4. 复制到unity里

在untiy 中创建文件夹,名字为 Plugins,在Plugins中创建Android,在Android创建Libs,如图所示

这里请注意,一定要把AndroidMinifest 放到Android下边,不然识别不了。

监听unity在Android中加载速度 unity调用安卓_Test_06



5. 创建Test 对象,用于挂脚本。

并且创建text_Test的Text对象,用于显示结果。

监听unity在Android中加载速度 unity调用安卓_System_07

3. 写Unity 脚本 调用 安卓,

写Unity 脚本 调用 安卓,创建Test脚本将脚本挂在Test 空对象上。

登录后复制

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Test : MonoBehaviour
{
    public Text text_Test;
    // Start is called before the first frame update
    void Start()
    {
        text_Test = GameObject.Find("text_Test").GetComponent<Text>();
        //获得com.unity3d.player.UnityPlayer 下的类,对于扩展的Activity 是一个固定的写法。只要记住就行了
        AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        //获得 jc 类中的 currentActivity 对象,也是一种固定的写法
        AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");

        //call 方法内的参数,第一个是要调用对象的方法名,第二个参数是这个方法的参数这里没有就不用填。
       string str= jo.Call<String>("UnityCallAndroid").ToString();
        text_Test.text = str;

    }
}

4. 打包,运行测试。

配置包名

 监听unity在Android中加载速度 unity调用安卓_3d_08


进行了打包安装到手机测试,没有问题。

监听unity在Android中加载速度 unity调用安卓_Test_09


第二种:安卓调用unity的方法

1. 写安卓脚本

监听unity在Android中加载速度 unity调用安卓_Test_10

2. 导出Jar包

同上边的导出操作一样,忘记的同学可以回到上边看看。

3. 在unity写脚本

添加 AndroidCallUnity 函数。

登录后复制

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Test : MonoBehaviour
{
    public Text text_Test;
    // Start is called before the first frame update
    void Start()
    {

        //获得com.unity3d.player.UnityPlayer 下的类,对于扩展的Activity 是一个固定的写法。只要记住就行了
        AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        //获得 jc 类中的 currentActivity 对象,也是一种固定的写法
        AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");

        //call 方法内的参数,第一个是要调用对象的方法名,第二个参数是这个方法的参数这里没有就不用填。
       string str= jo.Call<string>("UnityCallAndroid").ToString();
        text_Test.text = str+"\n";

    }

    //被安卓 调用的函数
    void AndroidCallUnity(string str)
    {
        text_Test.text =  str+"\n";
    }

}

4. 打包测试

根据以上可以看出来,先调用的unity里的start 方法:unity调用安卓,后是Activity 调用的unity。

监听unity在Android中加载速度 unity调用安卓_3d_11




免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空