一.下载安装eclipse/adt/sdk,搭建android开发环境
参考链接:https://blog.csdn.net/Amdrose/article/details/89811034
注意在eclipse官网下载时最好选国内的镜像,用国外的可能会下载失败
要注意的是,下载完sdk后不要把压缩包删了,因为后面可能会遇到更新sdk后SDK Manager打不开的情况,需要把压缩包的tools文件夹去替换掉现有的tools文件夹:
https://blog.csdn.net/wang295689649/article/details/60960953
同时也能解决下面的问题:
在Eclipse中添加语法提示:https://jingyan.baidu.com/article/5553fa82a40d9865a3393469.html
二.Unity与Android的简单交换
参考链接:
https://blog.csdn.net/huaixiaoniu/article/details/79225320
https://blog.csdn.net/qq_16542775/article/details/46500837
unity版本:Unity 2018.3.8f1
eclipse版本:2020-03
1.打开eclipse,File-New-Android Application Project,创建安卓工程,注意这里的设置要和unity一致,同時eclipse用的sdk也要把4.1和4.4下了
2.一路往下点,创建好安卓工程。将unity安装目录EditorDataPlaybackEnginesAndroidPlayerVariationsmonoReleaseClasses下的classes.jar放到工程中的libs目录下(如果没该目录则创建一个)
classes.jar提供了一些api,供android调用unity。然后对这个jar添加引用
3.修改MainActivity.java
android调用unity的方式为:
UnityPlayer.UnitySendMessage,第一个参数为unity中go的名字,第二个参数为该go任一脚本中的方法名,第三个参数为该方法的参数
1 package com.example.testsdk; 2 3 import android.os.Bundle; 4 import com.unity3d.player.*; 5 6 public class MainActivity extends UnityPlayerActivity { 7 8 private int count = 1; 9 10 @Override 11 protected void onCreate(Bundle savedInstanceState) { 12 super.onCreate(savedInstanceState); 13 //setContentView(R.layout.activity_main); 14 } 15 16 public void UnityCallAndroid() { 17 UnityPlayer.UnitySendMessage("Canvas", "AndroidCallUnity", "hello" + count); 18 count++; 19 } 20 }
4.修改AndroidManifest.xml
添加一行,<meta-data android:name="unityplayer.UnityActivity" android:value="true" />
位置如下,不然在unity中Build时会报警告Unable to find unity activity in manifest. You need to make sure orientation attribut is set to portrait manually.
5.将工程导出成jar包
6.将安卓工程中的AndroidManifest.xml和res弄到unity中,创建bin和libs文件夹,bin放入刚才的jar包
7.在unity中新建一个场景,新建Canvas,挂上下面的脚本,然后Build出apk就ok了
1 using System.Collections; 2 using System.Collections.Generic; 3 using UnityEngine; 4 using UnityEngine.UI; 5 6 public class TestSDK : MonoBehaviour 7 { 8 AndroidJavaClass jc; 9 AndroidJavaObject jo; 10 public Text text; 11 12 // Start is called before the first frame update 13 void Start() 14 { 15 jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); 16 jo = jc.GetStatic<AndroidJavaObject>("currentActivity"); 17 } 18 19 public void OnBtnClick() 20 { 21 jo.Call("UnityCallAndroid"); 22 } 23 24 public void AndroidCallUnity(string str) 25 { 26 text.text = str; 27 } 28 }
问题:
1.在unity中Build时可能会有下面的提示
解决方法:
将下载的android-sdk_r24.4.1-windows.zip进行解压,复制粘贴弄成2份,1份给unity用,1份给eclipse用,即这样:
确保是2份sdk后,上面的问题弹窗都选择"Update Android SDK"即可解决
2.