ゲーム画面をスクリーンショットで保存・共有できる機能は、プレイヤーの体験やSNS拡散にもつながる重要な仕組みです。
しかし、画像だけがそのまま保存・拡散されると、「どのゲームか分からない」「ブランドが伝わらない」ことも…。
そこで活躍するのが ウォーターマーク(透かしロゴ) の自動合成!
この記事では、Unityでスクリーンショットに自動的にロゴ画像を合成して保存する方法を、コピペOKのスクリプト付きで解説します!
この記事で分かること
- スクリーンショット画像にロゴを合成する処理の流れ
- Unity標準APIだけで完結できる方法(ネイティブ不要)
- 【コピペOK】スクショ取得+ウォーターマーク合成スクリプト
- 合成済み画像を保存 or SNS共有する拡張例
スクリーンショット+ウォーターマーク合成の流れ
- Unityで ScreenCapture.CaptureScreenshotAsTexture() を使って画面を取得
- Texture2D型のロゴ画像を読み込み
- 合成して1枚の画像にまとめる
- PNG形式で保存する
【コピペOK】ウォーターマーク合成スクリプト
using UnityEngine;
using System.IO;
public class ScreenshotWithWatermark : MonoBehaviour
{
public Texture2D watermark; // 合成するロゴ画像(透明PNG推奨)
public Vector2 offset = new Vector2(30, 30); // 右下からの余白
public void CaptureAndSave()
{
StartCoroutine(CaptureRoutine());
}
private IEnumerator CaptureRoutine()
{
yield return new WaitForEndOfFrame();
Texture2D screenTex = ScreenCapture.CaptureScreenshotAsTexture();
Texture2D finalTex = new Texture2D(screenTex.width, screenTex.height, TextureFormat.RGBA32, false);
// 背景にスクリーンショットをコピー
finalTex.SetPixels(screenTex.GetPixels());
// ロゴサイズ調整(解像度対応)
int logoWidth = watermark.width;
int logoHeight = watermark.height;
// 右下にロゴを合成
int xStart = screenTex.width - logoWidth - (int)offset.x;
int yStart = offset.y;
Color[] logoPixels = watermark.GetPixels();
for (int y = 0; y < logoHeight; y++)
{
for (int x = 0; x < logoWidth; x++)
{
Color logoPixel = logoPixels[x + y * logoWidth];
Color bgPixel = finalTex.GetPixel(x + xStart, y + yStart);
finalTex.SetPixel(x + xStart, y + yStart, Color.Lerp(bgPixel, logoPixel, logoPixel.a));
}
}
finalTex.Apply();
// PNG保存
byte[] bytes = finalTex.EncodeToPNG();
string path = Path.Combine(Application.persistentDataPath, "screenshot_with_logo.png");
File.WriteAllBytes(path, bytes);
Debug.Log($"保存成功: {path}");
Destroy(screenTex);
Destroy(finalTex);
}
}
実装ポイント
- ロゴ画像は透明PNG推奨(アルファ付きで合成が自然)
- サイズは小さめ(横幅の10〜20%)に調整するとバランス良好
- Application.persistentDataPath で保存すればiOS/Android両対応
活用アイデア
- ゲームロゴ+ハッシュタグを画像に合成してSNS拡散力UP
- ユーザー名やスコア情報も一緒に画像に焼き込むことで不正対策に
- 公式イベント用のシーズンロゴ・コラボロゴを一時的に合成して展開可能
注意点・補足
- SNSにアップロードするには別途共有機能(Native Share等)の実装が必要
- 保存した画像のパスをプレイヤーに知らせるUI設計も重要
- AndroidではStorageアクセス許可が必要なケースあり
まとめ
項目 | 内容 |
---|---|
Unity標準機能でウォーターマーク合成は可能 | |
Texture2Dを合成→PNG保存で完結 | |
透過PNG+右下配置が最も実用的 | |
ブランド認知・SNS拡散・保護対策に活用できる |
Unityで作ったゲームやアプリの魅力を、スクリーンショット+ロゴ入り画像でさらに広めていきましょう!