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

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

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

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

Ответ
 
Опции темы
Старый 07.01.2017, 18:31   #1
Evgen
Знающий
 
Аватар для Evgen
 
Регистрация: 12.01.2011
Адрес: Moscow capital of Earth! :)
Сообщений: 248
Написано 24 полезных сообщений
(для 31 пользователей)
GUI. Картинка в button. Масштабирование.

А чего нельзя сделать так чтобы, картинка которая рисуется фоном в button растягивалась под размер кнопки?

Ставлю stretchHeight , stretchWidth в true , а толку нет.

Вот еще ссылки по теме:

http://answers.unity3d.com/questions...#answer-362175

http://answers.unity3d.com/questions...#answer-395319
__________________
Типичный ответ любого кулхацкера "погугли", ибо он не знает ответа на вопрос, но прослыть знающим уж очень хочется...
(Offline)
 
Ответить с цитированием
Старый 09.01.2017, 12:17   #2
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,494
Написано 2,952 полезных сообщений
(для 5,214 пользователей)
Ответ: GUI. Картинка в button. Масштабирование.

Если это твой стиль, то выстави для картинки фона бордер в 0 и не выставляй ничего fixed. Картинку же свою указываешь во всех стейтах(normal и т.д.)?
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 09.01.2017, 14:27   #3
Evgen
Знающий
 
Аватар для Evgen
 
Регистрация: 12.01.2011
Адрес: Moscow capital of Earth! :)
Сообщений: 248
Написано 24 полезных сообщений
(для 31 пользователей)
Ответ: GUI. Картинка в button. Масштабирование.

Сообщение от pax Посмотреть сообщение
Если это твой стиль, то выстави для картинки фона бордер в 0 и не выставляй ничего fixed. Картинку же свою указываешь во всех стейтах(normal и т.д.)?
Картинка, то видна, по центру только она не растягивается, поэтому стейты тут ни причем. Либо что-то в настройках, либо растягивание не поддерживается.
__________________
Типичный ответ любого кулхацкера "погугли", ибо он не знает ответа на вопрос, но прослыть знающим уж очень хочется...
(Offline)
 
Ответить с цитированием
Старый 09.01.2017, 17:28   #4
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,494
Написано 2,952 полезных сообщений
(для 5,214 пользователей)
Ответ: GUI. Картинка в button. Масштабирование.

Попробуй border 1 поставить и посмотреть результат
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 10.01.2017, 07:38   #5
Evgen
Знающий
 
Аватар для Evgen
 
Регистрация: 12.01.2011
Адрес: Moscow capital of Earth! :)
Сообщений: 248
Написано 24 полезных сообщений
(для 31 пользователей)
Ответ: GUI. Картинка в button. Масштабирование.

Pax, Пардон имеется в виду картинка которая отрисовывается дополнительно поверх основного скина, в примере текстура Mytexture, рисуется внутри кнопки.

Texture2D Mytexture;
GUI.Button(new Rect(0, 0, 200, 200), Mytexture);
А не та что прописана в качестве бэкграунда в скине. Та что в стейтах отображается нормально.
__________________
Типичный ответ любого кулхацкера "погугли", ибо он не знает ответа на вопрос, но прослыть знающим уж очень хочется...
(Offline)
 
Ответить с цитированием
Старый 10.01.2017, 15:23   #6
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,494
Написано 2,952 полезных сообщений
(для 5,214 пользователей)
Ответ: GUI. Картинка в button. Масштабирование.

Ну эту картинку только вручную рисовать с растяжением в EventType.Repaint
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 11.01.2017, 13:33   #7
Evgen
Знающий
 
Аватар для Evgen
 
Регистрация: 12.01.2011
Адрес: Moscow capital of Earth! :)
Сообщений: 248
Написано 24 полезных сообщений
(для 31 пользователей)
Ответ: GUI. Картинка в button. Масштабирование.

Сделал чуть проще в начале рисую DrawTexture с тем же Rect, что и у кнопки, потом поверх уже Button.
__________________
Типичный ответ любого кулхацкера "погугли", ибо он не знает ответа на вопрос, но прослыть знающим уж очень хочется...
(Offline)
 
Ответить с цитированием
Старый 12.01.2017, 03:45   #8
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,359
Написано 481 полезных сообщений
(для 864 пользователей)
Ответ: GUI. Картинка в button. Масштабирование.

Evgen, можешь дать скриншот, интересно увидеть результат.

Лично я любитель формошлёпства, никогда не юзал OnGUI метод, всё в редакторе настраиваю.
Если я правильно понял суть - нужно сделать кнопку со своей кастомной картинкой. Если да, то я вставил бы чайлд-картинку в кнопку (хотя там и так по дефолту есть картинка, и у дефолтной кнопки вставлен sliced спрайт, чтобы растягивалось только то что должно, а бордеры и углы нет).
(Offline)
 
Ответить с цитированием
Старый 12.01.2017, 18:52   #9
Evgen
Знающий
 
Аватар для Evgen
 
Регистрация: 12.01.2011
Адрес: Moscow capital of Earth! :)
Сообщений: 248
Написано 24 полезных сообщений
(для 31 пользователей)
Ответ: GUI. Картинка в button. Масштабирование.

Готовый пример стряпать в лениво
В OnGUI кнопки делаю так:

...
GUI.DrawTexture(new Rect(x,y,w,h),MyTexture);
if(GUI.Button(new Rect(x, y, w, h),"")==true){
    ...  // если кнопку нажали
}
...
Перед этим в дефолтном скине обнуляю все текстуры один раз при старте. В связи с чем в дальнейшем отображаемые кнопки становятся прозрачными.

        GUI.skin.button.normal.background = null;
        GUI.skin.button.active.background = null;
        GUI.skin.button.hover.background = null;
Не знаю насколько это все верно и правильно. Возможно так делать не гуд.
Как-то так.

Результат: DrawTexture на который можно нажать.
__________________
Типичный ответ любого кулхацкера "погугли", ибо он не знает ответа на вопрос, но прослыть знающим уж очень хочется...
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Жека (13.01.2017)
Старый 12.01.2017, 19:10   #10
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,156
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: GUI. Картинка в button. Масштабирование.

К чему такие выпендрежи? UI не вариант?
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Жека (13.01.2017)
Старый 13.01.2017, 06:33   #11
Evgen
Знающий
 
Аватар для Evgen
 
Регистрация: 12.01.2011
Адрес: Moscow capital of Earth! :)
Сообщений: 248
Написано 24 полезных сообщений
(для 31 пользователей)
Сообщение Ответ: GUI. Картинка в button. Масштабирование.

Сообщение от RegIon Посмотреть сообщение
К чему такие выпендрежи? UI не вариант?
Я привык к старому теплому ламповому GUI. Простенько и со вкусом. Тем более UI вроде по скорости не быстрее GUI, так как очень наворочена.
__________________
Типичный ответ любого кулхацкера "погугли", ибо он не знает ответа на вопрос, но прослыть знающим уж очень хочется...
(Offline)
 
Ответить с цитированием
Старый 13.01.2017, 06:49   #12
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,494
Написано 2,952 полезных сообщений
(для 5,214 пользователей)
Ответ: GUI. Картинка в button. Масштабирование.

Не портите дефолтный скин. Есть простой способ скопировать стиль:

GUIStyle _myButtonStyle;
// использовать свойство только в функции OnGUI
GUIStyle myButtonStyle
{
     
get
     
{
         if(
_myButtonStyle == null)
         {
                 
_myButtonStyle = new  GUIStyle(GUI.skin.button);
                 
_myButtonStyle.normal.background null;
                 
_myButtonStyle.active.background null;
                 
_myButtonStyle.hover.background null;   
         }

         return 
_myButtonStyle;
     }
}

void OnGUI()
{

   
GUI.DrawTexture(new Rect(x,y,w,h),MyTexture);
   if(
GUI.Button(new Rect(xywh),""myButtonStyle)==true){
       ...  
// если кнопку нажали
   
}

Либо можно вот так:
void OnGUI()
{

   
GUI.DrawTexture(new Rect(x,y,w,h),MyTexture);
   if(
GUI.Button(new Rect(xywh),""GUIStyle.none)==true){
       ...  
// если кнопку нажали
   
}

или так

void OnGUI()
{

   
GUI.DrawTexture(new Rect(x,y,w,h),MyTexture);
   if(
GUI.Button(new Rect(xywh),""GUI.skin.label)==true){
       ...  
// если кнопку нажали
   
}

Хотя в этих случаях текст будет не по центру (но у тебя его и нету же ).


Сообщение от RegIon Посмотреть сообщение
К чему такие выпендрежи? UI не вариант?
Для быстрых тулз это самый оптимальный вариант, а для интерфейса редактора - единственный.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 13.01.2017, 10:47   #13
Evgen
Знающий
 
Аватар для Evgen
 
Регистрация: 12.01.2011
Адрес: Moscow capital of Earth! :)
Сообщений: 248
Написано 24 полезных сообщений
(для 31 пользователей)
Ответ: GUI. Картинка в button. Масштабирование.

Сообщение от pax Посмотреть сообщение
Не портите дефолтный скин. Есть простой способ скопировать стиль.

Для быстрых тулз это самый оптимальный вариант, а для интерфейса редактора - единственный.
Способ зачетный. Надо запомнить. Но все равно буду портить дефолтный скин, потому что, у меня все кнопки таким способом отрисовываются через спец функцию. Текст тоже есть, но я его Label ом поверх рисую.

кстати с помощью GUI.skin.button=GUIStyle.none быстро можно сбросить все изменения в дефолтном скине в том числе и удалить background для кнопок. Тоже пользуюсь.

По поводу скорости тоже согласен.
__________________
Типичный ответ любого кулхацкера "погугли", ибо он не знает ответа на вопрос, но прослыть знающим уж очень хочется...
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


Часовой пояс GMT +1, время: 20:22.


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