当前位置:   article > 正文

Android与Unity交互--接入安卓原生SDK_andriodstudio怎么使用unity的sdk

andriodstudio怎么使用unity的sdk

因技术更新,发现以前的文章有些过时,一些地方跟不上目前进度了,导致开发中出现一大堆问题,所以参考之前的一些文章整理了一下,希望对大家有所帮助。

工具

  • Unity2020
  • AndroidStudio 2021

AndroidStudio 操作

1.依然创建一个新的空项目 ,点击Next。
在这里插入图片描述
2.根据自己需要设置项目名称和包名,记住MinSDK 这里API等级,之后在Unity发布时也要和它同步设置。然后点击Finsh。
在这里插入图片描述
3.创建好就是这样了。点击Android下拉列表,选择Project。这两个可以删掉,没啥用(有没有用我也不知道),但是删掉没啥影响。
在这里插入图片描述
4.然后找到build.gradle这个文件,双击打开。把箭头1所指处改为:id ‘com.android.library’。箭头2所指删掉。点击Sync Now编译一下。
在这里插入图片描述
5.在unity引擎安装目录下Editor\Data\PlaybackEngines\AndroidPlayer\Variations 有两个文件夹il2cpp和mono,根据Unity中所选的语言编译进行选择,进入文件夹后在Release/Classes中找到jar包,复制到Android studio项目中libs文件夹下。右键jar包,添加到依赖。
在这里插入图片描述
6.由于Unity2019之后(好像是),jar包内不包含UnityPlayerActivity.java这个类,所以得自己手动加一下,在mono文件夹返回上一级,找到Source文件夹可以得到该文件。然后复制到com文件夹下。
在这里插入图片描述
7.然后双击MainActivity类打开,修改基类,使其继承自UnityPlayerActivity。

package com.wsetjin.monkey;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import com.unity3d.player.UnityPlayerActivity;

public class MainActivity extends UnityPlayerActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.activity_main);注释掉这一行
    }

    public int CallBackSurprise(){
        return 666;
    }
    
    public String GetDeviceId(){
        String deviceId = null;
        String android_id = Secure.getString(getBaseContext().getContentResolver(), Secure.ANDROID_ID);
        //deviceId = getDeviceId();
       return android_id;
    }
public String GetUUID()
    {
        String serial = "";
        try {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                serial = Build.getSerial();
            } else {
                serial = Build.SERIAL;
            }
            //serial = Build.class.getField("SERIAL").get(null).toString();
            //return serial;
        } catch (Exception exception) {
            //serial需要一个初始化
            serial = "serial"; // 随便一个初始化
            //return serial;
        }
        String m_szDevIDShort = "28" +
                Build.BOARD.length()%10+ Build.BRAND.length()%10 +

                Build.CPU_ABI.length()%10 + Build.DEVICE.length()%10 +

                Build.DISPLAY.length()%10 + Build.HOST.length()%10 +

                Build.ID.length()%10 + Build.MANUFACTURER.length()%10 +

                Build.MODEL.length()%10 + Build.PRODUCT.length()%10 +

                Build.TAGS.length()%10 + Build.TYPE.length()%10 +

                Build.USER.length()%10 ; //13 位
        return new UUID(m_szDevIDShort.hashCode(), serial.hashCode()).toString();
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58

8.ok就要离成功不远了,接下来修改AndroidMainfest.xml。图片里忘了加一句代码,补在下方 在intent-filter节点结尾处下边添加上。

 <meta-data android:name="unityplayer.UnityActivity" android:value="true"/> 
  • 1

在这里插入图片描述
9.最后–选择菜单栏Build->Make Moudle’你的项目名’,build完成后会在项目中创建一个build文件夹,在intermediates/aar_main_jar选择jar包,用解压软件打开,删除里面unity3d文件夹,避免在unity发布时重复。然后导入unity中 。将AndroidMainfest.xml也导入unity。

10.Android stuio操作就结束了。


Unity的操作

  • 创建脚本,我就简单的写个测试脚本。
	void Start()
    {
		AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
		AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
		int value = jo.Call<int>("CallBackSurprise");
	}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
最后发布,大功告成
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/323097
推荐阅读
相关标签
  

闽ICP备14008679号