在团结中的滑块背景

时间:2016-12-01 19:40:44

标签: user-interface unity3d slider label

首先我描绘了我的问题:

http://imgur.com/a/D8oOj

你有3个滑块,它们都需要背景颜色。也许下面的3个标签也需要背景颜色。

GUI.color = Color.white;

似乎没什么帮助。我需要这个黑色背景进行模拟,所以我需要将滑块背景设为白色......

但是GUILayout和GUISkin没有这个属性,不是吗?我在那里找不到有用的东西......

我使用的组件:

GUI.Horizo​​ntalSlider + GUI.Label

1 个答案:

答案 0 :(得分:0)

GUI Skin内,有一个水平滑块属性。该属性具有Normal,Hover,Active和Focused的GUI Style属性。您应该为所有这四个元素设置背景。

这是使用以编程方式创建的GUIStyle(使用Unity 5.4.2p4测试)的示例。请注意,在创建新GUIStyle时,您需要指定尺寸,否则它可能不可见。

public class MySliderIMGUI : MonoBehaviour
{
    private GUIStyle _sliderBackgroundStyle;
    private GUIStyle _sliderThumbStyle;
    private float _sliderValue = 0f;
    private Texture2D _whitePixel;
    private Texture2D _blackPixel;

    void Start()
    {
        this._whitePixel = new Texture2D(1, 1, TextureFormat.ARGB32, false);
        this._whitePixel.SetPixel(0, 0, Color.white);
        this._whitePixel.Apply();

        this._blackPixel = new Texture2D(1, 1, TextureFormat.ARGB32, false);
        this._blackPixel.SetPixel(0, 0, Color.black);
        this._blackPixel.Apply();

        this._sliderBackgroundStyle = new GUIStyle();
        this._sliderBackgroundStyle.padding = new RectOffset(2, 2, 2, 2);
        this._sliderBackgroundStyle.normal.background = this._whitePixel;
        this._sliderBackgroundStyle.hover.background = this._whitePixel;
        this._sliderBackgroundStyle.active.background = this._whitePixel;
        this._sliderBackgroundStyle.focused.background = this._whitePixel;

        this._sliderThumbStyle = new GUIStyle();
        this._sliderThumbStyle.stretchHeight = true;
        this._sliderThumbStyle.fixedWidth = 20f;
        this._sliderThumbStyle.normal.background = this._blackPixel;
        this._sliderThumbStyle.hover.background = this._blackPixel;
        this._sliderThumbStyle.active.background = this._blackPixel;
        this._sliderThumbStyle.focused.background = this._blackPixel;
    }

    void OnGUI()
    {
        this._sliderValue = GUI.HorizontalSlider(new Rect(100, 100, 200f, 20f), this._sliderValue, 0, 1, this._sliderBackgroundStyle, this._sliderThumbStyle);
    }
}