My own GuiSkin on the script

Hi... I have this script

var score = 0;
var scoreText = "Score: 0";

function OnTriggerEnter( other : Collider ) {
    Debug.Log("OnTriggerEnter() was called");
    if (other.tag == "Coin") {
        Debug.Log("Other object is a coin");
        score += 5;
        scoreText = "Score: " + score;
        Debug.Log("Score is now " + score);
        Destroy(other.gameObject);
    }
}

function OnGUI () {
     GUI.Label (Rect (10, 10, 100, 20), scoreText.ToString()); }

I have a GuiSkin and i want the things in the script like "Score: " to take the font, color etc from my GuiSkin. What i have to put in my code to fix that? Please correct it! Thank you.

Add this to the top of your script:

var myScoreStyle:GUIStyle;

now change your GUI.Label from

GUI.Label (Rect (10, 10, 100, 20), scoreText.ToString());

to

GUI.Label(Rect(10,10,100,20),scoreText.ToString(),myScoreStyle);

Note the addition of the "myScoreStyle" at the end of the GUI.Label.

Now, locate the properties panel for this script and you'll see a drop down (arrow thingy) with the name myScoreStyle ... open that up and change the style as you see fit.

Any time you want to override the default GUISkin, create a new GUIStyle variable and assign that to your GUIObject.

OR .. you can scroll to the bottom of your GUISkin and in the Custom Styles drop down, add a new element to the size property and you can adjust your new custom style there. In order to reference this new custom style, you will have to change your GUI.Label to look like this:

 GUI.Label(Rect(10,10,100,20),scoreText.ToString(),"myScoreStyle");

Note the Quotes around the myScoreStyle. Also, with this approach, you no longer need to create a GUIStyle variable at the top of your script.

In your script, have

var mySkin : GUISkin;

as a public variable (and drag the skin onto it in the inspector of course). Then your OnGUI function should be

function OnGUI () {
    GUI.skin = mySkin;
    // rest of stuff here
}