【问题标题】:Integrating .jar file in Unity3D在 Unity3D 中集成 .jar 文件
【发布时间】:2014-07-14 09:15:17
【问题描述】:

我创建了一个示例 android 项目,其中包含一个名为“MainActivity”的活动,并在此活动中创建了一个简单的静态和非静态函数。然后我把这个项目转换成LibraryProject,所以我在它的bin文件夹下找到了这个项目的jar文件。当我将此 .jar 文件和 AndroidManifest.xml 文件复制到 Unity 的 Assets/Plugins/Android 文件夹中时。静态函数和非静态函数都不会被调用。

using (AndroidJavaClass cls_UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
    {
        using (AndroidJavaObject obj_Activity = cls_UnityPlayer.GetStatic<AndroidJavaObject>("currentActivity"))
        {
            obj_Activity .CallStatic("showMap");
        }
    }

Android 代码是

public class MainActivity extends UnityPlayerActivity {

    com.google.android.gms.maps.MapView mapView;
    String apiKey="AIzaSyA-CxbAb1fA7QLJEvq1eSCSvHq9zh1mgEI";
    static WebView view;
    static LinearLayout layout;
    public static Context context;
    static LinearLayout.LayoutParams params=new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
      layout = new LinearLayout(this);       
    setContentView(layout);
    context=this;
}


public static void showMap()
{
    Log.d("looter", "google.com");
     view=new WebView(context);
     view.setLayoutParams(params);


     view.setWebViewClient(new WebViewClient() {
         public boolean shouldOverrideUrlLoading(WebView view, String url) {
           //  Log.i(TAG, "Processing webview url click...");
             view.loadUrl(url);
             return true;
         }

         public void onPageFinished(WebView view, String url) {
             //Log.i(TAG, "Finished loading URL: " +url);

         }

         public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {

         }
     });
     view.loadUrl("http://www.google.com");
     layout.addView(view);
}

【问题讨论】:

  • 调用函数时是否在 Eclipse 中收到任何日志消息?我怀疑 Unity 会发送一条消息说它找不到该函数,或者你会从你的函数中收到一条日志消息。

标签: java c# android plugins unity3d


【解决方案1】:

我怀疑您的问题可能与此行有关:

using (AndroidJavaClass cls_UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))

我怀疑该类返回 Unity 类而不是您的覆盖类,或者它可能返回该类但将基类保存为它的值。尝试使用您的包 ID 查找您的活动类别。例如com.yourcompanyname.yourClassName。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-24
    • 1970-01-01
    • 1970-01-01
    • 2011-12-06
    • 1970-01-01
    • 2015-02-25
    • 2014-01-03
    相关资源
    最近更新 更多