Jump to content
Unity Insider Forum

Nax's Blog

  • Einträge
    13
  • Kommentare
    19
  • Aufrufe
    21.792

#2 CharakterSkripte - GUI für CharacterStats


Nax

760 Aufrufe

Jo heyho Leute,

hier kommt #2 der CharakterSkripte :D

Heute geht es darum für das Skript "CharacterStats" - vom letzten Beitrag ([url="http://forum.unity-community.de/blog/41/entry-99-1-charakterskripte-characterstats/"]#1 CharacterStats[/url]) - ein weiteres Skript zu erstellen, sodass die Status Attribute, welche durch "CharacterStats" beeinflusst werden, auch anzuzeigen :rolleyes:

Wir machen es uns ganz gaaaannnzz einfach! Wir wollen einfach die vier Attribute[list]
[*]Health
[*]Hunger
[*]Thirst
[*]Stamina
[/list]
oben links auf dem Bildschirm dargestellt werden.

Hinweis: Damit das ganze auch in Unity funktioniert solltet ihr die Skripte einfach dem FPSController hinzufügen (also via Add Component > Scripts > usw...).

Ok hier noch Kleinigkeiten, die wir für das GUI Skript festhalten:[list]
[*]Wir können bei bedarf ein GUISkin anfügen
[*]Die allgemeine Größe soll definierbar sein
[*]Die Position für folgende Attribute sollen Variabel sein:
[list]
[*]Health
[*]Hunger
[*]Thirst
[*]Stamina
[/list][*]Und jedes der o.g. Attribute soll mit schicken Texturen ergänzt werden können (so farbige Balken oder so ^^)
[/list]
Daraus ergibt sich, das wir so um die 14 Attribute brauchen ^^.

Hier kommen sie:

[CODE]
#pragma strict
var guiSkin : GUISkin;
// Default Bar Size
var size : Vector2 = new Vector2(200, 20);
// View for Health
var healthPos : Vector2 = new Vector2(20, 10);
var healthBarEmpty : Texture2D;
var healthBarFull : Texture2D;
// View for Hunger
var hungerPos : Vector2 = new Vector2(20, 40);
var hungerBarEmpty : Texture2D;
var hungerBarFull : Texture2D;
// View for Thirst
var thirstPos : Vector2 = new Vector2(20, 70);
var thirstBarEmpty : Texture2D;
var thirstBarFull : Texture2D;
// View for Stamina
var staminaPos : Vector2 = new Vector2(20, 100);
var staminaBarEmpty : Texture2D;
var staminaBarFull : Texture2D;
[/CODE]

Ok sieht super aus ;-). Nun können wir die Attribute auch über den Editor anpassen. Top!

Nun brauchen wir noch ein Attribut. Die Verbindung zu den CharacterStats!

[CODE]
// Character Stats
private var characterStats : CharacterStats;
function Start() {
characterStats = GetComponent(CharacterStats);
}
[/CODE]

Damit wir nun nicht viermal dasselbe schreiben für jedes Attribut basteln wir uns eine Methode welches die dementsprechenden Elemente auf der GUI erzeugt (für jedes Attribut halt..).

[CODE]
function CreateGUIBoxForAttribute(pos:Vector2, display:float, empty:Texture2D, full:Texture2D) {
// GUI for Attribute
GUI.BeginGroup(new Rect(pos.x, pos.y, size.x, size.y));
GUI.Box(Rect(0, 0, size.x, size.y), empty);
GUI.BeginGroup(new Rect(0, 0, size.x * display, size.y));
GUI.Box(Rect(0, 0, size.x, size.y), full);
GUI.EndGroup();
GUI.EndGroup();
}
[/CODE]

Hui, waren das viele Parameter :lol:

Nun wird es gaaaannnz einfach. Wir brauchen einfach die OnGUI Methode implementieren und alles funktioniert!

(Nicht vergessen, wir haben noch den GUI Skin!)

[CODE]
function OnGUI() {
if(guiSkin) {
GUI.skin = guiSkin;
}
CreateGUIBoxForAttribute(healthPos, characterStats.health, healthBarEmpty, healthBarFull);
CreateGUIBoxForAttribute(hungerPos, characterStats.hunger, hungerBarEmpty, hungerBarFull);
CreateGUIBoxForAttribute(thirstPos, characterStats.thirst, thirstBarEmpty, thirstBarFull);
CreateGUIBoxForAttribute(staminaPos, characterStats.stamina, staminaBarEmpty, staminaBarFull);
}
[/CODE]

Na ist das nicht EASY?????

Nun können wir das Skript einfach dem FPSController beifügen und schon haben wir die Attribute auf der Oberfläche angezeigt ;-).

Solltet ihr passende Texturen haben (halt solche Balken oder so xD) könnt ihr die noch beifügen ;D

Viel Spaß damit!

0 Kommentare


Recommended Comments

Keine Kommentare vorhanden

Gast
Kommentar schreiben...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Lädt...
×
×
  • Neu erstellen...