GameDesign 板


LINE

網頁版 https://yekdniwue.blogspot.com/2020/08/ue4CodeTrace1.html 俗話說的好 給他魚吃不如教他釣魚 今天要分享幾個我平常在用的技巧 心理建設 如果你是有程式背景,但是正在用blueprint(BP)開發。 那我會建議你要先幫自己做好心裡建設。 你在用的是開發原始碼的引擎, 遇到問題時應該儘量往引擎內部追, 不要馬上就找繞過(workaround)的方法或求救。 那樣作你很快就會想放棄,因為無法進步,遇到問題無法自救。 硬體設備 雖說是技巧心得,理論上要跟硬體無關,但是這個真的要講一下。 想追code一定要準備好2個螢幕以上, 至少一個螢幕是UE4 Editor,另一個是Visual Studio。 單螢幕的話光是切換視窗就亂掉了。 技巧分享 這裡面的技巧應該比較零散,所以可以跳著看。 不寫Code就直接顯示變數值在螢幕上 如果問我只能寫一條的話,我一定選這一條。 這個是我第一常用的技巧了,大部分我們想到要得知某一個值, 就是跑去Actor或是Component的Tick裡面下PrintString, 這樣資訊就會顯示在畫面上。如下圖。 [圖] 可是有的時候bug是機率出現的,好不容易bug發生了,想看某個值是否異常,但是當下卻 沒有埋PrintString,難道只能放棄了嗎? 其實沒有,引擎提供了強大的console command "DisplayAll", 讓我們可以直接拿到變數值並顯示於螢幕。如圖。 [圖] DisplayAll的使用方法是: DisplayAll [ClassName] [PropertyName] 大小寫無分別,所以可以不管大小寫。 ClassName的部份,可分為C++與BP class兩種。 如果你要追查的class是C++ class,那麼直接輸入C++的名稱就好, 但是要去除第一個字。例如 AActor應該輸入Actor 想知道movement移動速度的最大值可下 displayall charactermovementcomponent maxwalkspeed 如果你要追查的class是BP,那麼你要輸入[BP的名稱_C], 舉例來說 有一個BP名稱為BP_CodeTraceActor 裡面有一個變數是value 那麼要輸入的是 DisplayAll BP_CodeTraceActor_c value PropertyName的部份,只要這個變數有被定義為UPROPERTY,就可以拿到值。 BP所有的變數應該都有UPROPERTY,所以沒問題。 資料顯示出來後,我通常會搭配桌面錄影軟體搭配測試, 一有問題就可以把影片檔抓出來單格播放, 抓出異常的時間點,然後再回去想想問題可能出在哪裡。 故障排除 如果輸入之後畫面沒任何東西,建議先輸入一定會出現的指令確認 例如 diaplayall playercontroller spawnLocation 如果這樣看的到,那可能是你的class name打錯,系統找不到。 如果這樣還看不到,檢查一下自己的環境是不是Debug / Development, 還是有什麼東西關掉。 如果輸入之後畫面有字,但是沒有值(有綠色的字沒有紅色的字), 那可能是PropertyName打錯,建議檢查一下。 我宣布放棄DisplayAll列出來的資訊 只要執行Console Command DisplayClear 就可以了 DisplayAll使用條件限制與缺點 限制 DisplayAll只會在Debug以及Development顯示, 所以如果在Test跟Shipping是看不到的。 Dedicated Server因為沒有螢幕,所以也看不到。 但是如果Dedicated Server + SingleProcess模式的話, 畫面上會同時列出Server跟Client的值,很好用。 相反的Editor/ Packaged Development Game都看的到, 建議可以多加利用。 缺點 使用DisplayAll最大的缺點就是只能根據class列出, 沒有辦法針對某個class的某個實體(Instance)輸出。 所以class沒有選擇好的話就會列出過多資訊, 無法好好地做判斷。 另一個就是如果值在一個frame裡面會變動多次, 想要從DisplayAll抓出問題也沒辦法, 畢竟這個功能一個frame只會更新一次。 避免程式碼被Optimize造成中斷點失效 一般我們都是使用Development Editor在開發, 但是因為編譯器會做Code Optimization的關係, 有的時候中斷點會無效或異常。 經驗上有以下幾種現象會因為Code Optimize產生: 1. 斷點失效,雖然Visual Studio顯示該行有下斷點, 但是有執行卻不停。 2. 斷點下不到準確的行數,例如下在53行卻顯示斷點在55行。 3. 執行順序怪異,跳下後又跳上,或是直接跳過整段, 或是走到一半就離開函式。 4. 看不到變數值 下圖就是想看變數MutableThis內容看不到的範例。 [圖] 這個時候,如果真的非得知道這個值, 常見的解法就是加Log強制印出, 或是編譯DebugGame Editor, 或是Debug Editor等等。 但是我個人最常用的方式是直接使用Macro Define, 把想看的函式夾起來, 不用改DebugGame Editor或是Debug Editor。 範例如下 PRAGMA_DISABLE_OPTIMIZATION //Your codes here PRAGMA_ENABLE_OPTIMIZATION 下圖就是使用PRAGMA後可以成功拿到值的範例 [圖] 這個方法有幾個好處: 1. 編譯速度快,因為相當於改cpp code而已, 不像切換成DebugGame Editor, 如果先前沒有build過要等很久。 2. 省硬碟空間,切換成DebugGame Editor, 就會多出Debug版本的dll,吃掉硬碟空間。 3. 效能沒有受到犧牲,如果用DebugEditor的話, 整個編輯器會變得很慢,這個方法不會。 這個方法的缺點: 目前我使用到最大的缺點就是,這段PRAGMA要記得除錯完就刪掉, 不然這段程式碼都不會做Optimization,執行效能是會受到影響的。 然後有很少數的情況夾了還是有部分看不到, 這時候我就會直接夾整個cpp檔,通常就沒問題了。 其實還有一個缺點,就是這兩行我永遠背不起來, 每次都要去筆記本裡面複製貼上。 對我來說,這個方法沒什麼負擔跟缺點,很推薦大家學起來,推推! 下回預告 預計下個禮拜會分享第二集,是有關如何在UE4中使用中斷點的部份 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.120.146.90 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/GameDesign/M.1597807708.A.B8D.html
1F:推 metallican: 每次都超期待大大的文的 能學到許多東西 感謝大大 08/19 17:27
2F:推 coolrobin: 居然有display all這個指令... 學習了 m(_"_)m 08/19 21:16
3F:推 PathosCross: 實用技巧推 08/19 23:23
4F:推 strangechu: 我就是那個只會改Debug的人 學習了 08/20 10:18
5F:推 ConSeR: 感謝分享 08/21 09:31
6F:推 heavendemon: 正在學 感恩推 10/05 13:51







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Tech_Job站內搜尋

TOP