- Home /
C# Putting a Series of Labels in Between a Series of Buttons
Hi everyone, can you put a series of GUIlayout.Labels in Between a Series of GUIlayout.Buttons? I have two for loops one for the buttons and the other for the labels and I would like to arrange them so the labels are in between the buttons.
public string[] someText;
void OnGUI(){
someText= new string[] {"Text4","Text5","Text6"};
for(int i = 0; i < someText.Length; i++){
GUILayout.Label(text[i]);
}
someText= new string[] {"Text1","Text2","Text3"};
for(int i = 0; i < someText.Length; i++){
GUILayout.Button(text[i], GUILayout.Width(142), GUILayout.Height(25))
}
}
Answer by Fornoreason1000 · May 21, 2013 at 02:24 AM
combine the loops... make an if block checking if "i" is odd or even, draw button if odd, draw label if even. (hint: if (i % 2), its odd)
algorithm:
for (int i = 0; i < length of string, i++) {
if i % 2 draw Button
else draw label
}
I'm getting an error from the console and it says cannot implicitly convert type "int" to type bool. The console points to the if (i % 2) as the cause. Why does it want a boolean?
using UnityEngine;
using System.Collections;
public class SomeGUI : $$anonymous$$onoBehaviour {
public string[] someText;
void OnGUI () {
someText= new string[] {"Text1","Text2","Text3","Text4","Text5","Text6"};
for(int i = 0; i < someText.Length; i++){
if (i % 2){
GUILayout.Button(someText[i], GUILayout.Width(142), GUILayout.Height(25));
}
else{
GUILayout.Label(someText[i]);
}
}
}
}
that's because you used the wrong syntax. your checking if i is divisible by 2. so when i % 2 is 0 then its even... sorry for for being unclear here you go:
if (i % 2 == 0)
the "%" operator gets the remainder of a division,
http://msdn.microsoft.com/en-us/library/0w4e0fzs.aspx
its asking for a Boolean because your using "i % 2" as a Boolean value(when its not). the compiler does this because if(mybool)
is exactly the same as if(mybool == true)