StageTimelineTools Builder

StageTimelineConfig に記述した公演設定(シーン・幕場の区切り・プリセット・演出指示)から、TimelineAsset・AnimationClip・設定バックアップを生成し、StageTimelineManager へシーン境界・配役・ワープ・連動イベントを書き込むエディタ拡張。Q シートウィンドウ(Q シート・遷移表・CSV 出力)、設定バックアップからの復元、外れた参照の再割り当てを持つ。ランタイムの仕様は StageTimelineTools に記載する。

構成

パス 内容
Runtime/StageTimelineConfig.cs 公演設定コンポーネント(MonoBehaviour)と、シーン・幕場の区切り・プリセット・各演出エントリ・参照の控えのデータクラス
Runtime/MashiroWarpPointGizmo.cs ワープ先 Transform に付く編集時専用の Gizmo コンポーネント(実行時は何もしない)
Editor/StageTimelineBuilderWindow.cs エディタウィンドウ「Stage Timeline Builder」の本体(メニュー・ツールバー・タブ切替・Config の作成と読み込み・生成の呼び出し)
Editor/StageTimelineBuilderWindow.Setup.cs 初期設定画面
Editor/StageTimelineBuilderWindow.Settings.cs 設定タブ
Editor/StageTimelineBuilderWindow.Backups.cs 設定タブ「バックアップ」
Editor/StageTimelineBuilderWindow.References.cs 設定タブ「参照の再割り当て」
Editor/StageTimelineBuilderWindow.Presets.cs プリセットタブ
Editor/StageTimelineBuilderWindow.Scenes.cs シーンタブ(一覧・詳細・幕場の区切り・タイムライン生成ボタン)
Editor/StageTimelineBuilderWindow.SceneEntries.cs シーン詳細の演出の表
Editor/StageTimelineBuilderWindow.SceneActive.cs シーン詳細の継続中の演出の行
Editor/StageTimelineBuilderWindow.SceneState.cs シーン開始時点の継続状態の集計
Editor/StageTimelineBuilderWindow.SceneTable.cs シーン詳細の表の列幅・共通部品
Editor/StageTimelineBuilderWindow.SceneHelpers.cs シーン編集の補助(選択肢・ワープ地点の作成・ワープ先 Gizmo の付与と除去)
Editor/StageTimelineBuilderWindow.Camera.cs カメラタブ
Editor/StageTimelineBuilderStyles.cs ビルダーと Q シートウィンドウの色・スタイル・描画ヘルパー(BuilderStyles)と演出カテゴリ(EffectCategory)
Editor/StageTimelineSceneListView.cs シーンタブ左のシーン一覧(TreeView)
Editor/StageTimelineQSheetWindow.cs エディタウィンドウ「Q シート」
Editor/StageTimelineQSheetModel.cs Q シート・遷移表の集計
Editor/StageTimelineQSheetExporter.cs Q シート CSV 出力
Editor/StageTimelineDividers.cs 幕・場の区切りの番号付け・ページ分け・付け替え
Editor/StageTimelineGenerator.cs タイムライン生成の本体。StageTimelineManager への書き込み・ワープマーカー・可視化トラック
Editor/StagePlanning.cs シーン列から演出ごとの有効区間・シーン別指示・必要シーン尺を組み立てる
Editor/TimelineWriter.cs トラック・クリップの書き込み(TimelineWriters クラス)
Editor/AssetUtils.cs AnimationClip 生成・フォルダ作成・PostProcessVolume / CinemachineVirtualCamera 型解決などのユーティリティ
Editor/StageTimelineConfigBackupWriter.cs 要約バックアップ・全項目バックアップの書き出しと読み込み・履歴管理
Editor/StageTimelineDirectorResolver.cs 適用先 PlayableDirector と生成物の親の解決
Editor/StageTimelineReferenceHints.cs 参照の控えの記録・候補の推測・参照の割り当て
Editor/StageTimelineReferenceValidator.cs シーンの演出エントリの参照切れ判定

依存

依存 区分 用途
Unity Timeline 必須 TimelineAsset / ActivationTrack / AnimationTrack / GroupTrack
TextMeshPro 必須 ワープマーカーのテキスト
UdonSharp 必須 Udon イベントの対象型 UdonSharpBehaviour
StageTimelineManager(同パッケージ Runtime) 必須 生成結果の書き込み先・適用先 PlayableDirector の解決元。StageTimelineManager.prefab は初期設定でシーンに配置される
MashiroLightGroup(MashiroTheater-Utils) 必須(コンパイル) 「LightGroup をスキャン」・照明プリセットのドラッグ&ドロップ追加
Cinemachine 任意 カメラトラック。Cinemachine.CinemachineVirtualCamera / Cinemachine.CinemachineBrain と、CinemachineTrack / CinemachineShot(Cinemachine.Timeline / Unity.Cinemachine.Timeline / Unity.Cinemachine 名前空間)をリフレクションで解決する
Post Processing Stack v2(UnityEngine.Rendering.PostProcessing.PostProcessVolume) 任意 ポストプロセストラック。型をリフレクションで解決し、未導入時はポストプロセスの生成をスキップする
NoribenBeamlightShader(シェーダー Noriben/noribenBeamLight) 任意 照明フェードの対象 MeshRenderer

仕様

エディタウィンドウ

項目 内容
設定 設定タブ。生成を妨げる条件(下記「タイムライン生成」)があるとき橙の点を付ける
プリセット プリセットタブ
シーン シーンタブ
カメラ カメラタブ。showCameraFeatures が ON のときのみ表示する
Q シート ↗ Q シートウィンドウを開く
閲覧モード ON の間は編集を受け付けない(ウィンドウ上部に「閲覧モード中は編集できません」と「解除」を表示)

初期設定

Config の作成:

  1. アクティブシーンに StageTimelineConfig が既にある場合は作成せず、それを読み込む(ダイアログを表示)。
  2. GameObject StageTimelineConfig を作成し、StageTimelineConfig を追加して InitializeAsNewBuilderData() を呼ぶ。
  3. シーン内の StageTimelineManager を検索する。無い場合は StageTimelineManager.prefab(GUID d6039a8e2ad4bb94ebb38f0482116a81 で参照)をシーンのルートに配置する。Prefab が見つからない場合は Warning。
  4. Manager がある場合:
    • Config の GameObject を Manager の子にする。
    • stageTimelineManager に Manager を設定する。
    • Manager 配下で名前に 暗転Box または 暗転用オブジェクト を含む GameObject を blackoutBoxRoots に、暗転中ガイド を含む GameObject を blackoutGuideRoots に追加する。
  5. blackoutBoxRoots が空の場合は未割り当ての要素を 1 つ追加する。

設定タブ

左の一覧でページを切り替える。必須項目が空のページには橙の点を付ける。

グループ ページ 内容 橙の点の条件
基本 Config StageTimelineConfig 欄、「タイトル」、「標準シーン尺」 title が空
基本 シーン連携 「StageTimelineManager」(未設定時「シーンから検索」)、「出力先フォルダ」(「選択…」は Assets 配下のみ受け付ける) stageTimelineManager が未設定
基本 登場人物 characters の一覧(「+ 登場人物を追加」「−」)、「マーカー Prefab」 —
基本 高度な機能 機能スイッチ(カメラ / Animator / Udon イベント / ポストプロセス)。カメラ ON 時は「CinemachineBrain」欄(「シーンから検索」は型名 CinemachineBrain のコンポーネントを探し、複数あれば選択メニューを出す) カメラ ON かつ cinemachineBrain が未設定
演出 暗転 「暗転用Cube」(blackoutBoxRoots)、「暗転中ガイド」(blackoutGuideRoots) 削除されたオブジェクトへの参照がある、または「暗転用Cube」に未割り当ての要素がある
バックアップ・復元 バックアップ 下記「バックアップ」 —
バックアップ・復元 参照の再割り当て 下記「参照の再割り当て」 —

機能スイッチ:

スイッチ フィールド OFF 時に表示しないもの
カメラ showCameraFeatures カメラタブ、Q シートのカメラ列
Animator showAnimatorFeatures Animator パラメータ / Animator トリガーのプリセットとシーンの演出
Udon イベント showUdonEventFeatures Udon イベントのプリセットとシーンの演出
ポストプロセス showPostProcessFeatures ポストプロセスのプリセットとシーンの演出

「Config を初期化…」(左の一覧の下):

プリセットタブ

カテゴリ 表の列
照明 表示名 / Light Root / Intensity / Color / 使用
オブジェクト 表示名 / GameObject / 使用
アニメーション 表示名 / 対象 / Clip / 使用
BGM / SE 表示名 / AudioSource / 音量 / 使用
Animator パラメータ 表示名 / Animator / パラメータ名 (Int) / 使用
Animator トリガー 表示名 / Animator / 使用
Udon イベント 表示名 / 対象 Udon / 使用
ポストプロセス 表示名 / Volume / 使用
カテゴリ 受け付ける対象
照明 MashiroLightGroup を持つ、または子孫に Light を持つ GameObject(MashiroLightGroup があれば initialColor を defaultColor にする)
オブジェクト / アニメーション GameObject
BGM / SE AudioSource
Animator パラメータ / Animator トリガー Animator
Udon イベント UdonSharpBehaviour
ポストプロセス PostProcessVolume を持つ GameObject(PPv2 未導入時は GameObject)

シーンタブ

左にシーン一覧、右に選択したシーン(または区切り)の詳細を表示する。

シーン一覧:

項目 動作
上に挿入 / 下に挿入 空のシーンを挿入する
複製 直後に複製を挿入する。sceneUid は新しく採番し、ワープ先は同じ位置・向きのワープ地点を新規作成して差し替える
次のシーンを統合 autoAdvance を切り替える(最終シーンでは無効)
統合を解除 前のシーンと自身の autoAdvance を OFF にする(統合グループ内のシーンのみ表示)
この上に場の区切りを入れる / この上に幕の区切りを入れる 区切りを追加する(下記「幕・場の区切り」)
削除 シーンを削除する。そのシーンの上にある区切りは次のシーンへ移す(次のシーンが無い、または同じ種類の区切りが既にある場合は削除する)

シーン詳細:

欄 内容
番号 #{シーングループ番号}。グループ内 2 番目以降は #{グループ番号}-{グループ内の順番}
シーン名 sceneName
キッカケ cue。前のシーンが autoAdvance ON の場合は入力欄の代わりに「↳ 前のシーン(#N)から続けて進みます」を表示する
尺 空欄は標準尺(useCustomDuration = false、durationSeconds = 0)。数値を入れると useCustomDuration = true、durationSeconds = 入力値(0 以上)
次のシーンを統合 autoAdvance。最終シーンでは OFF の間は操作できない

演出の追加(「+ 演出を追加 ▼」→ カテゴリ、または各表の追加ボタン):

種別 プリセット選択で作成するエントリ 自由指定の項目名 → 作成するエントリ 継続中の行の選択肢 → 作成するエントリ
照明 LightFadeEntry(FadeIn、targetIntensity / targetColor = プリセットの既定値) 自由指定(Light を直接指定)→ FadeIn 維持 / 変更 → Change / デフォルト(Preset のみ)→ Change + useDefaultValues(値 = プリセットの既定値)/ フェードアウト → FadeOut
オブジェクト ToggleEntry(Appear) 自由指定(GameObject を直接指定)→ Appear 維持 / OFF → Disappear
アニメーション ObjectAnimationEntry(Play) 自由指定(GameObject と Clip を直接指定)→ Play 維持 / 終了 → Stop
BGM BgmEntry(FadeIn、volume = defaultVolume) 自由指定(AudioSource を直接指定)→ FadeIn 維持 / 変更 → Change / デフォルト(Preset のみ)→ Change + useDefaultValues(volume = defaultVolume、pitch = 1)/ フェードアウト → FadeOut
SE SeEntry(volume = defaultVolume) 自由指定(AudioSource を直接指定) —
暗転 「暗転を追加」→ BlackoutEntry(FadeIn) — 維持 / 解除 → FadeOut
ワープ 登場人物を選択 → WarpEntry(characterIndex) — —
Animator パラメータ AnimatorParameterEntry(valueId / intValue = 先頭の値) 自由指定(Animator を直接指定) —
Animator トリガー AnimatorTriggerEntry(triggerId / triggerName = 先頭の Trigger) 自由指定(Animator を直接指定) —
Udon イベント UdonEventEntry(eventId / eventName = 先頭のイベント) 自由指定(UdonBehaviour を直接指定) —
ポストプロセス PostProcessEntry(presetId) なし(Volume を解除)→ presetId が空のエントリ(直前に有効な Volume がある場合のみ表示) —

幕・場の区切り

カメラタブ

タイムライン生成

Generate の処理順:

  1. stageTimelineManager が未設定ならシーン内を検索して設定する。
  2. 適用先 PlayableDirector を解決する(下表)。解決できない場合は Error を出して終了する。
  3. シーンが 0 件なら Error を出して終了する。
  4. {出力先}/{タイトル} を作成し、要約バックアップ・参照の控え(referenceHints)・全項目バックアップ(種類 Generate)を書き出す。
  5. Anim/ 内の既存アセットをすべて削除する。
  6. 演出の計画・シーン尺を求め、トラック・クリップを書き込み、StageTimelineManager へ書き込む。
  7. PlayableDirector に TimelineAsset を割り当て、再生位置を生成前の位置(全長内に収める)にする。Evaluate() は Timeline ウィンドウのプレビュー中(AnimationMode.InAnimationMode())のみ行う。

適用先 PlayableDirector の解決順:

順 条件 適用先
1 playableDirector が設定済み playableDirector
2 stageTimelineManager の timeline が設定済み timeline
3 Manager 自身に PlayableDirector がある そのコンポーネント
4 Manager の子孫に PlayableDirector がある 最初に見つかったもの
5 いずれも無い Manager の子に GameObject Timeline を作成し、PlayableDirector(playOnAwake = false)を追加する

シーンとシーングループ

シーン尺

標準尺のシーン(useCustomDuration が OFF かつ durationSeconds が 0 以下): 次の最大値。

対象 必要秒数
標準 defaultSceneDuration(下限 0.1)
照明 FadeIn / FadeOut: delaySeconds + fadeSeconds。Change: fadeSeconds
暗転 FadeIn: max(0.1, delaySeconds) + fadeSeconds。FadeOut: delaySeconds + fadeSeconds
BGM playDelaySeconds(0 の場合は 1/60)+ fadeSeconds
アニメーション ceil(遅延 + クリップ長)(遅延は Play の playDelaySeconds、Stop は 0)
SE delaySeconds + AudioSource.clip の長さ
カメラ(「最初」) max(0.1, delaySeconds) + 0.2
ポストプロセス(先頭 1 件) max(0.1, delaySeconds) + max(1/60, fadeSeconds)

秒数指定のシーン(useCustomDuration が ON、または durationSeconds > 0):

対象 必要秒数 判定に使う入力秒数
照明 max(リード, delaySeconds) + fadeSeconds(リード: FadeIn / Change は 0.1、FadeOut は 0) delaySeconds + fadeSeconds
暗転 max(0.1, delaySeconds) + fadeSeconds delaySeconds + fadeSeconds
BGM max(リード, playDelaySeconds) + fadeSeconds(リード: FadeIn は 1/60、それ以外は 0) playDelaySeconds + fadeSeconds
アニメーション Stop(「最初」) stopDelaySeconds stopDelaySeconds
アニメーション Play(SingleShot) playDelaySeconds + クリップ長 同左
カメラ(「最初」) max(0.1, delaySeconds) + 0.2 delaySeconds
ポストプロセス(先頭 1 件) max(0.1, delaySeconds) + max(1/60, fadeSeconds) delaySeconds + fadeSeconds

共通:

  1. 各シーン尺の下限は 0.1 秒。
  2. 各シーンの終了時刻(累積)を整数秒へ切り上げる。結果として各シーン尺は 1 秒以上の整数秒になる。
  3. タイムライン全長 = max(最終シーン終了時刻, SE・SingleShot アニメのクリップ終端の最大値) + 0.1。

生成物

出力 パス
TimelineAsset {出力先}/{タイトル}/{タイトル}_AllScenes.playable
AnimationClip {出力先}/{タイトル}/Anim/
要約バックアップ {出力先}/{タイトル}/StageTimelineConfigBackup.json
全項目バックアップ {出力先}/{タイトル}/StageTimelineConfigBackup_{種類}_{yyyyMMdd_HHmmss}.json

AnimationClip のファイル名(NNN はシーン番号 3 桁):

種別 ファイル名
照明 {タイトル}_SceneNNN_{照明ルート名}_{FadeIn|Change|Hold|FadeOut}.anim
照明(タイムライン末尾の保持) {タイトル}_Tail_SceneNNN_{照明ルート名}_Hold.anim
BGM {タイトル}_Bgm_{AudioSource名}_SceneNNN_SceneNNN_{連番2桁}.anim
SE {タイトル}_Se_{AudioSource名}_SceneNNN.anim(同シーン 2 件目以降は _{番号2桁} を付加)
暗転 {タイトル}_SceneNNN_Blackout_{オブジェクト名}_{FadeIn|Hold|FadeOut}.anim
ワープマーカー {タイトル}_WarpMarker_{キャラクター名}.anim
ポストプロセス {タイトル}_PP{Volume の登場順2桁}_{Volume名}_SceneNNN.anim

生成トラック

すべてルートの GroupTrack Generated の下に作成する。

グループ トラック 内容
Objects ActivationTrack {オブジェクト名} 表示区間
Animations AnimationTrack {オブジェクト名} Animation AnimationClip の再生区間
Lights GroupTrack {照明ルート名} 内に ActivationTrack Light Active - {名前}(Light / ビーム MeshRenderer を持つ GameObject ごと)と AnimationTrack Light Anim - {照明ルート名} 点灯区間と強度・色のカーブ
BGM ActivationTrack {AudioSource名} (Active)、AnimationTrack BGM - {AudioSource名} 有効区間と m_Volume / m_Pitch / m_PlayOnAwake のカーブ
SE ActivationTrack {AudioSource名} (SE Active)、AnimationTrack SE - {AudioSource名} 有効区間と m_Volume / m_PlayOnAwake のカーブ
Blackout ActivationTrack 暗転 (アクティブ) - {名前}、AnimationTrack 暗転アニメーション - {名前}、ActivationTrack 暗転中ガイド - {名前} 暗転オブジェクトの有効区間・不透明度、ガイドの表示区間
Warp Markers ActivationTrack Warp Marker Active - {キャラクター名}、AnimationTrack Warp Marker Move - {キャラクター名} ワープマーカーの表示と移動
Cameras CinemachineTrack Cinemachine CinemachineShot。cinemachineBrain の CinemachineBrain にバインド
Post Process AnimationTrack PostProcess - {Volume名} Volume の weight のクリップ(名前 SceneNNN {ON|OFF|FadeIn|FadeOut})
Animator Params AnimationTrack {Animator名}.{パラメータ名}(muted) 値ごとの区間クリップ(名前 {値の名前} (= {値}) または = {値})
Animator Triggers AnimationTrack {Animator名} (Trigger)(muted) 発火位置のクリップ(名前 ▶ {Trigger名})
Udon Events AnimationTrack {Behaviour名} (Udon)(muted) 発火位置のクリップ(名前 ▶ {関数名}())
(直下) AnimationTrack Scene Markers(muted) シーングループごとのクリップ(名前 #{番号} {表示名})

発火タイミング

S = シーン開始時刻、E = シーン終了時刻、d = エントリの遅延秒数。

演出 「最初」 / 開始 「最後」 / その他
オブジェクト表示(Appear) S + 0.1 + d(先頭シーンは S。d を無視) E − 0.1
オブジェクト非表示(Disappear) S + 0.1 + d(E 以下) E − 0.1
アニメーション再生(Play) S + playDelaySeconds —
アニメーション停止(Stop) S + stopDelaySeconds(シーン尺未満) E
照明 FadeIn / Change S + max(0.1, d) からフェード開始 —
照明 FadeOut S + d からフェード開始 —
BGM FadeIn S + d(d = 0 のときは S + 1/60)で有効化しフェード開始 —
BGM Change S + p + d からフェード開始(p = 同じ BGM の FadeIn 時の再生開始遅延。0 のときは 1/60) —
BGM FadeOut S + d からフェード開始 —
SE S + d + 1/60 —
暗転 FadeIn / FadeOut S + max(0.1, d) からフェード開始 —
ポストプロセス S + max(0.1, d) からフェード開始 —
ワープ S + d E − 0.2
カメラ S + max(0.1, d)(E − 0.2 を超える場合は E − 0.2 に寄せ、Warning) E − 0.2
Animator パラメータ S + max(0.1, d)(E 以下) —
Animator トリガー S + max(0.1, d)(E 以下) —
Udon イベント S + max(0.1, d) E − 0.1

リード時間定数:

定数 値(秒) 定義 対象
WarpSceneEndLeadSeconds 0.2 StageTimelineGenerator.cs ワープ「最後」
AnimatorParamSceneStartLeadSeconds 0.1 StageTimelineGenerator.cs Animator パラメータ
AnimatorTriggerSceneStartLeadSeconds 0.1 StageTimelineGenerator.cs Animator トリガー
UdonEventSceneStartLeadSeconds 0.1 StageTimelineGenerator.cs Udon イベント「最初」
UdonEventSceneEndLeadSeconds 0.1 StageTimelineGenerator.cs Udon イベント「最後」
CameraSceneStartLeadSeconds 0.1 TimelineWriter.cs カメラ「最初」
CameraSceneEndLeadSeconds 0.2 TimelineWriter.cs カメラ「最後」・「最初」の上限
LightFadeInMinLeadSeconds 0.1 StagePlanning.cs 照明 FadeIn / Change
BlackoutFadeInMinLeadSeconds / BlackoutFadeOutMinLeadSeconds 0.1 StagePlanning.cs 暗転
PostProcessSceneStartLeadSeconds 0.1 StagePlanning.cs ポストプロセス
ActivationTailPadding 0.1 TimelineWriter.cs オブジェクト表示・非表示のずらし幅、暗転中ガイドの前後余白、末尾延長

演出ごとの仕様

生成物の親(ワープマーカー _WarpMarkers・ワープ地点 _WarpPoints):

プリセットの参照方式

プリセットの id は GUID(N 形式)で自動採番する。エントリはプリセットを presetId で参照する。

方式 プリセット 生成時に参照する値
対象指定型 オブジェクト(TogglePresetEntry)、アニメーション(ObjectAnimationPresetEntry)、カメラ(CameraPresetEntry)、ポストプロセス(PostProcessPresetEntry) 対象(target / clip / virtualCamera / volumeObject)をプリセットから取得する
初期値テンプレート型 照明(LightPresetEntry)、BGM(BgmPresetEntry)、SE(SePresetEntry) 対象(lightRoot / source)はプリセットから取得する。強度・色・音量・ピッチはエントリの値を使う(プリセットの既定値は、追加時・「デフォルト」選択時・「デフォルト設定を反映」でのみエントリへ書き込む)
選択肢列挙型 Animator パラメータ(values)、Animator トリガー(triggers)、Udon イベント(events) 対象はプリセットから取得する。値・Trigger 名・関数名はエントリの valueId / triggerId / eventId で選択肢を引く

StageTimelineManager への書き込み

stageTimelineManager 設定時、SerializedObject 経由で次を書き込む(未設定時は Warning を出して書き込まない)。

書き込み先 内容
checkPointSeconds チェックポイント(整数秒)
sceneDisplayNames / sceneNextCues / sceneRangeStarts / sceneRangeEnds シーングループの表示名・次のキッカケ・シーン範囲
characterDisplayNames characters の displayName(空なら Character {番号})
warp* ワープ(時刻昇順)
animatorParam* / animatorTrigger* / udonEvent* 連動イベント(時刻昇順)
timeline 適用先 PlayableDirector

Warning / Error

Console に [StageTimeline] 付きで出力する。

条件 結果
Config 未設定 / 適用先 PlayableDirector を解決できない / シーン 0 件 Error。生成しない
generatedBaseFolder が Assets で始まらない Warning。既定の出力先を使う
stageTimelineManager 未設定(playableDirector 設定済みで生成した場合) Warning。Manager への書き込みをスキップ
秒数指定のシーンで入力秒数が尺を超え、尺を延長した Warning
オブジェクト: 同一シーン重複 / 表示中の表示 / 非表示中の非表示 Warning。該当エントリを無視
アニメーション: 対象またはクリップ未設定 / 再生していない対象の停止 / 再生中の対象の再生 Warning
照明: プリセット参照切れ / 同一シーン重複 / 消灯中の Change・FadeOut Warning
BGM: 同一シーン重複 / 再生中の FadeIn / 停止中の Change・FadeOut / AudioSource にクリップ無し Warning
SE: AudioSource にクリップ無し Warning
暗転: 同一シーン重複 / 暗転中の暗転 / 非暗転中の解除 Warning
ポストプロセス: PPv2 パッケージが見つからない Warning。ポストプロセス全体をスキップ
ポストプロセス: 1 シーンに 2 件以上 Warning。先頭 1 件のみ使用
ポストプロセス: プリセット参照切れ / Volume 未割り当て / PostProcessVolume が無い / Is Global でない / 直前と同じ Volume Warning。該当エントリをスキップ
ポストプロセス: 1 つの GameObject に PostProcessVolume が複数 / Profile 未割り当て / Color Grading の Mode・Tonemapper が Global Volume 間で不一致 Warning。生成は継続
ワープ: characters が空 / destinationTransform 未設定 Warning。スキップ
Animator パラメータ: Animator 未設定 / パラメータ名未設定 / 値の選択肢を解決できない / パラメータが無い・Int 型でない Warning。スキップ
Animator トリガー: Animator 未設定 / Trigger 名を解決できない / パラメータが無い・Trigger 型でない Warning。スキップ
Udon イベント: 対象未設定 / 関数名を解決できない Warning。スキップ
Udon イベント: public・引数なしのメソッドが見つからない Warning。生成は継続
カメラ: プリセット参照切れ / virtualCamera 未設定 / vcam に CinemachineVirtualCamera が無い Warning。該当指定をスキップ
カメラ: cinemachineBrain 未設定 / Cinemachine 未導入 / CinemachineBrain コンポーネントが無い / Cinemachine Timeline 型を解決できない Warning。カメラトラック全体をスキップ
ワープ・カメラ・Udon イベントの「最後」: シーン尺がリード時間未満 / カメラ「最初」: 遅延がシーン尺を超える Warning

Q シートウィンドウ

表示 内容
Q シート 列: Cue / きっかけ / シーン / 照明 / 暗転 / BGM / オブジェクト / SE / アニメ / ワープ / カメラ(カメラ列は showCameraFeatures ON のときのみ)。各演出は時刻(0.0s / +X.Xs / end)・操作・対象・フェード秒・付加情報で表示する。ポストプロセスは照明列に操作 Volume で表示する(presetId が空なら 解除)
遷移表 キューを横軸に、照明・暗転・BGM・オブジェクトの各対象が有効な範囲を表示する。SE・ワープは発生位置、カメラは切替を表示する

Q シート CSV

Q シートウィンドウの「CSV を出力」で保存先を選んで出力する。読み込み機能は無い。

セル内の 1 行の書式: [オフセット][タグ] 対象 フェード秒 付加情報

要素 書式
オフセット [+X.Xs]。0 秒は省略。「最後」指定でグループ末尾ちょうどは [end]、超過分は [end+X.Xs]
タグ 照明・BGM・暗転: [FI] / [FO](フェード 0 秒は [CI] / [CO])/ [Change]。ポストプロセス: [PP]。オブジェクト: [ON] / [OFF]。アニメーション: [Play] / [Stop]。カメラ: [Cam]。SE・ワープはタグ無し
フェード秒 X.Xs。0 秒は省略
照明 色 {カテゴリ}(#RRGGBB)(targetColor。彩度 < 0.05 かつ明度 > 0.95 は省略)、強度 i= は 1 以外のとき
色カテゴリ 明度 < 0.1: 暗、彩度 < 0.15: 白、それ以外は色相で 赤 / 橙 / 黄 / 黄緑 / 緑 / 水色 / 青 / 紫 / 桃
ポストプロセス [PP] {プリセット表示名}(presetId が空なら 解除)。照明列に出力する
BGM vol=(FadeOut 以外)、pitch=(Change のみ)
SE vol=(1 以外のとき)
アニメーション [Play] 対象 (クリップ, Hold) / [Play] 対象 (クリップ, SingleShot, シーン終了で停止) / [Stop] 対象
ワープ キャラクター名 → ワープ先Transform名(キャラクター名が空なら キャラ{番号})
カメラ [Cam] プリセット名 に blend=X.Xs または cut、useFovOverride ON 時 fov=X.X(fovSeconds > 0 なら (X.Xs))、useTiltPanOverride ON 時 tilt=X.X° pan=X.X°(tiltPanSeconds > 0 なら (X.Xs))
プリセット削除済み {最後に設定されていた対象名}(プリセット削除済み)、対象も無い場合 (プリセット未設定)

バックアップ

要約バックアップ:

全項目バックアップ:

種類 一覧の表記 書き出すタイミング
Generate タイムライン生成時 タイムライン生成
Manual 手動 「いまの内容をバックアップ」
BeforeInitialize Config を初期化する前 「Config を初期化…」
BeforeRestore バックアップから戻す前 「このバックアップに戻す…」

設定タブ「バックアップ」:

参照の再割り当て

順 方法 候補の理由の表記
1 控えの path / order で階層をたどる 階層が一致
2 控えの末尾の名前と一致するオブジェクト(複数ある場合は親の名前の一致数、次に種類で絞る) 名前が一致
3 プリセットの表示名と一致するオブジェクト(同上) 名前が一致
4 プリセットの表示名の部分一致(NFKC 正規化・小文字化し、空白・_・-・・・.・(・) を除いて比較。2 文字以上。完全一致 → 末尾一致 → 部分一致の順、余分な文字が最少で 1 件に決まる場合のみ。割り当て済み・他の候補のオブジェクトは除く) 名前がほぼ一致 / 名前の一部が一致

ワープ地点と Gizmo

Config

StageTimelineConfig

フィールド 型 既定値 必須 内容
title string "" 必須 UI「タイトル」(初期設定は「公演名」)。出力サブフォルダ名・アセット名の接頭辞
defaultSceneDuration float 2.0 — UI「標準シーン尺」(秒)。最小 0.1
scenes List<ShowScene> 空 必須(1 件以上) シーン一覧
sceneDividers List<SceneDivider> 空 任意 幕・場の区切り
lightPresets List<LightPresetEntry> 空 任意 照明プリセット
togglePresets List<TogglePresetEntry> 空 任意 オブジェクトプリセット
objectAnimationPresets List<ObjectAnimationPresetEntry> 空 任意 アニメーションプリセット
bgmPresets List<BgmPresetEntry> 空 任意 BGM プリセット
sePresets List<SePresetEntry> 空 任意 SE プリセット
animatorParameterPresets List<AnimatorParameterPresetEntry> 空 任意 Animator パラメータプリセット
animatorTriggerPresets List<AnimatorTriggerPresetEntry> 空 任意 Animator トリガープリセット
udonEventPresets List<UdonEventPresetEntry> 空 任意 Udon イベントプリセット
cameraPresets List<CameraPresetEntry> 空 任意 カメラプリセット(UI「アングル」)
cinemachineBrain GameObject なし カメラ使用時 UI「CinemachineBrain」。CinemachineBrain を持つ GameObject
postProcessPresets List<PostProcessPresetEntry> 空 任意 ポストプロセスプリセット
setupCompleted bool false — 初期設定の完了
showCameraFeatures bool false — 機能スイッチ「カメラ」
showAnimatorFeatures bool false — 機能スイッチ「Animator」
showUdonEventFeatures bool false — 機能スイッチ「Udon イベント」
showPostProcessFeatures bool false — 機能スイッチ「ポストプロセス」
characters List<CharacterEntry> 空 ワープ使用時 UI「登場人物」
warpMarkerPrefab GameObject なし 任意 UI「マーカー Prefab」。ワープマーカーのプレハブ
generatedBaseFolder string Assets/StageTimelineTools/Generated 任意 UI「出力先フォルダ」(Assets 配下)
playableDirector PlayableDirector なし 任意 旧バージョン用の適用先。設定時は適用先として最優先する。UI には表示しない
stageTimelineManager StageTimelineManager なし 必須 UI「StageTimelineManager」。生成結果の書き込み先・適用先の解決元
blackoutBoxRoots List<GameObject> 空 暗転使用時 UI「暗転用Cube」
blackoutGuideRoots List<GameObject> 空 任意 UI「暗転中ガイド」

Inspector に表示しないフィールド:

フィールド 型 内容
builderDataVersion int(private) ビルダーのデータ版数。既定 0。CurrentBuilderDataVersion は 1
showAdvancedFeatures bool 旧バージョンの「高度な機能を表示」。UpgradeBuilderDataIfNeeded() でのみ参照する
previousSceneSnapshots List<GeneratedSceneSnapshot>(private) 前回生成時の各シーンの sceneUid / startTime / endTime
referenceHints List<ReferenceHint> 参照の控え。要素は key(string)/ path(string[])/ order(int[])

ShowScene

フィールド 型 既定値 必須 内容
sceneUid string(非表示) 採番 — シーン識別 ID(GUID N 形式)
sceneName string なし 任意 シーン名
cue string なし 任意 UI「キッカケ」
useCustomDuration bool false — 秒数指定
durationSeconds float 0 — UI「尺」(秒)
autoAdvance bool false — UI「次のシーンを統合」
toggles / objectAnimations / lightFades / bgmEntries / seEntries / blackouts / warps / animatorParameters / animatorTriggers / udonEvents / cameras / postProcesses 各エントリの List 空 任意 演出エントリ

SceneDivider

フィールド 型 既定値 必須 内容
isAct bool false — true: 幕の区切り、false: 場の区切り
sceneUid string "" 必須 区切りのすぐ下のシーンの sceneUid。一致するシーンが無い区切りは無視する
name string "" 任意 区切りの名前

プリセット

全プリセット共通(CharacterEntry を除く): id(string、自動採番)、displayName(string、UI「表示名」)。

クラス フィールド 型 既定値 内容
LightPresetEntry lightRoot GameObject なし UI「Light Root」
defaultIntensity float 1.0 UI「Intensity」
defaultColor Color 白 UI「Color」
TogglePresetEntry target GameObject なし UI「GameObject」
ObjectAnimationPresetEntry target GameObject なし UI「対象」
clip AnimationClip なし UI「Clip」
BgmPresetEntry / SePresetEntry source AudioSource なし UI「AudioSource」
defaultVolume float 1.0 UI「音量」
AnimatorParameterPresetEntry targetAnimator Animator なし UI「Animator」
parameterName string "" UI「パラメータ名 (Int)」
values List<AnimatorParameterValueLabel> 空 値の選択肢。要素は id(自動採番)/ value(int)/ name(string)
AnimatorTriggerPresetEntry targetAnimator Animator なし UI「Animator」
triggers List<AnimatorTriggerOption> 空 送れる Trigger。要素は id(自動採番)/ triggerName / displayName(空なら triggerName を表示)
UdonEventPresetEntry targetBehaviour UdonSharpBehaviour なし UI「対象 Udon」
events List<UdonEventOption> 空 呼べるイベント。要素は id(自動採番)/ eventName / displayName(空なら eventName を表示)/ ownerOnly(bool、既定 false)
CameraPresetEntry virtualCamera GameObject なし CinemachineVirtualCamera を持つ GameObject
activePriority / inactivePriority / defaultFov int / int / float 20 / 0 / 60 生成では使用しない
colorSlot int(非表示) 0 使用しない
PostProcessPresetEntry volumeObject GameObject なし UI「Volume」。PostProcessVolume を持つ GameObject
CharacterEntry displayName string "" キャラクター名(id は無い)

演出エントリ

bindingMode(Direct / Preset)と presetId(string)を持つエントリ: ToggleEntry / ObjectAnimationEntry / LightFadeEntry / BgmEntry / SeEntry / AnimatorParameterEntry / AnimatorTriggerEntry / UdonEventEntry。Direct 用の対象フィールドは Preset 指定時、プリセットが見つからない場合のみ使う。

クラス フィールド 型 既定値 内容
ToggleEntry bindingMode enum Direct
target GameObject なし 対象(Direct)
action Appear / Disappear Appear
appearTiming / disappearTiming SceneStart / SceneEnd SceneStart 「最初」/「最後」
appearDelaySeconds / disappearDelaySeconds float 0 遅延(SceneStart のみ)
ObjectAnimationEntry bindingMode enum Direct
target / clip GameObject / AnimationClip なし 対象・クリップ(Direct)
action Play / Stop Play
playDelaySeconds float 0 再生遅延
playMode Hold / SingleShot Hold UI「維持」/「単発」
stopTiming SceneStart / SceneEnd SceneStart
stopDelaySeconds float 0 停止遅延(SceneStart のみ)
LightFadeEntry bindingMode enum Direct
lightRoot GameObject なし 照明ルート(Direct)
action FadeIn / FadeOut / Change FadeIn
targetIntensity float 1.0 目標強度
targetColor Color 白 目標色
fadeSeconds float 1.0 フェード秒数
delaySeconds float 0 遅延
useDefaultValues bool false 「デフォルト」指定(Change かつ Preset)
BgmEntry bindingMode enum Direct
source AudioSource なし 対象(Direct)
action FadeIn / FadeOut / Change FadeIn
volume float 1.0 目標音量
pitch float 1.0 目標ピッチ(Change のみ使用)
fadeSeconds float 1.0 フェード秒数
playDelaySeconds float 0 FadeIn: 再生開始遅延、Change / FadeOut: フェード開始遅延
useDefaultValues bool false 「デフォルト」指定(Change かつ Preset)
SeEntry bindingMode enum Direct
source AudioSource なし 対象(Direct)
volume float 1.0 音量
delaySeconds float 0 遅延
BlackoutEntry action FadeIn / FadeOut FadeIn 暗転 / 解除
fadeSeconds float 1.0 フェード秒数
delaySeconds float 0 遅延
WarpEntry characterIndex int 0 characters の index
timing SceneStart / SceneEnd SceneStart
delaySeconds float 0 遅延(SceneStart のみ)
destinationTransform Transform なし ワープ先
AnimatorParameterEntry bindingMode enum Preset
targetAnimator / parameterName Animator / string なし / "" Direct 用
valueId string "" 選択肢 ID(Preset)
intValue int 0 Direct: 適用値。Preset: 表示用キャッシュ
delaySeconds float 0 遅延
AnimatorTriggerEntry bindingMode enum Preset
targetAnimator Animator なし Direct 用
triggerId string "" 選択肢 ID(Preset)
triggerName string "" Direct: Trigger 名。Preset: 表示用キャッシュ
delaySeconds float 0 遅延
UdonEventEntry bindingMode enum Preset
timing SceneStart / SceneEnd SceneStart
targetBehaviour UdonSharpBehaviour なし Direct 用
eventId string "" 選択肢 ID(Preset)
eventName string "" Direct: 関数名。Preset: 表示用キャッシュ
ownerOnly bool false Direct 時の Owner のみ実行(UI「全員」/「Owner」)
delaySeconds float 0 遅延(SceneStart のみ)
CameraEntry presetId string "" カメラプリセット ID
timing SceneStart / SceneEnd SceneStart 「最初」/「最後」
delaySeconds float 0 遅延(SceneStart のみ)
blendSeconds float 1.0 生成では使用しない(Q シートに出力)
useFovOverride / targetFov / fovSeconds / fovDelaySeconds bool / float ×3 false / 60 / 1.0 / 0 生成では使用しない(Q シート CSV に出力)
useTiltPanOverride / targetTiltDegrees / targetPanDegrees / tiltPanSeconds / tiltPanDelaySeconds bool / float ×4 false / 0 / 0 / 1.0 / 0 生成では使用しない(Q シート CSV に出力)
PostProcessEntry presetId string "" ポストプロセスプリセット ID。空は「なし」
fadeSeconds float 1.0 フェード秒数
delaySeconds float 0 遅延

MashiroWarpPointGizmo

Inspector フィールドは無い。[DisallowMultipleComponent]、AddComponentMenu: Mashiro Theater/Mashiro Warp Point Gizmo。

API リファレンス

UI へ手配線するものは無い。以下はすべてエディタまたは他コンポーネントから呼ばれる内部連携用(配線不要)。

StageTimelineBuilderWindow

シグネチャ 用途
static void Open() ウィンドウを開く。メニュー Tools/Mashiro Theater/Stage Timeline Builder から呼ばれる

StageTimelineQSheetWindow

シグネチャ 用途
static void Open() Q シートウィンドウを開く。ビルダーのツールバー「Q シート ↗」から呼ばれる

StageTimelineGenerator

シグネチャ 用途
static TimelineBuildResult Generate(StageTimelineConfig config) タイムラインを生成する。「タイムライン生成」ボタンから呼ばれる。Config 未設定、適用先 PlayableDirector を解決できない、シーン 0 件のときは null を返す

TimelineBuildResult: SceneCount / ObjectTrackCount / LightRootCount / BgmTrackCount / BlackoutSceneCount(int)、Warnings(List<string>)、void LogSummary(string title)(集計を Console に出力)。

StageTimelineConfig

シグネチャ 用途
LightPresetEntry FindLightPresetById(string presetId) ID でプリセットを返す(無ければ null)
TogglePresetEntry FindTogglePresetById(string presetId) 同上
ObjectAnimationPresetEntry FindObjectAnimationPresetById(string presetId) 同上
BgmPresetEntry FindBgmPresetById(string presetId) 同上
SePresetEntry FindSePresetById(string presetId) 同上
AnimatorParameterPresetEntry FindAnimatorParameterPresetById(string presetId) 同上
AnimatorTriggerPresetEntry FindAnimatorTriggerPresetById(string presetId) 同上
UdonEventPresetEntry FindUdonEventPresetById(string presetId) 同上
CameraPresetEntry FindCameraPresetById(string presetId) 同上
PostProcessPresetEntry FindPostProcessPresetById(string presetId) 同上
List<GameObject> GetResolvedBlackoutBoxRoots() 重複・null を除いた暗転オブジェクト一覧を返す
List<GameObject> GetResolvedBlackoutGuideRoots() 重複・null を除いた暗転中ガイド一覧を返す
List<GeneratedSceneSnapshot> PreviousSceneSnapshots { get; } 前回生成時のシーン位置を返す
void SetPreviousSceneSnapshots(List<GeneratedSceneSnapshot> snapshots) 前回生成時のシーン位置を設定する。Generator が呼ぶ
bool UpgradeBuilderDataIfNeeded() builderDataVersion が CurrentBuilderDataVersion 未満の場合、setupCompleted = true、showCameraFeatures = true、showAnimatorFeatures / showUdonEventFeatures / showPostProcessFeatures = showAdvancedFeatures にして版数を更新し true を返す。ビルダー・Q シートウィンドウが呼ぶ
void InitializeAsNewBuilderData() 版数を CurrentBuilderDataVersion にし、setupCompleted と機能スイッチ 4 つを false にする。Config の作成・初期化・Reset() で呼ばれる
const int CurrentBuilderDataVersion ビルダーのデータ版数(1)

エントリ・プリセットクラス

シグネチャ 用途
ShowScene.SceneUid { get; } / string ShowScene.EnsureSceneUid() シーン ID を返す / 未採番なら採番して返す
void ShowScene.RegenerateSceneUid() シーン ID を新しく採番する。シーンの複製で呼ばれる
GameObject ToggleEntry.ResolveTarget(StageTimelineConfig config) 対象を解決する(Preset はプリセットの対象、見つからなければ target)
GameObject ObjectAnimationEntry.ResolveTarget(StageTimelineConfig config) / AnimationClip ResolveClip(StageTimelineConfig config) 対象・クリップを解決する
GameObject LightFadeEntry.ResolveLightRoot(StageTimelineConfig config) 照明ルートを解決する
AudioSource BgmEntry.ResolveSource(StageTimelineConfig config) / AudioSource SeEntry.ResolveSource(StageTimelineConfig config) AudioSource を解決する
bool AnimatorParameterEntry.TryResolveIntValue(StageTimelineConfig config, out int value) 適用値を解決する。Preset で選択肢が見つからない場合 false
Animator AnimatorParameterEntry.ResolveAnimator(StageTimelineConfig config) / string ResolveParameterName(StageTimelineConfig config) 対象 Animator・パラメータ名を解決する
AnimatorParameterValueLabel AnimatorParameterPresetEntry.FindValueById(string valueId) / FindFirstValueByInt(int value) 値の選択肢を ID / 値で検索する
bool AnimatorTriggerEntry.TryResolveTriggerName(StageTimelineConfig config, out string trigger) / Animator ResolveAnimator(StageTimelineConfig config) Trigger 名・対象 Animator を解決する
AnimatorTriggerOption AnimatorTriggerPresetEntry.FindTriggerById(string triggerId) / FindTriggerByName(string name) / ResolveTrigger(string triggerId, string cachedTriggerName) Trigger 選択肢を検索する(ResolveTrigger は ID → 名前の順)
bool UdonEventEntry.TryResolveEventName(StageTimelineConfig config, out string resolved) / UdonSharpBehaviour ResolveTarget(StageTimelineConfig config) / bool ResolveOwnerOnly(StageTimelineConfig config) 関数名・対象・OwnerOnly を解決する
UdonEventOption UdonEventPresetEntry.FindEventById(string eventId) / FindEventByName(string name) / ResolveEvent(string eventId, string cachedEventName) イベント選択肢を検索する(ResolveEvent は ID → 名前の順)

その他

ライセンス

MIT License ではない。LICENSE.md(ましろ小劇場 ツール・ギミック汎用利用規約)に基づいて提供する。規約の正本は VN3License_ja.pdf(VN3 ライセンス様式)。


本ドキュメントは AI を用いて作成しています。不明点・記載の誤りなどありましたら、下記までお問い合わせください。