赞
踩
因技术更新,发现以前的文章有些过时,一些地方跟不上目前进度了,导致开发中出现一大堆问题,所以参考之前的一些文章整理了一下,希望对大家有所帮助。
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(); } }
8.ok就要离成功不远了,接下来修改AndroidMainfest.xml。图片里忘了加一句代码,补在下方 在intent-filter节点结尾处下边添加上。
<meta-data android:name="unityplayer.UnityActivity" android:value="true"/>
9.最后–选择菜单栏Build->Make Moudle’你的项目名’,build完成后会在项目中创建一个build文件夹,在intermediates/aar_main_jar选择jar包,用解压软件打开,删除里面unity3d文件夹,避免在unity发布时重复。然后导入unity中 。将AndroidMainfest.xml也导入unity。
10.Android stuio操作就结束了。
void Start()
{
AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
int value = jo.Call<int>("CallBackSurprise");
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。