这是非常基本的,但我并没有从官方的Unity和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被分配,这个脚本被放在主摄像机上。但是,在模拟器中运行时,我不会返回任何文本,也不会更改文本对象。如何解决这一问题?
发布于 2019-02-05 18:34:20
统一插件开发是有点棘手的建立在一开始,但一旦你能够,它是相当强大的。
几件事。
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;
}发布于 2019-02-06 08:12:57
有些建议是,当你使用插件来实现统一时:
https://stackoverflow.com/questions/54539169
复制相似问题