Этот скрипт автоматически выравняет кнопочки в меню, и Вам не придется рассчитывать координаты их. Нужно просто указать названия кнопок и названия функций, которые вызываются при их нажатии. И меню готово!
Код
using UnityEngine;
using System.Collections;
public class Menu : MonoBehaviour {
public GUIStyle styleTopMenu;
private string[] menuTitles={"Играть","Опции","Выход"}; // названия кнопок
private string[] functionNames={"Play","Options","Exit"}; // названия функций, соответствующие кнопкам
private int cntTitile; //количество кнопок
private int cntParts; //на сколько частей мы делим экран без одной части
void Start(){
cntTitile=menuTitles.Length;
cntParts=((cntTitile+1)*3);
}
void OnGUI(){
GUI.Label(new Rect( //выводим заголовок
Screen.width/4,
Screen.height/cntParts,
Screen.width/2,
Screen.height*2/cntParts),
"Меню",styleTopMenu);
for(int cnt=0;cnt<cntTitile;cnt++){ //в цикле выводим кнопочки
if(GUI.Button(new Rect(
Screen.width/4,
Screen.height*(cnt+1)*3/cntParts,
Screen.width/2,
Screen.height*2/cntParts),
menuTitles[cnt])){
//проверка: не забыл ли пользователь указать функцию для какой нибудь кнопки
if(functionNames.Length>cnt) SendMessage(functionNames[cnt]); //если все нормально то отправляем сообщение с названием функции
else Debug.Log("Error! You'd forgotten add name of function!");
}
}
}
//далее функции, и то что они делают
private void Play(){
Application.LoadLevel(1);
}
private void Options(){
Application.LoadLevel(3);
}
private void Exit(){
Application.Quit();
}
}
Если у кого есть какие-то идеи по улучшению скрипта, то пишите