★お知らせ(2023/12/27)
いつもLive2D公式コミュニティをご利用いただき誠にありがとうございます。
本コミュニティは2023年12月27日 11:00をもって閉鎖いたしました。
今後の運営はすべて新Live2D公式クリエイターズフォーラムに移行します。
閉鎖に伴い、以下機能は利用不可となります。
・アカウントの新規作成
・トピック投稿、返信
たくさんのご利用誠にありがとうございました。
新Live2D公式クリエイターズフォーラムは以下バナーよりご利用いただけます。
なお、本コミュニティに投稿されたトピックはすべて残りますが、今後削除する可能性がございますので予めご了承ください。
閉鎖に関するお問い合わせにつきましてはLive2D公式クリエイターズフォーラムへご連絡ください。
いつもLive2D公式コミュニティをご利用いただき誠にありがとうございます。
本コミュニティは2023年12月27日 11:00をもって閉鎖いたしました。
今後の運営はすべて新Live2D公式クリエイターズフォーラムに移行します。
閉鎖に伴い、以下機能は利用不可となります。
・アカウントの新規作成
・トピック投稿、返信
たくさんのご利用誠にありがとうございました。
新Live2D公式クリエイターズフォーラムは以下バナーよりご利用いただけます。
なお、本コミュニティに投稿されたトピックはすべて残りますが、今後削除する可能性がございますので予めご了承ください。
閉鎖に関するお問い合わせにつきましてはLive2D公式クリエイターズフォーラムへご連絡ください。
UnityのuGUIを使う場合のSortingLayerについて
UnityのuGUI機能、sortingLayersで描画順番を指定することは可能でしょうか?
http://sites.cybernoids.jp/cubism2/sdk_tutorial/platform-setting/unity/csharp/render-mode
このRenderModeの切り替えも試してみましたが、上手く行きませんでした。
(Default固定のように感じました)
直に
renderer.sortingLayerName = "mid";
のように指定する形でも構いませんので、何か方法があればご教授頂ければと思います。
http://sites.cybernoids.jp/cubism2/sdk_tutorial/platform-setting/unity/csharp/render-mode
このRenderModeの切り替えも試してみましたが、上手く行きませんでした。
(Default固定のように感じました)
直に
renderer.sortingLayerName = "mid";
のように指定する形でも構いませんので、何か方法があればご教授頂ければと思います。
0
コメント
(確か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を使うといいかもです。
教えて頂き、ありがとうございます。
Spriteの描画順を指定する場合は、
Sorting Layerを使わず、このようにやるか、
カメラを複数使うなど行う必要がありそうですね。
大変参考になりました。ありがとうございました!