Вопрос по GUI
Mikh_ail Дата: Вс, 22 Фев 2015, 10:38 | Сообщение # 1
Сообщений: 7
Награды:
0
Репутация:
0
Статус: Offline
Решил сделать подсказки в игре. Хочу сделать так, чтобы при нажатии на кнопку "H" выводился GUI.Box, а при отжатии этой кнопки, GUI.Box исчезал, вот код который я написал. Помогите, пожалуйста Код
using UnityEngine; using System.Collections; public class GUIText : MonoBehaviour { void OnGUI() { GUI.Box(new Rect(10, 38, 120, 25), "W/S/A/D - Move"); GUI.Box(new Rect(10, 65, 125, 25), "Shift - Sprint"); GUI.Box(new Rect(10, 93, 140, 25), "F - Flashlight"); GUI.Box(new Rect(10, 122, 140, 25), "E - Interact"); GUI.Box(new Rect(10, 151, 100, 25), "Space - Jump"); } }
Сообщение Решил сделать подсказки в игре. Хочу сделать так, чтобы при нажатии на кнопку "H" выводился GUI.Box, а при отжатии этой кнопки, GUI.Box исчезал, вот код который я написал. Помогите, пожалуйста Код
using UnityEngine; using System.Collections; public class GUIText : MonoBehaviour { void OnGUI() { GUI.Box(new Rect(10, 38, 120, 25), "W/S/A/D - Move"); GUI.Box(new Rect(10, 65, 125, 25), "Shift - Sprint"); GUI.Box(new Rect(10, 93, 140, 25), "F - Flashlight"); GUI.Box(new Rect(10, 122, 140, 25), "E - Interact"); GUI.Box(new Rect(10, 151, 100, 25), "Space - Jump"); } }
Автор - Mikh_ail Дата добавления - 22 Фев 2015 в 10:38
PRINCE Дата: Вс, 22 Фев 2015, 10:51 | Сообщение # 2
Сообщений: 1871
Награды:
15
Репутация:
814
Статус: Offline
http://docs.unity3d.com/ScriptReference/Input.GetKeyUp.html
Mikh_ail Дата: Вс, 22 Фев 2015, 11:41 | Сообщение # 3
Сообщений: 7
Награды:
0
Репутация:
0
Статус: Offline
PRINCE , Можешь готовым кодом сделать?
Сообщение PRINCE , Можешь готовым кодом сделать?Автор - Mikh_ail Дата добавления - 22 Фев 2015 в 11:41
игнат Дата: Вс, 22 Фев 2015, 13:50 | Сообщение # 4
Сообщений: 706
Награды:
0
Репутация:
107
Статус: Offline
А в чём проблема?
Правила форума · участник GCC
Сообщение А в чём проблема? Автор - игнат Дата добавления - 22 Фев 2015 в 13:50
QNicolya Дата: Вс, 22 Фев 2015, 14:10 | Сообщение # 5
God gave Rock'N'Roll to you
Сообщений: 3369
Награды:
3
Репутация:
352
Статус: Offline
игнат , как минимум в том, что просто взять и спрятать GUI из Update нельзя.
Если человек вас обманул - он мошенник, если он вас обманул дважды - вы дурак.
Сообщение игнат , как минимум в том, что просто взять и спрятать GUI из Update нельзя.Автор - QNicolya Дата добавления - 22 Фев 2015 в 14:10
seaman Дата: Вс, 22 Фев 2015, 15:33 | Сообщение # 6
Гуру
Сообщений: 1748
Награды:
10
Репутация:
660
Статус: Offline
Цитата
просто взять и спрятать GUI из Update нельзя.
С чего бы? Код
class MyMono : MonoBehaviour { private bool __haeGui = true; public Update() { if (Input.GetKeyUp("space")) __hasGui = false; } public OnGUI() { if(!__hasGUI) return; // Ваш GUI... } }
Сообщение Цитата
просто взять и спрятать GUI из Update нельзя.
С чего бы? Код
class MyMono : MonoBehaviour { private bool __haeGui = true; public Update() { if (Input.GetKeyUp("space")) __hasGui = false; } public OnGUI() { if(!__hasGUI) return; // Ваш GUI... } }
Автор - seaman Дата добавления - 22 Фев 2015 в 15:33
QNicolya Дата: Вс, 22 Фев 2015, 15:52 | Сообщение # 7
God gave Rock'N'Roll to you
Сообщений: 3369
Награды:
3
Репутация:
352
Статус: Offline
Цитата
OnGUI is called for rendering and handling GUI events.
И вот черт меня дернул думать, что оно вызывается только при инициализации ==" Тогда, если надо, что бы вызвать можно было в любой момент, можно сделать так: Код
public bool __GUIBool = true; void OnGUI() { if (__GUIBool) { GUI.Box(new Rect(10, 38, 120, 25), "W/S/A/D - Move"); GUI.Box(new Rect(10, 65, 125, 25), "Shift - Sprint"); GUI.Box(new Rect(10, 93, 140, 25), "F - Flashlight"); GUI.Box(new Rect(10, 122, 140, 25), "E - Interact"); GUI.Box(new Rect(10, 151, 100, 25), "Space - Jump"); } } void Update () { if (Input.GetKeyUp(KeyCode.H)) __GUIBool = !__GUIBool; }
Имеем вот что: изначально __GUIBool истинна, потому отображается ГУИ. Нажимаем Н, __GUIBool принимает отличное от себя значение (крайне простой способ поменять значения для булевых переменных ), и ГУИ не отображается. Жмем ещё раз, и вуаля, ГУИ есть.
Если человек вас обманул - он мошенник, если он вас обманул дважды - вы дурак.
Сообщение отредактировал QNicolya - Вс, 22 Фев 2015, 15:57
Сообщение Цитата
OnGUI is called for rendering and handling GUI events.
И вот черт меня дернул думать, что оно вызывается только при инициализации ==" Тогда, если надо, что бы вызвать можно было в любой момент, можно сделать так: Код
public bool __GUIBool = true; void OnGUI() { if (__GUIBool) { GUI.Box(new Rect(10, 38, 120, 25), "W/S/A/D - Move"); GUI.Box(new Rect(10, 65, 125, 25), "Shift - Sprint"); GUI.Box(new Rect(10, 93, 140, 25), "F - Flashlight"); GUI.Box(new Rect(10, 122, 140, 25), "E - Interact"); GUI.Box(new Rect(10, 151, 100, 25), "Space - Jump"); } } void Update () { if (Input.GetKeyUp(KeyCode.H)) __GUIBool = !__GUIBool; }
Имеем вот что: изначально __GUIBool истинна, потому отображается ГУИ. Нажимаем Н, __GUIBool принимает отличное от себя значение (крайне простой способ поменять значения для булевых переменных ), и ГУИ не отображается. Жмем ещё раз, и вуаля, ГУИ есть.Автор - QNicolya Дата добавления - 22 Фев 2015 в 15:52
Mikh_ail Дата: Вс, 22 Фев 2015, 16:00 | Сообщение # 8
Сообщений: 7
Награды:
0
Репутация:
0
Статус: Offline
QNicolya , Спасибо огромное! Помог.
Сообщение QNicolya , Спасибо огромное! Помог.Автор - Mikh_ail Дата добавления - 22 Фев 2015 в 16:00
QNicolya Дата: Вс, 22 Фев 2015, 16:01 | Сообщение # 9
God gave Rock'N'Roll to you
Сообщений: 3369
Награды:
3
Репутация:
352
Статус: Offline
Mikh_ail , я только переписал, спасибо seaman , что подсказал, что с этой функцией можно постоянно работать, а не только в момент инициализации)
Если человек вас обманул - он мошенник, если он вас обманул дважды - вы дурак.
Сообщение Mikh_ail , я только переписал, спасибо seaman , что подсказал, что с этой функцией можно постоянно работать, а не только в момент инициализации)Автор - QNicolya Дата добавления - 22 Фев 2015 в 16:01