【Unity】Recorderパッケージを使用してスクリーンショットを撮り、特定の色を透過にしてPNGファイルを作成する
キャプチャー後、画像を加工するために手順を踏む必要があります。
目次
手順
- Unity Recorderをインストール
- スクリーンショットを撮るスクリプトを作成
- 特定の色を透過にしてPNGファイルを保存するスクリプトを作成
以下に、それぞれの手順を説明し、必要なコードを提供します。
1. Unity Recorderのインストール
- Unityエディターのメニューから
Window
->Package Manager
を開きます。 - Package Managerで
Unity Recorder
を検索してインストールします。
2. スクリーンショットを撮るスクリプトの作成
スクリーンショットを撮るための簡単なスクリプトを作成します。このスクリプトは、Camera
コンポーネントから画像をキャプチャして、Texture2Dとして保存します。
using UnityEngine;
public class ScreenshotTaker : MonoBehaviour
{
public Camera cameraToCapture;
void Update()
{
if (Input.GetKeyDown(KeyCode.P))
{
TakeScreenshot();
}
}
void TakeScreenshot()
{
RenderTexture rt = new RenderTexture(Screen.width, Screen.height, 24);
cameraToCapture.targetTexture = rt;
Texture2D screenShot = new Texture2D(Screen.width, Screen.height, TextureFormat.RGB24, false);
cameraToCapture.Render();
RenderTexture.active = rt;
screenShot.ReadPixels(new Rect(0, 0, Screen.width, Screen.height), 0, 0);
screenShot.Apply();
cameraToCapture.targetTexture = null;
RenderTexture.active = null;
Destroy(rt);
byte[] bytes = screenShot.EncodeToPNG();
string filename = Application.dataPath + "/../Screenshot.png";
System.IO.File.WriteAllBytes(filename, bytes);
Debug.Log($"Screenshot saved to {filename}");
}
}
3. 特定の色を透過にしてPNGファイルを保存するスクリプト
次に、特定の色を透過にしてPNGファイルとして保存するためのコードを追加します。以下のスクリプトは、上記のスクリーンショットを撮る部分に続けて特定の色を透明に変換します。
using UnityEngine;
public class TransparentScreenshotTaker : MonoBehaviour
{
public Camera cameraToCapture;
public Color colorToMakeTransparent = Color.white; // 透過にする色を設定
void Update()
{
if (Input.GetKeyDown(KeyCode.P))
{
TakeScreenshot();
}
}
void TakeScreenshot()
{
RenderTexture rt = new RenderTexture(Screen.width, Screen.height, 24);
cameraToCapture.targetTexture = rt;
Texture2D screenShot = new Texture2D(Screen.width, Screen.height, TextureFormat.RGBA32, false);
cameraToCapture.Render();
RenderTexture.active = rt;
screenShot.ReadPixels(new Rect(0, 0, Screen.width, Screen.height), 0, 0);
screenShot.Apply();
cameraToCapture.targetTexture = null;
RenderTexture.active = null;
Destroy(rt);
// 特定の色を透明に変換
Color[] pixels = screenShot.GetPixels();
for (int i = 0; i < pixels.Length; i++)
{
if (pixels[i] == colorToMakeTransparent)
{
pixels[i] = new Color(0, 0, 0, 0);
}
}
screenShot.SetPixels(pixels);
screenShot.Apply();
byte[] bytes = screenShot.EncodeToPNG();
string filename = Application.dataPath + "/../TransparentScreenshot.png";
System.IO.File.WriteAllBytes(filename, bytes);
Debug.Log($"Transparent screenshot saved to {filename}");
}
}
このスクリプトを使用するために、特定の色を colorToMakeTransparent
で設定してください。また、Camera
コンポーネントを cameraToCapture
にアタッチすることを忘れないでください。
使用方法
- Unityエディターで新しいスクリプトを作成し、上記のコードをコピーして貼り付けます。
- スクリプトを適当なGameObjectにアタッチします(例:カメラオブジェクト)。
- UnityエディターのPlayモードで
P
キーを押してスクリーンショットを撮ります。
これで、指定した色が透過されたPNGファイルがプロジェクトディレクトリに保存されます。
ファイル名はTransparentScreenshot.pngになります
ディスカッション
コメント一覧
まだ、コメントがありません