第一步先建个安卓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目录下的如下位置:
F:\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes
如下有个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文件,
把这里改正,就可以打包了。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删