質問は基本的に1スレッドにつき1つの内容でお願いします。

お問い合わせの際は下記の情報を明記をお願いいたします。

▼ソフトウェアに関するご質問の場合

・【問題が発生したソフトウェア名とバージョン】(例:Cubism Editor 3.1.02、Euclid Editor 1.2.0 など)
・【ご利用のPC環境】例:Windows10、macOS HighSierra など
・【グラフィックボード】例:GeForce GTX 950M など
・【メモリ】例:8GB
・【原画(イラスト)を制作したソフトウェア】例:Photoshop , CLIP STUDIO , SAI など
・【問い合わせ内容がわかるスクリーンショットまたは動画】

---------------------------

▼SDKに関するご質問の場合

・現象の再現を行い検証させていただきますので、再現する最小のプロジェクトのご提供か、再現するまでの手順
・使用したSDKのバージョン

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
-------------------------------

よろしくお願いします。
Tagged:

コメント

  • @BURAI_VC2008様

    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を制御できない…で正しいでしょうか。


  • @BURAI_VC2008様

    はい、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; } } }

    このようになります。




    よろしくお願いいたします。
  • スクリプトまでありがとうございます!解決しました!
Sign In or Register to comment.