當(dāng)前位置:首頁 > IT技術(shù) > 編程語言 > 正文

【遠(yuǎn)程文件瀏覽器】Unity+Lua開發(fā)調(diào)試?yán)?br>2022-04-19 11:15:07

Remote File Explorer是一個(gè)跨平臺(tái)的遠(yuǎn)程文件瀏覽器,用戶通過Unity Editor就能操作運(yùn)行在手機(jī)上的游戲或是應(yīng)用的的目錄文件。比如當(dāng)項(xiàng)目打包運(yùn)行到設(shè)備上時(shí),可通過Remote File Explorer直接瀏覽設(shè)備上的目錄文件,并進(jìn)行下載,上傳,刪除等操作。尤其是Unity+Lua開發(fā)環(huán)境下的調(diào)試?yán)?,?dāng)然,這里的調(diào)試不是指代碼的逐行調(diào)試,而是泛指定位排查問題

用武之地

在很多場景下利用Remote File Explorer都可以極大的提高開發(fā)調(diào)試效率。例如:

  • 應(yīng)用真機(jī)上運(yùn)行時(shí)出現(xiàn)異常情況,推測可能是關(guān)鍵資源丟失導(dǎo)致。此時(shí)可以通過本工具直接瀏覽手機(jī)上的相關(guān)文件,查看關(guān)鍵資源是否存在
  • 通過本工具直接拉取手機(jī)上的日志文件或內(nèi)存分析文件等各類文件,從此告別數(shù)據(jù)線
  • 如果項(xiàng)目采用了XLua或SLua開發(fā),在真機(jī)開發(fā)調(diào)試時(shí),可通過本工具直接上傳修改后的Lua代碼,重啟應(yīng)用即可生效。從而避免每修改一次代碼就重新構(gòu)建一次應(yīng)用的繁瑣過程,大大提高調(diào)試效率

接下來,將以一些具體的案例,來演示Remote File Explorer工具的使用。下面用例的代碼都可以在Remote File Explorer Demo找到

用例1-無需重新打包修改代碼邏輯

  1. 客戶端打包,啟動(dòng)后,初始界面如下圖所示。其中"Hello, Wlrod"的文本故意拼寫錯(cuò)誤,用來演示如何不重新打包,通過Remote File Explorer來修復(fù)此錯(cuò)誤

  1. 在UnityEditor中,通過"Window > Remote File Explorer"打開Remote File Explorer工具窗口,通過Stats面板可以查看服務(wù)端IP

  1. 在客戶端輸入正確的服務(wù)端IP,然后點(diǎn)擊Connect。連接成功后Stats面板的State將顯示為"Established"

  1. 拼寫錯(cuò)誤是在這個(gè)文件changetextcontent.lua內(nèi)寫錯(cuò)的,如下所示修改文件內(nèi)容(主要是將"Hello, Wlrod"拼寫修正為"Hello, World")
local obj = CS.UnityEngine.Object.FindObjectOfType(typeof(CS.Game.ChangeTextColor))
local textComponent = obj:GetComponent(typeof(CS.UnityEngine.UI.Text));
textComponent.text = "Hello, World"
  1. 通過Remote File Explorer工具窗口,GoTo到Application.persistentDataPath目錄。這個(gè)目錄下的Lua文件將會(huì)被優(yōu)先加載(這是工程內(nèi)的Lua加載機(jī)制決定的,詳情可參考XLuaManager.cs

  1. 拖拽changetextcontent.lua文件上傳到該目錄。之后重啟客戶端,"Hello, Wlrod"的拼寫錯(cuò)誤將會(huì)被修復(fù)。完整的操作流程如下所示

  1. 另外,利用xLua的hotfix特性,還可以修改C#代碼的邏輯。例如,"Hello, World"文本的顏色是由C#代碼設(shè)置的紅色,可以通過修改changetextcontent.lua文件將文本設(shè)置為綠色,內(nèi)容如下所示
local obj = CS.UnityEngine.Object.FindObjectOfType(typeof(CS.Game.ChangeTextColor))
local textComponent = obj:GetComponent(typeof(CS.UnityEngine.UI.Text));
textComponent.text = "Hello, World"

xlua.hotfix(CS.Game.ChangeTextColor, "Start", function(self)
    self:GetComponent(typeof(CS.UnityEngine.UI.Text)).color = CS.UnityEngine.Color.green
    xlua.hotfix(CS.Game.ChangeTextColor, "Start", nil)
end)
  1. 之后同樣的操作,將文件上傳到Application.persistentDataPath目錄,重啟客戶端后,文本顏色將改變。完整的操作流程如下所示

用例2-直接拉取手機(jī)上的日志文件

  1. 如果某個(gè)固定文件會(huì)被頻繁拉取,比如日志文件或是性能分析文件??梢酝ㄟ^配置CustomMenuAttribute為該文件添加一個(gè)自定義拉取操作。以拉取日志文件game.log為例,新增一個(gè)CustomMenuAttribute修飾的方法
using UnityEngine;
using RemoteFileExplorer.Editor;

public class TestAttribute
{
    [CustomMenu("pull game log")]
    public static void PullLog(ManipulatorWrapper manipulator)
    {
        string remoteLogPath = manipulator.GetRemotePath("Application.persistentDataPath") + "/Logs/game.log";
        manipulator.Download(remoteLogPath, Application.dataPath.Replace("/Assets", "") + "/Logs/game.log");  // 將log文件下載到本地
    }
}
  1. 代碼添加后,重新打開Remote File Explorer工具窗口將出現(xiàn)"Custom"菜單,點(diǎn)擊該菜單后會(huì)執(zhí)行PullLog方法

  1. 連接建立成功后,通過"pull game log"操作可以一鍵拉取game.log文件。完整的操作流程如下所示

安裝

本工具是采用Unity的形式,可以通過Unity Package Manager直接安裝

這里介紹兩種常用方式

  • 打開"Window > Package Manager"窗口后,單擊狀態(tài)欄左側(cè)的"+"按鈕,選擇"Add package from git URL",然后在文本框中輸入本工具的git地址https://github.com/iwiniwin/unity-remote-file-explorer.git,單擊"Add"按鈕后完成安裝
  • 或直接克隆本工具到項(xiàng)目的"Packages"目錄下

詳細(xì)安裝方式可以查看使用文檔,更多將本工具作為包進(jìn)行安裝的方式可查看Unity官方文檔

使用

安裝本工具后,可通過"Window > Analysis > Remote File Explorer"打開本工具窗口,將自動(dòng)啟動(dòng)服務(wù)器

給項(xiàng)目的任意游戲?qū)ο筇砑?em>FileExplorerClient組件

如果是固定連接到某臺(tái)機(jī)器上,可直接通過Inspector面板在"Host"域輸入這臺(tái)機(jī)器的IP地址,然后勾選"Connect Automatically",則會(huì)在應(yīng)用啟動(dòng)時(shí)自動(dòng)連接

如果希望應(yīng)用啟動(dòng)后能主動(dòng)選擇連接到哪臺(tái)機(jī)器,則可在Debug模式下封裝一套簡單的UI,使開發(fā)人員能夠輸入想要連接到的IP地址。例如在自己的菜單中添加一個(gè)條目或按鈕,點(diǎn)擊后彈出輸入窗口。在成功獲取到的IP地址后,將其賦值給FileExplorerClient組件的"Host"屬性,然后調(diào)用FileExplorerClient組件的"StartConnect"方法開啟連接

也可以使用本工具自帶的一個(gè)簡易UI,給項(xiàng)目的任意游戲?qū)ο筇砑?em>FileExplorerWindow組件(此時(shí)不用再額外添加FileExplorerClient組件)

游戲啟動(dòng)后將自動(dòng)打開連接窗口

功能列表

詳細(xì)的圖文功能介紹請查看使用文檔

  • 通過狀態(tài)欄的"GOTO"可直接跳轉(zhuǎn)到Unity預(yù)定義的一些路徑
  • 通過單擊路徑欄可打開輸入框,以直接輸入路徑跳轉(zhuǎn)或復(fù)制當(dāng)前路徑
  • 右鍵所選中的文件夾或文件支持下載
  • 右鍵所選中的文件夾或文件支持刪除
  • 右鍵空白區(qū)域支持上傳文件夾或文件
  • 右鍵空白區(qū)域支持刷新當(dāng)前路徑的內(nèi)容
  • 支持直接從Unity Project窗口拖拽文件夾或文件到本工具上傳
  • 支持直接從系統(tǒng)文件瀏覽器拖拽文件夾或文件到本工具上傳
  • 通過本工具"status"面板可查看連接狀態(tài)以及已連接設(shè)備的信息,可用于辨別連接的是哪臺(tái)設(shè)備
  • 通過配置BeforeUploadAttribute自定義上傳時(shí)的額外操作,例如上傳lua代碼時(shí)自動(dòng)加密
  • 通過配置CustomMenuAttribute自定義操作菜單

鏈接

本文摘自 :https://www.cnblogs.com/

開通會(huì)員,享受整站包年服務(wù)立即開通 >