这些知识主要是在接安卓的SDK或者调用安卓原生接口时有用,比如说控制安卓系统的音量大小,调用安卓原生的相册选择图片功能,调用安卓相机,接入微信登录的sdk之类的用的到。
unity导出调用java代码的安卓apk的方法有2种 1.unity导出安卓工程,然后用andriodStudio打开项目,在安卓工程添加java代码,然后在andriodStudio打包。 2.安卓项目添加java代码后导出Jar包,在unity3d中使用,直接在unity打包。 第2种比第一种省时间,但是第一种稍加修改就能变成第2种。 今天我们来讲一下第一种 首先新建一个空场景摆上UI 然后新建一个MainScript脚本,写上如下图的代码 把MainScript挂在如图位置
![](https://i-blog.csdnimg.cn/blog_migrate/94eafc63beb306b952b431c65033d190.png)
using
System
.
Collections
;
using
System
.
Collections
.
Generic
;
using
UnityEngine
;
using
UnityEngine
.
UI
;
public
class
MainScript
:
MonoBehaviour
{
#
if
UNITY_ANDROID
AndroidJavaObject
currActivity
;
#
endif
//UI组件
Button
button
;
InputField
inputField
;
Text
text
;
// Start is called before the first frame update
void
Start
(
)
{
#
if
UNITY_ANDROID
//保存当前安卓活动的引用
currActivity
=
new
AndroidJavaClass
(
"com.unity3d.player.UnityPlayer"
)
.
GetStatic
<
AndroidJavaObject
>
(
"currentActivity"
)
;
#
endif
//获取界面上的UI实例
button
=
transform
.
Find
(
"Button"
)
.
GetComponent
<
Button
>
(
)
;
inputField
=
transform
.
Find
(
"InputField"
)
.
GetComponent
<
InputField
>
(
)
;
text
=
transform
.
Find
(
"Text"
)
.
GetComponent
<
Text
>
(
)
;
//按钮添加点击响应
button
.
onClick
.
AddListener
(
Hello
)
;
}
public
void
Hello
(
)
{
#
if
UNITY_ANDROID
//调用安卓里面对应的hello方法
currActivity
.
Call
(
"Hello"
,
inputField
.
text
)
;
#
endif
}
// 等待安卓java代码调用的方法
public
void
Accept
(
string
str
)
{
text
.
text
=
str
;
}
}
然后填写安卓包名 点击File-->Build Settings 勾选导出项目,然后点击导出 用Android studio打开导出的项目 在UnityPlayerActivity里面添加我们自己写的方法
![](https://i-blog.csdnimg.cn/blog_migrate/e0c1b816edf060308a8f5533ff7f0f0a.png)
public
void
Hello
(
String
str
)
{
Log
.
w
(
"hello"
,
str
)
;
//调用安卓原生窗口显示信息
Toast
.
makeText
(
this
,
"hello: "
+
str
,
Toast
.
LENGTH_SHORT
)
.
show
(
)
;
//调用unity场景中Cavas游戏对象上的Accept方法
UnityPlayer
.
UnitySendMessage
(
"Canvas"
,
"Accept"
,
"安卓收到消息: "
+
str
)
;
}
然后点击菜单Build -> Build Bundle(s)/APK(s) -> Build APK打出不带签名的APK (打正式apk应该选择Build -> Generate Signed Build Bundle/APK ,这个选项是打带签名的apk包,这里为了图省事就打不带签名的APK包) 完成后点击locate就能获取APK 手机apk,点击hello后效果如下
![](https://i-blog.csdnimg.cn/blog_migrate/9db23bcb440b0de55ad4bb3302339451.png)
![](https://i-blog.csdnimg.cn/blog_migrate/676e0aa269664cc948bc7201a50b72db.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b920fe0c0f27f6e229117385a9ff9144.jpeg)