Unity 用代码设置UGUI的渲染层级

本文介绍了Unity中UGUI渲染层级控制的三种方法:SetAsFirstSibling(), SetAsLastSibling() 和 SetSiblingIndex(n),并通过实例展示了如何使用这些API来调整游戏对象的渲染顺序。
部署运行你感兴趣的模型镜像

用代码设置UGUI渲染无非和三个API有关:

1.SetAsFirstSibling();

2.SetAsLastSibling();

3.SetSiblingIndex(n)

 

 

SetAsFirstSibling()是设置为最先渲染的,即会被后渲染的挡住。

SetAsLastSibling();是设置为最后渲染的,即会挡住比他先渲染的

 

SetSiblingIndex(n)是设置层级,从0开始到childcount -1

当n为0时,其效果与SetAsFirstSibling();相同

但是当层级小于0时,其效果与SetAsLastSibling()一致

当层级为大于等于transform.parent.childCount - 1时,其效果与SetAsLastSibling一致

 

例子:

 

给蓝色Image挂上如下脚本

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;

public class Test : MonoBehaviour, IPointerClickHandler
{
    int cnt = 0;
    public void OnPointerClick(PointerEventData eventData)
    {
        if (Input.GetKey(KeyCode.F))
        {
            transform.SetAsFirstSibling();
        }
        else if(Input.GetKey(KeyCode.L))
        {
            transform.SetAsLastSibling();
        }
        //transform.SetSiblingIndex(cnt++);
    }
}

点击蓝色Image并按下F,发现image3(蓝色)跑到了Image(1)上面,

即蓝色Image的渲染层级变成0,最先渲染

转载于:https://www.cnblogs.com/lMonster81/p/10433787.html

您可能感兴趣的与本文相关的镜像

Wan2.2-T2V-A5B

Wan2.2-T2V-A5B

文生视频
Wan2.2

Wan2.2是由通义万相开源高效文本到视频生成模型,是有​50亿参数的轻量级视频生成模型,专为快速内容创作优化。支持480P视频生成,具备优秀的时序连贯性和运动推理能力

### Unity UGUI 渲染顺序与层级管理 在 UnityUGUI 系统中,渲染顺序主要通过 `Canvas` 组件及其子对象的属性来控制。以下是关于如何调整渲染顺序的关键点: #### 1. **Canvas 属性** `Canvas` 是 UI 元素的基础容器,其渲染顺序受以下几个因素的影响: - **Render Mode**: 定义了 Canvas 的渲染模式,例如 `Screen Space - Overlay`, `Screen Space - Camera`, 和 `World Space`[^3]。 - **Sorting Layer**: 设置整个 Canvas 所属的排序层,决定了与其他 Canvas 或游戏对象的关系。 - **Order in Layer**: 在同一 Sorting Layer 中进一步细化渲染顺序。 #### 2. **Sorting Layer** `Sorting Layer` 是全局的概念,用于定义不同组别的渲染优先级。可以通过以下方式修改: - 在 Unity 编辑器中,进入菜单栏 `Edit -> Project Settings -> Tags and Layers` 来配置自定义 Sorting Layer。 - 将 Canvas 或其他 UI 对象的 `Sorting Layer` 属性设置为所需的层名[^1]。 #### 3. **Order in Layer** 在同一 `Sorting Layer` 下,`Order in Layer` 提供更精细的控制。较大的数值表示更高的渲染优先级。可以在 Inspector 面板中直接调整该值。 #### 4. **粒子系统 (Particle System)** 如果项目中有 Particle System 并希望它与 UI 正确交互,则需要为其分配合适的 `Sorting Layer ID` 和 `Order in Layer` 值[^2]。 #### 示例代码 以下是一个简单的脚本示例,展示如何动态更改某个 GameObject 的 Sorting Layer 和 Order in Layer: ```csharp using UnityEngine; public class ChangeRenderingOrder : MonoBehaviour { public string targetSortingLayerName = "UI"; public int newOrderInLayer = 10; void Start() { Renderer rendererComponent = GetComponent<Renderer>(); if (rendererComponent != null) { rendererComponent.sortingLayerName = targetSortingLayerName; rendererComponent.sortingOrder = newOrderInLayer; } } } ``` 此脚本适用于带有 `Renderer` 组件的对象(如 Sprite)。对于纯 UGUI 元素,可以直接操作 Canvas 或 Graphic 的相应字段。 --- ### 总结 为了有效管理 Unity UGUI渲染顺序,应合理利用 `Canvas` 的 Render Mode、Sorting Layer 及 Order in Layer 参数。这些工具共同作用于最终的画面表现上,确保各层次间的视觉逻辑清晰有序[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值