时间:2022-11-04 09:53:37 | 栏目:Android代码 | 点击:次
最近需要将 unity 导出工程 嵌入到 android 工程
1,android studio 2021.1.1.1
2, unity 2021.2.4
1,

2,

1,

2,导出结果 unityLibrary 就是我们想要的结果 launcher 暂时用不上

3, 在android 工程中

4,选择unitylibarary 目录

5,

6,更改 app gradle配置文件:
implementation project(path:':unityLibrary')
implementation fileTree(dir: project(':unityLibrary').getProjectDir().toString()+('\\libs'), include: ['*.jar', '*.aar'])
ndk {
abiFilters 'armeabi-v7a', 'arm64-v8a'
}

7,删除manifest配置

8, 在 gradle.property 添加配置 不加这个会报错
unityStreamingAssets=.unity3d, google-services-desktop.json, google-services.json, GoogleService-Info.plist

9,添加 value值 不加也会挂掉

<string name="game_view_content_description">Game view</string>
10,调用

Button myBtn= findViewById(R.id.button);
myBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,UnityPlayerActivity.class);
startActivity(intent);
}
});
android 调用 c#
package com.xingame.unitycallandroid;
import android.os.Bundle;
import android.widget.Toast;
import com.unity3d.player.UnityPlayer;
public class MainActivity extends UnityPlayerActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
}
//unity调用Android
public void UnityCallAndroid () {
Toast.makeText(this,"unity调用android成功", Toast.LENGTH_LONG).show();
AndroidCallUnity();
}
//android调用unity
public void AndroidCallUnity () {
//第1个参数为Unity场景中用于接收android消息的对象名称
//第2个参数为对象上的脚本的一个成员方法名称(脚本名称不限制)
//第3个参数为unity方法的参数
UnityPlayer.UnitySendMessage("receiveObj", "UnityMethod", "This is args.");
}
}
c# 调用 java
private void OnBtnClickHandler()
{
using (jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer")){
using (jo = jc.GetStatic<AndroidJavaObject>("currentActivity")){
jo.Call("UnityCallAndroid");
}
}
}