2015年7月18日土曜日

[Unity3D] 二つのscene(シーン)を一つにまとめる方法

How to merge multiple scenes
ゲーム開発ツール・Unity3D(以下Unity)はscene(シーン)という単位でゲームを作ります。
カメラやスクリプトなどは全てsceneの中に定義します。
sceneは複数作ることができ、ゲーム開始はいずれか一つのsceneをロードするように定義します。
スクリプトを使うとゲーム実行中のsceneに他のsceneをロードすることができるので、その方法をまとめてみました。


環境

・Windows8.1
・Unity 5.1.0
・Visual Studio Tools for Unity (Unity付属のMonoDevelopでも可)


使用するアセット

検証用に著作権が緩めのユニティちゃんとクエリちゃんのアセットを使います。
ユニティちゃんは公式サイトから、クエリちゃんはアセットストアからダウンロードしました。


1つ目のsceneを作る

Unityで新しいプロジェクトを作ると空(から)のsceneの編集からはじめることになります。
このsceneにユニティちゃんを配置してscene01という名前で保存します。

File - Build Settings
を開いてAdd Currentボタンをクリックします。

Scenes In Buildにscene01が追加されました。


2つ目のsceneを作る

2つめのsceneはメニューの
File - New Scene
で作ります。
空のsceneの編集が出来るようになるのでクエリちゃんを配置します。
scene02という名前で保存します。

File - Build Settings
を開いてAdd Currentボタンをクリックします。
Scenes In Buildにscene02が追加されました。


1つ目のsceneのスクリプトを作る

で一つ目のsceneに戻ります。
File - Open Scene
を開いてscene01を選択します。

二つのsceneをまとめるのはスクリプトで行います。
C#のスクリプトを追加して、MergeScenesという名前のファイルを追加します。
このスクリプトファイルをダブルクリックするとVisual Studioが起動してC#のスクリプトを編集することになります。
sceneをまとめるタイミングですが、今回はゲーム起動時に1回だけまとめる仕様にします。
スクリプトは次の通りです。



このスクリプトをsceneのカメラにアタッチします。
AssetsウィンドウのMergiScenesのアイコンをHierarchyウィンドウのMain Cameraにドラッグ&ドロップします。
アタッチされるとMain CameraのInspectorにMerge Scenes(Script)が追加されます。


実行する

実行するとこうなります。
配置のバランスが悪かったりユニティちゃんのスクリプトをオフにしてなかったりでおかしく見えますが、ユニティちゃんとクエリちゃんが一つのsceneにまとめて表示されました。

手作業で複数のsceneをまとめるのは骨の折れる作業ですが、スクリプトなら1ステートメントで済みました。
ゲーム用のsceneにUI用の平行投影のsceneを別々に作って実行時にまとめるような使い方も良さそうです。


関連ブログ

[Unity3D] 透視投影と平行投影を合成するには[ユニティちゃん]
[Unity3D] クエリちゃんの二重あご説という誤解を解く
[Unity3D] サイドバイサイドで立体視できるゲームを作るには [クエリちゃん][ユニティちゃん]
[Unity3D] Unity5のアプリをAndroid Studioにインポートする方法
[Unity3D] Unity4からUnity5へのバージョンアップでの変化
[Unity3D] ゲーム画面をキャプチャしてMovie Studioで動画に編集する
[Unity3D] Visual Studio Community 2013を日本語化してUnityアプリを作る

以上、参考になれば幸いです。

0 件のコメント:

コメントを投稿