x


How to use the Screen.width and Screen.height to script GUI text

I can't seem to figure out how to use the Screen.width and Screen.height correctly.

I have the resolution at 4:3, and no matter what, when I build what I am working on, the text shows up in the middle of the field as opposed to the right side of the screen as I intended.

Can anyone help me out with how to script the Screen.width and Screen.height with text I want to display on the screen, like through GUI.label?

function OnGUI(){

    \\These are the two lines that I want to reposition
    GUI.Label(Rect(335, 75, 100, 50), "Player 1: " +scriptStaticVarScoring.playerRed);

    GUI.Label(Rect(335, 125, 100, 50), 
                                     "Player 2: " +scriptStaticVarScoring.playerBlue);

}

more ▼

asked Oct 20 '10 at 09:39 PM

Wylie gravatar image

Wylie
54 11 12 20

Could you post your script or a portion of the script that you are using?

Oct 20 '10 at 10:54 PM ClandestineMan

Hey, ClandestineMan! I edited the question with the script in question.

Oct 21 '10 at 01:51 PM Wylie
(comments are locked)
10|3000 characters needed characters left

2 answers: sort voted first

Are you talking about the placement of the label on the screen, or the placement/alignment of text within that label? For the latter, you need to adapt the settings of the associated GUIStyle (check the docs for that, I never used it so far). For the former it is simple once you understand what Rect(x,y,w,h) does. Rect() always refers to the upper left corner of an object, and the coordinates are always relative to the upper left screen corner. So to place the upper left corner of an object at screen coordinates (200,100), use

Rect(200,100,widthOfObject,heightOfObject);

(with appropriately defined valued for widthOfObject and heightOfObject).

Now if you want to place that same object relative to the upper RIGHT screen corner, for example, you can compute the correct pixel position of the upper left corner of your object with with:

Rect((Screen.width-1)-200-widthOfObject,100,widthOfObject,heightOfObject);

This is analogue for the y coordinate.

more ▼

answered Oct 21 '10 at 02:50 PM

Wolfram gravatar image

Wolfram
9k 8 20 52

I do want the Label to be relative to the right edge of the screen.

I utilized the second example you posted, and it works when I run the program through the Unity3D interface, but when I build and run it, the text remains at the center of the screen.

Any ideas?

Oct 21 '10 at 05:59 PM Wylie

Nevermind! I got it to work, it wasn't a problem with the scripting, it was a bug in the editor. I just updated the project to unity 3.0 and it built great. Thanks for the help!

Oct 21 '10 at 08:52 PM Wylie

Thanks for sharing this answer! This just helped me a bunch as well! Good stuff!

Aug 08 '12 at 08:50 PM Tethys
(comments are locked)
10|3000 characters needed characters left

If you want the text right justified in the rect you're going to need to pass in a style to the GUI.Label. See: http://unity3d.com/support/documentation/ScriptReference/GUIStyle.html

more ▼

answered Oct 21 '10 at 02:53 PM

JDonavan 1 gravatar image

JDonavan 1
462 2 6 18

(comments are locked)
10|3000 characters needed characters left
Your answer
toggle preview:

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Topics:

x3684
x380
x313

asked: Oct 20 '10 at 09:39 PM

Seen: 2912 times

Last Updated: Aug 08 '12 at 08:50 PM