这是非常基本的,但我没有从官方的统一文档和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
且将此脚本把主相机。但我没有得到任何文字后面或文本对象没有改变,在模拟器运行时。这又如何解决呢?
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;
}
当你的插件团结工作的一些建议:
sourceSets
{
main
{
java
{
srcDirs = ['src']
srcDirs += ['E:/AndroidStudioProjects/PathToJavaClasses']
}
}
}
public class MyUnityPlayerActivity extends UnityPlayerActivity{
public void SendUnityMessage()
{
UnityPlayer.UnitySendMessage(UnityGameObjectName, UNITY_FUNCTION_NAME,
params);
}
}