scrollbarthumb - как назначить стиль?

scrollbarthumb - как назначить стиль?

Сообщение fis 24 май 2012, 21:28

Есть ScrollView. Для него назначен соответсвенно стить "scrollview". А как назначить стиль ползунку?
24.05.jpg
У вас нет доступа для просмотра вложений в этом сообщении.
fis
UNITрон
 
Сообщения: 212
Зарегистрирован: 31 июл 2009, 11:52
Откуда: Львов
  • Сайт
  • ICQ

Re: scrollbarthumb - как назначить стиль?

Сообщение fis 25 май 2012, 11:58

Кстати, на скриншоте файловый браузер сделаный полносью на Universe. Скоро выложу исходник.
fis
UNITрон
 
Сообщения: 212
Зарегистрирован: 31 июл 2009, 11:52
Откуда: Львов
  • Сайт
  • ICQ

Re: scrollbarthumb - как назначить стиль?

Сообщение Zaicheg 25 май 2012, 18:32

http://unity3d.com/support/documentatio ... llbar.html
The styles of the buttons at then end of the scrollbar are searched for in the current skin by adding "upbutton" and "downbutton" to the style name. The name of the scrollbar thumb (the thing you drag) is found by appending "thumb" to the style name.var scrollPos : float = 0.5;
// This will use the following style names to determine the size / placement of the buttons
// MyVertScrollbarupbutton - Name of style used for the up button.
// MyVertScrollbardownbutton - Name of style used for the down button.
// MyVertScrollbarthumb - Name of style used for the draggable thumb.


Хотя лично у меня никогда не получалось сделать свои кнопки "вверх" и "вниз" — они просто переставали отображаться. Но бегунок нормально менялся.
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: scrollbarthumb - как назначить стиль?

Сообщение fis 25 май 2012, 19:56

Меня вообще то интересует как это сделать в Universe.
Для стиля скрола есть только один входящий параметр - verticalScrollbar. И меняет он только его задник но не ползунок.
Как реализовать то что написано в доке выше, но в Universe не подскажете?
У вас нет доступа для просмотра вложений в этом сообщении.
fis
UNITрон
 
Сообщения: 212
Зарегистрирован: 31 июл 2009, 11:52
Откуда: Львов
  • Сайт
  • ICQ

Re: scrollbarthumb - как назначить стиль?

Сообщение Neodrop 26 май 2012, 11:46

Ну, изменить картинки стиля, я полагаю. В Инспекторе стиля, в Universe, это всё добро наглядно отображено.
Хотя, если в этом стиле нету, нужно искать стили из этого же скина, с каким-нибудь говорящим названием. Видать код прорисовки слайдера берёт кнопочку откуда-то ещё. Я, помнится, делал кастомный слайдер для одной игрушки и делал его полностью руками. Может быть из-за этой же невозможности изменить кнопку. Не помню точно.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: scrollbarthumb - как назначить стиль?

Сообщение fis 28 май 2012, 13:59

в инспекторе стиля всё необходимое согласно доке выше есть.
// MyVertScrollbarupbutton - Name of style used for the up button.
// MyVertScrollbardownbutton - Name of style used for the down button.
// MyVertScrollbarthumb - Name of style used for the draggable thumb.

Тоесть кнопка должна бы находить свой стить, но не находит.
fis
UNITрон
 
Сообщения: 212
Зарегистрирован: 31 июл 2009, 11:52
Откуда: Львов
  • Сайт
  • ICQ

Re: scrollbarthumb - как назначить стиль?

Сообщение fis 28 май 2012, 15:29

В паке extra skins http://unity3d.com/support/resources/assets/extra-gui-skins есть скрипт для демонстрации последних:
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class SkinTest : MonoBehaviour
{
    public GUISkin thisMetalGUISkin;
    public GUISkin thisOrangeGUISkin;
    public GUISkin thisAmigaGUISkin;
    private Rect rctWindow1;
    private Rect rctWindow2;
    private Rect rctWindow3;
    private Rect rctWindow4;
    private bool blnToggleState = false;
    private float fltSliderValue = 0.5f;
    private float fltScrollerValue = 0.5f;
    private Vector2 scrollPosition = Vector2.zero;

    public struct snNodeArray
    {
        public string itemType, itemName;
        public snNodeArray(string itemType, string itemName)
        {
            this.itemType = itemType;
            this.itemName = itemName;
        }
    }
    private snNodeArray[] testArray = new snNodeArray[20];

    void Awake()
    {
        rctWindow1 = new Rect(20, 20, 320, 400);
        rctWindow2 = new Rect(260, 30, 320, 420);
        rctWindow3 = new Rect(260, 30, 320, 200);
        rctWindow4 = new Rect(360, 20, 320, 400);
        for (int i = 0; i < 19; i++)
        {
            testArray[i].itemType = "node";
            testArray[i].itemName = "Hello" + i;
        }
    }
    void OnGUI()
    {
        GUI.skin = thisOrangeGUISkin;
        rctWindow1 = GUI.Window(0, rctWindow1, DoMyWindow, "Orange Unity", GUI.skin.GetStyle("window"));
        GUI.skin = thisMetalGUISkin;
        rctWindow2 = GUI.Window(1, rctWindow2, DoMyWindow2, "Metal Vista", GUI.skin.GetStyle("window"));
        rctWindow3 = GUI.Window(2, rctWindow3, DoMyWindow4, "Compound Control - Toggle Listbox", GUI.skin.GetStyle("window"));
        GUI.skin = thisAmigaGUISkin;
        rctWindow4 = GUI.Window(3, rctWindow4, DoMyWindow, "Amiga500", GUI.skin.GetStyle("window"));
    }

    void gcListItem(string strItemName)
    {
        GUILayout.BeginHorizontal();
        GUILayout.Label(strItemName);
        blnToggleState = GUILayout.Toggle(blnToggleState, "");
        GUILayout.EndHorizontal();
    }

    void gcListBox()
    {
        GUILayout.BeginVertical(GUI.skin.GetStyle("box"));
        scrollPosition = GUILayout.BeginScrollView(scrollPosition, GUILayout.Width(160), GUILayout.Height(130));
        for (int i = 0; i < 20; i++)
        {
            gcListItem("I'm listItem number " + i);
        }
        GUILayout.EndScrollView();
        GUILayout.EndVertical();
    }

    void DoMyWindow4(int windowID)
    {
        gcListBox();
        GUI.DragWindow();
    }

    void DoMyWindow3(int windowID)
    {
        scrollPosition = GUI.BeginScrollView(new Rect(10, 100, 200, 200), scrollPosition, new Rect(0, 0, 220, 200));
        GUI.Button(new Rect(0, 0, 100, 20), "Top-left");
        GUI.Button(new Rect(120, 0, 100, 20), "Top-right");
        GUI.Button(new Rect(0, 180, 100, 20), "Bottom-left");
        GUI.Button(new Rect(120, 180, 100, 20), "Bottom-right");
        GUI.EndScrollView();
        GUI.DragWindow();
    }

    void DoMyWindow(int windowID)
    {
        GUILayout.BeginVertical();
        GUILayout.Label("Im a Label");
        GUILayout.Space(8);
        GUILayout.Button("Im a Button");
        GUILayout.TextField("Im a textfield");
        GUILayout.TextArea("Im a textfield\nIm the second line\nIm the third line\nIm the fourth line");
        blnToggleState = GUILayout.Toggle(blnToggleState, "Im a Toggle button");
        GUILayout.EndVertical();
        GUILayout.BeginVertical();
        //Sliders
        GUILayout.BeginHorizontal();
        fltSliderValue = GUILayout.HorizontalSlider(fltSliderValue, 0.0f, 1.1f, GUILayout.Width(128));
        fltSliderValue = GUILayout.VerticalSlider(fltSliderValue, 0.0f, 1.1f, GUILayout.Height(50));
        GUILayout.EndHorizontal();
        //Scrollbars
        GUILayout.BeginHorizontal();
        fltScrollerValue = GUILayout.HorizontalScrollbar(fltScrollerValue, 0.1f, 0.0f, 1.1f, GUILayout.Width(128));
        fltScrollerValue = GUILayout.VerticalScrollbar(fltScrollerValue, 0.1f, 0.0f, 1.1f, GUILayout.Height(90));
        GUILayout.Box("Im\na\ntest\nBox");
        GUILayout.EndHorizontal();
        GUILayout.EndVertical();
        GUI.DragWindow();
    }

    void DoMyWindow2(int windowID)
    {
        GUILayout.Label("3D Graphics Settings");
        GUILayout.BeginVertical();
        GUILayout.BeginHorizontal();
        blnToggleState = GUILayout.Toggle(blnToggleState, "Soft Shadows");
        blnToggleState = GUILayout.Toggle(blnToggleState, "Particle Effects");
        GUILayout.EndHorizontal();
        GUILayout.BeginHorizontal();
        blnToggleState = GUILayout.Toggle(blnToggleState, "Enemy Shadows");
        blnToggleState = GUILayout.Toggle(blnToggleState, "Object Glow");
        GUILayout.EndHorizontal();
        GUILayout.EndVertical();
        GUILayout.BeginVertical();
        GUILayout.Button("Im a Button");
        GUILayout.TextField("Im a textfield");
        GUILayout.TextArea("Im a textfield\nIm the second line\nIm the third line\nIm the fourth line");
        blnToggleState = GUILayout.Toggle(blnToggleState, "Im a Toggle button");
        GUILayout.EndVertical();
        GUILayout.BeginVertical();
        //Sliders
        GUILayout.BeginHorizontal();
        fltSliderValue = GUILayout.HorizontalSlider(fltSliderValue, 0.0f, 1.1f, GUILayout.Width(128));
        fltSliderValue = GUILayout.VerticalSlider(fltSliderValue, 0.0f, 1.1f, GUILayout.Height(50));
        GUILayout.EndHorizontal();
        //Scrollbars
        GUILayout.BeginHorizontal();
        fltScrollerValue = GUILayout.HorizontalScrollbar(fltScrollerValue, 0.1f, 0.0f, 1.1f, GUILayout.Width(128));
        fltScrollerValue = GUILayout.VerticalScrollbar(fltScrollerValue, 0.1f, 0.0f, 1.1f, GUILayout.Height(90));
        GUILayout.Box("Im\na\ntest\nBox");
        GUILayout.EndHorizontal();
        GUILayout.EndVertical();
        GUI.DragWindow();
    }
}
 



Я, конечно, не программист, но что-то я не увидел как разные элементы гуя находят свой стиль. Кроме стилей "window" и "box" других нету. Но всё работает как надо в том числе и кнопка скролбара. Можете объяснить в чем фишка?
У вас нет доступа для просмотра вложений в этом сообщении.
Последний раз редактировалось fis 28 май 2012, 17:47, всего редактировалось 1 раз.
fis
UNITрон
 
Сообщения: 212
Зарегистрирован: 31 июл 2009, 11:52
Откуда: Львов
  • Сайт
  • ICQ

Re: scrollbarthumb - как назначить стиль?

Сообщение fis 28 май 2012, 15:54

Ура, решил!
надо было перед элементом(ми) гуи поставить ноду GUI Set "skin":
У вас нет доступа для просмотра вложений в этом сообщении.
fis
UNITрон
 
Сообщения: 212
Зарегистрирован: 31 июл 2009, 11:52
Откуда: Львов
  • Сайт
  • ICQ

Re: scrollbarthumb - как назначить стиль?

Сообщение medeu 29 ноя 2012, 16:30

Создай GUISkin v Project, и с# код(скрипт) ! и потом закинь их на камеру! далее запусти Ctrl + P И меняй ГУЙСКИН там уже на твой вкус! скролл твой вроде написано ScrollBAr что ли покавыряйся и закинь на него текстурку свою!
вот чтобы связать GuiSkin s c# скриптом!


using UnityEngine;
using System.Collections;

public class SkinForGUI : MonoBehaviour
{
public GUISkin someskinname;
void OnGUI()
{
GUI.Skin = someskinname;
}
}
medeu
UNец
 
Сообщения: 2
Зарегистрирован: 29 дек 2011, 07:27


Вернуться в Уроки

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1