从团结Android插件访问方法

问题描述 投票:0回答:2

这是非常基本的,但我没有从官方的统一文档和YouTube视频教程实现它越来越成功,所以我问。

我要访问从已经取得AAR插件的方法。它作为Android的插件默认选中。该插件具有以下代码:

package alarm.company.com.unity;

public class myPlugin {

    public String myTest(int i){
        return "Hello your string number is: "+i;
    }

}

编译AAR插件被复制到统一的文件夹。下面是C#代码访问方法:

const string PluginName = "alarm.company.com.unity.myPlugin";
static AndroidJavaClass _pluginClass;
static AndroidJavaClass _pluginInstance;

public Text text;

// Start is called before the first frame update
void Start()
{

    AndroidJavaClass plugin = new AndroidJavaClass(PluginName);
    string s = plugin.CallStatic<string>("myTest", 9);
    print(s);
    text.text = s;

}

text且将此脚本把主相机。但我没有得到任何文字后面或文本对象没有改变,在模拟器运行时。这又如何解决呢?

android unity3d
2个回答
0
投票

Unity插件开发是一个有点棘手,在第一个拿到的设置,但一旦你能够是非常强大的。

两件事情。

1)您使用的是AndroidJavaClass并试图调用Java中的非静态方法。你在你的插件的方法,如果你想使用这个类应该是静态的。

2)否则,你将需要使用AndroidJavaObject来构建你的类,然后你应该能够调用你的函数。

希望这可以帮助!

例如使用非静态代码:

统一编码

   using (AndroidJavaObject leetPlugin = new AndroidJavaObject("alarm.company.com.unity.myPlugin")){
        string s = leetPlugin.Call("myTest", 9);
        print(s);
        text.text = s;
    } 

Android的代码

public void myTest(int value) {
   return "Your value is " + value;
}

0
投票

当你的插件团结工作的一些建议:

  1. 使用gradle这个构建系统。它产生于插件/ Android的mainTemplate文件。所以你不必产生AAR要构建每次可以编辑这个文件,并设置源Java代码Java类: sourceSets { main { java { srcDirs = ['src'] srcDirs += ['E:/AndroidStudioProjects/PathToJavaClasses'] } } }
  2. 如果你想发送Java代码的东西统一,你应该从团结和呼叫方法UnitySendMessage拓展业务 public class MyUnityPlayerActivity extends UnityPlayerActivity{ public void SendUnityMessage() { UnityPlayer.UnitySendMessage(UnityGameObjectName, UNITY_FUNCTION_NAME, params); } }
© www.soinside.com 2019 - 2024. All rights reserved.