當前位置:首頁 » 安卓系統 » unityandroidremote

unityandroidremote

發布時間: 2022-08-17 00:07:06

『壹』 unity3d remote 怎麼用

控制角色移動播放動作或者其他邏輯則需要給這個橘色節點綁定邏輯腳本,UNity支持多種腳本語言,在此是用java腳本. 創建 腳本Assets --> Create ----> JavaScript 創建一個空的邏輯腳本,並將這個腳本綁定在主角對象身上,綁定方式是直接拖拽到主...

『貳』 unity項目如何導入android項目中成為安卓項目中的一部分

1.Android端代碼可以在Eclipse中開發(AndroidStudio沒有試,應該也可以)

2.Unity3D端代碼要在Unity中開發

3.Android和Unity3D端,兩邊都需要加入一些代碼從而可以使之關聯交互。

4.將Android端代碼編譯成jar文件以插件形式放入到Unity端中

5.在Unity中將整個項目Build成apk文件,然後安裝到手機或模擬器里運行

本文主要講解1,2,3。對於4,5建議大家去看雨松MOMO的Unity博客的第17篇和第18篇。

UnityPlay:

在編寫Android端和Unity3d端代碼前,有必要先了解一下可以使兩部分交互的類UnityPlay。

個人理解UnityPlay是個Unity提供給外部交互的一個介面類。

為什麼是「個人理解」?這我不得不爆粗口了,TMD官網根本就沒有相關的API和文檔(如果大家有誰找到一定給我來一份,就當我罵自己了)。

在關聯Android時,想拿到UnityPlay以及相關類的jar包可以從下面的地址找到:Unity安裝路徑\Editor\Data\PlaybackEngines\androidplayer\bin在bin文件夾下有一個classes.jar的jar文件,它就是我們想要的。

而在bin同目錄下有一個src文件,點擊到最後有3個類,分別是UnityPlayerActivity.java,UnityPlayerProxyActivity.java,UnityPlayerNativeActivity.java。前兩個打開個後只有一行代碼,說的是UnityPlayerActivity和UnityPlayerProxyActivity都繼承自UnityPlayerNativeActivity。而打開UnityPlayerNativeActivity中居然有代碼,而且我估計這應該是UnityPlayerNativeActivity的源碼

由於關於UnityPlay的資料我只找到這么一個,所以我把UnityPlayerNativeActivity中的代碼都貼出來,如果我註解有不對的地方希望大家指正。

/**
* UnityPlayerActivity,UnityPlayerProxyActivity都繼承自UnityPlayerNativeActivity
* 而UnityPlayerNativeActivity繼承自NativeActivity
* 在該類里定義了一些和ANDROID生命周期相同的回調方法,留給自定義的Activity子類重寫。
*/
public class UnityPlayerNativeActivity extends NativeActivity
{
//UnityPlayer的引用,並且我們不能改變這個引用變數的名字,它被native code所引用
protected UnityPlayer mUnityPlayer;

protected void onCreate (Bundle savedInstanceState)
{
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
// 設置顯示窗口參數
getWindow().takeSurface(null);
setTheme(android.R.style.Theme_NoTitleBar_Fullscreen);
getWindow().setFormat(PixelFormat.RGB_565);

// 創建一個UnityPlayer對象,並賦值給全局的引用變數
mUnityPlayer = new UnityPlayer(this);
//為UnityPlayer設置一些參數
if (mUnityPlayer.getSettings ().getBoolean ("hide_status_bar", true))
getWindow ().setFlags (WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);

int glesMode = mUnityPlayer.getSettings().getInt("gles_mode", 1);
boolean trueColor8888 = false;
// UnityPlayer.init()方法需要在將view附加到layout之前調用。它將會調用native code
mUnityPlayer.init(glesMode, trueColor8888);

// 從UnityPlayer中獲取到Unity的View視圖
View playerView = mUnityPlayer.getView();
// 將Unity視圖載入到根視圖上
setContentView(playerView);
// 使Unity視圖獲取焦點
playerView.requestFocus();
}
protected void onDestroy ()
{
// 當Activity結束的時候調用UnityPlayer.quit()方法,它會卸載之前調用的native code
mUnityPlayer.quit();
super.onDestroy();
}

// 下面幾個方法都是ANDROID相關回調方法,確保在ANDROID執行相應方法時UnityPlayer也需調用相應方法
protected void onPause()
{
super.onPause();
mUnityPlayer.pause();
}
protected void onResume()
{
super.onResume();
mUnityPlayer.resume();
}

public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
mUnityPlayer.configurationChanged(newConfig);
}
public void onWindowFocusChanged(boolean hasFocus)
{
super.onWindowFocusChanged(hasFocus);
mUnityPlayer.windowFocusChanged(hasFocus);
}
public boolean dispatchKeyEvent(KeyEvent event)
{
if (event.getAction() == KeyEvent.ACTION_MULTIPLE)
return mUnityPlayer.onKeyMultiple(event.getKeyCode(), event.getRepeatCount(), event);
return super.dispatchKeyEvent(event);
}
}
看完這個類後就知道了為什麼在自定義的Activity中繼承了UnityPlayerActivity等類以後,只要重寫了onCreate並調用super.onCreate()方法後不需要任何其他的代碼就會自動的顯示出Unity3D的視圖。因為初始化Unity視圖的代碼都在UnityPlayerNativeActivity父類中實現了。

ANDROID端代碼:

在寫ANDROID代碼的時候,一定要導入Unity3D提供給我們的jar包,jar包的位置我在上面說了。引入jar包加入到buildpath中這些最基本的我就不多說了。

要想和Unity交互,我們就不能繼承ANDROID提供給我們的Activity,我們需要繼承剛才jar包中引入的Unity提供的Activity類,一共有這么3個:

UnityPlayerActivity,UnityPlayerProxyActivity,UnityPlayerNativeActivity。具體區別不知道,因為沒有文檔,沒有API,沒有源碼(這里再次鄙視一下)。剛才我們看過UnityPlayerNativeActivity的代碼(雖然很短,但我覺得這個就是源碼),知道UnityPlayerActivity,UnityPlayerProxyActivity都是它的子類,而且最終父類為NativeActivity。所以我們繼承Unity提供的最外層的子類是最好的選擇,我這里選擇的是UnityPlayerActivity,因為名字最簡單,覺得該封裝的都應該封裝好了。

public class MainActivity extends UnityPlayerActivity {

private Button topButton;
private Button bottomButton;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

// 設置test為我們的根布局
setContentView(R.layout.test);

// 通過剛才的源碼分析,知道mUnityPlayer為一個全局的引用變數,而且已經在父類中設置好了,所以直接拿來用就可以了
View playerView = mUnityPlayer.getView();
// 將Unity的視圖添加到我們為其准備的父容器中
LinearLayout ll = (LinearLayout) findViewById(R.id.unityViewLyaout);
ll.addView(playerView);

// 上面的button設置監聽器
topButton = (Button) findViewById(R.id.topButton);
topButton.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
//發送消息給Unity端,該函數第一個參數為接受消息的類對象,第二個該類對象用接受消息的方法,第三個參數為傳遞的消息
//所以下面的意思就為:調用Main Camera下面的Previous方法,傳送的消息為空
UnityPlayer.UnitySendMessage("Main Camera","Previous","");
}
});

// 為下面的button設置監聽器
bottomButton = (Button) findViewById(R.id.bottomBtn);
bottomButton.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
//調用Main Camera下面的Next方法,傳送的消息為空
UnityPlayer.UnitySendMessage("Main Camera","Next","");
}
});
}
}
最後看一下Android端的布局文件,布局很簡單,上下各有一個button按鈕,兩個按鈕中間是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常用插件有哪些

1. NGUI,這個不用多說,上官網:
2. FingerGestures,顧名思義,這個是支持移動設備所有觸摸事件的插件,包括點擊,滑動,還有自定義手勢等等,
3. EasyTouch,也是用於移動平台上的RPG類的游戲,這里有篇文章,簡單介紹了一下該插件
4. ShareSDK,功能強大的分享插件,支持一鍵分享並且配置起來十分簡單,目前絕大多數的社交軟體都支持,並且他們官方的文檔寫得特別清楚而且如果注冊用戶的話,還會有技術支持,官方文檔:
5. AndroidRemote,這個主要用於安卓平台和電腦聯調,省去了每次測試都要重新打包的麻煩,
6. NGUI_HUD_Text,這個用於游戲里血條的變化
7. 2dToolKit,是一款2D開發組件,它具有很強的靈活性,可以讓開發者在Unity中進行2D開發,
8. PlayerMaker,是一個可視化腳本工具,開發者可以使用它很快的完成游戲原型製作,能夠大大的提高開發效率,讓你的游戲更加完美,
9. PathologicalGames,用於絕大多數的曲線操作
10. FxMaker,側重於unity里的粒子特效系統,這款插件提供了眾多特效資源和效果預覽,玩家可以隨意組裝效果並最終合成一個預設自己使用
11. Magical FX,魔法特效包
12. water.unitypackage,這是一款用於水的插件,性能還比較高,用於移動設備也沒問題,彌補了專業版的unity水特效資源在移動設備卡機的不足
13. LitJson,看名字就知道,這是用於Json操作的一些API
14. icsharpcode-SharpZipLib,用於解壓縮, ZipLib組件與.net自帶的Copression比較,在壓縮方面更勝一籌,經過BZip2壓縮要小很多,而且這個功能更加強大。
15. unity-lzma,也是一款用於壓縮和解壓文件的庫,它是一個開源的類庫,有C、 C++、C#、JAVA的類庫,Unity裡面我們自然要使用C#的類庫,

『伍』 unity3d與android交互的sdk怎麼接

1、打開Android Studio——>configure——Android SDK。

注意事項:

SDK可能附帶了使其不能在不兼容的許可證下開發軟體的許可證。例如產品供應商提供一個專有的SDK可能與自由軟體開發抵觸。

『陸』 求助關於unity remote,無法使用

試試看:
step 1 - Download Android SDK
Step 2 - In the SDK installer ensure you install "Google USB Drivers"
Step 3 - Go to device manager and make sure your device has its drivers installed. You can get more help here.
Step 4 - In Unity under preferences set the path to the Android SDK. C:\Program Files (x86)\Android\android-sdk or something similar.
Step 5 - Close Unity
Step 6 - On your android device ensure that in Application Settings that USB Debugging, Stay Awake and Allow Mock Locations are all enabled.
Step 7 - Connect via USB and launch the remote app.
Step 8 - Launch Unity
Step 9 - Run your game in the editor
Step 10 - Enjoy

或者你沒有dl你電話的驅動

『柒』 unity remote慢

打開Unity Remote就可以直接在手機上獲取到游戲畫面,當然,肯定是會有延遲的,由於平台的不同幀數也會有變化
Unity Remote是安裝在移動端的一個應用程序,支持Android和iOS平台。用法也還算簡單,直接把手機連接到電腦上,然後打開Unity Remote就可以直接在手機上獲取到游戲畫面,當然,肯定是會有延遲的,由於平台的不同幀數也會有變化。不過重點在於Unity還可以從手機上獲取到陀螺儀,加速器和多點觸控等參數,所以比起直接打包成apk安裝測試還是要方便一點。

『捌』 如何在Unity中對程序進行 Android 真機斷點調試

我們在使用Unity開發安卓游戲的時候,雖然可以很方便的在編輯器里直接啟動查看運行效果,但是編輯器的環境始終比不上真機顯示來的直接,而且有些操作,類似多點觸控等等操作,必須要在手機端才能觸發,如果我們不想一遍遍的編譯apk安裝到手機上的話,Unity Remote會是一個很好的選擇。
注意:Remote在手機上的運行結果並不能取代打包安裝之後運行的結果,他只是將編輯器的顯示圖像同步到了手機上,並通過手機接收輸入而已。所以開發完成之後,還是要按照完整的流程進行測試。
1)使用Unity Remote的第一步是自己的機器上安裝Android SDK和你使用手機的驅動。SDK下載地址請自行,手機驅動一般可以在對應品牌的官網找到。這里要注意,如果你的手機系統版本是4.1以上的,請將SDK中的adb升級至最新版本,目前最新版本為1.0.31,否則在adb連接手機的時候會出現設備始終offline的情況。
上面這些東西全部安裝完成之後,檢測是否安裝正確的方法是通過SDK中adb程序來檢測(在SDK目錄platform-tools文件夾下),在控制台中進入到adb程序所在的目錄後輸入 adb devices 命令,如果看到設備正常連接,即所有準備工作安裝就緒。
注意:如果你的電腦上裝有類似豌豆莢之類的PC端手機管理軟體,請在任務管理器中將他們全部關閉,因為類似軟體會劫持adb進程導致其無法正常工作。
2)關閉手機wifi(重要),打開手機的USB調試功能,在手機端安裝Unity Remote 並運行。
3)啟動Unity並在編輯器中直接點擊Play,不出以外的話你將會看到手機屏幕上也出現了相同的畫面。

上面我們介紹了不打包的情況下怎麼在手機上看到運行結果,這畢竟不能代替真正的運行環境。有可能打包發布運行之後還會在手機上出現各種各樣的問題,下面我們就將介紹如何在手機程序運行時查看Unity的日誌文件。
其實,Unity在Android手機中運行時的所有日誌可以通過Logcat捕獲到,我們還是可以通過adb工具很方便的在pc上看到游戲運行時打出的Log信息。
1)首先第一步是在保證各種安裝環境都正常的情況下鏈接手機並運行游戲。
2)輸入adb logcat -s Unity 即可看到游戲運行過程中通過Debug.log打出的所有日誌信息。

『玖』 unity3d怎麼調用android

unity 是一個多平台的游戲引擎。由於他的多平台,可視化的特點,受到了程序員們的關注。但是,unity也有缺陷。在發布android平台應用時,unity不能方便的調用android的介面。這樣我們就只能通過android編程調用android介面。所以我們需要在Unity中調用Android的JAVA代碼。接下來我將教大家,如何在unity中調用Android的JAVA代碼。
http://jingyan..com/article/af9f5a2d03235043140a4509.html

熱點內容
編程好軟體 發布:2025-01-16 20:38:07 瀏覽:423
流量密碼如何改成 發布:2025-01-16 20:37:13 瀏覽:50
java判斷是否是對象 發布:2025-01-16 20:31:04 瀏覽:885
python調用外部程序 發布:2025-01-16 20:14:09 瀏覽:397
緩解壓力英語作文 發布:2025-01-16 20:13:31 瀏覽:65
javaname 發布:2025-01-16 20:13:15 瀏覽:22
用戶訪問表空間 發布:2025-01-16 20:07:07 瀏覽:944
java代碼自動編譯 發布:2025-01-16 19:58:14 瀏覽:314
編程很困難 發布:2025-01-16 19:58:09 瀏覽:674
gg登錄源碼 發布:2025-01-16 19:58:07 瀏覽:293