原カバンは鞄のお店ではありません。

Unityを使ったゲーム制作のあれこれを綴っていきます。

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

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を使うと

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

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

◇プライバシーポリシー

●個人情報の利用目的

当ブログでは、メールでのお問い合わせ、メールマガジンへの登録などの際に、名前(ハンドルネーム)、メールアドレス等の個人情報をご登録いただく場合がございます。

これらの個人情報は質問に対する回答や必要な情報を電子メールなどをでご連絡する場合に利用させていただくものであり、個人情報をご提供いただく際の目的以外では利用いたしません。

●個人情報の第三者への開示

当サイトでは、個人情報は適切に管理し、以下に該当する場合を除いて第三者に開示することはありません。

・本人のご了解がある場合
・法令等への協力のため、開示が必要となる場合

個人情報の開示、訂正、追加、削除、利用停止
ご本人からの個人データの開示、訂正、追加、削除、利用停止のご希望の場合には、ご本人であることを確認させていただいた上、速やかに対応させていただきます。

アクセス解析ツールについて

当サイトでは、Googleによるアクセス解析ツール「Googleアナリティクス」を利用しています。

このGoogleアナリティクスはトラフィックデータの収集のためにCookieを使用しています。このトラフィックデータは匿名で収集されており、個人を特定するものではありません。
この機能はCookieを無効にすることで収集を拒否することが出来ますので、お使いのブラウザの設定をご確認ください。

●免責事項

当サイトからリンクやバナーなどによって他のサイトに移動された場合、移動先サイトで提供される情報、サービス等について一切の責任を負いません。

当サイトのコンテンツ・情報につきまして、可能な限り正確な情報を掲載するよう努めておりますが、誤情報が入り込んだり、情報が古くなっていることもございます。

当サイトに掲載された内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。

●プライバシーポリシーの変更について

当サイトは、個人情報に関して適用される日本の法令を遵守するとともに、本ポリシーの内容を適宜見直しその改善に努めます。

修正された最新のプライバシーポリシーは常に本ページにて開示されます。