NoaScreenshotCallbacks
スクリーンショット機能に関連するイベントを設定します。
NoaScreenshotCallbacksを継承したクラスをNoaControllerに引き渡すことで、スクリーンショット機能に関連するイベントをカスタマイズできます。
オーバーライド可能な要素
Methods
| メソッド名 | 説明 |
|---|---|
| OnBeforePrepareScreenshot() | 後述のScreenshotTargetに応じてNOA DebuggerのUIの表示制御を行う前に実行するメソッドです。 ここでScreenshotTargetを変更することで、不要なNOA DebuggerのUIを非表示にした状態でOnCaptureScreenshotを実行します。 |
| OnCaptureScreenshot() | NOA Debuggerのスクリーンショット処理の直前に実行するメソッドです。 |
| OnAfterScreenshot() | スクリーンショット処理の後に実行するメソッドです。 NOA Debuggerのスクリーンショット処理を実行しなかった場合でもこのメソッドは実行します。 |
Properties
| プロパティ名 | 説明 |
|---|---|
| IsAllowBaseScreenshot | NOA Debuggerのスクリーンショット処理を実行するかを判断します。 デフォルトはtrueで、falseに変更した場合はスクリーンショット処理を実行しません。 |
| ScreenshotTarget | スクリーンショット撮影時に表示状態を維持するNOA DebuggerのUIを指定します。 デフォルトはNoneで、全てのNOA DebuggerUIを非表示にして撮影します。 |
関連する型
INoaScreenshotCallbacks
NoaScreenshotCallbacksのオーバーライド可能なメソッドとプロパティは、このインターフェースで定義しています。
カスタムクラスで複数のコールバックの定義を集約したい場合や、既存のカスタムクラスを継承しつつコールバック機能を追加したい場合は、NoaScreenshotCallbacksクラスの代わりにこのインターフェースを利用することで実現できます。
NoaController.ScreenshotTarget
NoaScreenshotCallbacksのプロパティで使用する、スクリーンショット撮影対象を指定するFlags属性付きの列挙型です。
撮影対象に含まなかったNOA Debugger関連UIを非表示にした状態でスクリーンショットを撮影します。
| 要素名 | 説明 |
|---|---|
| None | 全てのNOA Debugger関連UIを非表示にした状態で撮影します。 ※他のフラグが優先的に扱われるため、Noneは単体で使用してください。 |
| LaunchButton | 起動ボタンを撮影対象に含めます。 |
| FloatingWindows | 専用ウィンドウを撮影対象に含めます。 |
| UIElement | UIElementを撮影対象に含めます。 |
| MainView | メインビューを撮影対象に含めます。 |
| Overlays | オーバーレイを撮影対象に含めます。 |
| All | 全てのNOA Debugger関連UIを撮影対象に含めます。 |
サンプルコード
#if NOA_DEBUGGER
using NoaDebugger;
using UnityEngine;
// NOA Debuggerのスクリーンショット処理前後にイベントを実行する場合の例
public class ExampleScreenshotManager : NoaScreenshotCallbacks
{
NoaController.ScreenshotTarget target;
public override NoaController.ScreenshotTarget ScreenshotTarget => target;
public override void OnBeforePrepareScreenshot()
{
// 滞在中のシーンによってスクリーンショット撮影時にNOA DebuggerのUIを含むかどうかを変更する例
if (ExampleSceneManager.Instance.CurrentScene == SceneType.Battle)
{
target = NoaController.ScreenshotTarget.UIElement | NoaController.ScreenshotTarget.Overlays;
}
else
{
target = NoaController.ScreenshotTarget.None;
}
}
public override void OnAfterScreenshot()
{
byte[] data = NoaController.GetCapturedScreenshot();
if (data != null)
{
// 画像データをファイルに保存する例
string filePath = Application.persistentDataPath + "/screenshot.png";
System.IO.File.WriteAllBytes(filePath, data);
Debug.Log($"Screenshot saved to: {filePath}");
// 撮影したスクリーンショット画像をクリア
NoaController.ClearCapturedScreenshot();
}
else
{
Debug.LogError("No screenshot data.");
}
}
}
// NOA Debuggerのスクリーンショット処理を実行せず、独自の処理を実行する場合の例
public class ExampleOriginalScreenshotManager : NoaScreenshotCallbacks
{
// IsAllowBaseScreenshotをfalseに設定することでNOA Debuggerのスクリーンショット処理を拒否
public override bool IsAllowBaseScreenshot => false;
// 規定の準備処理は発火しているため、NOA DebuggerのUIを非表示にした状態で独自の撮影処理を実行できます
public override void OnCaptureScreenshot()
{
ScreenCapture.CaptureScreenshot("screenshot.png");
}
}
#endif
