Изменение разрешения экрана - Форум Игроделов
Пт, 17 Май 2024, 08:15 
 
Приветствую Вас Гость Главная | Регистрация | Вход
Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум Игроделов » UNITY3D » СКРИПТИНГ » Изменение разрешения экрана
Изменение разрешения экрана
ZillsДата: Чт, 14 Авг 2014, 13:46 | Сообщение # 1
Нет аватара
 
Сообщений: 17
Награды: 0
Репутация: 0
Статус: Offline
Всем привет. Написал систему изменения разрешения экрана и сохранение его в другой скрипт, чтобы при переходе на другой уровень скрипт, куда все сохраняется, забирал данные с собой.

Меню:

Код
using System.Collections;

public class Menu : MonoBehaviour {

   private int _window = 0;
   private int ResolutInMenu = 7;
   private menuDatabase MD;

   void Awake () {
    MD = GameObject.FindGameObjectWithTag("Database").GetComponent<menuDatabase>();
   }

   void Update () {
    if(ResolutInMenu < 1) {
     ResolutInMenu = 9;
    }

    if(ResolutInMenu > 9) {
     ResolutInMenu = 1;
    }
   }

   void OnGUI () {
    if(_window == 0) {
     if(GUI.Button(new Rect(10,10,150,20), "Играть")) {
      Application.LoadLevel(1);
     }

     if(GUI.Button(new Rect(10,40,150,20), "Настройки")) {
      _window = 1;
     }

     if(GUI.Button(new Rect(10,70,150,20), "Выход")) {
      Application.Quit();
     }
    }

    if(_window == 1) {
     if(GUI.Button(new Rect(10,10,150,20), "Видео")) {
      _window = 2;
     }
       
     if(GUI.Button(new Rect(10,40,150,20), "Аудио")) {
      _window = 3;
     }
       
     if(GUI.Button(new Rect(10,70,150,20), "Назад")) {
      _window = 0;
     }
    }

    if(_window == 2) {
     GUI.Label(new Rect(10,10,200,100), "Разрешение экрана");
     if(GUI.Button(new Rect(140,10,20,20), "<")) {
      ResolutInMenu --;
     }

     if(GUI.Button(new Rect(280,10,20,20), ">")) {
      ResolutInMenu ++;
     }

     if(ResolutInMenu == 1) {
      GUI.Label(new Rect(190,10,200,100), "1024x768");
     }

     if(ResolutInMenu == 2) {
      GUI.Label(new Rect(190,10,200,100), "1152x864");
     }

     if(ResolutInMenu == 3) {
      GUI.Label(new Rect(190,10,200,100), "1280x800");
     }

     if(ResolutInMenu == 4) {
      GUI.Label(new Rect(190,10,200,100), "1280x1024");
     }

     if(ResolutInMenu == 5) {
      GUI.Label(new Rect(190,10,200,100), "1366x768");
     }

     if(ResolutInMenu == 6) {
      GUI.Label(new Rect(190,10,200,100), "1440x900");
     }

     if(ResolutInMenu == 7) {
      GUI.Label(new Rect(190,10,200,100), "1600x900");
     }

     if(ResolutInMenu == 8) {
      GUI.Label(new Rect(190,10,200,100), "1680x1050");
     }

     if(ResolutInMenu == 9) {
      GUI.Label(new Rect(190,10,200,100), "1920x1080");
     }

     if(GUI.Button(new Rect(10,40,150,20), "Сохранить")) {
      MD.NumberResolut = ResolutInMenu;
      _window = 1;
     }
    }
   }
}


И сам скрипт, куда все сохраняется:

Код
using UnityEngine;
using System.Collections;

public class menuDatabase : MonoBehaviour {

   [HideInInspector]public int NumberResolut = 7;

   void Update () {
    if(NumberResolut == 1) {
     Screen.SetResolution(1024, 768, true);
    }

    if(NumberResolut == 2) {
     Screen.SetResolution(1152, 864, true);
    }
      
    if(NumberResolut == 3) {
     Screen.SetResolution(1280, 800, true);
    }
      
    if(NumberResolut == 4) {
     Screen.SetResolution(1280, 1024, true);
    }
      
    if(NumberResolut == 5) {
     Screen.SetResolution(1366, 768, true);
    }
      
    if(NumberResolut == 6) {
     Screen.SetResolution(1440, 900, true);
    }
      
    if(NumberResolut == 7) {
     Screen.SetResolution(1600, 900, true);
    }
      
    if(NumberResolut == 8) {
     Screen.SetResolution(1680, 1050, true);
    }
      
    if(NumberResolut == 9) {
     Screen.SetResolution(1920, 1080, true);
    }
   }
}


Проблема в том, что при запуске игры экран моргает, очень быстро (мой вывод таков, что постоянно меняется разрешение экрана). Кто знает, где я накосячил? Помогите, пожалуйста.


Сообщение отредактировал Zills - Чт, 14 Авг 2014, 13:47
 
СообщениеВсем привет. Написал систему изменения разрешения экрана и сохранение его в другой скрипт, чтобы при переходе на другой уровень скрипт, куда все сохраняется, забирал данные с собой.

Меню:

Код
using System.Collections;

public class Menu : MonoBehaviour {

   private int _window = 0;
   private int ResolutInMenu = 7;
   private menuDatabase MD;

   void Awake () {
    MD = GameObject.FindGameObjectWithTag("Database").GetComponent<menuDatabase>();
   }

   void Update () {
    if(ResolutInMenu < 1) {
     ResolutInMenu = 9;
    }

    if(ResolutInMenu > 9) {
     ResolutInMenu = 1;
    }
   }

   void OnGUI () {
    if(_window == 0) {
     if(GUI.Button(new Rect(10,10,150,20), "Играть")) {
      Application.LoadLevel(1);
     }

     if(GUI.Button(new Rect(10,40,150,20), "Настройки")) {
      _window = 1;
     }

     if(GUI.Button(new Rect(10,70,150,20), "Выход")) {
      Application.Quit();
     }
    }

    if(_window == 1) {
     if(GUI.Button(new Rect(10,10,150,20), "Видео")) {
      _window = 2;
     }
       
     if(GUI.Button(new Rect(10,40,150,20), "Аудио")) {
      _window = 3;
     }
       
     if(GUI.Button(new Rect(10,70,150,20), "Назад")) {
      _window = 0;
     }
    }

    if(_window == 2) {
     GUI.Label(new Rect(10,10,200,100), "Разрешение экрана");
     if(GUI.Button(new Rect(140,10,20,20), "<")) {
      ResolutInMenu --;
     }

     if(GUI.Button(new Rect(280,10,20,20), ">")) {
      ResolutInMenu ++;
     }

     if(ResolutInMenu == 1) {
      GUI.Label(new Rect(190,10,200,100), "1024x768");
     }

     if(ResolutInMenu == 2) {
      GUI.Label(new Rect(190,10,200,100), "1152x864");
     }

     if(ResolutInMenu == 3) {
      GUI.Label(new Rect(190,10,200,100), "1280x800");
     }

     if(ResolutInMenu == 4) {
      GUI.Label(new Rect(190,10,200,100), "1280x1024");
     }

     if(ResolutInMenu == 5) {
      GUI.Label(new Rect(190,10,200,100), "1366x768");
     }

     if(ResolutInMenu == 6) {
      GUI.Label(new Rect(190,10,200,100), "1440x900");
     }

     if(ResolutInMenu == 7) {
      GUI.Label(new Rect(190,10,200,100), "1600x900");
     }

     if(ResolutInMenu == 8) {
      GUI.Label(new Rect(190,10,200,100), "1680x1050");
     }

     if(ResolutInMenu == 9) {
      GUI.Label(new Rect(190,10,200,100), "1920x1080");
     }

     if(GUI.Button(new Rect(10,40,150,20), "Сохранить")) {
      MD.NumberResolut = ResolutInMenu;
      _window = 1;
     }
    }
   }
}


И сам скрипт, куда все сохраняется:

Код
using UnityEngine;
using System.Collections;

public class menuDatabase : MonoBehaviour {

   [HideInInspector]public int NumberResolut = 7;

   void Update () {
    if(NumberResolut == 1) {
     Screen.SetResolution(1024, 768, true);
    }

    if(NumberResolut == 2) {
     Screen.SetResolution(1152, 864, true);
    }
      
    if(NumberResolut == 3) {
     Screen.SetResolution(1280, 800, true);
    }
      
    if(NumberResolut == 4) {
     Screen.SetResolution(1280, 1024, true);
    }
      
    if(NumberResolut == 5) {
     Screen.SetResolution(1366, 768, true);
    }
      
    if(NumberResolut == 6) {
     Screen.SetResolution(1440, 900, true);
    }
      
    if(NumberResolut == 7) {
     Screen.SetResolution(1600, 900, true);
    }
      
    if(NumberResolut == 8) {
     Screen.SetResolution(1680, 1050, true);
    }
      
    if(NumberResolut == 9) {
     Screen.SetResolution(1920, 1080, true);
    }
   }
}


Проблема в том, что при запуске игры экран моргает, очень быстро (мой вывод таков, что постоянно меняется разрешение экрана). Кто знает, где я накосячил? Помогите, пожалуйста.

Автор - Zills
Дата добавления - 14 Авг 2014 в 13:46
ЛевшаДата: Чт, 14 Авг 2014, 14:37 | Сообщение # 2
Черный Волк
 
Сообщений: 7257
Награды: 30
Репутация: 3313
Статус: Offline
Цитата Zills ()
чтобы при переходе на другой уровень скрипт, куда все сохраняется, забирал данные с собой.

А зачем ?
Разрешение выставляется для приложения только один раз при запуске, а не для каждой сцены в отдельности...
И кто меняет разрешение экрана в Update ? huh Ты хотя бы заглушку поставь что ли, чтобы оно только 1 раз сработало.


X.cor.R (Prologue)
 
Сообщение
Цитата Zills ()
чтобы при переходе на другой уровень скрипт, куда все сохраняется, забирал данные с собой.

А зачем ?
Разрешение выставляется для приложения только один раз при запуске, а не для каждой сцены в отдельности...
И кто меняет разрешение экрана в Update ? huh Ты хотя бы заглушку поставь что ли, чтобы оно только 1 раз сработало.

Автор - Левша
Дата добавления - 14 Авг 2014 в 14:37
ZillsДата: Чт, 14 Авг 2014, 15:02 | Сообщение # 3
Нет аватара
 
Сообщений: 17
Награды: 0
Репутация: 0
Статус: Offline
Цитата Левша ()
А зачем ?


Просто сам скрипт, первый, мне не надо переносить на другую сцену, а если я на другой сцене нажму паузу и захочу изменить разрешение экрана? То не смогу же.
 
Сообщение
Цитата Левша ()
А зачем ?


Просто сам скрипт, первый, мне не надо переносить на другую сцену, а если я на другой сцене нажму паузу и захочу изменить разрешение экрана? То не смогу же.

Автор - Zills
Дата добавления - 14 Авг 2014 в 15:02
commandobyДата: Чт, 14 Авг 2014, 16:58 | Сообщение # 4
Unity 3D Free
 
Сообщений: 836
Награды: 3
Репутация: 211
Статус: Offline
Цитата Zills ()
а если я на другой сцене нажму паузу и захочу изменить разрешение экрана? То не смогу же.

Почему? Что тебя остановит? Нельзя использовать код паузы с возможностью изменения разрешния?


Блог.
 
Сообщение
Цитата Zills ()
а если я на другой сцене нажму паузу и захочу изменить разрешение экрана? То не смогу же.

Почему? Что тебя остановит? Нельзя использовать код паузы с возможностью изменения разрешния?

Автор - commandoby
Дата добавления - 14 Авг 2014 в 16:58
ZillsДата: Чт, 14 Авг 2014, 18:39 | Сообщение # 5
Нет аватара
 
Сообщений: 17
Награды: 0
Репутация: 0
Статус: Offline
Цитата commandoby ()
Почему? Что тебя остановит? Нельзя использовать код паузы с возможностью изменения разрешения?


Как мне тогда на другом уровне, при включении паузы и захода в настройки, уже с помощью GUI.Label вывести текущее разрешение экрана?
 
Сообщение
Цитата commandoby ()
Почему? Что тебя остановит? Нельзя использовать код паузы с возможностью изменения разрешения?


Как мне тогда на другом уровне, при включении паузы и захода в настройки, уже с помощью GUI.Label вывести текущее разрешение экрана?

Автор - Zills
Дата добавления - 14 Авг 2014 в 18:39
HunjethДата: Чт, 14 Авг 2014, 22:55 | Сообщение # 6
 
Сообщений: 354
Награды: 1
Репутация: 112
Статус: Offline
Попробуй этот метод, при загрузке уровня настройки в скрипте не слетят, ты можещь создать переменную разрешения и она сохраниться.
Код

void Start() { DontDestroyOnLoad(this); }


Сообщение отредактировал Hunjeth - Чт, 14 Авг 2014, 23:00
 
СообщениеПопробуй этот метод, при загрузке уровня настройки в скрипте не слетят, ты можещь создать переменную разрешения и она сохраниться.
Код

void Start() { DontDestroyOnLoad(this); }

Автор - Hunjeth
Дата добавления - 14 Авг 2014 в 22:55
seamanДата: Пт, 15 Авг 2014, 15:31 | Сообщение # 7
Гуру
 
Сообщений: 1748
Награды: 10
Репутация: 660
Статус: Offline
Цитата
текущее разрешение экрана

Нужно просто не игнорировать мануал, который кто-то старался для Вас же писал. Там это находится мгновенно.
 
Сообщение
Цитата
текущее разрешение экрана

Нужно просто не игнорировать мануал, который кто-то старался для Вас же писал. Там это находится мгновенно.

Автор - seaman
Дата добавления - 15 Авг 2014 в 15:31
Форум Игроделов » UNITY3D » СКРИПТИНГ » Изменение разрешения экрана
  • Страница 1 из 1
  • 1
Поиск:
Загрузка...

Game Creating CommUnity © 2009 - 2024