菲特茶的程式筆記

紅色警戒2中除了自殺單位外,工程師是唯一用完就消失的單位。

【Unity】The referenced script (Unknown) on this behaviour is missing

最近在建置遊戲專案後,遊戲的log出現以下錯誤:

The referenced script (Unknown) on this behaviour is missing
The referenced script on this Behaviour (Game Object '') is missing!


乍看之下很容易理解就是附加在物件上的component消失了

也就是在物件上的component script被刪除了

20240125_001

不過這次遇到的狀況比較特別,不是檔案直接刪除

而是在Unity編輯器中正常,但建置出專案後遺失,最後找了一整天才找到這個錯誤

【git】Filename too long

在用SourceTree處理merge分支的時候,其他分支有一些超級長的檔名

資料夾的細分很多,導致路徑也十分長,使merge失敗

可以透過開始功能,以系統管理員打開Git Bash

20240119_001

輸入以下命令:
git config --system core.longpaths true

這樣一來就能順利解決!

----

相關文章:
Filename too long in Git for Windows

【git】core.quotepath

在用VC執行Unreal專案的時候出現了這樣的錯誤

未處理的例外狀況: System.ArgumentException: Path fragment '"Document/Unreal\347\233\270\351\227\234\347\264\260\347\257\200.xlsx"' contains invalid directory separators.

在 Tools.DotNETCommon.FileSystemReference.CombineStrings(DirectoryReference BaseDirectory, String[] Fragments)
在 Tools.DotNETCommon.FileReference.Combine(DirectoryReference BaseDirectory, String[] Fragments)
在 UnrealBuildTool.GitSourceFileWorkingSet.AddPath(String Path)
在 UnrealBuildTool.GitSourceFileWorkingSet.OutputDataReceived(Object Sender, DataReceivedEventArgs Args)
(下略)


發生原因是在我git版控的目錄下放了一個Excel的中文名稱檔案

然後我將這個檔案更改檔名或路徑都會使得專案沒辦法建置

即使這個中文名稱檔案根本不在程式專案的底下


因此我們需要讓中文名稱的檔名或路徑不需要轉譯

打開CMD命令提示列,然後輸入:

git config --global core.quotepath false

這樣即可成功解決,專案又可以建置了!

----

【SourceTree】remote: HTTP Basic: Access denied. The provided password or token is incorrect or your account has 2FA enabled

在SourceTree要Push到Gitlab上時發生錯誤,然後剛好同專案是有人想Clone,但弄不下來

git -c diff.mnemonicprefix=false -c core.quotepath=false --no-optional-locks push -v --tags origin main:main

remote: HTTP Basic: Access denied. The provided password or token is incorrect or your account has 2FA enabled and you must use a personal access token instead of a password. See https://gitlab.com/help/topics/git/troubleshooting_git#error-on-git-fetch-http-basic-access-denied

fatal: Authentication failed for 'https://gitlab.com/Name/project.git/'
Pushing to https://gitlab.com/Name/project.git

Completed with errors, see above.


照著指示所說的話,不斷測帳號跟密碼認證有沒有打錯的都沒有解決

最後發現竟然是因為SourceTree的自動更新功能更新了版本,然後Embedded的版本沒跟上的關係

----

【SourceTree】Git Push時發生error: RPC failed; curl 92 HTTP/2 stream 0 was not closed cleanly

在SourceTree要Push到Gitlab上時發生錯誤

error: RPC failed; curl 92 HTTP/2 stream 0 was not closed cleanly: PROTOCOL_ERROR (err 1)

發生錯誤看到訊息的時候有點錯愕,想說是不是遠端儲存庫怎麼了

想了一下可能是這次推送的容量較大,上傳的buffer不夠用而導致失敗

----

【Unreal】如何替換UMG與Widget的C++基礎類別

最近在做UE的UI與輸入互動事件

因為內建的UMG跟內建的Button不能滿足使用

所以要透過override覆寫類別,不過在替換類別的時候找蠻久的

像Unity只需要在組件上的Script改父類別就可以了

不過在Unreal中,UMG跟Widget的替換方式各有不同,以下將介紹怎麼替換

----

【Vtuber】Shoost介紹

20220927_001

這幾年Vtuber很紅,相關的支援工具接二連三的推出

這次來介紹一個已經不少Vtuber在使用的濾鏡工具Shoost

Shoost是由日本的MuRo所開發,一套以Unity製作的濾鏡軟體

可以截取其他開啟中的軟體畫面,然後加上後期效果,使畫面看起來更漂亮

只要到作者的Pixiv FANBOX支援金額500日元就可以使用

最近作者還開始用AI做背景,也是支援就可以下載,所以實在是蠻划算的啊

----

【Unreal】關於在Unreal使用IncredBuild加速編譯

最近工作需求都在用Unreal的原始碼版本

如果是遊戲專案的話,建置版的C++專案倒也還沒問題

不過如果是原始碼版本以4.27版本來說,光容量就佔了100GB...

然後建置完大約150GB,除了非常佔容量以外,編譯速度還極慢

因此大部份使用Unreal原始碼版本的開發團隊都會串聯公司區網的電腦用IncredBuild加速編譯

也就是所謂的分散式編譯

----