Четверг, 28 Марта 2024, 12:32

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Странно неработающий скрипт.
Странно неработающий скрипт.
Georgiy0912Дата: Пятница, 29 Июня 2012, 15:22 | Сообщение # 1
почетный гость
Сейчас нет на сайте
Написал скрипт для пауз-меню, но он просто не работает! Пробовал применить его и на Player, и на MainCamera и на EmptyObject, но он просто не работает!

using UnityEngine;
using System.Collections;

public class PauseMenu : MonoBehaviour {

bool paused = false;

void Start () {

}

void Update () {

if(Input.GetKeyUp(KeyCode.F)){
if(!paused){
Time.timeScale = 0;
paused = true;
Debug.Log("Paused");
}
}
else{
Time.timeScale = 1;
paused = false;
}
}
}

Интересно то, что Debug.Log("Paused") работает, следовательно не работает не скрипт, а timeScale!
romgermanДата: Пятница, 29 Июня 2012, 15:23 | Сообщение # 2
старожил
Сейчас нет на сайте
У меня, например такой скрипт:
Code

private var pmenu : boolean = false;

function Start () {
Screen.showCursor = false; //Убираем курсор
Screen.lockCursor = true; //Лочим его
}

function Update () {

   if (Input.GetKeyDown(KeyCode.Escape)) { // Если нажата кнопка Escape  
    if(!pmenu) {    
    Time.timeScale = 0; // Останавливаем время
    pmenu=true; // Активируем паузу
    Screen.showCursor = true; // Показываем курсор
    Screen.lockCursor = false; // Свободный курсор
    GameObject.Find("First Person Controller").GetComponent("MouseLook").enabled = false; //Отключаем всякие контроллеры
    GameObject.Find("Main Camera").GetComponent("MouseLook").enabled = false; //Отключаем всякие контроллеры
    GameObject.Find("Barrel").GetComponent("Shooter").enabled = false; //Отключаем стрельбу
    }
    }
}
function OnGUI () {
   if(pmenu==true) {
  // Делаем группу посреди экрана
  GUI.BeginGroup (Rect (Screen.width / 2 - 60, Screen.height / 2 - 70, 120, 140));

  // Создаём box и кнопки
  GUI.Box (Rect (0,0,120,140), "Pause");
  if(GUI.Button (Rect (10,20,80,30), "Resume")) {
       Time.timeScale = 1; // Запускаем время
       pmenu=false; // Убираем паузу
       Screen.showCursor = false; // Скрываем курсор
       Screen.lockCursor = true; // По середине экрана
       GameObject.Find("First Person Controller").GetComponent("MouseLook").enabled = true; //Включаем всякие контроллеры
       GameObject.Find("Main Camera").GetComponent("MouseLook").enabled = true; //Включаем всякие контроллеры
       GameObject.Find("Barrel").GetComponent("Shooter").enabled = true; //Включаем стрельбу
  }
  GUI.Button (Rect (10,60,80,30), "Options");
  GUI.Button (Rect (10,100,100,30), "Back to menu");

  // Группа заканчивается, это важно!
  GUI.EndGroup ();
  }
}


Сообщение отредактировал romgerman - Пятница, 29 Июня 2012, 15:24
Georgiy0912Дата: Пятница, 29 Июня 2012, 16:18 | Сообщение # 3
почетный гость
Сейчас нет на сайте
romgerman, спасибо, но мне больше интересно почему не работает мой скрипт.
seamanДата: Пятница, 29 Июня 2012, 16:55 | Сообщение # 4
старожил
Сейчас нет на сайте
А как Вы определили, что он не работает?
Georgiy0912Дата: Пятница, 29 Июня 2012, 17:14 | Сообщение # 5
почетный гость
Сейчас нет на сайте
Quote (seaman)
А как Вы определили, что он не работает?

Если быть точнее, то не работает не скрипт, а Time.timeScale, так, как Debug.log в этом же скрипте работает (Я это уже писал выше). Определил, проверив на игре (как ещё?).
seamanДата: Пятница, 29 Июня 2012, 18:22 | Сообщение # 6
старожил
Сейчас нет на сайте
Quote
Определил, проверив на игре (как ещё?).

Т.е. в Вашей игре при перемещениях и т.п. манипуляциях используется Time.deltatime? Вы уверены?
ЛевшаДата: Суббота, 30 Июня 2012, 15:33 | Сообщение # 7
почти ветеран
Сейчас нет на сайте
Quote (Georgiy0912)
Написал скрипт для пауз-меню, но он просто не работает!

Не будет работать, смотри внимательней что ты написал, у тебя оба условия за один проход срабатывают (if & else)...
Вот так будет работать:
Code

using UnityEngine;
using System.Collections;
public class PauseMenu : MonoBehaviour {

bool paused = false;

void Update () {
         if(Input.GetKeyUp(KeyCode.F))
                 paused = !paused;
             if(!paused)
                 Time.timeScale = 0;
             else
                Time.timeScale = 1;
}      
}


Quote (Georgiy0912)
Интересно то, что Debug.Log("Paused") работает, следовательно не работает не скрипт, а timeScale!

Пауза включаеться, пишет в лог что все норм и тут же выключаеться. smile


X.cor.R (Prologue)

Сообщение отредактировал Левша - Суббота, 30 Июня 2012, 16:27
Georgiy0912Дата: Суббота, 30 Июня 2012, 17:49 | Сообщение # 8
почетный гость
Сейчас нет на сайте
Левша, точно, точно! Моя не внимательность wacko
FORFUNДата: Понедельник, 09 Июля 2012, 18:17 | Сообщение # 9
почетный гость
Сейчас нет на сайте
Georgiy0912,
Этот скрипт есть в статьях... ---- тебе


- создавай то, что нравится тебе.
[MIND++] - будь выше и умнее.
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Странно неработающий скрипт.
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг