質問は基本的に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のuGUIを使う場合のSortingLayerについて

UnityのuGUI機能、sortingLayersで描画順番を指定することは可能でしょうか?

http://sites.cybernoids.jp/cubism2/sdk_tutorial/platform-setting/unity/csharp/render-mode

このRenderModeの切り替えも試してみましたが、上手く行きませんでした。
(Default固定のように感じました)

直に

renderer.sortingLayerName = "mid";

のように指定する形でも構いませんので、何か方法があればご教授頂ければと思います。
Tagged:

コメント

  • edited 2月 2015
    ちょっと把握できてないので教えてほしいのですが、uGUIにsortingLayersってありましたっけ?
    (確かUnityの2D機能だったような...)

    以下のようなソースにするとLive2DとSprite画像の描画順が制御できるかと思います。

    using UnityEngine; using System; using System.Collections; using live2d; [ExecuteInEditMode] public class SimpleModel : MonoBehaviour { public TextAsset mocFile ; public Texture2D[] textureFiles ; private Live2DModelUnity live2DModel; private Matrix4x4 live2DCanvasPos; void Start () { Live2D.init(); live2DModel = Live2DModelUnity.loadModel(mocFile.bytes); // Live2Dのレンダーモード変更 live2DModel.setRenderMode(Live2D.L2D_RENDER_DRAW_MESH); for (int i = 0; i < textureFiles.Length; i++) { live2DModel.setTexture(i, textureFiles[i]); } float modelWidth = live2DModel.getCanvasWidth(); live2DCanvasPos = Matrix4x4.Ortho(0, modelWidth, modelWidth, 0, -50.0f, 50.0f); } void Update() //void OnRenderObject() { if (live2DModel == null) return; live2DModel.setMatrix(transform.localToWorldMatrix * live2DCanvasPos); if (!Application.isPlaying) { live2DModel.update(); live2DModel.draw(); return; } double t = (UtSystem.getUserTimeMSec()/1000.0) * 2 * Math.PI ; live2DModel.setParamFloat( "PARAM_ANGLE_X" , (float) (30 * Math.Sin( t/3.0 )) ) ; live2DModel.update(); live2DModel.draw(); } }

    ちなみにこの方式だとsortinglayerを使わず、Z軸でも描画順が制御できるかと思います。


    ただ今後Unity側で廃止される描画方式らしいので、背景画像は2DSpriteで配置して
    Live2Dモデルよりも前に表示したい画像はUGUIを使うといいかもです。

  • naotaroさん
    教えて頂き、ありがとうございます。

    Spriteの描画順を指定する場合は、
    Sorting Layerを使わず、このようにやるか、
    カメラを複数使うなど行う必要がありそうですね。

    大変参考になりました。ありがとうございました!
Sign In or Register to comment.