,
目录
1,版本信息
2,前期准备
Unity方面:
Android方面:
3,Android与Unity3D交互
1,版本信息
unity2020+
android studio 2021
*不要用android studio 2020系列,存在不能导入Library的bug
2,前期准备
Unity方面:
1,先配置打包的一些必要要素,包括包名之类
2,修改打包选项,将其打包为Android工程
3,打包出来的工程如下,其中unityLibrary是我们需要作为使用的对象
Android方面:
1,新建一个主工程,包名需要与unity方面保持一致
这里最后的包名不一致,会导致安装之后出现两个不同的界面,大概就和这位老兄差不多。
2,等待加载完毕后,点击import module导入unityLibrary
*这里有个比较坑的点,android studio 2020系列不能正常导入,点击不了关闭。解决的办法就是卸载之后装其它版本。
3,导入之后,会报 一些错,这时候需要添加一些配置。然后关闭AS工程再打开就会自动加载。
A problem occurred evaluating project ':unityLibrary'.
> Could not get unknown property 'unityStreamingAssets' for object of type com.android.build.gradle.internal.dsl.AaptOptions$AgpDecorated.
unityStreamingAssets=.unity3d, google-services-desktop.json, google-services.json, GoogleService-Info.plist
4,更改gradle配置文件:
ndk {
abiFilters 'armeabi-v7a', 'arm64-v8a'
}
implementation project(path:':unityLibrary')
implementation fileTree(dir: project(':unityLibrary').getProjectDir().toString()+('\\libs'), include: ['*.jar', '*.aar'])
并在string.xml添加如下的代码
<string name="game_view_content_description">Game view</string>
5,重点!这里和网上别的博客有些不一样,需要特别注意
如果按照别的帖子,直接新建个activity,最后导出的安装会显示两个app。
大致意思就是,将主 Activity改为集成UnityPlayerActivity,再将其作为唯一启动函数,最后保证打出来的是一个包。
6,配置ndk路径
ndk.dir=路径
这里可以沿用Unity配置的路径
到这一步之后基本就可以打包了。
3,Android与Unity3D交互
这一步实际上有些老生常谈了,对于Unity方面:
var unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
var currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
//使用示例
currentActivity.Call("JuheGameStage",1000);//埋点
//回调示例
void JuheCall(string _str)
{
//1:成功;2:失败
Debug.Log("安卓传来初始化信息 : " + _str);
}
android方面:
public void JuheGameStage(int _id)
{
Log.e("Unity SDK :", "JuheGameStage");
}
//给Unity传值
private void JuheCallBack(String _sign,String _str)
{
UnityPlayer.UnitySendMessage("SDKManager", _sign, _str);
Log.e("Unity YofiJuhe SDK :", "JuheCallBack:"+_sign+" "+_str);
}