Live2Dに関するユーザーのみなさま同士の交流・ご質問・不具合の報告・提案・要望などについて是非お寄せください。
※Live2D公式スタッフからの発言や回答については確約できないことを予めご了承ください。
Cubism 製品のマニュアル・チュートリアルはこちら
 
Cubism Editorマニュアル    Cubism Editorチュートリアル    Cubism SDKマニュアル    Cubism SDKチュートリアル
【年末年始のスタッフによる回答について】

いつもLive2Dをご活用いただきありがとうございます。

株式会社Live2Dは、2019年12月28日(土)から2020年1月5日(日)まで休業いたします。
年末年始の営業について
また、コミュニテイへの回答に関しては1月6日からを予定しております。
(※投稿内容によってはLive2D社スタッフからの回答を行わない場合もございます。)

なお、コミュニティ自体は年中無休で稼働しておりますため、
お気づきの点やご意見などは通常どおり書き込んでいただくことが可能です。

ユーザー様同士のコミュニケーションや回答ももちろん歓迎しておりますので、ご活用ください。

2020年も、変わらぬご愛顧を賜わりますよう、お願い申し上げます。

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

よろしくお願いします。
タグ付けされた:

コメント

  • @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();
    }
    renderController = GetComponent();
    }

    // Update is called once per frame
    void Update () {
    if(linkCanvas != null && renderController != null)
    {
    renderController.SortingOrder = linkCanvas.sortingOrder;
    }
    }
    }


    このようになります。




    よろしくお願いいたします。
  • スクリプトまでありがとうございます!解決しました!
コメントするにはサインインまたは登録して下さい。