我尝试在android studio中制作插件以在Unity中使用。如何在Unity中使用Java插件
所以我在android studio中制作了这个方法。
public class MainActivity extends UnityPlayerActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public static String SendMessage(){
return "Message";
}
}
和在Unity,
public class PluginWrapper : MonoBehaviour {
// Use this for initialization
void Start() {
TextMesh textMesh = GetComponent<TextMesh>();
var plugin = new AndroidJavaClass ("com.thewell_dev.beaconf.MainActivity");
textMesh.text = plugin.CallStatic<string> ("ReturnMessage");
}
}
使用sendMessage()方法在统一,使用AndroidJavaClass和CallStatic。
这是成功。
我可以通过统一检查设备中的消息。
但是,发生一个错误。
如果我改变这样的方法,
public class MainActivity extends UnityPlayerActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public String SendMessage(){
return "Message";
}
}
变化的SendMessage方法类型(静态字符串字符串)
和在Unity,
public class PluginWrapper : MonoBehaviour {
// Use this for initialization
void Start() {
TextMesh textMesh = GetComponent<TextMesh>();
var plugin = new AndroidJavaClass ("com.thewell_dev.beaconf.MainActivity");
textMesh.text = plugin.Call<string> ("ReturnMessage");
}
}
变化plugin.CallStaic到插件.Call
如果我只是删除静态,但它不返回任何结果。
https://docs.unity3d.com/kr/current/ScriptReference/AndroidJavaClass.html
我只是改变类型。但没有回报。
我想我错由AndroidJavaClass通话方法,
,但我无法找到它。
如果你了解它,请帮助我。
https://xinyustudio.wordpress.com/2015/12/31/step-by-step-指南为开发Android插件为unity3d-i/ – David
https://stackoverflow.com/questions/27550280/unity-call-android-function-from-unity 这是我觉得有点similer你的问题。 你也可以添加一个调试语句来检查logcat中该函数是否被调用 –
@David谢谢我试过了。 –