Часть третья. Контроль текста.
16. Откройте скрипт TextControl и приготовьтесь писать.
17. Для начала давайте создадим переменную isNewGameButton, при которой объект будет загружать сцену.
var isNewGameButton = false;
Примечание: Почему false? Потому-что при true переменная будет срабатывать сразу.
18. Лучше не раскатывать тесто, и сразу выставить нужные переменные.
var isOptionsButton = false;
var isQualityButtonFastest = false;
var isQualityButtonFantastic = false;
var isMainMenuButton = false;
var isQuitButton = false;
19. Теперь давайте разберем самое интересное. При входе на объект курсора мыши, его материал моментально изменяется.
Вход:
function OnMouseEnter()
{
Выход:
Смена материала на серый цвет при входе курсора будет осуществляться таким образом:
function OnMouseEnter()
{
renderer.material.color = Color.gray;
}
А возвращение материала в прежний вид при выходе курсора выглядит так:
function OnMouseExit()
{
renderer.material.color = Color.white;
}
Примечание: Белый цвет, точнее Color.white, возвращает обычный цвет текстуре.
20. Сейчас мы начнем делать нажатие на объекты.
Нажатие осуществляется через:
А чтобы занять чем-то нажатие, мы составим свойства для каждой переменной.
Для начала возьмем переменную IsQuitButton:
function OnMouseUp()
{
if ( isQuitButton )
{
Application.Quit();
}
Примечание: Application.Quit() осуществляет выход из игры полностью.
Теперь возьмем переменную ужасной графики.
else if ( isQualityButtonFastest )
{
QualitySettings.currentLevel = QualityLevel.Fastest;
}
Примечание: else дает возможность работать в OnMouseUp() много раз. А QualitySettings.currentLevel = QualityLevel.Fastest изменяет графику на уровне.
else if ( isQualityButtonFantastic )
{
QualitySettings.currentLevel = QualityLevel.Fantastic;
}
Примечание: Тоже самое что и выше, но теперь с максимальной графикой.
Теперь возьмем переменную загрузки уровня.
else if ( isNewGameButton )
{
Application.LoadLevel (1);
}
Примечание: Application.LoadLevel () дает возможность загружать уровень. А число в скобках пишут для точной загрузки нужного левела.
21. Теперь поработаем с камерами. Создайте новые две переменные:
var camera1:Camera;
var camera2:Camera;
А теперь продолжите таким образом:
else if ( isOptionsButton )
{
camera1.enabled = false;
camera2.enabled = true;
}
Примечание: Мы работаем с нажатием, и таким образом, когда вы щелкаете на кнопке Options, первая камера отключается, а вторая начинает функционировать.
22. Ну и последнее что нам нужно, это возвращение из игры в меню.
else if ( isMainMenuButton )
{
Application.LoadLevel (0);
}
Добавьте в конце закрывающуюся скобку }.
23. Проверяем.
var isNewGameButton = false;
var isOptionsButton = false;
var isQualityButtonFastest = false;
var isQualityButtonFantastic = false;
var isMainMenuButton = false;
var isQuitButton = false;
var camera1:Camera;
var camera2:Camera;
function OnMouseEnter()
{
//color.X - any color that you like
renderer.material.color = Color.gray;
}
function OnMouseExit()
{
//color.X - any color that you like
renderer.material.color = Color.white;
}
function OnMouseUp()
{
if ( isQuitButton )
{
Application.Quit();
}
else if ( isQualityButtonFastest )
{
QualitySettings.currentLevel = QualityLevel.Fastest;
}
else if ( isQualityButtonFantastic )
{
QualitySettings.currentLevel = QualityLevel.Fantastic;
}
else if ( isNewGameButton )
{
//it can be any level
Application.LoadLevel (1);
}
else if ( isOptionsButton )
{
camera1.enabled = false;
camera2.enabled = true;
}
else if ( isMainMenuButton )
{
//main menu level
Application.LoadLevel (0);
}
}
Часть четвертая. Сборка меню.
24. Назначьте готовый скрипт ко всем кнопкам в сцене.
25. Теперь смотрим в Inspector --> Text Control (Script) и разбираем.
Для начала выберите кубик с New Game и поставьте галочку Is New Game Button.
Затем щелкните кубик с Options и поставьте галку Is Options Button. А еще в поле Camera 1 вставьте первую камеру, а в поле Camera 2, вторую.
На кубике Quit галку Is Quit Button.
Сейчас мы переходим на место с настройками. Выделите куб Fastest и поставьте галочку Is Quality Button Fastest. Так же Fantastic, но уже Is Quality Button Fantastic.
Выделите кнопку Cancel, поставье галочку Is Options Button, и вставьте в поле Camera 1 вторую камеру, а в поле Camera 2, первую.
Примечание: Почему? Потому-что нам нужен обратный процесс.
Для загрузки сцены (1), то есть, Is New Game Button, при компиляции, выставьте уровень под нужным вам числом. И не забудьте изменить значение в скрипте!
Так же, если потребуется выйти из уровня обратно в меню, используйте переменную Is Main Menu Button.
26. Теперь посмотрим что получилось.
Если все в порядке, значит я не зря писал данный урок :)
А если возникли какие-то проблемы, пишите, помогу всем, чем смогу.
Спасибо за внимание, с вами был Валентин. Желаю успехов в игрострое!
Ну а в следующем уроке я расскажу, как улучшить меню в плане возможностей ;)
#Unity3D, #unityscript, #меню, #новичок
2 марта 2011