Ich mache ein Benutzer interaktives Auswahlsystem mit Einheit wo gibt es Schaltflächen für verschiedene Produkte und der Produktname soll in einer systematischen Reihenfolge untereinander angezeigt werden, wenn der Benutzer klickt auf dem Produkt. Ich habe die OnGUI() -Funktion für die Anzeige des Produktnamens verwendet. Aber bei meiner Ausgabe werden alle Namen super übereinander gedruckt.verschiedene Texte auf verschiedenen Tastenklicks in Einheit anzeigen
Ich gebunden erhöhen die Y-Positionen der GUI.label mit statischen Variable i (zunächst auf 0 definiert). Ich habe versucht, den Wert von i bei jedem Klick zu erhöhen und es an die Y-Position der GUI.label hinzuzufügen. Wenn ich jetzt auf die zweite Schaltfläche klicke, werden sowohl die erste Schaltfläche als auch die zweite Schaltfläche auf die neuen Koordinaten verschoben.
using UnityEngine;
using UnityEngine.EventSystems;// 1
using UnityEngine.UI;
``public class Example : MonoBehaviour, IPointerClickHandler // 2
// ... And many more available!
{
SpriteRenderer sprite;
Color target = Color.red;
int a=200,b=100;
public GUIText textObject;
public bool showGUI;
public int s=0;
public static int i=0;
void Awake()
{
sprite = GetComponent<SpriteRenderer>();
}
void test()
{
i = i + 20;
OnGUI();
}
void Update()
{
if (sprite)
sprite.color = Vector4.MoveTowards(sprite.color, target, Time.deltaTime * 10);
}
public void OnPointerClick(PointerEventData eventData) // 3
{
showGUI = true;
Debug.Log(gameObject.name);
target = Color.blue;
PlayerPrefs.SetString ("Display", gameObject.name);
s = 1;
test();
}
void OnGUI()
{
if (s == 1) {
GUI.color = Color.red;
GUIStyle myStyle = new GUIStyle (GUI.skin.GetStyle ("label"));
myStyle.fontSize = 20;
GUI.Label (new Rect (a, b, 100f, 10f), "");
if (showGUI) {
//GUI.Box (new Rect (a,b+i, 300f, 100f), "");
GUI.Label (new Rect (a, b + i, 300f, 100f), gameObject.name, myStyle);
s = 0;
}
}
}
}
vielen dank! Werde das sicherlich ausprobieren –