#2 CharakterSkripte - GUI für CharacterStats
Jo heyho Leute,
hier kommt #2 der CharakterSkripte
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
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
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!
hier kommt #2 der CharakterSkripte
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
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
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