以下の内容はhttps://www.karvan1230.com/entry/2025/04/08/213808より取得しました。


【小ネタ】ゲームビューのスクリーンショットを撮る

SNS

自分の送ったメッセージに既読マークが付かないとイライラして返信がないと更にイライラするSNSに向いてない短気な皆さんこんにちは。やっぱり顔を見合わせて直接話す事が一番だと思います。

 

創風(2期)

昨年から始まった経済産業省が次世代クリエイターを支援するプロジェクト「創風」の第2期の募集が開始されています。このプロジェクトは「ゲーム」「映像・映画」の2部門で選ばれたクリエイター対して技術面や資金面でのサポートをするというもので、出来上がった作品については業界関係者向けの発表の場を用意してもらえます。

game-sofu.jp

確か前回は応募資格に年齢上限があったと思うのですが今回はその年齢上限の規約が無くなっており、その分競争率も上がりそうですが結構手厚い支援内容だと思うのでチャレンジする価値はあるのではないでしょうか。まぁ、一年以内に製品化が求められるので、私は無理そうですけど。

 

スクリーンショット

上記のようなコンテスト以外でも展示会への出展応募の時やSteam等に製品をリリースする際に必ずと言っていいほどゲーム画面のスクリーンショットを求められます。スクリーンショットはWindowsでもMacでもキー入力からツールを起動して撮ることはできますが撮りたい瞬間の映像を撮るのは難しいので、出来ればキー入力した瞬間にスクリーンショットを撮るようにしたい。もしくはゲーム内のステージクリア、ボス撃破など大きなイベントが発生した瞬間を映像に納めたい。
そんな時のためにUnityではScreenCaptureクラスにCaptureScreenshotという関数が用意されています。

docs.unity3d.com

この関数を利用するとスクリーン画像がPNG形式で保存できます。保存先はプロジェクトルートディレクトリで、引数としてファイル名を渡すだけとシンプルな形なので非常に使いやすいです。

// ファイル名:ScreenShotで保存
CaptureScreenShot("ScreenShot.png");

 

上記の内容でゲーム画像の取得とPNG形式ファイルへの出力を併せて実現できるので通常の場合はこの関数で事足りるかと思いますが、PNG形式以外の形式でゲーム画像を保存したい場合は

  1. ScreenCaptureクラスのCaptureScreenshotAsTexture関数でスクリーンキャプチャーされた画像をテクスチャ(Texture2D)として取得
  2. Texture2Dのエンコード関数にてbyte配列に変換
  3. File.WriteAllByteでファイル出力

の順で処理を行う必要があります、ちょっと面倒くさい。

  Texture2D texture = ScreenCapture.CaptureScreenshotAsTexture();
  byte[] bytes = texture.EncodeToJPG();
  File.WriteAllBytes("test.jpg", bytes);

ちなみにエンコード関数は上記のJPG(EncodeToJPG)以外にもTGA(EncodeToTGA),EXR(EncodeToEXR)などがあります。

 

実行結果

以下のようなシーンをエディタ上で動かしている場合でも、ScreenCapture.CaptureScreenshotを使うと

ゲームタブ内の映像をスクリーンショットとして保存することができます。

ただしスクリーンショットの解像度は実行中のゲーム画面の解像度になる点に注意してください。




以上の内容はhttps://www.karvan1230.com/entry/2025/04/08/213808より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14