【发布时间】:2017-10-12 00:34:06
【问题描述】:
我尝试在 android studio 中制作一个插件以在 Unity 中使用。
所以我在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。
成功了。
我可以通过unity查看设备中的消息。
但是,发生了一个错误。
如果我像这样改变方法,
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 更改为 plugin.Call
以防万一,我只是删除了静态,但它没有返回任何结果。
https://docs.unity3d.com/kr/current/ScriptReference/AndroidJavaClass.html
我只是改变类型。但没有回报。
我认为我错误地通过 AndroidJavaClass 调用方法,
但我找不到它。
如果你知道,请帮助我。
【问题讨论】:
-
stackoverflow.com/questions/27550280/… 我认为这与您的问题有些相似。如果函数被调用,你还可以添加一个调试语句来检查 logcat
-
@David 谢谢我试过了。
-
@killer_mech 是的,我认为这是我的问题,但我找不到。
-
@PolarisNation 你检查过下面的答案了吗?很久以前我也有类似的问题,当时我正在开发统一的 android 插件并且不得不做 Arshia001 提到的类似的事情。一个建议是尝试将调试语句放入代码中,看看它在哪里停止。尝试在代码中添加静态方法并在其中添加调试语句。您还可以阅读有关如何创建插件/获取插件包并尝试调用该插件的更多信息。我看到一些教程提供了插件可能在谷歌中搜索那些。我认为这是我在当前信息中可以提供的最大帮助:(