Вопрос по GUI - Форум Игроделов
Пт, 17 Май 2024, 09:42 
 
Приветствую Вас Гость Главная | Регистрация | Вход
Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум Игроделов » UNITY3D » СКРИПТИНГ » Вопрос по GUI
Вопрос по GUI
Mikh_ailДата: Вс, 22 Фев 2015, 10:38 | Сообщение # 1
Нет аватара
 
Сообщений: 7
Награды: 0
Репутация: 0
Статус: Offline
Решил сделать подсказки в игре. Хочу сделать так, чтобы при нажатии на кнопку "H" выводился GUI.Box, а при отжатии этой кнопки, GUI.Box исчезал, вот код который я написал. Помогите, пожалуйста wink
Код
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 исчезал, вот код который я написал. Помогите, пожалуйста wink
Код
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
 
Сообщениеhttp://docs.unity3d.com/ScriptReference/Input.GetKeyUp.html

Автор - PRINCE
Дата добавления - 22 Фев 2015 в 10:51
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 принимает отличное от себя значение (крайне простой способ поменять значения для булевых переменных smile ), и ГУИ не отображается. Жмем ещё раз, и вуаля, ГУИ есть.


Если человек вас обманул - он мошенник, если он вас обманул дважды - вы дурак.

Сообщение отредактировал 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 принимает отличное от себя значение (крайне простой способ поменять значения для булевых переменных smile ), и ГУИ не отображается. Жмем ещё раз, и вуаля, ГУИ есть.

Автор - QNicolya
Дата добавления - 22 Фев 2015 в 15:52
Mikh_ailДата: Вс, 22 Фев 2015, 16:00 | Сообщение # 8
Нет аватара
 
Сообщений: 7
Награды: 0
Репутация: 0
Статус: Offline
QNicolya, Спасибо огромное! smile Помог.
 
СообщениеQNicolya, Спасибо огромное! smile Помог.

Автор - 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
Форум Игроделов » UNITY3D » СКРИПТИНГ » Вопрос по GUI
  • Страница 1 из 1
  • 1
Поиск:
Загрузка...

Game Creating CommUnity © 2009 - 2024