2016-07-05 8 views
1

私はUnity3Dを初めて使いました。すでにUnity3Dプロジェクトに組み込む必要のあるいくつかのプロジェクトをJavaで行っています。複数のjarを持つUnity3D(android jar + pure java lib)

Unity3Dプロジェクトに複数のjarファイルを追加したいのですが、jarファイルがUnityプロジェクトで動作しているときにjarファイルに依存関係がないように見えます。このため

  • 私は資産/プラグイン/ Androidのフォルダ(瓶のメソッドを呼び出すためのAndroidのjarファイルとフォルダ内の複数のいくつかの純粋なJavaのjarファイル)に関連するすべてのjarファイルを追加しようとしました

  • は、私は私は私のプロジェクトをビルドすることができ、これらの2つの方法で

(すべての付属のjarファイルでのAndroidプロジェクトを作成することで)唯一のjarファイルを作ってみましたAndroidベースのものですが、関連ライブラリが存在しないというエラーが表示されました

他のjarファイルに依存するUnity3Dプロジェクトに複数のjarライブラリを使用する方法はありますか?

つまり、この構造が必要です

|メインプロジェクト(統一)| - 依存性 - > | Jar lib 1 | - 依存性 - > | Jar lib 2 |

  • ジャーlibに1:私は直接
  • ジャーlibに2メソッドを呼び出す必要がありますライブラリ:1はlibライブラリが
+0

私はそれを忘れてしまいます**。それは単なるUnityのためではありません。あなたは何の利益も得られないほどの痛みを抱えています。 – Fattie

答えて

1

を使用していますが、私はUnity3Dに複数のjarライブラリを使用することができますどのような方法がありますプロジェクト 他の瓶に依存していますか?

no

お互いに依存するjarライブラリが多数ある場合は、それらを1つに結合する必要があります。はい、ジャーは1つに統合されなければなりません。そしてUnityがそれらにアクセスするために使用できるブリッジを作ることができます。

ジャーlibに1:私は直接

ジャーlibに2メソッドを呼び出す必要がありますライブラリ:1はlibライブラリはこのシナリオでは

を使用していますが、あなたがLibの2をインポートする必要がありますin Lib 1。次に、Lib 1で関数を作成し、Jarで関数を呼び出しますLib 2第1のリブリブ2を構築することができます。

Eclipseでプロジェクト - >すべてを構築。次に、それらを両方とも1つのjarファイルにエクスポートします。ここでも、Eclipseで、ファイル - >輸出... - >Javaの - >JARファイル。次に、Libsが表示されたら両方のLibsを選択します。

enter image description here

のJava:下の設定を使用し

// が

public class Lib2{ 
    public static Lib2 instance = new Lib2(); 

    public double getRandomNumber() { 
     double advancedRandomNumber = 5; 
     return advancedRandomNumber; 
    } 
} 

(これはこれで機能コードであると仮定します)のLib /ジャーからスタッフ// Lib/Jarのもの(com.roxy.app)パッケージ(Lets assu私これは

public class Lib1{ 
    public static Lib1 instance = new Lib1(); 

    public double getMagicRandomNumber() { 
     double advancedRandomNumber = 15; 
     return advancedRandomNumber; 
    } 

    //Bridge to access Stuff from jar 2 
    public double getExtraMagicRandomNumber() 
    { 
     return Lib2.instance.getRandomNumber(); 
    } 
} 

C#)と、その中に機能コードです:

private AndroidJavaClass androidClass; 
    private AndroidJavaObject androidFunction; 

    #if UNITY_ANDROID 
     if (androidClass == null || androidFunction == null) 
     { 
      androidClass = new AndroidJavaClass("com.roxy.app.Lib1"); 
      androidFunction = androidClass.GetStatic<AndroidJavaObject>("instance"); 
     } 
    #endif 

次にあなたがLib1からgetMagicRandomNumber()関数を呼び出すことができます。

double adRand = androidFunction.Call<double>("getMagicRandomNumber"); 

からLib2から関数を呼び出しますブリッジ機能はLib1で作成されました。

​​

これだけです。これは難しいことではありませんが、ではなくがコンパイルされる可能性があります。このエディタに直接入力したためです。マイナーな変更が必要な場合があります。

関連する問題