UI無しスクリーンショットが撮られるフレームでは、各 UICamera が持つ UICamera.camera.enabled が false になるので、これに合わせて UI 表示を調整すると良いです。
例えば以下のようなメソッド IsGuiVisible() を用意して、IsGuiVisible() == false の場合は UI 表示を行わないようにします
class MyCoolPlugin : PluginBase {
...
public void OnGUI() {
// UI無しスクリーンショットが撮られる際は処理をスキップ
if (! IsGuiVisible()) return;
... 本来のGUI処理 ...
}
bool IsGuiVisible() {
Camera camera = UICamera.currentCamera;
return camera != null && camera.enabled;
}
}
- UI無しスクリーンショットを撮る際は CameraMain.ScreenShot(bool f_bNoUI) -> CameraMain.SaveScreenShotNoUI() が呼ばれます
- CameraMain.SaveScreenShotNoUI()内では以下の順番で処理が行われます
- CameraMain.UIHide が呼ばれる
- 各 UICamera について UICamera.camera.enabled を false にする
- UnityEngine.Application::CaptureScreenshot を用いてスクリーンショットを取る
- CameraMain.UIResume が呼ばれる
- 各 UICamera について UICamera.camera.enabled を true にする
- CameraMain.UIHide が呼ばれる
- camera は Component のメンバー