问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Unity中如何让模型(MeshRender)显示在UI之上

创作时间:
作者:
@小白创作中心

Unity中如何让模型(MeshRender)显示在UI之上

引用
CSDN
1.
https://blog.csdn.net/qq_42980269/article/details/145027074

有时候我们需要把模型(MeshRender或者别的)显示在UI之上,比如有些UV特效,但是MeshRender不像粒子一样可以修改SortingLayer和sortingOrder,想要显示在UI之上就要调整这两个参数和所在Canvas一样的层级。

没改之前是MeshRender是这样的:

没有可修改项。加上代码多了两个选项:

然后就可以按照自己的需求调整层级了。创建一个MeshRenderEditor脚本把下面这个代码放在Editor文件夹下,然后你的MeshRender面板就会多出两个属性。别的同理扩展。代码如下:

using UnityEditor;
using UnityEngine;

[CustomEditor(typeof(MeshRenderer))]
public class MeshRenderEditor : Editor
{
    MeshRenderer meshRenderer;

    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();
        meshRenderer = target as MeshRenderer;
        string[] layerNames = new string[SortingLayer.layers.Length];
        for (int i = 0; i < layerNames.Length; i++)
        {
            layerNames[i] = SortingLayer.layers[i].name;
        }
        int layerValue = SortingLayer.GetLayerValueFromID(meshRenderer.sortingLayerID);
        layerValue = EditorGUILayout.Popup("Sorting Layer", layerValue, layerNames);
        SortingLayer layer = SortingLayer.layers[layerValue];
        meshRenderer.sortingLayerName = layer.name;
        meshRenderer.sortingLayerID = layer.id;
        meshRenderer.sortingOrder = EditorGUILayout.IntField("Order In Layer", meshRenderer.sortingOrder);
    }
}

就可以发现模型按照想要的层级显示了。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号