【问题标题】:Not able to make calls to native android code in Unity3D无法在 Unity3D 中调用本机 android 代码
【发布时间】:2015-11-30 23:00:41
【问题描述】:

无法在 Unity 中调用本机代码

我很机智,那是在说些什么。似乎无论我做什么,我都无法成功地从 Unity 对一个 android 类进行交叉调用。我的 C# 课

 AndroidJavaClass soundActivityJavaClass;
     AndroidJavaObject soundActivityObject;
     string parse = "";
     // Use this for initialization
     void Start () {
         AndroidJNIHelper.debug = true;
         AndroidJNI.AttachCurrentThread();
         soundActivityJavaClass = new AndroidJavaClass("com.stuff.oro.UnityBridge");
         soundActivityObject = soundActivityJavaClass.GetStatic<AndroidJavaObject>("instance");
         parse = soundActivityObject.Call<string>("testBridge");

     }

     // Update is called once per frame
     void Update () {


     }

     void OnGUI()
     {
         if (GUI.Button(new Rect(300, 0, 100, 50), "Get mode..."))
         {
             AndroidJavaClass jc = new AndroidJavaClass("com.stuff.oro.UnityBridge");
             AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("instance");

             print(jo.Call<string>("testBridge"));
             Debug.Log(jo.Call<string>("testBridge"));
         }
     }

我目前的安卓类:

 public class UnityBridge extends UnityPlayerActivity{

     public static UnityBridge instance;
     public String testBridge(){
         return "this is a test";
     }
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         UnityBridge.instance = this;
     }

     public UnityBridge getInstance(){
         return instance;
     }

 }

任何帮助将不胜感激,我从无法编译到拥有

11-30 23:27:53.960: I/Unity(25864): AndroidJavaException: java.lang.NoSuchFieldError: no static field with name='instance' signature='Ljava/lang/Object;'在 Lcom/stuff/oro/UnityBridge 类中;

11-30 23:27:53.960: I/Unity(25864): 在 UnityEngine.AndroidJNISafe.CheckException () [0x00000] in :0

【问题讨论】:

    标签: java c# android unity3d


    【解决方案1】:

    对于任何想知道的人:

    基本上我从来没有能够在继承 UnityPlayerActivity 的类上专门调用非静态方法。最终我完全放弃了继承(这是可能的),如果我曾经处于需要实际活动(用于上下文等)的情况,我调用了 UnityPlayer.currentActivity

    希望这对某人有所帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-04
      • 1970-01-01
      • 1970-01-01
      • 2012-09-20
      • 1970-01-01
      • 2018-03-21
      • 1970-01-01
      • 2016-07-28
      相关资源
      最近更新 更多