2017-08-19 20 views
1

私は統一されていません。JavaからUnity関数を呼び出してください。

シンプルなキューブを作成し、テクスチャを重ねます。私はキューブを回転させる...カメラを移動し、アンドロイドスタジオにエクスポートします。私がすべてを動かすと、Unityのように見えます。

しかし、私はアンドロイドのスタジオコード(プログラミング線)からカメラやキューブを移動したいと私はにどのような方法を見つけることができません..「findViewById」や、私のキューブを見つけることができるように似:)

私はC#ファイル(資産フォルダ内の私は木枠1)を作成し、配置しよう:

public class test : MonoBehaviour { 
public GameObject respawn; 
void Start() { 

    Debug.Log("aaaaaaaaaaaaa1111111111111111"); 
    if (respawn == null) 
     respawn = GameObject.FindWithTag("mamaie"); 


    respawn.transform.Rotate(10f, 50f, 10f); 

} 

// Update is called once per frame 
void Update() { 
    transform.Rotate(10f, 50f, 10f); 
} 

void LateUpdate() 
{ 
    transform.Rotate(10f, 50f, 10f); 
} 
} 

をだから... ...どのように私は、プログラミングラインからの私のキューブ(ユニティに設計されており、Androidのスタジオにインポート)を制御することができますか?

答えて

1

UnityPlayer.UnitySendMessageでJavaからC#関数を呼び出すことができます。この機能にアクセスするために

UnityPlayer.UnitySendMessage("GameObjectName", "MethodName", "parameter to send"); 

、あなたのAndroid Studioプロジェクトに<UnityInstallDirectory>\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classesディレクトリからclasses.jarを含める必要があり、それをインポートします。

これは、パラメータがどのように見えるかですAndroid Studioプロジェクトでimport com.unity3d.player.UnityPlayer;と表示されます。

あなたのC#コード:

bool rotate = false; 

void startRotating() 
{ 
    rotate = true; 
} 

void stopRotating() 
{ 
    rotate = false; 
} 

void Update() 
{ 
    if (rotate) 
     transform.Rotate(10f, 50f, 10f); 
} 

はのは、上記のゲームオブジェクトに添付されたスクリプトは、 "キューブ" と呼ばれると仮定しましょう。

Javaから回転を開始するには、次のJavaからの回転を停止するには

UnityPlayer.UnitySendMessage("Cube", "startRotating", null); 

を:

UnityPlayer.UnitySendMessage("Cube", "stopRotating", null); 
+0

私はあなたが説明するようにやったけど、エラーを取得メートル:com.unity3d.player.UnityPlayerで。 UnitySendMessage(使用不可:-1);ブール型回転を変更し、デフォルトでtrueに設定し、実行後にデフォルトでは回転しませんでした –

+0

私のtext.csファイルは私のプロジェクトに "リンク"されていますか? UnitySendMessageを使用すると、* .csファイルの名前を何とか送信すると思いますか? –

+0

"null"のla 3-rdパラメータを ""に置き換えましたが、今はクラッシュしません。しかし、私は "SendMessage:objectキューブには関数startRotatingのレシーバがありません!" –

関連する問題