Unity Mega Grab 教學

Unity Mega Grab 教學

MegaGrab 是一套支援 Unity 遊戲引擎的截圖工具,若您需要製作印刷用的高解析度遊戲圖片(例如商品型錄、宣傳海報等),Mega Grab 可提供比 PrintScreen 更高解析度的圖片,並且支援消除鋸齒功能。MegaGrab 只有不到 50KB 但是截圖的功能強大!拍照可以透過鍵盤或 UI 按鈕操作,此外也可以透過腳本控制,除了遊戲使用以外也是開發專案特定功能的好工具。

MegaGrab 支援 PC / MAC / iOS / Android 遊戲平台,截圖後的圖檔可以選擇絕對路徑或相對路徑儲存,或上傳到網站伺服器(需搭配 PHP 網頁),MegaGrab 可儲存 JPG / TGA 格式,但目前不支援 Alpha 功能。使用上需注意以下事項:

使用 MegaGrab 截圖時不會包含遊戲畫面上的 UI 操作介面

截圖 Upscaling 或 AA samples 設為高品質時需要較長的時間

不支援 Orthographic 正交投影攝影機,截圖將呈現透視效果

 

開啟 Asset Store 資源商店將 Mega Grab 下載到專案。

 

Mega Grab 的檔案主要是 C# 腳本與使用說明,按下 Import 按鈕匯入專案。

 

開啟遊戲場景並建立一個空物件,然後將 Mega Grab 腳本拖曳到此物件。

將攝影機拖曳到 Source Camera 欄位,按下 PLAY 測試遊戲,預設按下鍵盤 S 鍵即可截圖。

 

Mega Grab 腳本參數:

Source Camera - 設定截圖的攝影機(將場景的攝影機拖曳到此欄位)

GrabKey - 設定截圖的快速鍵(支援鍵盤、滑鼠、搖桿上的按鈕)

ResUpscale - How much to increase the screen shot res by

Blur - Pixel oversampling. Use to slightly blur the AA samples if you still notice artifacts.

AASamples - Anti aliasing samples. 消除鋸齒的取樣值

FilterMode - 濾鏡模式,Can be used to turn of filtering if upscaling.

UseJitter - Use random jitter for AA sampling. Mega Grab will use a grid array for sampling but this can lead to artifacts on noisy images to try setting this for a random array

SaveName - 設定截圖存檔的前置字串,預設值 = "Grab"

Format - 設定抓圖存檔的日期時間資訊,預設值 = " dddd MMM dd yyyy HH_mm_ss "

Path - 設定抓圖的存檔路徑,必須是以 '/' 結尾,可使用相對路徑或絕對路徑,說明如下:

如果 Path 路徑空白,抓圖的檔案將儲存於專案資料夾。

如果 Path 路徑設定 "Images/" 可放在專案的 Images 資料夾,需要預先建立資料夾,否則無法存檔。

如果 Path 路徑設定 "C:/Images/" 可放在 C 碟 Images 資料夾,需要預先建立資料夾,否則無法存檔。

注意! Format 欄位不可空白,圖片的 Grab Size 都將會在檔名。而抓圖的尺寸在編輯器執行時是 Game 視窗尺寸為基礎,在發佈的遊戲執行時是以畫面解析度為基礎。

注意!抓圖存檔時若為相同檔名,將會覆蓋前面抓圖的檔案。

 

 

UseDOF - 截圖時開啟景深效果

totalSegments - How many samples to take around the dof camera circle

sampleRadius - 設定攝影機景深的圓形半徑

UseDOF - 使用 Dof grab 景深效果,實際使用上較難控制

focalDistance - 設定景深效果的焦距

totalSegments - 設定景深效果的取樣

sampleRadius - 設定景深效果的強度

CalcFromSize - Let grab calc res from dpi and Width (以英吋為單位)

Dpi - Number of Dots per inch required

Width - Final physical size of grab using Dpi

NumberOfGrabs - Read only of how many grabs will happen

EstimatedTime - Guide to show how long a grab will take in Seconds

GrabWidthWillBe - 截圖的影像宽度

GrabHeightWillBe - 截圖的影像高度

UseCoroutine - 若執行時出現 ReadPixels 錯誤請開啟改用 Coroutine 方式執行

Upload Grabs - If jpg format then you can upload the file instead of saving it locally

Url - 使用上傳圖片的功能時,需要輸入網站伺服器 PHP 網頁的路徑

 

增加 DoScreenGrab() 方法 which can be called from GUI methods etc to do a grab instead of using a Key Press.

增加 CancelSeqGrab() 方法 which can be called to cancel a seq grab instead of using a key press.

加入 TGA 抓圖支援 Alpha 功能。

抓取連續圖片的檔案名稱可以使用自行設定的字串。

抓取連續圖片的影格編號可用零填滿位數以便排序。

抓取連續圖片 which can then be made into a video with offline software.

 

使用 UI 按鈕截圖

新增按鈕,在 On Click ( ) 新增 MegaGrab > DoScreenGrab ( ) 即可。

 

 

上傳截圖到伺服器

MegaGrab 提供 PHP 檔案,可將截圖上傳到網站伺服器,經測試 XAMPP 與 NAS 皆可正常執行。

 

截圖並設定檔案名稱

MegaGrab 可以在截圖時使用固定的檔案名稱,或使用參數取得日期等,但若需要讓使用者自行輸入檔案名稱:

新增一個 Input Field 輸入欄位,指定給 GemeObject 的檔名欄位。

 

 

上傳截圖到伺服器並提供 QR Code 下載

MegaGrab 本身並未提供產生 QR Code 功能,但是可將載圖上傳到網站伺服器,並搭配外掛程式製作。

例如製作遊樂場的遊戲、美術館或博物館的互動展示,可以讓參與的玩家下載到自已的手機。

此功能搭配 Easy QR Code Generator Encoder 製作,這是一個售價 15 美元的 Unity 外掛程式。

 

截取 Webcam 攝影機畫面

MegaGrab 本身並未提供截取 Webcam 攝影機畫面功能,需要透過簡單的腳本取得 Webcam 拍攝的畫面。

場景上建立一個平面,然後套用剛才新增的腳本,為了避免燈光帶來的影響,可以使用 Unlit / Texture 材質。

 

 

 

截圖呈現於遊戲畫面

將截圖從硬碟載入並顯示於遊戲畫面

除了透過檔案總管瀏覽截圖,若需要提供玩家在遊戲中瀏覽圖片的功能,該如何製作呢?

基本上是透過 C# 腳本讀取硬碟中的圖檔,然後再逐項顯示。

製作顯示於畫面上的圖示,可以顯示檔名並提供使用者點擊的功能。