Мне нужно создать / создать кнопки внутри таблицы. Я хотел бы, чтобы все кнопки были помечены, а затем также раскрашены, однако, судя по моим исследованиям и тестированию, я считаю, что у меня может быть только одно или другое. Мне бы они нужны в прокручиваемой таблице.
public void OnGUI()
{
//create a window
GUI.Window(0, windowRect, WindowFunction, "Meeting Request Viewer");
}
public void WindowFunction(int windowID)
{
//Fetches all user Data
string[][] userArray = GetComponent<Userdata>().CallDetail();
string[][] StudentArray = GetComponent<Userdata>().UserSorting(userArray);
Debug.Log("here");
//Calls the SortStudentArray method
string[,] SortedStudentArray = SortStudentList();
//Creates a box with a scrolling bar to taverse the y axis
scrollPosition = GUI.BeginScrollView(new Rect(Screen.width / 6, Screen.height / 6, 350, 250), scrollPosition, new Rect(0, 0, 300, 40 * SortedStudentArray.Length));
//for each row in the sorted student array
for (int x = 0; x < SortedStudentArray.Length; x++)
{
GameObject StudentButton = Instantiate(GUI.Button(new Rect(0, BSpace, 300, 20), (SortedStudentArray[x, 6])));
//This keeps the gap between each button consistent
BSpace = +scrollPosition.height;
}
GUI.EndScrollView();
}
Не могли бы показать нам, где находится этот код? это в OnGUI()? и что такое SortedStudentArray?
Добавлен код к вопросу, также это единственное место, где я использую Screen.width/6, но я обязательно укажу, почему





Можно одновременно маркировать и раскрашивать кнопки. Unity GUI - это система прямого режима, поэтому вы не создаете экземпляр и должны устанавливать GUI.color * перед каждым вызовом GUI.Button. Вот пример;
public int ButtonSpacing = 10;
public int ButtonWidth = 80;
public int ButtonHeight = 30;
public string[] Labels = { "Black", "Red", "Green", "Blue" };
public Color[] Colors = { Color.black, Color.red, Color.green, Color.blue };
private void OnGUI ()
{
var y = ButtonSpacing + ButtonHeight;
for (var i = 0; i < 4; i++)
{
GUI.backgroundColor = Colors[i];
GUI.Button(new Rect(ButtonSpacing, ButtonSpacing + i * y, ButtonWidth, ButtonHeight), Labels[i]);
}
}
* На самом деле существует три способа раскрасить графический интерфейс. Возможные варианты: GUI.backgroundColor, GUI.contentColor и GUI.color. Дополнительную информацию об их использовании см. В документации GUI.
Ах, хорошо, спасибо! Как мне зарегистрировать, какая кнопка была нажата?
GUI.Button вернет логическое значение, указывающее, был ли он нажат в этом кадре. Истина, если это так, в противном случае - ложь. Так что можно просто if (GUI.Button()) DoSomething();
Небольшая подсказка: используйте файлы свойств или множество констант, чтобы избежать магических чисел. Позже никто не знает, почему следует использовать
Screen.width/6, или в другом месте, где вы не знаете, формула ширины и переменная подойдут.