我嘗試在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謝謝我試過了。 –