2015-12-29 2 views
0

Я пытаюсь создать кнопки пользовательского интерфейса, и у меня возникают проблемы. Когда я использую
GUI.Button (новый Rect (...), текстура, GUIStyle); Я могу установить положение кнопки, GUIStyle и текстуру (это то, что мне нужно), но мне также нужно установить Panel в качестве родителя для каждой кнопки, есть метод под названием transform.setParent (игровой объект); , но GUI.Button возвращает bool. Я могу создать var b = new Button(); , но я не знаю, как передать GUIStyle или текстуру объекту Button. Мне нужно решить всю проблему из сценария Csharp. Настройте стиль и текстуру кнопки и родительскую кнопку одновременно! Благодарю.Кнопки пользовательского интерфейса в Unity, как настроить GUIStyle и родителя в то же время программно?

+0

Если какой-либо из ответов сработал для вас, было бы полезно для других, если вы согласитесь с этим ответом. Если нет, не стесняйтесь комментировать полученные ответы или обновлять свой вопрос. –

ответ

0

GUI класс не создает GameObjects в графе сцены, поэтому вы не можете определить отношения между ними.

Если вы хотите, чтобы фактические объекты пользовательского интерфейса вы могли манипулировать и вводить в иерархию, вам придется использовать новую систему GUI Unity (рекомендуется). Если вы не хотите использовать это, вы должны вычислить относительное положение себя ваш UI, как

Vector2 parentPos = ...; 
GUI.Label(new Rect(parentPos.x, parentPos.y, 10, 10), "Label"); 

Vector2 childPos = ...; 
GUI.Button(new Rect(parentPos.x + childPos.x, parentPos.y + childPos.y, 10, 10), "Button"); 

В качестве альтернативы, класс GUI также поддерживает матрицы преобразования.

GUI.matrix = Matrix4x4.identity; 
Vector2 parentPos = ...; 
GUI.Label(new Rect(parentPos.x, parentPos.y, 10, 10), "Label"); 

GUI.matrix = Matrix4x4.TRS(parentPos, Quaternion.identity, Vector3.one); 
Vector2 childPos = ...; 
GUI.Button(new Rect(childPos.x, childPos.y, 10, 10), "Button"); 

Это позволяет вам построить график сцены графического интерфейса самостоятельно.

+0

Спасибо, но мне не нужна только «родительская позиция», мне нужен родительский GameObject, поэтому я могу попросить его о своих детях. – abea

+0

Тогда вам придется использовать пользовательский интерфейс, основанный на GameObject, например, новый графический интерфейс Unity. –

Смежные вопросы