gpt4 book ai didi

c# - 如何使不可见的透明按钮起作用?

转载 作者:太空狗 更新时间:2023-10-29 17:39:00 26 4
gpt4 key购买 nike

查看Unity论坛和问答网站上的一些答案,关于如何制作不可见按钮的答案不起作用,因为移除按钮附属的图像使其不起作用。

您如何解决这个问题并在允许按钮实际工作的同时保持不可见属性?

最佳答案

这是关于 Unity 的那些奇怪的事情之一......

100% 的现实世界项目都需要这个,但 Unity 忘了这样做。

简短版:

在每个 Unity 项目中都需要 Touchable.cs:

// file Touchable.cs
// Correctly backfills the missing Touchable concept in Unity.UI's OO chain.

using UnityEngine;
using UnityEngine.UI;
#if UNITY_EDITOR
using UnityEditor;
[CustomEditor(typeof(Touchable))]
public class Touchable_Editor : Editor
{ public override void OnInspectorGUI(){} }
#endif
public class Touchable:Text
{ protected override void Awake() { base.Awake();} }
  1. 使用 Unity 的普通“创建按钮”编辑器功能

  2. 如您所知,编辑器功能自动为您添加两个组件。一种是 Text,一种是 Image...

  3. 只需将它们都删除

  4. 将上面的脚本 Touchable.cs 放在按钮上

你完成了。仅此而已。

它不会随着 Unity 升级而“衰减”。

实际上,您可以通过将 Touchable 放在 .UI 上来“按钮化”任何内容

再也不会“添加透明图像”来制作按钮了。


Unity 忘记在 OO 链中抽象出一个“可触摸”的概念。

因此,我们开发人员必须“从”Unity 的类中创建我们自己的 Touchable 类。

这是 OO 中的经典“回填”问题

“回填”时唯一的问题是:它必须完全自动维护。只有一个很好的解决方案,Touchable.cs,每个人都在使用。


所以在所有现实世界的 Unity 项目中,按钮看起来像这样:

enter image description here

ONE 你有 Unity 的 Button.cs

两个 你必须添加Touchable.cs

一些团队使用 Button.cs + Touchable.cs 制作一个编辑器功能“Create Better Button”,它只是制作一个游戏对象。

重要提示...

假设您可能有一个非常复杂的 UI 面板。所以它会调整大小甚至有动画。

事实上,您可以将“Button+Touchable”放在类似的任何东西上,它就会起作用。

只需设置 Button+Touchable 即可扩展以填充父级。仅此而已。

enter image description here

在此示例图片中,“resume”和“quit”可以是任何内容。 (动画、包含许多部分的复杂面板、文本、 Sprite 、不可见的东西、堆栈 - 任何东西。)

在所有情况下,只需将 Button+Touchable 放在下方,您就会得到一个完美的按钮。

事实上:这种方法非常简单,即使是简单的情况,您也可能会用到它。

假设您的按钮是一个普通图像。只拥有一个图像,然后在其上放置一个 Button+Touchable 会容易得多。 (而不是在编辑器中使用令人困惑和有问题的“按钮”功能。)

了解情况...

1) Unity 的 Button.cs 类很棒。

2) 但是编辑器功能“制作一个按钮”是垃圾...

3) 它制作了一个“颠倒”按钮,

4) 即,它将文本/图像放在 Button.cs

5) “按钮性”是您应该能够添加到任何东西的东西。这正是它与 Button+Touchable 配合使用的方式。

6) 所以 - 很简单 -

1。有你想要的任何东西。文本、图像、面板、不可见、动画 - 随便什么。

2。将 Button+Touchable 拖放到它上面 - 大功告成。

这就是每个人在 Unity 中做所有按钮的方式!


历史功劳:我相信 Unity 论坛用户 “signalZak” 是很多很多年前第一个想到这一点的人!

关于c# - 如何使不可见的透明按钮起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36888780/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com