как кнопку NGUI заменить на кнопку на клавиатуре - Форум - Все для Unity3d

Все для Unity3d> как кнопку NGUI заменить на кнопку на клавиатуре - Форум>
Страница 1 из 11
Форум » Unity » Вопросы » как кнопку NGUI заменить на кнопку на клавиатуре (все внутри)
как кнопку NGUI заменить на кнопку на клавиатуре
artimed2011Дата: Воскресенье, 22.06.2014, 10:12 | Сообщение # 1
Новый писатель
Группа: Пользователи
Статус: Offline
Всем привет недавно столкнулся с такой проблемой что скрыл курсор мышки так как он мешал

а на скрипте который я нашел нужно нажать кнопку курсором мышки, и теперь не знаю как мне быть.

Нашел код который отвечает за нажатие кнопки ВОТ

if(GUI.Button(new Rect((Screen.width - 100) / 2, (Screen.height - 300) / 2 + 250, 100, 40), "Ок")) {

но так как я не особо разбираюсь в скрипто написании то не знаю что написать

Вот полный скриптВсем привет недавно столкнулся с такой проблемой что скрыл курсор мышки так как он мешал

а на скрипте который я нашел нужно нажать кнопку курсором мышки, и теперь не знаю как мне быть.

Нашел код который отвечает за нажатие кнопки ВОТ

if(GUI.Button(new Rect((Screen.width - 100) / 2, (Screen.height - 300) / 2 + 250, 100, 40), "Ок")) {

но так как я не особо разбираюсь в скрипто написании то не знаю что написать

Вот полный скрипт


Код
using UnityEngine;
using System.Collections;

public class MissionSay : MonoBehaviour {

public string missionText;
private bool _visible = false;
public bool active = false;

public GameObject NextBot;
public bool EndBot = false; // Последний бот в цепочке разговоров
public int Money = 10;

private MissionPlayer MP;

// Use this for initialization
void Start () {
MP = GameObject.FindGameObjectWithTag("Player").GetComponent<MissionPlayer>();
}

void OnMouseUp () {
if(Input.GetMouseButtonUp(0)) {
_visible = true;
}
}

void OnGUI () {
if(_visible) {
GUI.Box(new Rect((Screen.width - 300) / 2, (Screen.height - 300) / 2, 300, 300), "Миссии");
if(active) {
GUI.Label(new Rect((Screen.width - 300) / 2 + 5, (Screen.height - 300) / 2 + 15, 290, 250), missionText);

if(GUI.Button(new Rect((Screen.width - 100) / 2, (Screen.height - 300) / 2 + 250, 100, 40), "Ок")) {
if(EndBot) {
MP.quest = false;
MP.Money += Money;
MP.MissionText = "";
active = false;
_visible = false;
} else {
MP.quest = true;
MP.MissionText = missionText;
NextBot.GetComponent<MissionSay>().active = true;
active = false;
_visible = false;
}
}
} else {
GUI.Label(new Rect((Screen.width - 300) / 2 + 5, (Screen.height - 300) / 2 + 15, 290, 250), "Мне нечего тебе сказать");

if(GUI.Button(new Rect((Screen.width - 100) / 2, (Screen.height - 300) / 2 + 250, 100, 40), "Ок")) {
_visible = false;
}
}
}
}
}
 
GronДата: Воскресенье, 22.06.2014, 12:55 | Сообщение # 2
Новый писатель
Группа: Пользователи
Сообщений: 3
Статус: Offline
Код
if (Input.GetKeyDown (KeyCode.Escape)) {    
                 if(EndBot) {    
                    MP.quest = false;    
                    MP.Money += Money;    
                    MP.MissionText = "";    
                    active = false;    
                    _visible = false;    
                 } else {    
                    MP.quest = true;    
                    MP.MissionText = missionText;    
                    NextBot.GetComponent<MissionSay>().active = true;    
                    active = false;    
                    _visible = false;    
                 }    
              }
Типа этого должно быть, назначить можно любую клавишу по названию. В данном случае исчезнет кнопка


Сообщение отредактировал Gron - Воскресенье, 22.06.2014, 12:56
 
artimed2011Дата: Воскресенье, 22.06.2014, 14:39 | Сообщение # 3
Новый писатель
Группа: Пользователи
Статус: Offline
Благодарю что уделили этой теме свое время, но не могли бы вы еще мне помочь.
Кнопка исчезла но как теперь закрыть окно???
Вы написали что можно назначить любую кнопку, каким образом и где это прописать.
Буду признателен за помощь

if (Input.GetKeyDown (KeyCode.Escape)) { 

Кнопку нужно вписывать суда? я вписал место Escape/E но не работает не Esc, не E


Сообщение отредактировал artimed2011 - Воскресенье, 22.06.2014, 14:44
 
GronДата: Воскресенье, 22.06.2014, 15:21 | Сообщение # 4
Новый писатель
Группа: Пользователи
Сообщений: 3
Статус: Offline
Точно, клавишу надо назначать под void Update
В скриптах не силён, но попробуй:

Сначала
Код
public bool OK;

Вставить это веред строкой void OnGUI () {  
Код
void Update(){
                 if (Input.GetKeyDown (KeyCode.Escape)) {      
                       OK = !OK;
                 }
           }

Потом заменяешь 
Код
if(GUI.Button(new Rect((Screen.width - 100) / 2, (Screen.height - 300) / 2 + 250, 100, 40), "Ок")) {
На
Код
if(OK) {
Я обычно так поступаю.


Сообщение отредактировал Gron - Воскресенье, 22.06.2014, 15:38
 
artimed2011Дата: Воскресенье, 22.06.2014, 16:18 | Сообщение # 5
Новый писатель
Группа: Пользователи
Статус: Offline
не работает выдает ошибку 

NullReferenceException: Object reference not set to an instance of an object
MissionSay.OnGUI () (at Assets/MissionSay.cs:42)

хоть я все сделал как вы сказали. В скрипте в публичной переменной добавилось "OK"

и при нажатие  на Escape функция включается и выключается но не закрывается окно.
 
Форум » Unity » Вопросы » как кнопку NGUI заменить на кнопку на клавиатуре (все внутри)
Страница 1 из 11
Поиск:
Свернуть
Развернуть
Необходима авторизация
0
ТОП-5 САЙТА
НОВЫЕ ИГРЫ
ГОРЯЧИЕ ТЕМЫ
СЛУЧАЙНЫЕ ФАЙЛЫ