|
2D/GUI Вопросы на тему 2D графики и интерфейсов |
09.01.2017, 15:17
|
#2
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: GUI. Картинка в button. Масштабирование.
Если это твой стиль, то выстави для картинки фона бордер в 0 и не выставляй ничего fixed. Картинку же свою указываешь во всех стейтах(normal и т.д.)?
|
(Offline)
|
|
09.01.2017, 17:27
|
#3
|
Разработчик
Регистрация: 12.01.2011
Адрес: Moscow
Сообщений: 422
Написано 68 полезных сообщений (для 100 пользователей)
|
Ответ: GUI. Картинка в button. Масштабирование.
Сообщение от pax
Если это твой стиль, то выстави для картинки фона бордер в 0 и не выставляй ничего fixed. Картинку же свою указываешь во всех стейтах(normal и т.д.)?
|
Картинка, то видна, по центру только она не растягивается, поэтому стейты тут ни причем. Либо что-то в настройках, либо растягивание не поддерживается.
|
(Offline)
|
|
09.01.2017, 20:28
|
#4
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: GUI. Картинка в button. Масштабирование.
Попробуй border 1 поставить и посмотреть результат
|
(Offline)
|
|
10.01.2017, 10:38
|
#5
|
Разработчик
Регистрация: 12.01.2011
Адрес: Moscow
Сообщений: 422
Написано 68 полезных сообщений (для 100 пользователей)
|
Ответ: GUI. Картинка в button. Масштабирование.
Pax, Пардон имеется в виду картинка которая отрисовывается дополнительно поверх основного скина, в примере текстура Mytexture, рисуется внутри кнопки.
Texture2D Mytexture;
GUI.Button(new Rect(0, 0, 200, 200), Mytexture);
А не та что прописана в качестве бэкграунда в скине. Та что в стейтах отображается нормально.
|
(Offline)
|
|
10.01.2017, 18:23
|
#6
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: GUI. Картинка в button. Масштабирование.
Ну эту картинку только вручную рисовать с растяжением в EventType.Repaint
|
(Offline)
|
|
11.01.2017, 16:33
|
#7
|
Разработчик
Регистрация: 12.01.2011
Адрес: Moscow
Сообщений: 422
Написано 68 полезных сообщений (для 100 пользователей)
|
Ответ: GUI. Картинка в button. Масштабирование.
Сделал чуть проще в начале рисую DrawTexture с тем же Rect, что и у кнопки, потом поверх уже Button.
|
(Offline)
|
|
12.01.2017, 06:45
|
#8
|
Дэвелопер
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений (для 886 пользователей)
|
Ответ: GUI. Картинка в button. Масштабирование.
Evgen, можешь дать скриншот, интересно увидеть результат.
Лично я любитель формошлёпства, никогда не юзал OnGUI метод, всё в редакторе настраиваю.
Если я правильно понял суть - нужно сделать кнопку со своей кастомной картинкой. Если да, то я вставил бы чайлд-картинку в кнопку (хотя там и так по дефолту есть картинка, и у дефолтной кнопки вставлен sliced спрайт, чтобы растягивалось только то что должно, а бордеры и углы нет).
|
(Offline)
|
|
12.01.2017, 21:52
|
#9
|
Разработчик
Регистрация: 12.01.2011
Адрес: Moscow
Сообщений: 422
Написано 68 полезных сообщений (для 100 пользователей)
|
Ответ: 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)
|
|
Сообщение было полезно следующим пользователям:
|
|
12.01.2017, 22:10
|
#10
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,158
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: GUI. Картинка в button. Масштабирование.
К чему такие выпендрежи? UI не вариант?
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
13.01.2017, 09:33
|
#11
|
Разработчик
Регистрация: 12.01.2011
Адрес: Moscow
Сообщений: 422
Написано 68 полезных сообщений (для 100 пользователей)
|
Ответ: GUI. Картинка в button. Масштабирование.
Сообщение от RegIon
К чему такие выпендрежи? UI не вариант?
|
Я привык к старому теплому ламповому GUI. Простенько и со вкусом. Тем более UI вроде по скорости не быстрее GUI, так как очень наворочена.
|
(Offline)
|
|
13.01.2017, 09:49
|
#12
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: 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(x, y, w, h),"", myButtonStyle)==true){ ... // если кнопку нажали } }
Либо можно вот так:
void OnGUI() {
GUI.DrawTexture(new Rect(x,y,w,h),MyTexture); if(GUI.Button(new Rect(x, y, w, h),"", GUIStyle.none)==true){ ... // если кнопку нажали } }
или так
void OnGUI() {
GUI.DrawTexture(new Rect(x,y,w,h),MyTexture); if(GUI.Button(new Rect(x, y, w, h),"", GUI.skin.label)==true){ ... // если кнопку нажали } }
Хотя в этих случаях текст будет не по центру (но у тебя его и нету же ).
Сообщение от RegIon
К чему такие выпендрежи? UI не вариант?
|
Для быстрых тулз это самый оптимальный вариант, а для интерфейса редактора - единственный.
|
(Offline)
|
|
13.01.2017, 13:47
|
#13
|
Разработчик
Регистрация: 12.01.2011
Адрес: Moscow
Сообщений: 422
Написано 68 полезных сообщений (для 100 пользователей)
|
Ответ: GUI. Картинка в button. Масштабирование.
Сообщение от pax
Не портите дефолтный скин. Есть простой способ скопировать стиль.
Для быстрых тулз это самый оптимальный вариант, а для интерфейса редактора - единственный.
|
Способ зачетный. Надо запомнить. Но все равно буду портить дефолтный скин, потому что, у меня все кнопки таким способом отрисовываются через спец функцию. Текст тоже есть, но я его Label ом поверх рисую.
кстати с помощью GUI.skin.button=GUIStyle.none быстро можно сбросить все изменения в дефолтном скине в том числе и удалить background для кнопок. Тоже пользуюсь.
По поводу скорости тоже согласен.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 17:16.
|