❶ 如何進行Unity3D與android消息傳遞
1.Unity工程導出為Android Studio工程
(我個人用的U3D版本是5.1.1,已經支持直接將Unity工程導出為AS工程了,以前的版本我不敢保證.)
首先你要寫好Unity工程裡面的腳本,包括你希望Android調用的方法和調用Android方法的方法,這個在下面會有詳細敘述;接下來導出AS工程,方法是:
File裡面的Build Settings -> 平台選擇Android,在Player Setting裡面設置API版本和包名(包名很重要) -> 點擊Build Setting中的Google Android Project復選框 -> Export
2. AS打開導出的工程
首先隨便打開一個AS工程,然後FIle -> New -> Import Project -> 選剛才導出來的工程 -> 等待Gradle -> 以此工程為基礎繼續開發Android代碼
❷ Unity連接Android設備時的授權
授權是在設備已經開機且與電腦連接的狀態下,設備屏幕上顯示一個授權對話框,並且可以勾選一直信任,這樣以後設備再連接該電腦時就不需要再次授權了。
但授權對話框出現可能發生在兩個時機,具體何時本人不確定,需要自己排查。
剛剛把設備連接到電腦的時候。
連好設備後,在unity的Build Settings中,選中Platform中的Android,然後點Run Device一行中的Refresh,此時,設備端可能會顯示授權對話框。授權成功後,就可以在列表中看到連接的設備了。
❸ Unity3d與Android互相通信
-classes.jar
-UnityPlayerActivity.java
【注意19版本的unity把UnityPlayerActivity分離了,不在classes.jar包裡面了】
app-debug.aar為新文件名
C:UsersWinDesktopapp-debug 文件夾路徑
末尾 / . 不要漏掉
此處操作完即為最終需要導入到unity中的包
要使用真機才能跑哦
❹ Unity與Android的通信問題:Unity中調用Android的jar包後,Unity生成的apk安裝後找不到可運行的程序...
將Unity3D安裝目錄下的Unity\Editor\Data\PlaybackEngines\androidplayer\release\bin\classes.jar
拷貝到Android工程的libs文件夾里:
Unity3D:[3]Unity3D與Android交互的問題
右鍵單擊classes.jar選擇Build Path裡面的Add to Build Path:
Unity3D:[3]Unity3D與Android交互的問題
Unity3D:[3]Unity3D與Android交互的問題
在MainActivity中繼承UnityPlayerActivity。刪除多餘的方法,僅保留onCreate方法中的super.onCreate語句,如下:
public class MainActivity extends UnityPlayerActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
添加要在unity中調用的方法,這里添加一個帶一個參數的方法StartActivity來調用Android的Activity從而運行Android的代碼。還添加了一個有返回值的方法GetInt,用來測試在Unity中獲取android中方法的返回值。(貌似只能有一個UnityPlayerActivity,而且這個Activity不能是調用第三方SDK方法的Activity。UnityPlayerActivity只能作為Unity和Android交互的一個介面,在這裡面再去調用其他的Activity)
package com.example.unitydemo;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import com.unity3d.player.UnityPlayerActivity;
public class MainActivity extends UnityPlayerActivity {
private Context mContext = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mContext = this;
}
public void StartActivity(String name) {
Intent intent = new Intent(mContext, WelcomeActivity.class);
intent.putExtra("name", name);
this.startActivity(intent);
}
public int GetInt()
{
return 1;
}
}
❺ 如何進行Unity3D與Android消息傳遞
Unity與Android的相互調用及消息傳遞主要採取中間件的方式。
幫你歸類一下,大致如下:
創建Java項目
在Java項目中引入Unity提供的classes.jar包
編寫你自己的Java文件,同時引入com.unity3d.player.UnityPlayerActivity包
修改Manisest.xml文件
將項目導出Jar文件
在Unity中創建Plugins/Android目錄,將導出的Jar文件和Manisest.xml復制到Android目錄下
修改Unity中導出項目的包名
在項目中創建並實例化AndroidJavaClass對象,並實例化參數com.unity3d.player.UnityPlayer包
同時創建並實例化AndroidJavaObject對象,實例化參數為currentActivity
最後可以使用實例化的AndroidJavaObject.Call來調用Java中寫好的公有方法。
❻ 如何進行Unity3D與Android消息傳遞
Unity工程導出為Android Studio工程
首先要寫好Unity工程裡面的腳本,包括希望Android調用的方法和調用Android方法的方法,這個在下面會有詳細敘述;接下來導出AS工程,方法是:
File裡面的Build Settings -> 平台選擇Android,在Player Setting裡面設置API版本和包名(包名很重要) -> 點擊Build Setting中的Google Android Project復選框 -> Export
2. AS打開導出的工程
先隨便打開一個AS工程,然後FIle -> New -> Import Project -> 選剛才導出來的工程 -> 等待Gradle -> 以此工程為基礎繼續開發Android代碼
3. Android 調用 Unity 腳本中的方法
先對Unity腳本進行一點說明,以C#為例:
在OnStart()裡面要寫入
this.name = "A"
某個要調用的方法設置為public類型,名稱為B,參數為C
在一個Extend UnityPlayerActivity的Activity里,直接使用
UnityPlayer.UnitySendMessage("A","B","C");
就可以調用腳本中的方法了.
4.Unity腳本調用Android方法
要知道的是,在Unity腳本里寫調用安卓方法的時候,這個方法還不需要存在,也不需要把安卓的代碼壓成jar包放進Unity工程.但是,要調用的方法必須是靜態方法
剛說過的導出工程時候的包名很重要,假設是com.hu.solare;再假設在工程被導入到AS後,你在這個包中編寫了MainActivity.class,其中包含靜態方法onCall(String str).則你可以在Unity腳本中提前寫好:
AndroidJavaClass jc = new AndroidJavaCalss("com.hu.solare.MainActivity");
jc.callStatic("onCall","String")
即可調用onCall方法
❼ 如何進行Unity3D與Android消息傳遞
1.Unity工程導出為Android Studio工程
首先你要寫好Unity工程裡面的腳本,包括你希望Android調用的方法和調用Android方法的方法,這個在下面會有詳細敘述;接下來導出AS工程,方法是:
File裡面的Build Settings -> 平台選擇Android,在Player Setting裡面設置API版本和包名(包名很重要) -> 點擊Build Setting中的Google Android Project復選框 -> Export
2. AS打開導出的工程
首先隨便打開一個AS工程,然後FIle -> New -> Import Project -> 選剛才導出來的工程 -> 等待Gradle -> 以此工程為基礎繼續開發Android代碼
3. Android 調用 Unity 腳本中的方法
這里首先對Unity腳本進行一點說明,以C#為例:
在OnStart()裡面要寫入
this.name = "A"
某個你要調用的方法設置為public類型,名稱為B,參數為C
在一個Extend UnityPlayerActivity的Activity里,直接使用
UnityPlayer.UnitySendMessage("A","B","C");
就可以調用腳本中的方法了.
4.Unity腳本調用Android方法
首先你要知道的是,在Unity腳本里寫調用安卓方法的時候,這個方法還不需要存在,你也不需要把安卓的代碼壓成jar包放進Unity工程.
剛說過的導出工程時候的包名很重要,假設是com.hu.solare;再假設在工程被導入到AS後,你在這個包中編寫了MainActivity.class,其中包含方法onCall(String str).則你可以在Unity腳本中提前寫好:
AndroidJavaClass jc = new AndroidJavaCalss("com.hu.solare.MainActivity");
AndroidJavaObject jo=jc.GetStatic<AndroidJavaObject>("currentActivity");
jc.Call("onCall","String")
即可調用onCall方法.
❽ unity3d與android交互的sdk怎麼接
1、打開Android Studio——>configure——Android SDK。
注意事項:
SDK可能附帶了使其不能在不兼容的許可證下開發軟體的許可證。例如產品供應商提供一個專有的SDK可能與自由軟體開發抵觸。
❾ 如何進行Unity3D與Android消息傳遞
UnityTestActivity.java 主Activity ,提供一個介面方法StartActivity(),它是由Unity中調用
package com.xys;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import com.unity3d.player.UnityPlayerActivity;
public class UnityTestActivity extends UnityPlayerActivity {
/** Called when the activity is first created. */
Context mContext = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mContext = this;
}
public void StartActivity0(String name)
{
Intent intent = new Intent(mContext,TestActivity0.class);
intent.putExtra("name", name);
this.startActivity(intent);
}
}
接著是TestActivity.java 打開這個界面後,程序將在這里向Unity發送消息。
package com.xys;
import com.unity3d.player.UnityPlayer;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class TestActivity0 extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView text = (TextView)this.findViewById(R.id.textView1);
text.setText(this.getIntent().getStringExtra("name"));
final EditText edit = (EditText)this.findViewById(R.id.edit);
Button close = (Button)this.findViewById(R.id.button0);
close.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//注釋1
UnityPlayer.UnitySendMessage("Main Camera","messgae",edit.getText().toString());
TestActivity0.this.finish();
}
});
}
}
❿ Unity與Android交互
2、Android 書寫一個Activity類繼承UnityPlayerActivity
3、AndroidManifest.xml 配置Activity的meta-data屬性
4、項目類型配置成com.android.library 並編譯出來aar包
5、解壓aar包 提取如下文件一起導入到Unity項目Assets/Plugins目錄下
6、場景中添加Button組件 並創建一個C#腳本綁定到Button的父布局Canvas上
7、用VS編輯AndroidControl腳本
8、改Button位置 並且綁定Onclick對應的方法:
9、調試:加斷點、附加unity程序調試,unity運行
10、編譯:插入手機
11、真機演示