Este tutorial fue analizado por expertos para garantizar la exactitud de este enunciado.
Solución:
Esta es una de esas cosas raras de Unity…
El 100 % de los proyectos del mundo real necesitan esto, pero Unity se olvidó de hacerlo.
Version corta:
Necesitas Tocable.cs en cada proyecto de Unity:
// 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();
-
Usa los de Unity función de editor ordinaria ‘Crear botón’
-
Como saben, la función de editor agrega dos componentes automáticamente. uno es un
Text
y uno es unImage
… -
Simplemente elimínelos a ambos
-
Suelta el script anterior
Touchable.cs
en el botón
Estás listo. Eso es todo al respecto.
No puede “decaer” con las actualizaciones de Unity.
De hecho, puedes “botonizar” cualquier cosa en .UI
dejando caer Touchable
en lo alto de ello.
Nunca más “añadir una imagen transparente” para hacer un botón.
Unity olvidó abstraer un concepto “tocable” en la cadena OO.
Por lo tanto, nosotros, los desarrolladores, tenemos que crear nuestra propia clase Touchable “a partir de” las clases de Unity.
Este es un problema clásico de “relleno” en OO.
Cuando se “rellena”, el único problema es ese: debe tener un mantenimiento automático perfecto. Solo hay una buena solución, Touchable.cs, que todos usan.
Entonces, en todos los proyectos de Unity del mundo real, un botón se ve así:
UNO Tienes Unity Button.cs
DOS tienes que agregar Touchable.cs
Algunos equipos crean una función de editor “Crear un mejor botón” que simplemente crea un objeto de juego, con Button.cs + Touchable.cs.
Consejo importante…
Digamos que puede tener una interfaz de usuario muy compleja panel. Entonces cambia de tamaño o incluso tiene una animación.
De hecho, puede soltar “Botón+Tocable” sobre algo así, y funcionará.
Simplemente configure el Botón + Touchable para expandirse para llenar el padre. Eso es todo al respecto.
En esta imagen de ejemplo, “reanudar” y “salir” podrían ser cualquier cosa. (Una animación, un panel complicado con muchas partes, texto, sprites, algo invisible, una pila, cualquier cosa).
En todos los casos, simplemente suelte un Botón+Tocable debajo y tienes un botón impecable.
De hecho: este enfoque es tan simple que probablemente lo usará incluso para casos simples.
Digamos que su botón es una imagen trivial. Es mucho más fácil tener solo una imagen y luego soltar un botón + Touchable en ella. (En lugar de usar la confusa y problemática función “Botón” en el editor).
Entendiendo la situación…
1) de la unidad Button.cs
la clase es fantastica
2) Pero la función del editor “hacer un botón” es basura …
3) Hace un botón “al revés”,
4) es decir, pone un texto/imagen por debajo Botón.cs
5) “Boton-ness” es algo que deberías poder añadir nada en absoluto. Así es precisamente como funciona con Button+Touchable.
6) Entonces, simplemente,
1. Ten lo que quieras. Texto, imagen, panel, invisible, animación, lo que sea.
2. Suelte el botón + Touchable en él – ya está.
¡Así es como todos hacen todos los botones en Unity!
Crédito histórico: Creo que el usuario del foro de Unity “señalZak” fue el primero en pensar esto hace muchos, muchos años!
Como una posible mejora de la respuesta de Fattie, cambiando Touchable
la clase base de Graphic
y anulando protected void UpdateGeometry()
parece funcionar bastante bien en blanco reduciendo la sobrecarga (ciertamente menor) asociada con Text
.
public class Touchable:Graphic
protected override void UpdateGeometry()
Al final de la web puedes encontrar las críticas de otros usuarios, tú igualmente tienes la habilidad mostrar el tuyo si lo deseas.