x


BeginVertical won't compile when no style is provided

Hi,

i'm trying to create a very simple GUI with Unity, here is my javascript code:

function OnGUI() {
  GUILayout.BeginVertical(GUIContent("test"));
  GUILayout.EndVertical();
}

when the script is 'compiled' it gives me the following error:

Assets/NewBehaviourScript.js(2,40): BCE0023: No appropriate version of 'UnityEngine.GUILayout.BeginVertical' for the argument list '(UnityEngine.GUIContent)' was found.

when i add a style to the BeginVertical constructor, like this:

function OnGUI() {
  GUILayout.BeginVertical(GUIContent("test"), "box");
  GUILayout.EndVertical();
}

the error goes away...

in the script reference guide, it is said that the style is an optional argument

why do i have to explictly provide the style argument for it to work?

i'm using Unity 3.1.0f3 (54715) if that can help

Thanks a lot

NB: i'm building a unity GUI generation framework so it's not just me not wanting to provide the "style" argument. The thing is: the framework isn't supposed to generate this argument when the user didn't supply a style attribute for a BeginVertical element

more ▼

asked Mar 15 '11 at 10:11 PM

nOne gravatar image

nOne
2 1 2 2

(comments are locked)
10|3000 characters needed characters left

2 answers: sort voted first

According to the script reference, it's not optional:

http://unity3d.com/support/documentation/ScriptReference/GUILayout.BeginVertical.html

static function BeginVertical (params options : GUILayoutOption[]) : void
static function BeginVertical (style : GUIStyle, params options : GUILayoutOption[]) : void
static function BeginVertical (text : string, style : GUIStyle, params options : GUILayoutOption[]) : void
static function BeginVertical (image : Texture, style : GUIStyle, params options : GUILayoutOption[]) : void
static function BeginVertical (content : GUIContent, style : GUIStyle, params options : GUILayoutOption[]) : void

The one in question being the last one, which takes a GUIContent, a style, and a variable number of GUILayoutOptions

more ▼

answered Mar 15 '11 at 10:26 PM

Mike 3 gravatar image

Mike 3
30.6k 10 67 254

but have a look at the style argument description:

style The style to use for background image and padding values. +++If left out, the background is transparent.+++

so it actually appears to be optional! look at the "text/style/options" construct for example. If i just provide a text argument and no style, it works!

Mar 15 '11 at 11:13 PM nOne
(comments are locked)
10|3000 characters needed characters left

Thanks a lot for your help Mike, but it didn't really answer my question. As explained in my previous comment, the script reference guide says about the 'style' argument:

The style to use for background image and padding values. If left out, the background is transparent

and when i use the text/style/options constructor, like this:

function OnGUI() {
  GUILayout.BeginVertical("test");
  GUILayout.EndVertical();
}

it works! i don't have to provide the style argument for it to work!

why is there such a discrepancy between the two constructors?

more ▼

answered Mar 16 '11 at 09:36 AM

nOne gravatar image

nOne
2 1 2 2

Oh I see your problem. Just use GUILayout.BeginVertical(); The one you're using right now is trying to parse Test as a GUIStyle (The second function I listed)

Mar 16 '11 at 10:08 AM Mike 3

Thanks again Mike, but what about the scripting guide? It clearly says about the style argument: "If left out, the background is transparent". Is it just some random statement that has no value?

Mar 16 '11 at 10:17 AM nOne

or does "left out" means that i must provide an empty string for the style argument? (instead of no style argument at all)

Mar 16 '11 at 10:20 AM nOne

The one I used above is the only function you can leave it out of, the rest are mandatory. It has value in that you're calling BeginVertical without a style, the fact that it's internally a different overload doesn't change that

Mar 16 '11 at 10:21 AM Mike 3

Ok, i think i understand better now! But what if i want to create a BeginVertical with a text and use the default transparent background for the style. Will BeginVertical("test", "") do the trick?

Mar 16 '11 at 10:27 AM nOne
(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:

x2029
x48
x41
x20
x2

asked: Mar 15 '11 at 10:11 PM

Seen: 788 times

Last Updated: Mar 15 '11 at 10:11 PM