- Home /
Creating a Lifebar with simple GUI in C#
Hi there, I'm pretty new to Unity. I was trying to make a lifebar for my player with Unity's GUI through code in C#.
The maximun life is 200 and the minimum 0. I've already got the damage sorted out practically, but I wanted to display it in a simple lifebar.
I want to find a way to make a GUI bar in the top-left side of the screen that is represented as CurrentLife/TotalLife (TotalLife should be the max size, and should have to be another GUI as a background texture).
There should be a string "LIFE" in the middle of the bar. Also, I want to make the bar and the string to shake when a bullet hits the player.
If you could help me, I'd also like to make a label that shows how many enemies I have killed (I use the Destroy.GameObject thing) in the top right corner of the screen. And, as a player is killed, there should be a Points Label that increases by 20 everytime I kill an enemy (as in "SCORE: 0", I kill an enemy "SCORE: 20", another, "SCORE: 40").
And, to end this, I wanted to add an "ACCURACY" label under the above (as in ShotsThatHitAnEnemy/ShotsMade).
If anyone could help me in any of this, It'd be much appreciated.
Thanks in advance! :)
You're asking for a lot in one question, much of which is covered in tutorials and other questions that you would have found if you'd have looked. 2. You haven't included any example of what you've tried already. Essentially you are asking someone to write your code for you. If you don't want to give this impression, try to get it working and then ask about the parts that aren't working for you, including what you've already tried.
For example, search 'health bar' (http://answers.unity3d.com/search?q=health+bar) and there are plenty of answers. For the rest of the gui elements, you simply need to store some variables in your gui script and update them as things change. Shaking the GUI is a little more complex and if you asked about that specifically in it's own question, I'd be glad to answer, but simply put, you'd change the positions of your GUI objects over a period of time.
The thing is, there is no much help in C#. And UnityAnswers search engine is not much of a friend for that matter.
Honestly, converting the js to C# is super easy. $$anonymous$$ostly, you just have to move some keywords around. Check out this link if you're having difficulties bridging the gap (http://answers.unity3d.com/questions/5507/what-are-the-syntax-differences-in-c-and-javascript)
Answer by SantiN90 · Nov 09, 2010 at 08:30 PM
Okay, I've been coding a little bit and this is what I got
using UnityEngine; using System.Collections;
public class UserInterfaceGraphics : MonoBehaviour {
public Rect lifeBarRect; public Rect lifeBarLabelRect; public Rect lifeBarBackgroundRect; public Texture2D lifeBarBackground; public Texture2D lifeBar;
//private float damage = 10;
private PlayerVitalData PVDScript; public GameObject PlayerData;
private float LifeBarWidth = 300f;
// Use this for initialization void Start(){ instance = this; PVDScript = PlayerData.GetComponent("PlayerVitalData") as PlayerVitalData;
} // Update is called once per frame
public static UserInterfaceGraphics instance;
void OnGUI() {
instance.lifeBarRect.width = LifeBarWidth * (PVDScript.life/200);
instance.lifeBarRect.height = 20;
instance.lifeBarBackgroundRect.width = LifeBarWidth;
instance.lifeBarBackgroundRect.height= 20;
GUI.DrawTexture(lifeBarRect, lifeBar);
GUI.DrawTexture(lifeBarBackgroundRect, lifeBarBackground);
GUI.Label(lifeBarLabelRect, "LIFE");
}
}
The Life Bar or Health Bar or whatever now works like wonders. I just got hurried up and made questions too soon, instead of searching before.
I hope it helps anyone down the road.
"The type or namespace name `PlayerVitalData' could not be found. Are you missing a using directive or an assembly reference?" <-- not declared.
Answer by Cas Unity3D · Nov 14, 2012 at 02:56 PM
Use GUI.Box instead. Define the lenght of the box using the amount of life left. You have to call the variables from your health script. You have to make assign your texture in the new style.
For example:
using UnityEngine;
using System.Collections;
public class UserInterfaceGraphics : MonoBehaviour {
public float currentLife;
public GUIStyle : myGUIStyle;
Void OnGUI () {
//For example you have 100 life’s maximum.
GUI.Box(new Rec(10, 10, 0.001 * Screen.width * currentlife, 0.1 * Screen.heigth), “LIFE”, myGUIStyle);
}
}
I hope this is helpfull.
Your answer
Follow this Question
Related Questions
need help with GUI healthbar 1 Answer
Inverse health bar 2 Answers
Adding a score progress bar 1 Answer
Health bar by percentage? (not drawing a box) 4 Answers
Health Bar Centering 4 Answers