Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Unity > 2D/GUI

2D/GUI Вопросы на тему 2D графики и интерфейсов

Ответ
 
Опции темы
Старый 17.07.2012, 06:57   #1
Radnk
ПроЭктировщик
 
Аватар для Radnk
 
Регистрация: 17.07.2012
Сообщений: 118
Написано 25 полезных сообщений
(для 54 пользователей)
Вопрос по созданию игрового интерфейса

Вот к примеру есть скрипт:

var posX 0.0;
var 
posY 0.0;
var 
shirina 0.0;
var 
vysota 0.0;
var 
scrinWidth 0.0;
var 
scrinHeight 0.0;
var 
scrinBalansWidth 0.0;
var 
scrinBalansHeight 0.0;

function 
Start ()  {
        
posX guiTexture.pixelInset.x;
        
posY guiTexture.pixelInset.y;
        
shirina guiTexture.pixelInset.width;
        
vysota guiTexture.pixelInset.height;
        
scrinWidth Screen.width;
        
scrinHeight Screen.height;
        
scrinBalansWidth 1280 scrinWidth;
        
scrinBalansHeight 800 scrinHeight;
        
Balans ();
}

function 
Balans () {
        
guiTexture.pixelInset.posX scrinBalansWidth;
        
guiTexture.pixelInset.posY scrinBalansHeight;
        
guiTexture.pixelInset.width shirina scrinBalansWidth;
        
guiTexture.pixelInset.height vysota scrinBalansHeight;

Который подстраивает guiTexture под разрешение вашего экрана, но при этом мы в скрипте указываем разрешение экрана, а в юнити размер guiTexture. В итоге при запуске игры с этим разрешением экрана все будет на "ура", но вот если экран меньше - то текстура автоматом уменьшается (но не сдвигается с нужного нам места) это уже радует. Но ведь если текстура уменьшается, значит теряет свое качество. Или же если разрешение экрана стоит больше чем указано в скрипте - тогда текстура будет увеличиваться и терять свое качество.

Вот мне интересно: можно ли с этим как то бороться? Если да - то как? Пожалуйста, поделитесь своими секретами по созданию игрового интерфейса.

P.S.
Мне просто интересно как вы создаете интерфейс или же просто закрываете на это все глаза.
(Offline)
 
Ответить с цитированием
Старый 17.07.2012, 06:59   #2
Radnk
ПроЭктировщик
 
Аватар для Radnk
 
Регистрация: 17.07.2012
Сообщений: 118
Написано 25 полезных сообщений
(для 54 пользователей)
Ответ: Вопрос по созданию игрового интерфейса

Блин, уже все графические элементы нарисовал (правда чувствую придется переделывать ). Идея полностью готова. Вот только не могу с разрешением экрана разобраться.
(Offline)
 
Ответить с цитированием
Старый 17.07.2012, 08:17   #3
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Вопрос по созданию игрового интерфейса

Пример расположения GUITexture в левом верхнем углу экрана:
Position: 0, 1, 0
Pixel Inset: (отступX, -высотаТекстуры - отступY, ширинаТекстуры, высотаТекстуры)
Пример расположения GUITexture в правом верхнем углу экрана:
Position: 1, 1, 0
Pixel Inset: (-отступX - ширинаТекстуры, -высотаТекстуры - отступY, ширинаТекстуры, высотаТекстуры)
Пример расположения GUITexture в левом нижнем углу экрана:
Position: 0, 0, 0
Pixel Inset: (отступX, отступY, ширинаТекстуры, высотаТекстуры)
Пример расположения GUITexture в правом нижнем углу экрана:
Position: 1, 0, 0
Pixel Inset: (-отступX - ширинаТекстуры, отступY, ширинаТекстуры, высотаТекстуры)
В качестве отступов и размеров подставляй свои рассчитанные.

PS: при разрешении экрана в 1280х1024 твой интерфейс растянется по высоте. Я бы предложил использовать одинаковую величину для изменения размера scrinBalans = 800 / scrinHeight; для ширины и высоты элементов управления.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Radnk (17.07.2012)
Старый 17.07.2012, 08:39   #4
Radnk
ПроЭктировщик
 
Аватар для Radnk
 
Регистрация: 17.07.2012
Сообщений: 118
Написано 25 полезных сообщений
(для 54 пользователей)
Ответ: Вопрос по созданию игрового интерфейса

а можно продемонстрировать на примере ?
(Offline)
 
Ответить с цитированием
Старый 17.07.2012, 08:47   #5
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Вопрос по созданию игрового интерфейса

Скрипт писать сейчас нет времени, может вечером. Но я уже все написал что тебе нужно, используй мои формулы и все у тебя получится
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Radnk (17.07.2012)
Старый 17.07.2012, 08:53   #6
Radnk
ПроЭктировщик
 
Аватар для Radnk
 
Регистрация: 17.07.2012
Сообщений: 118
Написано 25 полезных сообщений
(для 54 пользователей)
Ответ: Вопрос по созданию игрового интерфейса

Да мне нужен всего лишь этот скрипт, чтобы прижать текстуры по углам, а то я сам еще плохо разбираюсь в написании скриптов. Но очень много времени посвящаю изучению.

К стати, у вас просто потрясающий форум и довольно таки старый как я понял. Почему я про вас раньше не слышал?))) У вас лучшие и понятные уроки для новичков.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Radnk за это полезное сообщение:
Артем Валерьевич (22.06.2015), HolyDel (17.07.2012)
Старый 17.07.2012, 08:56   #7
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Вопрос по созданию игрового интерфейса

Раздел по Unity появился сравнительно недавно, по сравнению с самим форумом. Основное назначение форума - язык Blitz3d.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Radnk (17.07.2012)
Старый 17.07.2012, 09:29   #8
Radnk
ПроЭктировщик
 
Аватар для Radnk
 
Регистрация: 17.07.2012
Сообщений: 118
Написано 25 полезных сообщений
(для 54 пользователей)
Стрелка Ответ: Вопрос по созданию игрового интерфейса

Действительно очень понравился ваш форум(как бы не сглазить). Здесь все ясно для новичков. Есть скриншоты, описания, скрипты и даже примеры в действии. Не то что на русском unity3d. Считаю это не приемлемым: http://clip2net.com/s/27Ljc, http://clip2net.com/s/27Ljh, http://i082.radikal.ru/1207/42/29b1c153d11a.jpg и тому подобное поведение (троли одним словом ). Если создали сообщество - то нужно помогать всем, а там в первую очередь стараются слить новичков по ссылке куда нибудь по дальше.

На gcup зарегистрироваться не смог. Капчу не распознает, но там наверное не лучше чем на русском unity3d.

Правда в начале обрадовался когда к вам попал, потом увидел записи за 2010год - подумал что проект пропал.

P.S.
Черканите пример скрипта в свободное время.
(Offline)
 
Ответить с цитированием
Старый 17.07.2012, 09:30   #9
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Вопрос по созданию игрового интерфейса

Как тот так (AlignGUITexture.cs):

using UnityEngine;

[
RequireComponent(typeof(GUITexture))]
public class 
AlignGUITexture MonoBehaviour
{
    public 
Alignment alignment;

    public 
enum Alignment
    
{
        
None,
        
LeftUp,
        
LeftDown,
        
RightUp,
        
RightDown
    
}

    public 
float offsetX;
    public 
float offsetY;
    public 
float width;
    public 
float height;
    public 
int defaultScreenHeight 768;
    public 
bool correctSize true;

    
void Reset()
    {
        if(
guiTexture)
        {
            
width guiTexture.pixelInset.width;
            
height guiTexture.pixelInset.height;
        }
    }

    
void Start()
    {
        
float x offsetX;
        
float y offsetY;
        
float w width;
        
float h height;

        if (
correctSize)
        {
            var 
scale = (float)Screen.height/defaultScreenHeight;
            
*= scale;
            
*= scale;
            
*= scale
            
*= scale;
        }

        switch (
alignment)
        {
            case 
Alignment.None:

                break;
            case 
Alignment.LeftUp:
                
transform.position = new Vector3(01transform.position.z);
                
guiTexture.pixelInset = new Rect(x, -ywh);
                break;
            case 
Alignment.LeftDown:
                
transform.position = new Vector3(00transform.position.z);
                
guiTexture.pixelInset = new Rect(xywh);
                break;
            case 
Alignment.RightUp:
                
transform.position = new Vector3(11transform.position.z);
                
guiTexture.pixelInset = new Rect(-w, -ywh);
                break;
            case 
Alignment.RightDown:
                
transform.position = new Vector3(10transform.position.z);
                
guiTexture.pixelInset = new Rect(-wywh);
                break;
        }
    }

__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Radnk (17.07.2012)
Старый 17.07.2012, 09:34   #10
Radnk
ПроЭктировщик
 
Аватар для Radnk
 
Регистрация: 17.07.2012
Сообщений: 118
Написано 25 полезных сообщений
(для 54 пользователей)
Ответ: Вопрос по созданию игрового интерфейса

Ого!!! Я думал вы мне сейчас какой нибудь пример со справкой кините и все, а здесь целый разворот. Сейчас буду разбираться.

СПАСИБО
(Offline)
 
Ответить с цитированием
Старый 17.07.2012, 09:50   #11
Radnk
ПроЭктировщик
 
Аватар для Radnk
 
Регистрация: 17.07.2012
Сообщений: 118
Написано 25 полезных сообщений
(для 54 пользователей)
Ответ: Вопрос по созданию игрового интерфейса

Скрипт вешается на саму текстуру ?

а настраивается здесь если я правильно понял ?

case Alignment.LeftUp:
                
transform.position = new Vector3(01transform.position.z);
                
guiTexture.pixelInset = new Rect(x, -ywh);
                break;
            case 
Alignment.LeftDown:
                
transform.position = new Vector3(00transform.position.z);
                
guiTexture.pixelInset = new Rect(xywh);
                break;
            case 
Alignment.RightUp:
                
transform.position = new Vector3(11transform.position.z);
                
guiTexture.pixelInset = new Rect(-w, -ywh);
                break;
            case 
Alignment.RightDown:
                
transform.position = new Vector3(10transform.position.z);
                
guiTexture.pixelInset = new Rect(-wywh); 
Вот только как указать что к примеру определенные настройки нужны для этой текстуры, а определенные для другой?

или я все понял не правильно ?
(Offline)
 
Ответить с цитированием
Старый 17.07.2012, 15:58   #12
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Вопрос по созданию игрового интерфейса

Создаешь GUITexture в сцене, назначаешь текстуру на компонент GUITexture, далее добавляешь этот скрипт (который я привел) к объекту с GUITexture, в нем выбираешь Allignment (к какому углу привязать), задаешь отступы от края и размер текстуры по умолчанию, если надо корректировать размер в зависимости от высоты экрана - задаешь дефолтную высоту экрана и отмечаешь галочкой что нужна коррекция, запускаешь (жмешь Play), наблюдаешь эффект.

Для следующей текстуры повторяешь операцию. И т.д.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Radnk (17.07.2012)
Старый 17.07.2012, 20:57   #13
Radnk
ПроЭктировщик
 
Аватар для Radnk
 
Регистрация: 17.07.2012
Сообщений: 118
Написано 25 полезных сообщений
(для 54 пользователей)
Ответ: Вопрос по созданию игрового интерфейса

pax ты не реально крут )))
(Offline)
 
Ответить с цитированием
Старый 26.05.2014, 12:50   #14
EvilOkta
Знающий
 
Аватар для EvilOkta
 
Регистрация: 31.07.2008
Сообщений: 321
Написано 108 полезных сообщений
(для 229 пользователей)
Ответ: Вопрос по созданию игрового интерфейса

с размером текстуры пример хорош, а как быть с высотой текста для разных разрешений? Есть какие-то методы которые позволят их привести к единой высоте при разных разрешениях?
__________________
Области Хаоса - мой новый Youtube проект
(Offline)
 
Ответить с цитированием
Старый 26.05.2014, 13:05   #15
Nex
Гигант индустрии
 
Аватар для Nex
 
Регистрация: 13.09.2008
Сообщений: 2,893
Написано 1,185 полезных сообщений
(для 3,298 пользователей)
Ответ: Вопрос по созданию игрового интерфейса

Сообщение от EvilOkta Посмотреть сообщение
с размером текстуры пример хорош, а как быть с высотой текста для разных разрешений? Есть какие-то методы которые позволят их привести к единой высоте при разных разрешениях?
Возможно за два года многое поменялось и есть другие способы создания gui.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 12:27.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com