【Unity】8.2 GUI Style和GUISkin

分类:Unity、C#、VS2015 浏览器

建立日期:2016-04-27 函数

1、自定义GUI Control

功能控件 (Functional Control) 是游戏必要的,而这些控件的外观对游戏的美感很是重要。在 UnityGUI 中,能够微调控件 (Control) 外观的不少细节。 字体

默认状况下,当你在未定义 GUIStyle 时建立一个控件 (Control),将应用 Unity 的默认 GUIStyle。这种样式内置于 Unity 中,且可用于对已发布的游戏进行快速原型设计,你也能够选择不对控件 (Control) 进行样式化。 ui

若是你要处理大量不一样的 GUIStyles,能够在单个 GUISkin 中定义全部 GUIStyles。GUISkin 不单单只是 GUIStyles 的集合。 spa

2、样式 (Style) 如何改变“GUI 控件”(GUI Control) 的外观

GUIStyles 模仿网页浏览器的层叠样式表 (CSS)。不少 CSS 方法获得调整,包括样式的个体状态属性的差别化和内容与外观的分离。 设计

其中,控件 (Control) 定义内容,而样式 (Style) 定义外观。这样你就能够建立组合,好比看起来像常规 按钮 (Button) 的功能切换键 (Toggle)。 code

3、皮肤 (Skin) 与样式 (Style) 的区别

如上文所述,GUISkins 为 GUIStyles 的集合。样式 (Style) 定义 GUI 控件 (GUI Control) 的外观。若是您要使用样式 (Style),也能够不使用皮肤 (Skin)。 orm

一、处理样式 (Style) blog

全部“GUI 控件”(GUI Control) 都具备一个可选的最后参数:用于显示控件的 GUIStyle。若是将其忽略,则使用 Unity 的默认 GUIStyle。样式处理经过将控件类型名称做为字符串应用而在内部进行,所以 GUI.Button() 使用 "按钮" 样式,GUI.Toggle() 使用 "toggle" 样式,等等。但您能够经过将控件的默认 GUIStyle 指定为最后参数来覆盖默认 GUIStyle。 游戏

using UnityEngine;
using System.Collections;

public class GUITest : MonoBehaviour {

    void OnGUI () {
        // 建立使用 "框" GUIStyle 的标签
        GUI.Label (new Rect (0,0,200,100), "Hi - I'm a label looking like a box", "box");

        // 建立使用"“切换键" GUIStyle 的按钮
        GUI.Button (new Rect (10,140,180,20), "This is a button", "toggle");
    }
}

二、建立一个公共变量 GUIStyle

当你声明一个公共 GUIStyle 变量时,该样式 (Style) 的全部元素都将在检视器 (Inspector)中显示。您能够在此编辑全部不一样的值:

using UnityEngine;
using System.Collections;

public class GUITest : MonoBehaviour {

    public GUIStyle customButton;

    void OnGUI () {
        // 建立按钮。提交以上定义的 GUIStyle 做为使用的样式
        GUI.Button (new Rect (10,10,150,20), "I am a Custom Button", customButton);
    }
}

三、改变不一样的样式元素

当你已声明了 GUIStyle,就能够在“检视器” (Inspector) 中修改此样式。检视器中有大量的状态 (State) 进行定义,并将其应用到任何类型的控件中。

注意:在应用指定的文本颜色 (Text Color) 以前,必须为每一个控件状态 (Control State) 分配背景 (Background) 颜色。

4、处理皮肤 (Skins)

Unity默认的控件外观比较简单。在游戏开发过程当中,开发者都会根据游戏的类型和内容来没计一套个性化的游戏界面。在Unity中,能够经过配置GUISkin来更改控件的默认样式,从而制做出符合游戏风格的控件外观。

GUISkin含有多种不一样的样式 (Styles),基本上可彻底更新全部 GUI 控件 (GUI Control) 的外观设计。

一、建立一个新的 GUISkin

要建立一个 GUISkin,请从菜单栏选择资源 (Assets)->建立 (Create)->GUI 皮肤 (GUI Skin) 这将在您的“工程文件夹”(Project Folder) 里面建立一个新的“GUI 皮肤”(GUI Skin)。选择 GUI 皮肤可查看“检视器”(Inspector) 中的皮肤 (Skin) 定义的全部 GUIStyles。

二、将皮肤应用到 GUI

要使用建立的皮肤,请将其分配到 OnGUI() 函数中的 GUI.skin:

using UnityEngine;
using System.Collections;

public class GUITest : MonoBehaviour {

    public GUISkin mySkin;

    void OnGUI () {
        // 将该皮肤分配为当前所用的皮肤。
        GUI.skin = mySkin;

        // 建立按钮。这将从分配到 mySkin 的皮肤得到默认的“按钮”样式。
        GUI.Button (new Rect (10,10,150,20), "Skinned Button");
    }
}

这样一来,经过一次 OnGUI() 调用就可随意切换皮肤:

using UnityEngine;
using System.Collections;

public class GUITest : MonoBehaviour {

    public GUISkin mySkin;
    private bool toggle = true;

    void OnGUI () {
        // 将该皮肤分配为当前所用的皮肤
        GUI.skin = mySkin;

        // 建立切换键。这将从分配到 mySkin 的皮肤得到“按钮”样式。
        toggle = GUI.Toggle (new Rect (10,10,150,20), toggle, "Skinned Button", "button");

        // 将当前皮肤分配到 Unity 的默认皮肤
        GUI.skin = null;

        // 建立按钮。这将从内置皮肤得到默认的“按钮”样式。
        GUI.Button (new Rect (10,35,150,20), "Built-in Button");
    }
}

三、示例

GUISkin在使用前须要先建立和配置。建立方法是在Project视图的上方单击Create按钮,在弹出菜单中单击GUISkin选项。另外一种办法是打开菜单栏中的【Assets】->【Create】->【GUISkin】来建立。

新建的GUISkin文件会显示在Project视图中,单击GUISkin文件,在Inspector视图中可设置其参数。

在一个GUISkin中,可对全部GUI控件的样式进行设置,例如Button、Toggle等。

下面以Button为例,说明如何经过GUISkin设置其样式。

假设如今须要更换按钮的背景图片,以及设置按钮上的字体为楷体,可先制做下面的图片素材:

image

首先把按钮的背景图和字体文件放入Project的Assets下,而后查看GUISkin的检视器视图,单击【Button】折叠项,展开Button的样式参数,更改Normal、Hover、Active、On Normal、OnHover、On Active、Font、Font Size这几个参数。

如今能够试试修改后的效果。在CUI脚本中声明一个类型为CUISkin的变量,在Inspector视图中将该变量的值没置为刚修改好的CUISkin文件。

在绘制控件代码前将变量赋值给CUI.skin参数,则控件就会以用户配置的GUISkin样式来绘制,示例代码以下:

public GUISkin myGUISkin;

void OnGUI()

{

GUI.skin=myGUISkin;

GUI.Button(Rect(60,50,240,60),"自定义按钮");

}

按【播放】按钮,就会看到下面的效果:

image

相关文章
相关标签/搜索