傻瓜式教程Unity与安卓交互

最近要用到这方面的知识,看了网上许多轿教程也没有实现,这边博主的文章写的十分不错,大家可以去看看
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目录下的如下位置:

 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文件,


把这里改正,就可以打包了。

猜你喜欢

转载自blog.csdn.net/w199753/article/details/80603942