Skip to content

背景

キャラクター とは対照的に、背景はシーンの バック レイヤーを表すために使用されるアクターです。場所、風景、景観、または常にキャラクターの 後ろ に表示される必要があるものです。

背景アクターは、名前、外観、可視性、および変換(位置、回転、スケール)で定義されます。時間とともに外観、可視性、変換を変更できます。

背景の動作は、Naninovel -> Configuration -> Backgrounds コンテキストメニューを使用して構成できます。利用可能なオプションについては、構成ガイド を参照してください。背景のリソースマネージャーには、Naninovel -> Resources -> Backgrounds コンテキストメニューを使用してアクセスできます。

シナリオスクリプトでは、背景は主に @back コマンドで制御されます。

nani
; "River" をメイン背景の外観として設定します
@back River

; 上記と同じですが、"RadialBlur" トランジションエフェクトも使用します
@back River.RadialBlur

背景は、従来のVNゲームフローによりよく対応するために、キャラクターとは少し異なる方法で処理されます。ほとんどの場合、シーンには1つの背景アクターしかなく、常に異なる外観に遷移します。スクリプトで同じアクターIDを繰り返す手間を省くために、MainBackground アクターが影響を受けるものであると仮定して、背景の外観とトランジションタイプ(オプション)のみを名前なしパラメータとして提供することが可能です。そうでない場合は、id パラメータを介して背景アクターのIDを明示的に指定できます。

nani
; "Night" と "Day" のビデオクリップを持つ "CityVideo" アクターがあるとします。

; 昼のクリップを再生するビデオ背景を表示します。
@back Day id:CityVideo

; リップルエフェクトで夜のクリップに遷移します。
@back Night.Ripple id:CityVideo

; ビデオ背景を隠します。
@hide CityVideo

メイン背景アクターレコードは、背景リソースマネージャーでデフォルトで作成され、名前を変更したり削除したりすることはできません。ただし、メイン背景のパラメータ(実装、ピボット、PPUなど)は自由に変更できます。

背景アクターの概要については、次のビデオチュートリアルを確認してください。

cover

アクターレコード

背景や背景の外観が多く、エディタメニューですべてを割り当てるのが不便な場合は、アクターレコードアセット(Create -> Naninovel -> Actor Record -> Background)を使用してください。これらはマルチ編集をサポートしており、フォルダでレコードを整理できます。例については、以下のビデオを確認してください。

cover

外観リソースをアクターレコードに関連付けるには、Addressable Asset System を使用します。たとえば、"Beach" の外観を MainBackground に関連付けるには、テクスチャアセットにアドレス Naninovel/Backgrounds/MainBackground/Beach を割り当て、Naninovel ラベルを追加します。Addressableプロバイダーの使用の詳細については、リソースプロバイダードキュメント を参照してください。

Zオーダー

複数の背景を同時に表示する場合、互いに重なり合う傾向があります。

nani
@back id:1
@back id:2

— 背景 12 の両方がフルスクリーンの不透明テクスチャである場合、後で追加されたものがもう一方を完全に覆います。最初の背景をもう一方の後ろに表示するには、もう一方を隠すか、Z位置(深度)を変更して描画順序を変更します。

nani
; 背景2を隠して、後ろにある最初の背景を表示します
@back id:2 !visible
; アクターを隠すための専用コマンドもあります
@hide 2

; または、Z位置を変更します
@back id:1 pos:,,98
@back id:2 pos:,,99

Z位置が高いほど、カメラからの距離が遠くなります。したがって、カメラの近くに配置されたアクターは、別のアクターの上に描画されます。

背景は、他のアクタータイプの後ろに表示されるように、デフォルトで特定のZオフセットで配置されます。オフセット値は、背景設定の Z Offset プロパティで変更できます。

Zファイティングの問題を防ぐために、背景は最初に追加(表示)されたときに、Z軸上で互いにさらにオフセットされます。オフセットは Z Step 設定で制御されます。

一致モード

カメラ ↗ が正投影モードでレンダリングされており、背景アクター構成の Match Mode が無効になっていない場合、アクターは現在の画面サイズに合わせてサイズを調整しようとします。これは、ディスプレイの アスペクト比 ↗ が背景のものと異なる場合を処理するために実行されます。マッチングが無効になっており、アスペクト比が異なる場合、「黒帯」が表示されます。

cover

スタンドアロン(PC、Mac、Linux)ビルドの場合、プレイヤー設定 ↗ で使用可能なアスペクト比を制限できますが、Web、コンソール、モバイルでは不可能であり、アプリケーションは代わりにターゲットデバイスに適応する必要があります。

各背景アクター(汎用実装を除く)には、次の一致モードを設定できます。

モード説明
Crop背景は常にカメラの視錐台全体を占有し、ディスプレイのアスペクト比に関係なく、プレイヤーに黒帯が表示されないようにします。ただし、一部の背景領域が切り取られる可能性があります。新しい背景アクターのデフォルト設定です。
Fit背景領域全体は常に表示されたままですが、アスペクト比が異なる場合、黒帯が表示されます。
Customカスタム比率で幅または高さを一致させることができます。比率は Custom Match Ratio プロパティで制御されます。最小値(0)は幅を一致させて高さを無視し、最大値(1)はその逆です。
Disable一致を実行しません。

TIP

汎用またはカスタム背景に同様の一致機能を実装したい場合は、フォーラムの 画面へのスケーリングの例 ↗ を参照してください。

ポーズ

各背景には、名前付きの状態(ポーズ)を指定できる Poses プロパティがあります。

ポーズ名は、@back コマンドで外観として使用して、コマンドパラメータを介して個別に指定する代わりに、ポーズで指定されたすべての選択されたパラメータを一度に適用できます。

nani
; メイン背景に "Day" ポーズが定義されている場合、
; ポーズで指定されたすべての選択されたパラメータを適用します。
@back Day

; 上記と同じですが、"City" IDを持つ背景アクターに対して、
; 3秒かけて "DropFade" トランジションを使用します。
@back Day.DropFade id:City time:3

ポーズを外観として使用する場合でも、個々のパラメータをオーバーライドできることに注意してください。例:

nani
; メイン背景に "Day" ポーズが定義されている場合、
; ポーズ状態で指定されたすべてのパラメータを適用しますが、
; コマンドでオーバーライドされているtintは除きます。
@back Day tint:#ff45cb

プレースホルダー背景

プレースホルダー実装はデフォルトのものであり、背景を表す視覚的なアセットがまだない場合のシナリオドラフト作成を目的としています。実行時に背景の外観をプロシージャル生成するため、シナリオの作成中に現在表示されているものを追跡できます。以下は、上にいくつかの プレースホルダーキャラクター が配置されたプレースホルダー「EveningScene」背景の例です。

cover

Naninovelは背景プレースホルダーを自動的に生成しますが、背景エディタの Placeholder Appearances リストを使用して、特定の外観の見た目を定義できます。

cover

スプライト背景

背景アクターのスプライト実装は最も一般的で単純なものです。背景の外観を表すために、クワッドメッシュ(スプライト)にラップされた一連の テクスチャ ↗ アセットを使用します。テクスチャは、.jpg.png.tiff.psd、または Unityでサポートされている ↗ その他の画像ファイル形式に基づくことができます。

TIP

開発ワークフローに最も適したファイル形式を選択してください。プロジェクトをビルドすると、Unityはすべてのソースリソース(テクスチャ、オーディオ、ビデオなど)をターゲットプラットフォームに最適な形式に自動的に変換するため、プロジェクトにリソースを保存する際の形式は重要ではありません。Unityがプロジェクトアセットを管理する方法の詳細については、公式ドキュメント ↗ を参照してください。

シーン上のスプライト背景メッシュの初期(スケーリングされていない)サイズは、参照解像度(カメラ設定)、背景の Pixel Per Unit プロパティ(設定メニューで各背景アクターに設定)、およびソーステクスチャの解像度によって異なります。

Naninovelはデフォルトで背景がカメラの視錐台全体をカバーするようにしようとするため、アスペクト比が参照解像度と等しくなるようにソーステクスチャのサイズを設定してください。この動作を変更または無効にする方法の詳細については、一致モードガイド を参照してください。

TIP

アートアセット(キャラクターと背景の両方)の作業を開始する前に、チームと参照解像度を定義してください。これにより、アーティストは正しい寸法でアセットを作成でき、後で編集する必要がなくなります。

ダイススプライト背景

オープンソースの SpriteDicing ↗ パッケージで構築された DicedSpriteBackground 実装により、関連するテクスチャにほとんど類似したデータが含まれている場合に、背景スプライトのテクスチャ領域を再利用することで、ビルドサイズとテクスチャメモリを大幅に削減できます。

ダイス背景はダイスキャラクターの実装と非常によく似ています。セットアップと使用方法については、ダイスキャラクターガイド を参照してください。

ビデオ背景

ビデオ背景は、外観を表すためにループされた ビデオクリップ ↗ アセットを使用します。

各プラットフォームでサポートされているビデオ形式については、ビデオソースに関するUnityドキュメント ↗ を参照してください。アルファチャンネル(透明度)付きのビデオを使用する場合は、サポートされている形式に関するガイド ↗ を参照してください。

NOTE

ビデオアセットのインポート設定で Transcode が無効になっている場合、一部のプラットフォームでクリップを再生できない場合があります。ビルドでビデオが再生されない場合は、トランスコードオプションを有効にしてプレイヤーを再構築してみてください。

cover

EXAMPLE

シームレスなループを実現するのに問題がある場合は、ビデオの開始フレームと終了フレームがまったく同じであり、互換性のあるエンコーディング設定であることを確認してください。参考のために ビデオアクターサンプル を確認してください。

特定の外観がループしないようにするには、外観名に NoLoop(大文字と小文字を区別しない)を追加します。

WebGLの制限

WebGLでは、Unityのビデオプレイヤーはストリーミングモードでのみ動作するため、WebGLプレイヤーをビルドすると、すべてのビデオリソースが Assets/StreamingAssets/Backgrounds フォルダにコピーされます。StreamingAssets フォルダはビルド出力ディレクトリにも表示されます。ビルドを公開するときはそれを保持し、Webサーバーがこのフォルダからのデータの読み取りを許可していることを確認してください。

コピーされたビデオファイルは、Unityによってトランスコードされません(オプションが有効になっている場合でも)。そのため、ソースファイルは最初からWebブラウザでサポートされている形式である必要があります。または、ビルド後にゲームディレクトリ内のクリップファイルを置き換えることができます。以下は、WebGLデモで使用されている背景ビデオクリップの詳細なメタデータです。

Container : MPEG-4
Container profile : Base Media
Container codec ID : isom (isom/iso2/avc1/mp41)
Format : AVC
Format/Info : Advanced Video Codec
Format profile : High@L4
Format settings, CABAC : Yes
Format settings, RefFrames : 4 frames
Codec ID : avc1
Codec ID/Info : Advanced Video Coding
Bit rate : 3 196 kb/s
Width : 1 920 pixels
Height : 1 080 pixels
Display aspect ratio : 16:9
Frame rate mode : Constant
Frame rate : 25.000 FPS
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive
Writing library : x264 core 148 r2795 aaa9aa8
Encoding settings : cabac=1 / ref=3 / deblock=1:0:0 / analyse=0x3:0x113 / me=hex / subme=7 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=1 / me_range=16 / chroma_me=1 / trellis=1 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=-2 / threads=12 / lookahead_threads=2 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=3 / b_pyramid=2 / b_adapt=1 / b_bias=0 / direct=1 / weightb=1 / open_gop=0 / weightp=2 / keyint=250 / keyint_min=25 / scenecut=40 / intra_refresh=0 / rc_lookahead=40 / rc=crf / mbtree=1 / crf=23.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / ip_ratio=1.40 / aq=1:1.00

mp4以外のビデオ形式(webmなど)を使用している場合は、リソースプロバイダー構成の Video Stream Extension プロパティを使用して、ホストされているファイルの拡張子を設定します。

cover

レイヤー背景

レイヤー実装により、複数のスプライト(レイヤー)から背景を作成し、実行時にシナリオスクリプトを介して個別に切り替えることができます。

TIP

レイヤーアクターの実装は進化しており、現在は(汎用とは対照的に)すべてのレンダリング機能をサポートする最も柔軟なものです。レイヤー式を使用したくない場合でも、代わりにUnityのAnimatorやその他のカスタムシステムで外観を制御する場合、またはパーティクルシステムなどの自明でないオブジェクトをレンダリングしたり、サードパーティのレンダラーを利用したりする必要がある場合は、汎用またはカスタム実装に頼る前に、レイヤーアクターで使用可能な レンダリングのみ および カメラレンダリング オプションを確認してください。

レイヤー背景プレハブを作成するには、Create -> Naninovel -> Background -> Layered アセットコンテキストメニューを使用します。プレハブ編集モード ↗ に入ってレイヤーを作成します。いくつかのレイヤーとグループがデフォルトで作成されます。それらを使用することも、削除して独自のものに追加することもできます。

レイヤー背景は レイヤーキャラクター と非常によく似ています。シナリオスクリプトを介してそれらを設定および制御する方法の詳細については、ドキュメントを参照してください。

@back コマンドの名前なしパラメータは外観とトランジションタイプを期待している(@char コマンドのようなIDと外観ではない)ことを忘れないでください。したがって、レイヤー合成式は次の方法で指定してください。

nani
; "LayeredForest" 背景アクターがあるとします
@back Group>Layer,Other/Group+Layer,-RootLayer.TransitionType id:LayeredForest

汎用背景

汎用背景は、最も柔軟な背景アクター実装です。これは、ルートオブジェクトに Generic Background Behaviour コンポーネントがアタッチされたプレハブに基づいています。外観の変更およびその他すべての背景パラメータは Unityイベント ↗ としてルーティングされ、基になるオブジェクトの動作を好きなように実装できます。

cover

NOTE

汎用アクター実装は、シナリオスクリプトからのイベントをルーティングするだけであり、外観や可視性の変更コマンドにアクターがどのように反応するか、アスペクト比の変更に適応するかどうか、どのように適応するかなど、基になる動作を実装するのはユーザー次第です。アクター関連の機能のほとんどが、汎用実装で自動的に機能することを期待しないでください。

テンプレートから汎用背景プレハブを作成するには、Create -> Naninovel -> Background -> Generic コンテキストアセットメニューを使用します。

汎用背景は汎用キャラクターと非常によく似ています。可能な使用例の1つとして、アニメーション化された3Dモデルを汎用キャラクターとして設定するチュートリアルビデオを確認してください。ビデオは古いNaninovelバージョンでキャプチャされており、一部のプロパティとコンポーネント名が現在とは異なっていることに注意してください。最新情報については、上記のドキュメントを参照してください。

cover

TIP

Unityの Animator コンポーネントは、ゲームオブジェクトが同じフレームで有効化/無効化されたときに SetTrigger の登録に失敗する可能性があります。可視性の変更を処理するために GameObject.SetActive を使用する場合(上記のチュートリアルで示されているように)、代わりにレンダラーを持つ子オブジェクトを有効化/無効化することを検討してください。

EXAMPLE

アニメーション化されたスプライトをホストするために汎用背景実装が使用されている 汎用アクターサンプル を確認してください。

シーン背景

シーン背景実装を使用して、Unityシーン ↗ を背景として使用できます。

シーン背景設定には、デフォルトで Assets/Scenes に設定された Scene Root Path オプションがあります。これは、アクターのシーンアセットが配置されると予想されるディレクトリです。変更することも(たとえば、アクターごとに個別のフォルダを指定するなど)、そのままにしておくこともできます。

cover

NOTE

シーン背景のリソース(外観)名は、ルートからの相対的なシーンアセットのパスと等しいことが期待されます。たとえば、シーンルートが Assets/Scenes で、Assets/Scenes/Sphere.unity および Assets/Scenes/Sub/Cylinder.unity シーンアセットがある場合、関連する外観はそれぞれ Sphere および Sub/Cylinder になります。

指定されたルートフォルダの下に新しい(または既存の)シーンを作成し、シーン内のルートゲームオブジェクトに少なくとも1つの カメラ ↗ コンポーネントがアタッチされていることを確認してください。シーン背景をロードすると、Naninovelはシーン内で最初に見つかったカメラにレンダーテクスチャを割り当てます。レンダーテクスチャは、Naninovelシーン空間内のシーン背景を表す背景スプライトに割り当てられます。これにより、シーン背景は他の背景およびキャラクターアクターと共存でき、すべての背景トランジションエフェクトをサポートし、さまざまなディスプレイアスペクト比を処理するようにスケーリングできます。

シーンオブジェクトをワールド空間に配置して、同時にロードされる可能性のある他のシーン(たとえば、単一のシナリオスクリプトで参照されている場合)のオブジェクトと重ならないようにしてください。さらに、シーン背景オブジェクトがグローバル空間の原点(x0 y0 z0)の近くに配置されている場合、Naninovelのメインカメラによってレンダリングされる可能性があることに注意してください。これを防ぐには、すべてのシーンオブジェクトをグローバル原点からオフセットするか、Configuration -> Engine -> Override Objects Layer を使用して レイヤー ↗ を使用してNaninovel関連オブジェクトを分離します。

シーンのセットアップが完了したら、Naninovel -> Configuration -> Backgrounds メニューから新しい背景アクターを作成し、SceneBackground 実装を選択して、シーンアセットをアクターリソースに追加します。

シーン背景アクターのリソースを割り当てると、対応するシーンアセットが ビルド設定 ↗ に自動的に追加されるはずです。シーンアセットがビルドに追加されていないというエラーが発生した場合は、手動で追加してみてください。

これで、@back コマンドを使用して、作成されたシーン背景アクターを制御できます。例:

nani
; "Sphere" Unityシーンのコンテンツを含む "Scene" 背景アクターを表示します。
@back Sphere id:Scene
; "RandomCircleReveal" エフェクトを使用してアクターを "Sub/Cylinder" に遷移させます。
@back Sub/Cylinder.RandomCircleReveal id:Scene

TIP

Unityシーンで背景を作成する場合、外観ごとに複数のシーンを作成するのではなく、シーンの状態を制御する(たとえば、ライトの色を変更して時刻を変更したり、カメラを動かしてビューを変更したりする)カスタムコマンド を追加することを検討してください。これにより、複数のシーンがロードされたときに重なりを防ぐためにオブジェクトの位置を追跡する必要がなくなります。

EXAMPLE

シーン背景サンプル でシーン背景の設定例を見つけてください。

テクスチャへのレンダリング

すべての実装(汎用を除く)のキャラクターおよび背景アクターをテクスチャアセットにレンダリングすることが可能です。これは、カスタムUI、プリンター、マテリアル、またはその他の互換性のあるソースに割り当てることができます。背景アクターのテクスチャへのレンダリングの設定は、キャラクターの設定と非常に似ています。詳細と例については、ガイドを確認してください