https://blog.csdn.net/zhangdi2017/article/details/65629589
我也是借鉴了这篇博主的文章,记录一下,方便以后再实使用别啥也不会
第一步先建个安卓studio工程
包名点击后面的Edit可以修改,最好修改为和Comany dimain一样,这样可以一些防止不必要的错误。
把视图切换为如下模式,方便找东西
第二部
点如上部分,进去发现有一个model里有一个app,选中app部分,点击上方的"-"可以将其删除,之后回到的目录,就可以把app文件夹彻底删除了。
然后在选中根目录,右键新建一个Model,接着会弹出一个界面,选择Android Library
然后next,又会出现一个界面
其他名字随便起,但包名还是不能变,要为一开始建项目时的。
第三步,在我们新创建的Model里配置AndroidManifest文件
点击开发现里面几乎空的,这当然是不行的
适当的加几句,如下
<meta-data android:name="unityplayer.UnityActivity" android:value="true" />
这句一定要有,要不然Unity打包的时候,Manifest文件回合Unity的合并,不加就会报找不到Manifest文件的错
至此,快完事了,再坚持一下
第四步写安卓端代码
先找到Unity目录下的如下位置:
如下有个classes.jar文件这是Unity为我们封装的一个jar包,有了它才能在安卓导入Unity中使用的一些包
然后找到如下目录,新建一个类
新创建一个类,名字随便起
之后可以写代码了
package com.shiguang.www; import android.app.Fragment; import android.os.Bundle; import com.unity3d.player.UnityPlayer; public class MyPluginClass extends Fragment{ private static final String TAG = "MyPlugin"; private static MyPluginClass Instance = null; private String gameObjectName; public static MyPluginClass GetInstance(String gameObject) { if(Instance == null) { Instance = new MyPluginClass(); Instance.gameObjectName = gameObject; UnityPlayer.currentActivity.getFragmentManager().beginTransaction().add(Instance, TAG).commit(); } return Instance; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setRetainInstance(true); // 这一句很重要,保存对该Fragment的引用,防止在旋转屏幕等操作时时丢失引用(Fragment隶属于Activity) } //示例方法一:简单的向Unity回调 public void SayHello() { UnityPlayer.UnitySendMessage(gameObjectName,"PluginCallBack","Hello Unity!"); } //示例方法二:计算传入的参数并返回计算结果 public int CalculateAdd(int one, int another) { return one + another; } }
然后安卓端完事了基本,之后就可以,进行Bulid操作了.
Build好的aar包直接就可以使用了,在如下位置,
如果点击了Build没有反应,可以点击顶端的绿色小锤子,他就会Build了
之后,又键aar包,
让他显示在文件夹中,把它后缀改为zip,点击进去,吧lib文件夹下的classes.jar删除掉,要不然UNity打包会报错,
之后在把后缀再改为aar,可以导入Unity了,必须放在Unity的如下目录
。
第五步,写Unity端的代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class NewBehaviourScript : MonoBehaviour {
public Text t;
private AndroidJavaObject jo;
public string className = "com.shiguang.www.MyPluginClass";
void Start()
{
jo = new AndroidJavaClass(className).CallStatic<AndroidJavaObject>("GetInstance", gameObject.name);
jo.Call("SayHello");
t.text = jo.Call<int>("CalculateAdd", 22, 33).ToString();
}
}
让结果显示在个Text上就可以看到了。最后打包就可以了,
但是如果你报了这个错误
那么还没有完,查看错误,我们会发现
,我们manifest文件中,这两个地方需要修改,修改如下,再找到aar包,再改成zip,找到manifest文件,
把这里改正,就可以打包了。