Questa è una di quelle strane cose a proposito dell'Unità ...
100% dei progetti del mondo reale bisogno di questo, ma l'Unità dimenticato di farlo.
Versione corta:
È necessario Touchable.cs in ogni progetto Unity: ordinaria 'Crea pulsante' funzione di redattore
// 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 di Unity
Come sai, la funzione editor aggiunge due comp onents per te automaticamente. Uno è un Text
ed uno è un Image
...
sufficiente eliminare entrambi
Drop the script precedente Touchable.cs
sul pulsante
Si è fatto. Questo è tutto ciò che c'è da fare.
Non può "decadere" con gli aggiornamenti Unity.
Si può effettivamente "Buttonize" nulla in .UI
facendo cadere Touchable
su di esso.
Mai più "aggiungi un'immagine trasparente" per creare un pulsante.
Unity ha dimenticato di astrarre un concetto "tangibile" nella catena OO.
Quindi, noi sviluppatori dobbiamo rendere la nostra classe Touchable "dalle" classi di Unity.
Questo è un classico problema "riempimento" in OO.
Quando "riempimento" l'unico problema è che deve essere perfettamente automatico. C'è solo una buona soluzione, Touchable.cs, che tutti usano.
Quindi, in tutto mondo reale unità proietta un pulsante simile a questo:
ONE Hai Unità di Button.cs
DUE si deve aggiungere Touchable.cs
Alcuni team creano una funzione di editor "Crea pulsante migliore" che rende semplicemente un oggetto di gioco, con Button.cs + Touchable.cs.
punta importante ...
Diciamo che può avere un pannello di interfaccia utente molto complessa. Forse ridimensiona. O forse hai un'animazione.
La cosa sorprendente è che puoi semplicemente rilasciare "Button + Touchable" su qualcosa di simile, e funzionerà.
Basta impostare il pulsante + Touchable in modo da espandersi per riempire il genitore. Questo è tutto ciò che c'è da fare.
In questa immagine esempio, "curriculum" e "uscire" potrebbe essere qualsiasi cosa . (Un'animazione, un pannello complicato con molte parti, il testo, sprite, somethign invisibile, una pila -. Nulla)
In tutti i casi, basta semplicemente inserire un pulsante + Touchable sotto e si dispone di un pulsante impeccabile.
In effetti: questo approccio è così semplice da rendere anche i pulsanti più semplici utilizzando questo approccio.
Supponiamo che il tuo pulsante sia un'immagine banale. È molto più semplice avere solo un'immagine, quindi rilasciare un pulsante + un oggetto toccabile. (Invece di utilizzare la funzione in realtà confusa e problematica "Button" nell'editor.)
Comprendere la situazione ...
1) la classe di unità Button.cs
è fantastico.
2) Ma la funzione editor di "fare un Button" è spazzatura ...
3) Si fa un pulsante "a testa in giù",
4) cioè, mette un testo/immagine sotto Button.cs
5) "Button-ness" è qualcosa si dovrebbe aggiungere alla nulla. Questo è esattamente il modo in cui funziona con Button + Touchable.
6) Così - molto semplicemente -
1. Avere tutto quello che vuoi. Testo, immagine, pannello, invisibile, animazione - qualunque cosa.
2. Pulsante di rilascio + Touchable su di esso - il gioco è fatto.
Ecco come tutti fanno tutti i pulsanti in Unity!
credito storico: credo Unità utente del forum "signalZak" è stato il primo a pensare questo fuori molti, molti anni fa!
Basta rimuovere il testo secondario e modificare l'alfa dell'immagine su 0. –
Perché no? Ci saranno problemi? –
In breve, ** Unity ha dimenticato o ha scelto di non **, ha un concetto "tangibile" nella catena OO per cose come le immagini che sono, beh, "tangibili". In sostanza, questo significa che noi sviluppatori dobbiamo (in un modo o nell'altro) creare la nostra classe 'Touchable' per Unity - che è una classica situazione di" backfilling "OO. Quando "riattaccare" il problema generale è che deve essere perfettamente auto-manutentivo e fortunatamente sembra esserci una buona soluzione. – Fattie