Scusa se ti risp solo ora Ros ma l'ho visto ora >.<.
C'è scritto nel punto (2) sotto al diagramma
Class name: CustomTextLabel
Script location: "Assets\Standard Assets\Scripts\CustomTextLabel.cs"
Description
Classe generica per la creazione di label personalizzate.
Field summary
attribute | description |
---|---|
private Rect position | rettangolo che contiene la label |
private string text | testo da inserire nella CustomTextLabel |
public float pos_x | coordinata x della CustomTextLabel |
public float pos_y | coordinata y della CustomTextLabel |
private GUIStyle style | style della CustomTextLabel |
private bool custom_style | false se si vuole utilizzare lo stile di default, true se si setta uno stile personalizzata tramite setStyle |
private bool active_flag | true se la CustomTextLabel viene visualizzata, false altrimenti |
private Rect box_position | rettangolo che contiene il box della CustomTextLabel |
private string name | nome della CustomTextLabel |
Method summary
signature | description |
---|---|
public CustomTextLabel (float _pos_x, float _pos_y, string _text, string _name) | Costruttore. E' possibile impostare la posizione della CustomTextLabel tramite _pos_x e _pos_y. Il parametro _text indica il testo che la CustomTextLabel visualizzerà e _name ne indica il nome |
public string getName() | restituisce il nome della CustomTextLabel |
public void setStyle(GUIStyle _style) | imposta un GUIStyle personalizzato |
public void show() | mostra la CustomTextBox se la variabile active_flag è true. Questa funzione deve essere inserita dentro OnGUI |
public void active(bool _active) | imposta la variabile active_flag |
Usage
La classe CustomTextLabel permette la creazione e la gestione di una label direttamente dallo script che la deve gestire sfruttando il gestore di CustomTextLabel incluso negli script che disegnano le GUI (TravelModeScript/ComabtInterface).
Esempio:
using UnityEngine;
using System.Collections;
public class LocalTravelScript : MonoBehaviour {
//definisco la variabile che contiene la CustomTetLabel
private CustomTextLabel local_travel_label;
void Start()
{
//Creo l'oggetto CustomTextLabel
local_travel_label = new CustomTextLabel((Screen.width/2)+100, (Screen.height/2)-150, "Press \"E\" to use the local travel system", "localTransport");
//dato che di default la label viene visualizzata, qui gli si dice di non mostrarla
local_travel_label.active(false);
//inserisco la mia CustomTextLabel nello script che disegna la gui
Camera.mainCamera.GetComponent<TravelModeScript>().add_CTL(ref local_travel_label);
}
void OnTriggerEnter(Collider other){
if(other.tag.Equals("Player")){
//chiedo, allo script che contiene il mio oggetto, di visualizzare la CustomTextLabe
Camera.mainCamera.GetComponent<TravelModeScript>().getCtl(local_travel_label.getName()).active(true);
}
}
void OnTriggerExit(Collider other){
if(other.tag.Equals("Player")){
//chiedo, allo script che contiene il mio oggetto, di smettere di visualizzare la CustomTextLabe
Camera.mainCamera.GetComponent<TravelModeScript>().getCtl(local_travel_label.getName()).active(false);
}
}
}
Per utilizzare questo tipo di gestione dell'oggetto CustomTextLabel è necessario che lo script che disegna la gui (in questo caso il TravelModeScript) erediti da CustomGUIPainter
void OnGUI()
{
//disegna le CTL
foreach (CustomTextLabel ctl in CTL_to_render.Values)
{
ctl.show();
}
}
Tramite questo semplice ciclo, all'interno della OnGUI è possibile disegnare tutte le CustoTextLabel attive.