UGUI优化(一)减少Raycast Target事件

UGUI中常用的可以响应的鼠标事件的组件包括Button、Toggle、Slider、InputField、ScrollView等。而它们能够响应鼠标事件的前提之一就是组件中包含勾选了Raycast Target物体(通常这类物体一般是Image、RawImage、Text这种基本组件)。以Button为例:
在这里插入图片描述
在这里插入图片描述
默认Button中包含了一个Image组件和一个Text组件,只要其中一个勾选Raycast Target,那么这个Button就可以响应鼠标事件。

UGUI的鼠标事件是通过射线检测实现的。当点击鼠标时,Unity会遍历当前勾选了Raycast Target的所有组件,找到最上层的组件来作为当前点击的响应点。所以场景中勾选Raycast Target的组件太多的话,就会降低游戏运行效率。

然而Unity在创建Image、RawImage、Text等基本组件时是会默认勾选Raycast Target选项的,如果到了项目后期,逐个组件检查是非常麻烦的。因此可以重写创建方法,在创建时不勾选Raycast Target选项。这样就可以避免UI中出现无用的勾选了Raycast Target组件,以Image为例:

        [MenuItem("GameObject/UI/Image")]
        static void CreatImage()
        {
   
            GameObject go = new GameObject("Image", typeof(Image));
            go.GetComponent<Image>().raycastTarget = false;
            if (Selection.activeTransform)
            {
   
                if (Selection
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值