2026年7月29日 星期三

UE5.7 的Landscape材質貼圖問題

Landscape的material如果Texture Sample Parameter 2D取名為HeightMap並使用在Base Color或Normal時,Editor內會出現如下的畫面問題。

原因應該是HeightMap這個字在產生Shader code時有撞到這個關鍵字。

2026年7月14日 星期二

UE5.8 build from source code會用掉一堆硬碟空間

最近抓了UE5.8程式碼下來自己build一下,結果出現大量類似的錯誤:

 Compile [x64] Module.CoreUObject.1.cpp: Exited with error code 9666. This action will retry without UBA

更慘的是,我丟下去build之後跑去睡覺,一早起來發現失敗,檢查之後才知道是整個UE資料夾用掉了700多GB,導致整個硬碟沒有空間才build失敗。

後來簡單的解決方法是到引擎目錄跟 %APPDATA%\Unreal Engine\UnrealBuildTool\ 裡面的BuildConfiguration.xml加上
<BuildConfiguration> 
    <bAllowUBAExecutor>
        false
    </bAllowUBAExecutor> 
</BuildConfiguration>
直接關閉UBA就可以正常build好UE了。
至於原因,不是很清楚....

參考資料

2026年6月24日 星期三

Unity 6 的MCP小坑

依照Unity官方的文件試驗MCP功能:
https://unity.com/cn/blog/unity-ai-mcp-how-to-get-started

這時卻一直出現capacity limit 的錯誤,問AI問半天沒像樣的回答,只能遵照古法問Google,在以下連結得到大概的答案,看來是被Unity擋掉。有人是付費給Unity AI解決,有人寫個Power shell script處理,也有人直接退到舊的版本2.6.0。
https://discussions.unity.com/t/unity-ai-assistant-2-7-0-mcp-server-capacity-limit/1718606/9

我直接先退到2.6.0,現在可以正常跑了。


論壇中有人抱怨我已經花錢用了Claude之類的,接Unity 的MCP居然還要另外花錢訂閱,有人回說可能只是bug吧以後就會修回來,下面就有人吐槽說他們可是有把介面改深色模式要付錢的歷史,不奇怪啦。這篇討論時間是AI Assistent 2.7.0,我試過2.9.0跟當下(2026.06.24)最新的2.12.0都還是有問題,我看可能真的是非要收錢不可?

2026年6月20日 星期六

UE5.8 的MCP小坑

這兩天UE5.8出了,想必很多人會想試試用AI直接建場景之類的,我當然也是跟風一下。

UE有提供下列的文件說明要怎麼安裝MCP,測試是否成功時可以下指令說"我現在選了哪些Actor?",然而此時卻跟我說沒有對應的工具可以處理查詢之類的功能。

https://dev.epicgames.com/documentation/unreal-engine/unreal-mcp-in-unreal-editor

問UE本身的AI是跟我說要建立一堆工具等等來銜接,然而不死心(想偷懶)的我在網路上查了一下,發現原來UE本來就有做那些toolset,但文件沒寫。只要把All Toolsets這個plugin打開就好:

https://www.reddit.com/r/unrealengine/comments/1u8pjg1/unreal_mcpofficial_58_only_showing_one_toolset/

OK,目前的狀況是可以正確回答我是哪些actor有選取了。現在來試試複雜的工作看看會發生什麼事吧...


目前跑了快30分鐘還只做到複製出一個新場景並清掉舊的Actor,顯然很花token....




2026年6月1日 星期一

關於遊戲破不了關的雜想

早期的遊戲(2000年以前),印象中其實滿多遊戲不見得是能破關的,有的是本來就很難像魔界村這種,有的是過關條件很麻煩且遊戲本身不太會有明確提示或是要拼命練功。但是到了2000年之後感覺上很多遊戲會有一種很怕你破不了關的感覺,提示很多不說,難度也越來越多是可以調整的。

會有這樣的差異,我的猜想一個是遊戲資源豐富多了,不像以前遊戲又貴又少,好不容易買了一個就要像吃個雞翅拼命啃骨頭吸半天的,玩家沒啥耐心對一個遊戲磨上幾十個小時去地毯式搜索找那個必要的過關道具。現在的遊戲多到像人人買得起炸雞全家桶,不想吃的咬個兩下就算了,遊戲要是設計得太繁瑣刁難只怕還沒理解遊戲內容就被兩小時退費了。

另一個猜想則正是網路的興起早成資訊透明化,以往遊戲如果把難度設定在大量的練功或極限的操作時,玩家其實並不知道遊戲接下來是長這樣,只能乖乖一直試下去,畢竟頭都洗下去了。

我個人最有印象的就是西遊降魔錄大型電玩,最後一關的Boss攻擊一堆一擊秒殺,但當下的玩家並不知道那是最後Boss,往往死了之後又從頭打起多花了一堆錢,但事實上乾脆拼命投錢一重生就放大招攻擊直接破關,說不定還比天天報到花一堆錢然後被「不知道後面還有幾關」的boss KO來的省錢。

而現在一個遊戲出來不用3小時就評論滿天飛,這種資訊落差已經很難出現,要是搞一些逆天的難度設計一下就被發現加上負評,自認玩不動的玩家也會直接放棄不買,對開發商來說就是個賭注,那麼選擇保險一點的讓大家都能開開心心破關,想要挑戰的玩家再給他們額外的東西就好,像是PS白金獎盃之類的。

不過物極必反啦,魂系遊戲就是以沒有難度調整,全憑玩家能力自己探索練習著稱的。但魂系的設計是建立在「難,但是合理也公平」的架構上,而故事的碎片化反倒在網路時代變成了討論分享的絕佳培養皿。

拉拉雜雜寫一堆是因為最近打羊蹄山戰鬼時發現有個角色有夠難,難到像在刁難,但看了一下網路討論才發現其實直接調低難度打贏他還是有獎盃,老人碎念一下。

2026年5月13日 星期三

UE5.7 下Attach Android Process會失敗的問題解決

想在Unreal Engine5.7的Android 環境下 Attach process的話,要注意UE的安裝路徑是否有空白,有的話要去VC的專案檔修改一下LLDB的mapping路徑,否則會根本無法attach。


開啟VC後專案在右鍵打開Properties
要注意必須是已經切到Android環境才會看到LLDB這邊的選項


UE安裝路徑可能是像這樣有空白
要補上括號


不過最後我還是乖乖把UE另外安裝到沒有空白的路徑內,否則每次重新Generate Visual Studio Project Files 時就又要手動改一次這邊的設定,也太累了。

理論上正確的做法應該是去改UE程式碼修正它,但一方面我們團隊用的是Launcher版本,只在程式開發者電腦上用Source Code版本的UE會有版本不統一的危險,衡量之下還是先用簡單的方法處理。放假有空再來看看,說不定UE 5.8已經解決了?

2026年4月26日 星期日

ASR UE5.6 Plugin安裝的小小問題

 ARM 有個ASR UE5的Plugin 是針對Mobile加強的FSR 版本,但目前看到(2026.04)是只支援到UE5.5。

https://github.com/arm/accuracy-super-resolution-for-unreal

我手上的環境是Launcher版的UE5.6,想說安裝一下來看看,就先直接照說明下載、解開壓縮然後開始build。

於是乎出現了下列錯誤:

[1/10] Compile [x64] ArmASRFXSystem.cpp

F:\Epic Games\UE_5.6\Engine\Source\Runtime\Renderer\Private\MeshDrawCommands.h(10,1): fatal error C1083: Cannot open include file: 'TranslucentPassResource.h': No such file or directory

#include "TranslucentPassResource.h"

^

這就有趣啦,居然說是UE引擎內的MeshDrawCommands.h找不到另一個UE內的TranslucentPassResource.h。該header是位於這邊:

\Engine\Source\Runtime\Renderer\Internal\TranslucentPassResource.h

遇事不決先Google ,果然就發現有類似的狀況:

https://forums.unrealengine.com/t/ue5-6-upgrade-error-including-sceneprivate-h-missing-translucentpassresource-h/2544304

原來是5.6用了更嚴格的PrivateIncludePaths的檢查,不再是A引用B,B引用C都沒問題,而是C也要放到PrivateIncludePaths 內。

所以解決方法是PrivateIncludePaths.AddRange() 中多加一行
Path.Combine(EngineDirectory,"Source/Runtime/Renderer/Internal"),
這樣就好。

另一個小問題是FArmASRTemporalAAHistory::AddRef()的回傳型別錯誤,只要把它改成Base class的FReturnedRefCountValue就搞定了。


是說....我後來去ASR github上看到有個pull request上面就有寫解決方案了,果然是多看兩眼有沒有前人種樹就可以省下一些時間。但換個方向想,自己查過記憶也比較深刻一點。

修正5.7的PR:
https://github.com/arm/accuracy-super-resolution-for-unreal/pull/16


2025年5月28日 星期三

[Unity] 比對Tag的速度

據說使用Tag Handle 而不是String 來比對Tag會比較快

var tagHandle = TagHandle.GetExistingTag( "Player" );

if ( CompareTag( tagHandle ) )

{

}


但這個只有在Unity 2023之後才有...

https://baba-s.hatenablog.com/entry/2025/03/09/142508


2024年11月13日 星期三

2022年7月25日 星期一

iOS中Google簡報App如何觀看備忘錄

寫給自己免得又忘掉。 

我的需求是在A桌機上用單一個螢幕撥放投影片,同時我想要可以看iOS Google簡報App內的
備忘錄作為小抄,但在iOS App上卻不能用,官方文件裡面寫的方式找不到對應的按鈕。

後來用了一個繞過去的方式來解決,概念是用電腦投影到給眾人看,而Google簡報App切換
到"編輯模式",這時就可以看到之前寫好的備忘文字了。

流程大概是這樣:
  1. App中打開要觀看的投影片。
  2. 隨便在任一頁上點一下,這時會出現"新增註解"跟"編輯投影片"兩個選項。選擇"編輯投影片"。
  3. 在右上方的"..."按鈕點一下,可以看到有個"演講者備忘錄"的選項可以開關,開起來。
  4. 這時就可以用編輯模式來觀看寫好的小抄了。

不得不說,Google到底在搞啥啊......

2016年12月31日 星期六

還活著

2016一整年就發了那麼一篇文章,完全忘了這邊要灌溉一下。

無論如何,一年又過去了。

2016年6月2日 星期四

[GitHub]Unity中用五張不同光源方向的texture產生normal map

先前看到了一個用手機拍照產生normal map的影片,手癢寫了一個類似的東西。
這個Unity小程式可以放五張不同方向光源(直射、上下左右)的貼圖產生一張normal map。
其實先前也看過有人做過類似的東西但需要美術畫五張不同方向光源的點陣圖,感覺美術製程超累的就懶得弄。但看到同樣的概念用camera就可以發揮更多效益,腦袋真的要多轉轉彎才行啊~~

Github link:
https://github.com/stanley1108/NormalMapBy5Texture

參考的影片
https://www.facebook.com/NormalMapCamera/videos/1594890717506146/

先前看到的Sprite Normal map產生器
https://www.youtube.com/watch?v=fy3FvPg01w0

2015年5月23日 星期六

[Unity 5] 動態建立Sprite錯誤

在Unity 4時我有一段code是讀取貼圖建立Sprite:

m_bannerSprite.sprite = Sprite.Create(m_bannerTexnew Rect(0,0,64064), new Vector2(0.5f,0.5f), 1f); //m_bannerSprite 是 SpriteRenderer

但是同樣的code在Unity5會出現錯誤:
!hasError

UnityEngine.Sprite:Create(Texture2D, Rect, Vector2, Single)

去網路上查了一下發現
可能是因為建立Sprite時不是用Texture原來的解析度所導致的,將Rect的長寬改成Texture的原始解析度就可以成功建立了:
m_bannerSprite.sprite = Sprite.Create(m_bannerTexnew Rect(0,0m_bannerTex.widthm_bannerTex.height), new Vector2(0.5f,0.5f), 1f/64f);

要改動Sprite輸入時的大小的話,可以在Sprite.Create()參數中加上pixelPerUnit的參數。

當初寫這功能時還沒有UGUI,所以是用Sprite來做banner功能,現在的話應該會用UGUI的Image來處理就是了。

http://forum.unity3d.com/threads/sprite-create-error-message-haserror.312885/

2015年5月20日 星期三

[Unity] Unity 5的Profiler小問題

用Unity 5要profile Android機器時發現無法取得狀態,但是同一台PC上的Unity 4上對同一台Android機器卻可以。後來在只開著Unity 5的狀況下用command再度連結一次Android機器後就可以正常看到profiler資訊了:

adb forward tcp:54999 localabstract:Unity-Bundle Identifier
 
Bundle Identifier 是指com.aaa.bbb那個

  原因不明,不過就是可以用了(攤手)。


參考:http://windsky24.blogspot.tw/2014/04/unity-android-unityprofier.html

2015年4月20日 星期一

Macbook pro 2012無法充電的處理方法

昨天人在外面時我的macbook突然開不了機,看左側的電源指示燈也沒有反應,心想應該是沒電而已,沒想到回家插上電源也沒充電動作,這下慘了。

後來看了一堆文章,有的是要我按下複合鍵重開機,但沒有用。最後的處理方法是打開背蓋,把電池跟主機板斷開後按一下電源放電,這樣就行了。

推測是昨天主機板的電源控制板出了點問題,放電後重置就好了。

解決方案詳細圖片可看此:
http://zhidao.baidu.com/question/711441860841232205.html

2014年12月24日 星期三

[Jenkins] 安裝Jenkins到Mac上的一些狀況

如果你的Git repository跟Jenkins是放在同一台Mac上的話,直接用Jenkins官網
的安裝檔來安裝Jenkin比較好,不要用Bitnami的Jenkins。

試過用Bitnami的版本時git很容易出問題,主要是會卡在無法clone 自機的 git repository
(抓github的倒是沒問題)。但是在terminal我自己下command又可以clone。改成
直接用Jenkins官網的安裝檔來使用時就可以了。

推測原因是bitnami的Jenkins是跑在app上,而他自己所取用的git是app package中
自帶的git,(似乎呼叫自機本來的git會有一些權限上的問題,有看到一些App sandbox 的錯誤訊息),但是app中自帶的git版過舊,無法辨識新版本的git repository,而 且無法更新git(原因應該是git包在app package中)。

安裝時Jenkins我碰到兩點要注意:

  1. 安裝git plugin時要選對Git plugin這個選項,我一開始只選了git client這個plugin,會 在專案設定中找不到設定要用git的選項。
  2. 安裝完plugin要重開Jenkins時,在網址上輸入localhost:8080/restart 即可,我一開 始找半天不知道該怎麼重新開啟。
以上的原因是我自己猜測,不知道對不對就是了....

2014年11月22日 星期六

[Open source] Unity版本2048練習

嗯....好久沒爆肝寫程式了....

花了三個晚上寫了一個2048的變種版本,可能還是有一些bug沒測到,不過先這樣放出來吧~

做了一點小改變:
1.每完成五次方塊合併後會隨機選擇原有的方塊產生一顆炸彈(先這樣稱呼吧),以紅色外框標示。
2.倘若該炸彈被成功消去的話,會將相同數字的方塊一同升級。

例如有個數字為32的方塊成為了炸彈,在成功將此方塊合併為64後,場上所有數字為32的方塊也會同樣變成64。

程式碼在gitHub:
https://github.com/stanley1108/Practice_2048

好累,來去睡覺.....


2014年7月30日 星期三

UnityVS免費版本釋出

Unity預設是用MonoDeveloper編輯以及除錯程式碼,但是到了MonoDeveloper4.0之後的版本很容易crash(不知道是Unity或是mono的問題),特別是在debug中再去改動程式碼的時候。

UnityVS是一個收費的Unity plugin,可以讓我們在Unity中使用virtual studio除錯,原本的Unity是只能用VS編輯但不能除錯。

前陣子Microsoft宣布收購了UnityVS的開發商,並將免費發布給使用者,今天正式發布了。

http://blogs.msdn.com/b/visualstudio/archive/2014/07/29/visual-studio-tools-for-unity-1-9.aspx

用了一下下發現有個好處是,當我們用UnityVS debug時其實不能再去改動code,算是強制避免了一些問題。

2014年7月24日 星期四

[XCode 6 beta 4] iOS8 beta 4無法取得Location的問題

在ios8中,要在plist裡加上NSLocationWhenInUseUsageDescription這個property,否則LocationManager的didUpdateLocations 不會正確被呼叫到。

NSLocationWhenInUseUsageDescription是在iOS8才出現的關鍵字。

http://stackoverflow.com/questions/24874997/core-location-not-working-in-ios-8
http://stackoverflow.com/questions/24717547/ios-8-map-kit-obj-c-cannot-get-users-location

2014年5月20日 星期二

Unity上開啟WebView(iOS/Android)

Unity上有提供Application.OpenURL(string)的函式來開啟網頁,但是這功能其實是開啟safari/chorme中的網頁,而不是在Unity的app中打開網頁。那麼,要如何做到在Unity app中內嵌一個網頁呢?

https://github.com/Kogarasi/Unity-Webview

gitHub是我們的好朋友~XD

這個專案看來應該是延續gree的webView做修改的:
   https://github.com/gree/unity-webview

使用上並不難,看一下它的範例檔就可以了。但是我有碰到幾個問題:

1.開啟了第一個url後,如果要開另一個url的話會沒有反應,會閃一下然後又開啟第一個url。這個問題在Mac上沒有發生,但是在iOS上會出現,我不確定PC/Android是否也有這個問題。
   解決方法是Destroy第一個webView後,另建一個新的WebView來開啟新的url。

2.在Android上有碰到網頁雖然開啟了,但是卻無法操作的狀況,在討論中有提到怎麼解決:
   https://github.com/Kogarasi/Unity-Webview/issues/2

   基本上就是改動AndroidManifest.xml中的設定,在Unity官網上其實本來就有講到這個部份,不過我跟Android不熟就是了XDD
   http://docs.unity3d.com/Documentation/Manual/PluginsForAndroid.html

以上