我們在使用Unity開發安卓游戲的時候,雖然可以很方便的在編輯器里直接啟動查看運行效果,但是編輯器的環境始終比不上真機顯示來的直接,而且有些操作,類似多點觸控等等操作,必須要在手機端才能觸發,如果我們不想一遍遍的編譯apk安裝到手機上的話,Unity Remote會是一個很好的選擇。
注意:Remote在手機上的運行結果並不能取代打包安裝之后運行的結果,他只是將編輯器的顯示圖像同步到了手機上,並通過手機接收輸入而已。所以開發完成之后,還是要按照完整的流程進行測試。
1)使用Unity Remote的第一步是自己的機器上安裝Android SDK和你使用手機的驅動。SDK下載地址請自行baidu,手機驅動一般可以在對應品牌的官網找到。這里要注意,如果你的手機系統版本是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打出的所有日志信息。
目前貌似不支持斷點調試,但可以通過日志打印(logcat)來跟蹤。
在android SDK中有個adb工具,使用此工具來跟蹤運行的android應用:
- adb logcat
啟動logcat,並將設備上運行的android應用的運行時信息全部打印出來。
- adb logcat -s Unity
如果只想打印Unity的輸出信息,使用此命令。
- adb logcat -d > logcat.txt
將打印信息輸出為文件。
清除adb logcat緩存
- adb logcat -c
當然,更直接的做法是在應用中集成自己的調試信息窗口,將如下代碼關聯到一個gameobject:
- <p>using UnityEngine;
- using System.Collections;</p><p>public class GuiTextDebug : MonoBehaviour
- {
- private float windowPosition = -440.0f;
- private int positionCheck = 2;
- private static string windowText = "";
- private Vector2 scrollViewVector = Vector2.zero;
- private GUIStyle debugBoxStyle;
- private float leftSide = 0.0f;
- private float debugWidth = 420.0f;
- public bool debugIsOn = false;
- public static void debug(string newString)
- {
- windowText = newString + "\n" + windowText;
- UnityEngine.Debug.Log(newString);
- }
- void Start()
- {
- debugBoxStyle = new GUIStyle();
- debugBoxStyle.alignment = TextAnchor.UpperLeft;
- leftSide = 120;
- }
- void OnGUI()
- {
- if (debugIsOn)
- {
- GUI.depth = 0;
- GUI.BeginGroup(new Rect(windowPosition, 40.0f, leftSide, 200.0f));
- scrollViewVector = GUI.BeginScrollView(new Rect (0, 0.0f, debugWidth, 200.0f),
- scrollViewVector,
- new Rect (0.0f, 0.0f, 400.0f, 2000.0f));
- GUI.Box(new Rect(0, 0.0f, debugWidth - 20.0f, 2000.0f), windowText, debugBoxStyle);
- GUI.EndScrollView();
- GUI.EndGroup ();
- if (GUI.Button(new Rect(leftSide, 0.0f,75.0f,40.0f), "調試"))
- {
- if (positionCheck == 1)
- {
- windowPosition = -440.0f;
- positionCheck = 2;
- }
- else
- {
- windowPosition = leftSide;
- positionCheck = 1;
- }
- }
- if (GUI.Button(new Rect(leftSide + 80f,0.0f,75.0f,40.0f),"清除"))
- {
- windowText = "";
- }
- }
- }
- }
- </p>