国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Unity命令行模式,也能「日志實時輸出」

whjin / 2362人閱讀

摘要:類似這樣執行打印最終輸出的日志要想在命令行模式工作的時候,查看它的編譯進度,霖哥一般會遠程跑進執行編譯工作的機器,然后用命令,把它的日志實時輸出來嗯,這相當的不科學啊。我是霖哥,一個商學院畢業的程序員,一個游戲開發工程師。

如果你使用過Unity命令行模式(batchmode),來實現Unity自動化編譯構建,你肯定會踩過這樣的問題:

Unity的命令行模式,它只提供了一個-logfile參數,用于把日志輸出到日志文件,但卻沒有提供實時的日志輸出功能。

《點擊參考官方命令行文檔》

在這種情況下,我們執行Unity命令行程序,只知道了,Unity正在工作,但是,工作到什么進度,從它的Unity命令行程序的進程控制臺日志,是看不出來的。

對于我,折衷的辦法,會在自動化的編譯腳本里,在Unity命令行執行完畢以后,手動的使用文件打印命令(cat),把日志給打印出來。類似這樣...

# 執行Unity
/Applications/Unity/Unity.app/Contents/MacOS/Unity -batchmode -projectPath ~/UnityProjectPath -nographics -executeMethod GameEditor.BuildApp -logFile ~/UnityProjectPath/__kellylog.txt

# 打印最終輸出的日志
cat ~/UnityProjectPath/__kellylog.txt

要想在Unity命令行模式工作的時候,查看它的編譯進度,霖哥一般會遠程跑進執行編譯工作的機器,然后用tail -f命令,把它的日志實時輸出來...

tail -F ~/UnityProjectPath/__kellylog.txt

嗯,這相當的不科學啊。

當類似的情況一而再再而三地出現的時候,你可曾回想起,那作為軟件開發人員的最初夢想?——Don"t Repeat Yourself,消滅重復。

那有沒有更好的方法?可以實時地,在執行Unity命令行后臺程序的同時,進行日志輸出?

Python多線程

就像我們前面所說的:Unity命令行模式,日志輸出到文件中;同時,我平時使用tail -f命令,進行日志查看;

所以解決方法,很簡單,遵循這個思路,做一個小腳本:

這個腳本,調用Unity命令行模式執行,同時,實現類似tail命令的功能,實時打印日志

腳本語言的選擇,想要輕便、支持多線程、跨平臺,Python自然是最佳的選擇了。用Python的subprocess子進程模塊,就能輕松實現這樣的功能。

首先,使用subprocess調用Unity進程,并且實時輸出進程控制臺標準輸出的日志。

# 執行命令,子進程,并把進程控制臺日志,實時輸出
import subprocess

cmd = """
/Applications/Unity/Unity.app/Contents/MacOS/Unity -batchmode -projectPath ~/UnityProjectPath -nographics -executeMethod GameEditor.BuildApp -logFile ~/UnityProjectPath/__kellylog.txt
"""

process = subprocess.Popen(
    cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, cwd=project_path
)

while True:
    out = process.stdout.read(1)
    if out == "" and process.poll() != None:
        break
    if out != "":
        sys.stdout.write("[Unity process console output]: " + out)
        sys.stdout.flush()

然后,發起一個線程,使用python-tail模塊,實時把日志文件,進行抓取輸出。

import thread, tail
def tail_thread(tail_file):
    t = tail.Tail(tail_file)
    t.register_callback(unity_log_tail)
    t.follow(s=1)

thread.start_new_thread(tail_thread, ("~/UnityProjectPath/__kellylog.txt", ))

你看,其實很簡單的腳本,動動腦、動動手,就能實現達到目的,就一個子進程,加一個線程嘛

源碼

上面的只是不完整的一小段腳本技巧,完整的代碼可以直接使用,開源在GitHub:

unity_realtime_log | https://github.com/mr-kelly/unity_realtime_log

你可以跨平臺使用這個腳本,制定Unity的路徑(-unity),工程路徑(-project),和需要執行的C#方法(-method)。

Windows:

unity_realtime_log.bat -unity C:UnityUnity.exe -project C:UnityProjectPath -method GameEditor.BuildMethod

Mac:

unity_realtime_log.sh -unity /Applications/Unity/Unity.app/Contents/MacOS/Unity -project ~/UnityProjectPath -method GameEditor.BuildMethod

或者直接執行Python:

python unity_realtime_log.py -unity C:UnityUnity.exe -project C:UnityProjectPath -method GameEditor.BuildMethod

這樣用,就相當于給Unity命令行程序,外掛上了實時日志輸出的功能啦。

以上,希望對你有幫助。

我是霖哥,一個商學院畢業的程序員,一個Unity3D游戲開發工程師。
如果覺得有用請點贊,轉載請注明出處。
如果在了解或學習編程的過程中有迷惘、或對一些生澀的科技概念的不解,評論里留下你的疑惑!

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/38555.html

相關文章

  • Linux 下 4 種實時監控日志文件方法

    摘要:通常服務器上的日志都是輪轉日志。下面例子演示了如何同時顯示兩個日志文件。另一個類似的命令是,也能實時監控多個文件。使用同時查看兩個日志的方法如下最后你可以用命令查看日志文件,然后按下也能實時查看日志內容。在 Linux 下如何才能實時查看日志內容呢?有很多工具可以幫助我們在文件持續修改的同時輸出文件內容,最常用的莫過于 tail 命令 了。1. tail Command – Monitor ...

    Tecode 評論0 收藏0
  • 游戲開發

    摘要:工欲善其事必先利其器游戲環境對比發表算法在游戲上超過人類之后,游戲研究迅速成為了研究熱點。當然這不是網絡游戲服務器架構概述一架構模型現代電子游戲,基本上都會使用一定的網絡功能。 每個程序員都需要知道一些游戲網絡知識 本文主要針對游戲的網絡設計,在文章中目前主流的網絡游戲實現方案都有講解。從Peer-to-Peer 幀同步,客戶端/服務器(c/s架構),客戶端預測(Client-Side...

    Enlightenment 評論0 收藏0
  • 推薦一款阿里開源的 Java 診斷工具,好用到爆!

    摘要:是什么鬼是一款阿里巴巴開源的線上診斷工具,功能非常強大,可以解決很多線上不方便解決的問題。診斷使用的是命令行交互模式,支持,操作系統,命令還支持使用鍵對各種信息的自動補全,診斷起來非常利索。顯示當前系統的實時數據面板,按即可退出。 Arthas是什么鬼? Arthas是一款阿里巴巴開源的 Java 線上診斷工具,功能非常強大,可以解決很多線上不方便解決的問題。 Arthas診斷使用的是...

    Rango 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<