最終更新:
orika_ex_miyako 2025年10月27日(月) 12:50:27履歴
<Skyybox 設定なし(Default)>

<Skyybox 設定あり>

・Skyboxの自動変更処理の実装
<実装動画 ゲームを実行するたびに Skybox がランダムに設定される>
https://gyazo.com/836b133d85f3fd88b3aa6ba7711f1745
新しい学習内容は、以下の通りです。
・Skybox ・RenderSettings.skybox 変数
Unity では Skybox という遠景に見える空の背景画像を設定できます。
設定場所は Lighting というウインドウにあります。
Lighting ウインドウは、左上のメニューの中から、Window => Rendering => Lighting を選択することで開きます。
Lighting ウインドウ

Lighting ウインドウ内の Environment タブを押すと、Skybox の設定を行う内容に切り替わります。
Lighting ウインドウ Environment タブ

Skybox Material という部分が設定項目になります。Material という名前の通り、Skybox の設定にはマテリアルを使用します。
初期値は Default skybox というマテリアルが指定されています。
この部分を設定することで Skybox を変更できます。自由なものに設定してみてください。空の背景が変更になります。
この手順では、この Skybox の設定をスクリプトから操作し、スクリプト内に事前に登録してあるマテリアルに変更する制御を行います。
Skybox の設定を変更する場所は分かりました。
Skybox は無料のアセットを利用してインポートすることが出来ますので、
まずは最初に、Skybox を Unity にインポートして、色々な Skybox に変更出来るようにします。
その後、Skybox を変更するための SkyboxChanger スクリプトを作成し、その中に Skybox に利用したいマテリアルを登録します。
そして、 Skybox を変更するメソッドを用意します。このメソッドを外部のスクリプトから呼び出すことにより、
登録したマテリアルを Skybox に適用して変更を行います。
SkyboxChanger スクリプトの Skybox を変更するメソッドを呼び出すのは、ゲームの管理を行っている GameManager スクリプトに行わせます。
新しく Awake メソッドを用意し、その中で Skybox の変更を行うメソッドを呼び出して変更を行います。
Awake メソッドは Start メソッドよりも処理を行うのが早いメソッドとして定義されていますので、
ゲームを実行すると他の処理よりも早く、Skybox の変更が行われることになります。
ここでは Skybox の無料アセットを紹介します。
アセットストアを検索していただくと他にも無料の Skybox はありますので、他のアセットを利用していただいても構いません。
Fantasy Skybox FREE
アセットストアへ移動して、上記のアセットの名前で検索をしてください。対象のアセットが見つかります。
ダウンロードしてインポートを行ってください。
Fantasy Skybox FREE

インポート後のフォルダは以下の通りです。
Fantasy Skybox FREE

以上でアセットのインポートは完了です。
先ほどの Lighting ウインドウを開いて、インポートした Skybox 用のマテリアルを設定してみましょう。
色々なマテリアルを試しておいてください。次の手順で Skybox のマテリアルを変更するスクリプトを作成しますが
そこに、変更したいマテリアルを数個登録することになります。
設定した Skybox はそのままでもよいですし、Default skybox に戻していただいても構いません。
新しい SkyboxChanger スクリプトを作成します。
このスクリプトではメソッドを用意し、そのメソッドを実行することにより、Lighting ウインドウの Skybox Material の項目を、スクリプトから変更して制御を行います。
Skybox Material にはマテリアルを指定するため、Material 型の配列変数を用意し、事前に登録をしておき、この値を利用して変更するマテリアルを指定します。
SerializeField属性で宣言しておくことで、インスペクターから好きな数のマテリアルを登録できるように設計しておきます。
SkyboxChanger.cs
Skybox はマテリアルによって設定されているため、適用するためのマテリアルを用意して RenderSettings.skybox 変数を利用することで、
スクリプトから動的に Skybox の変更が可能になっています。
// Skybox を指定された要素番号のマテリアルの Skybox に変更 RenderSettings.skybox = skyboxMaterials[skyboxMaterialsIndex];
参考サイト
Unity公式スクリプトリファレンス
RenderSettings.skybox
https://docs.unity3d.com/ja/2018.4/ScriptReference...
ヒエラルキーの何もない場所で右クリックをしてメニューを開き、Create Empty を選択します。
新しい空のゲームオブジェクトが作成されますので、名前を SkyboxChanger に変更します。
ヒエラルキー画像

作成してある SkyboxChanger スクリプトをドラッグアンドドロップして、SkyboxChanger ゲームオブジェクトにアタッチします。
SkyboxChanger ゲームオブジェクト インスペクター画像

SkyboxChanger スクリプトの skyboxMaterials 変数の Size を 0 から好きな数に変更します。
この値の分だけ、Skybox 用のマテリアルの登録が出来ます。ここでは 4 に設定しています。
Size 0

Size を変更すると、配列の要素を登録するための Element が追加されます。
要素番号は 0 から始まります。
Size 4 に変更 Element が表示される

各 Element にインポートした Skybox のアセットに含まれているマテリアルを自由に設定してください。
フォルダ

フォルダ

登録例 SkyboxChanger ゲームオブジェクト インスペクター画像

以上で Skybox 変更用の設定は完成です。
続いて、Skybox を変更するメソッドを呼び出す処理を GameManager スクリプトに追加します。
宣言フィールドに SkyboxChanger 型の変数を用意します。SerializeField属性で宣言しておくことで、インスペクターより値の登録が可能になります。
SkyboxChanger スクリプトには Skybox を変更するメソッドが用意してありますので、この変数はその命令を実行させるために必要な情報です。
新しいメソッドとして Awake メソッドを追加します。
Awake メソッドは Start メソッドよりも早く実行される Unity が扱うメソッドです。
Start メソッドよりも処理が早いため、このメソッドの中で Skybox を変更する命令を実行します。
そうすることによってゲーム開始時には Skybox が設定されている状態になります。
プログラムの処理の順番は非常に大切です。こういった、どのタイミングでどの処理をすればよいか、ということは
ロジックを組む際に一緒に考えておくことが重要です。
GameManager.cs(自分で作成しているスクリプトがある場合には、そのスクリプトを修正する)
スクリプトの修正が終了したら、GameManager ゲームオブジェクトのインスペクターより、GameManager スクリプトを確認してください。
新しく宣言して追加した変数が表示されていれば問題ありません。
GameManager ゲームオブジェクト インスペクター画像

すべての手順が完成しましたので、ゲームを実行してください。
Skybox の設定が、SkyboxChanger スクリプトで指定している要素番号のマテリアルに変更されれば成功です。
要素番号は Element の番号と対応していますので、0 〜 3 までの値を順番に入れて、
その番号のマテリアルになるかどうかを確認してください。
<実行動画 Skybox に指定した要素番号のマテリアルが設定される>
https://gyazo.com/836b133d85f3fd88b3aa6ba7711f1745
続いて、SkyboxChanger ゲームオブジェクトの SkyboxChanger スクリプトを確認し、skyboxMaterilasIndex 変数の値を 999 に変更します。
この値が 999 に設定された場合には、スクリプトの制御により、Skybox の設定がゲーム実行のたびに、skyboxMaterilas 変数に登録されている範囲内でランダムに変更されます。
今回の場合であれば、4種類のマテリアルのうちの1つに変更されます。何回かゲームを実行して確認してください。
SkyboxChanger ゲームオブジェクト インスペクター画像

<実行動画 ランダム設定にしてゲームを実行して確認する>
https://gyazo.com/cbbb207976860d57c4b0f8132c9e3222
以上でこの手順は終了です。
=> 次は 発展5 ー設置型アイテムの実装ー です。





コメントをかく