Gizmos sind kleine Icons im Spielfeld, die über einem Objekt schweben und dem Spieler etwas mitteilen. Diese sind sehr einfach zu erstellen und können beliebig ausgebaut werden. Folgende Anleitung soll nur die Grundlagen zeigen auf denen man bessere Gizmo Systeme in Unity3D aufbauen kann.
Anleitung
- Man erstellt in der Objekthierarchie ein Sprite (Kein Image!) und fügt ein Textelement hinzu. Ich habe TextmeshPro genommen:
2. Nun benötigt man ein kleines Skript. Das Skript wird nachher ganz kurz erklärt:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class demoscript : MonoBehaviour
{
public GameObject gizmo_wood_number;
public GameObject my_house;
public Camera MainCamera;
private bool gizmos_are_visible = false;
void LateUpdate()
{
if (gizmos_are_visible == true)
{
gizmo_wood_number.transform.position = new Vector3(my_house.transform.position.x, my_house.transform.position.y + 1, my_house.transform.position.z);
gizmo_wood_number.transform.LookAt(MainCamera.transform.position, Vector3.up);
}
}
void Reset_Gizmo()
{
gizmos_are_visible = false;
gizmo_wood_number.SetActive(false);
}
}
Das Skript kümmert sich in der LateUpdate() Routine darum, dass das Gizmo immer Richtung Kamera schaut. Dann schaut es, dass das Gizmo sich immer beim Haus – in meinem Beispiel my_house – bleibt. Das Gizmo wird aber +1 höher als das Haus angezeigt, damit das Gizmo nicht hinter dem Haus oder im Haus ist. Man muss diesen Wert ggf. anpassen.
Die Funktion Reset_Gizmo() muss man dann selber aufrufen, um das Gizmo wieder zu verstecken.
Um das Gizmo hervorzurufen, setzt man irgendwo im Skript einfach den Wert gizmos_are_visible auf TRUE und schon ist das Gizmo wieder sichtbar.