★お知らせ(2023/12/27)
いつもLive2D公式コミュニティをご利用いただき誠にありがとうございます。
本コミュニティは2023年12月27日 11:00をもって閉鎖いたしました。
今後の運営はすべて新Live2D公式クリエイターズフォーラムに移行します。
閉鎖に伴い、以下機能は利用不可となります。
・アカウントの新規作成
・トピック投稿、返信
たくさんのご利用誠にありがとうございました。
新Live2D公式クリエイターズフォーラムは以下バナーよりご利用いただけます。
なお、本コミュニティに投稿されたトピックはすべて残りますが、今後削除する可能性がございますので予めご了承ください。
閉鎖に関するお問い合わせにつきましてはLive2D公式クリエイターズフォーラムへご連絡ください。
いつもLive2D公式コミュニティをご利用いただき誠にありがとうございます。
本コミュニティは2023年12月27日 11:00をもって閉鎖いたしました。
今後の運営はすべて新Live2D公式クリエイターズフォーラムに移行します。
閉鎖に伴い、以下機能は利用不可となります。
・アカウントの新規作成
・トピック投稿、返信
たくさんのご利用誠にありがとうございました。
新Live2D公式クリエイターズフォーラムは以下バナーよりご利用いただけます。
なお、本コミュニティに投稿されたトピックはすべて残りますが、今後削除する可能性がございますので予めご了承ください。
閉鎖に関するお問い合わせにつきましてはLive2D公式クリエイターズフォーラムへご連絡ください。
UnityのCanvas内のLive2Dモデルの表示順の変更の方法
UnityのCanvas内のLive2Dモデルの表示順(手前に表示されるのか、奥に表示されるのか)はどのように変更できるのでしょうか?
Canvas内のゲームオブジェクトはHierarchyビューの下に配置するほど手前になりますが
http://albatrus.com/main/unity/7402
※こちらのページの「その他」の項
Live2Dのゲームオブジェクトはその影響を受けない?ようです。
-------------------------------
■環境
Windows10
Unity 2017.1.1f1 Personal
Cubism 3.0 モデル(公式サンプル 桃瀬ひより)
Unity_SDK 3.0
-------------------------------
よろしくお願いします。
Canvas内のゲームオブジェクトはHierarchyビューの下に配置するほど手前になりますが
http://albatrus.com/main/unity/7402
※こちらのページの「その他」の項
Live2Dのゲームオブジェクトはその影響を受けない?ようです。
-------------------------------
■環境
Windows10
Unity 2017.1.1f1 Personal
Cubism 3.0 モデル(公式サンプル 桃瀬ひより)
Unity_SDK 3.0
-------------------------------
よろしくお願いします。
0
コメント
Live2Dスタッフの小嶺と申します。
よろしくお願いいたします。
Live2Dの描画はOrder in Layerで制御されます。
描画順序制御はモデルにアタッチされているCubism Render Controller(script)のOrder in Layerで全体の描画順序をコントロールするか、
hierarchy上のモデル>Drawablesの下にあるDrawableにアタッチされているCubism Renderer(script)のLocal Orderで個別のDrawableの順序をコントロールします。
Live2DのOrder in Lairの操作については、こちらのチュートリアルもご参考ください。
http://docs.live2d.com/cubism-sdk-tutorials/betweendrawables/
Canvas側の設定はRenderModeをScreen Space – Cameraに選択し、
RenderCameraにMainCameraを指定し、
Order in Layerを変更して操作します。
Live2Dの使用しているLayer幅がDrawableの枚数分あるので、
余裕をもって1000単位で操作することをお勧めいたします。
もしCanvasの内容の中にLive2Dを挟んで表示したい場合は
Canvasを2枚用意していただければ想定の操作ができると思われます。
よろしくお願いいたします。
Order in Layerの詳細な解説、ありがとうございます。
今回は最前面にテキストを表示したいという目的でしたので、Canvasを2枚以上用意してOrder in Layerを操作するという方法で解決することができました。
・Live2Dモデルの入ったCanvas:Order in Layer = 0
・UIテキストの入ったCanvas:Order in Layer = 1000
Textはメニューの「GameObject>UI>Text」で作成したオブジェクトですが、こちらのオブジェクトはインスペクタにOrder in Layerのようなプロパティはなかったので、Live2Dモデルと同じCanvas内ではLayerを制御できない…で正しいでしょうか。
はい、Canvas内の順番で描画の順番をコントロールすることはできないという認識で間違いありません。
もし描画の順番を実行内で入れ替える必要がある場合は、TextなどのUIオブジェクト毎にCanvasを作り、
そのCanvasのOrder in Layerを操作する形で制御する必要があります。
またCubismモデルの描画順のコントロールはCubismRenderControllerで行われており、Canvasの子オブジェクトにしてもCanvasの影響はうけません。
もし、連動させたい場合は下のようなスクリプトをCubismモデルにアタッチすると親に設定されたCanvasからSortingOrderを受け取り連動するようにできます。
using System.Collections; using System.Collections.Generic; using UnityEngine; using Live2D.Cubism.Rendering; [ExecuteInEditMode()] public class CubismOrderLinker : MonoBehaviour { public Canvas linkCanvas; private CubismRenderController renderController; // Use this for initialization void Start () { if (linkCanvas == null) { linkCanvas = transform.GetComponentInParent<Canvas>(); } renderController = GetComponent<CubismRenderController>(); } // Update is called once per frame void Update () { if(linkCanvas != null && renderController != null) { renderController.SortingOrder = linkCanvas.sortingOrder; } } }
このようになります。
よろしくお願いいたします。