Unity : WorldSpace下的UI(image,Button等)无法点击问题

本文详细介绍了Unity项目中遇到的UI点击事件问题。项目包含三个Canvas,其中两个在ScreenSpace-Overlay层,一个在WorldSpace层。在测试代码changeMenuColor.cs时,发现在ScreenSpace-Overlay层的按钮能正常触发点击事件,而在WorldSpace层的按钮则不能。问题在于当Canvas的SortOrder相同时,重叠部分的UI将无法接收到点击。通过调整鼠标光标Canvas的SortOrder为1,解决了因渲染顺序导致的点击事件无法触发的问题。
部署运行你感兴趣的模型镜像

1 项目基本情况介绍

在本项目中一共有3个Canvas(画布)

第一个Canvas是在Screen Space - Overlay 中的image,带有button控件(如图1.1所示)

第二个Canvas也是在Screen Space - Overlay 中的image,此image会跟着鼠标移动,可以理解为鼠标光标(如图1.2所示)

第三个Canvas是在World Space下的image,带有button控件(如图1.3所示)

图1.1图1.2图1.3
图1.1图1.2图1.3

本项目将一段代码(changeMenuColor.cs),并将此代码赋予给了一个GameObject。

之后再将此GameObject赋予了图1.1图1.3中Button组件中的OnClick()函数中,如图1.4所示。

图1.4
图1.4

changeMenuColor.cs的代码如下所示:

//changeMenuColor.cs
//点击按钮时,输出“点击按钮”
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class changeMenuColor : MonoBehaviour
{
    public void Click()
    {
        print("点击按钮");
    }
}

2 问题简述

在进行代码测试时,我们发现图1.1中的image点击后会在Console输出“点击按钮”

图1.3中的image在被点击后并没有输出“点击按钮”

这说明图1.1中的image被点击了,而图1.3中的image并没有被检测到点击。

3 解决方案

我对比了图1.1图1.2图1.3中的Canvas设置,如图3.1图3.2图3.3所示。

发现他们的Sort Order都为0

这意味着如果两个图片重叠时,位于后面的图片将无法检测到点击。

就如本项目中,鼠标光标(图1.2)会随着鼠标移动,当鼠标点击图1.3的图片时,图1.2图1.3的图片会产生重叠现象,所以图1.3的image就可能无法检测到点击事件

图3.1图3.2图3.3
图3.1图3.2图3.3

所以,我将鼠标光标(图1.2)所在的Canvas的Sort Order改为1(如图3.4),改变其渲染次序,即可解决问题。

图3.4

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

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值