【UGUI】使用Canvas Group组件实现在人物对话时禁用指定图层交互

目录

一、Canvas Group组件介绍

二、实现步骤


一、Canvas Group组件介绍

        Unity的Canvas Group组件是用于控制UI元素在Canvas中的显示和隐藏的组件,通过该组件可以设置UI元素的透明度和交互性,从而在UI设计中提供更大的控制和灵活性。

        Alpha:这是UI元素的透明度属性。可以设置在0到1之间,0表示完全透明,1表示完全不透明。

        Interactable:这个属性允许您控制UI元素是否可交互。当设置为false时,UI元素将被禁用并阻止所有用户输入。

        Blocks Raycasts:这个属性决定了UI元素是否会阻止鼠标或触摸事件的穿透。当设置为false时,鼠标或触摸事件可以穿透UI元素并影响到下面的物体。

        Canvas Group组件非常有用,因为它允许您在同一个Canvas中控制多个UI元素的透明度和交互性。此外,使用Canvas Group组件可以轻松地实现UI元素的淡入淡出效果、UI界面的开关和动态控制UI元素的交互性等功能。

二、实现步骤

        在本文中,我将介绍如何使用Unity中的Canvas Group组件的Interactable属性,来实现在人物对话时禁用指定图层的交互。举例来说,假设我们有一个场景,其中包含了人物对话框和一些按钮,它们属于不同的对象图层。我们想要实现的功能是,当对话框出现时,禁用按钮图层的交互,以避免用户在对话框出现时误操作按钮。

        要实现这个功能,我们需要使用Canvas Group组件的Interactable属性。首先,我们需要将对话框和按钮分别放置在不同的对象图层中。然后,对于按钮所在的图层,我们需要将其Canvas Group组件的Interactable属性设置为false,以禁用用户在对话框出现时对其进行交互操作。这样,当对话框出现时,用户将无法与按钮进行交互,直到对话框消失再恢复按钮的交互性。

        下面是一个示例图例:

        具体步骤:

        第一步,给按钮图层的GameObject上添加Canvas Group组件。

        第二步,给Canvas对象添加脚本,命名为UIManager,当然也可以创建一个空物体(GameObject > Create Empty),将脚本添加给空物体,代码如下:

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class UIManager : MonoBehaviour
{
    public CanvasGroup canvasGroup;//获取需要禁用交互图层的CanvasGroup组件
    public GameObject dialog;//获取对话框对象
    // Start is called before the first frame update
    void Start()
    {
        //对话框存在,禁用按钮图层(也可以手动设置)
        canvasGroup.interactable = false;
    }

    // Update is called once per frame
    void Update()
    {
        //如果按下E,关闭对话框,启用按钮图层
        if (Input.GetKeyDown(KeyCode.E))
        {
            dialog.SetActive(false);
            canvasGroup.interactable = true;
        }
    }
}

        通过这种方式,可以在对话时禁用指定图层上的所有交互,包括点击、拖拽等。同时,当对话结束后,图层上的交互将会被重新启用。

猜你喜欢

转载自blog.csdn.net/m0_51942776/article/details/130449189
今日推荐