Help us understand the problem. What is going on with this article?

Unity Multi Scene EditingでUI作業分業

More than 3 years have passed since last update.

自分用メモ。

前提

  • Unity 5.3 ~
  • Page単位の分割。細かいUIパーツごとの分業にはならないかも。
  • ScreenSpace - Cameraで表示
  • 2D UIで対応

結果

こんな感じ

overlay.png

説明

用意するScene

  • Common.unity
    • すべてのシーンに共通する要素を置く
    • 要素: Camera, EventSystem, 各種Singletonを含めたシーン
    • 編集時: 常にActiveなシーン(太字表示)として設定。どのUIを作るときにもActiveなシーンとして含めておく.
    • 実行時: 最初に読み込まれるシーンに設定する. ここから各種UIシーンを読み込むようにする.
  • Layer{1,2}.unity
    • 各UIのシーン
    • 例: Headerのシーン, Footerのシーン, ListViewのシーン, Dialogのシーンなど
    • 要素: Canvas, Image, Button, ..., Camera(編集時のみ有効)
    • 編集時: Activeでないサブシーンとして編集する. 他のUIシーンを一緒に含めつつ編集編集してもよいし、Common.unityだけ含めて編集してもよい。
    • 実行時: 最初によみこまれないようにする. 他のシーンからAdditiveに追加されるようにする

はまりどころ

Q. Scene管理どうするの?

SceneLoader.csみたいなスクリプトつくって、そこでAdditiveにシーン追加できるようにします。重複チェックもそこでおこないます。

Q. Canvasに設定する共通のカメラがほしいんだけど、どうする?

共通のカメラはCommonにおきます。
実行時に各Canvasのカメラの参照をCommonのカメラに切り替えます。
また編集時にカメラをUIに設定できてないと何かとわかりずらいので、各UIシーンにも編集時のみ有効なカメラを用意します。

Common.unity
- CommonCamera

Layer1.unity
- Canvas => 編集時: Camera1を参照. 実行時: CommonCameraを参照
- Camera1

Canvasにアタッチするスクリプト
- https://gist.github.com/mattak/b49bb8066f285123f963703c9f33a060#file-camerafinder-cs
- 実行時に各シーンのカメラを消して、Camera.mainに参照を切り替えてくれます

Q. UIの描画順序どうするの?

各UIシーンのCanvasのOrder in LayerかSorting Layerで切り替えます。

結論

  • 各UIシーンでCanvasを一つ所持
  • SceneをAdditiveに追加・削除することで全体UIの構築をする
  • 共通の要素を置くシーンを用意する (Camera, EventSystemなど)
  • 共通シーンを作り、共通Cameraはそこに置く。またRuntime時に参照解決する (CrossSceneReference)
  • 開発のプレビューに不便なので、開発中は各シーンにカメラを置いておきそれを参照する. 実行時もしくはリリース時に削除されるようにする
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした