Unity3D - 【UnityGUI】简单设计及应用

单词部分

Rect:rectangle矩形( new Rect(Left,Top,Width,Hight) )

primitive:原始的、简单的

UnityEngine:Unity引擎

************************************************************************************************************************************

 

一:简单介绍

本文的测试需要使用一个特殊的函数:OnGUI(),在该函数中加入实现UI的脚本;

OnGUI()函数:当在控制脚本激活的状态下,OnGUI()函数会在每帧调用,就像Update( )函数一样。

该函数一共有两种类型的接口:

GUI.xxx()    ---GUI.Label(new Rect(100, 100, 500, 50), "Hello,this world!");

GUILayout.xxx()    ---GUILayout.Label("请输入你的名字:");  //默认处于左上角

前者需要我们手动排版UI的位置,后者Unity会为我们自动进行排版。

 

 

二:初步测试

<1> 脚本

using System.Collections;
using System.Collections.Generic;
using UnityEngine;


public class SimpleUI : MonoBehaviour {
    public int Label_Font_Size = 15;

    string Text = "";    //会被默认显示在TextField中
    string Name = "";

    void OnGUI()    //每帧不断刷新该函数
    {
        GUILayout.Label("请输入你的名字:");
        GUI.skin.label.fontSize = Label_Font_Size;

        Text = GUILayout.TextField(Text);    //每一次刷新都会将Text的数据传到TextField中,然后在对其中数据修改的时候又会被作为返回值带出给Text,往复循环达到了即时显示的目的

        if (GUILayout.Button("提交"))    //被点击,返回值为1
        {
            Name = Text;
        }

        if (!string.IsNullOrEmpty(Name))    //string类下的一个功能型子函数,用来判断当前字符串是否为空,为空返回1,非空返回0
        {
            GUILayout.Label("提交成功,名字:" + Name);
        }
    }

}

<2>运行结果 

Unity3D - 【UnityGUI】简单设计及应用_第1张图片

 

 

三:应用(点击Button在指定位置实例化游戏物体)

<1>脚本

using System.Collections;
using System.Collections.Generic;
using UnityEngine;


public class SimpleUI : MonoBehaviour {
    public int Label_Font_Size = 15;

    string Text = "";    //会被默认显示在TextField中
    string Name = "";

    void OnGUI()    //每帧不断刷新该函数
    {
        GUILayout.Label("请输入你的名字:");
        GUI.skin.label.fontSize = Label_Font_Size;

        Text = GUILayout.TextField(Text);    //每一次刷新都会将Text的数据传到TextField中,然后在对其中数据修改的时候又会被作为返回值带出给Text,往复循环达到了即时显示的目的

        if (GUILayout.Button("提交"))    //被点击,返回值为1
        {
            Name = Text;
        }

        if (!string.IsNullOrEmpty(Name))    //string类下的一个功能型子函数,用来判断当前字符串是否为空,为空返回1,非空返回0
        {
            GUILayout.Label("提交成功,名字:" + Name);
        }


        if (GUI.Button(new Rect(800,0,100,50),"创建球体"))
        {
            GameObject obj = GameObject.CreatePrimitive(PrimitiveType.Sphere);
            obj.AddComponent();
            obj.GetComponent().material.color = Color.red;      //这里时GetComponent()
            obj.name = "Sphere";
            obj.transform.position = new Vector3(0, 20, 0);
        }

        if (GUI.Button(new Rect(800, 50, 100, 50), "创建立方体"))
        {
            GameObject obj = GameObject.CreatePrimitive(PrimitiveType.Cube);
            obj.AddComponent();
            obj.GetComponent().material.color = Color.green;
            obj.name = "Cube";
            obj.transform.position = new Vector3(0, 20, 0);
        }
    }

}

<2>运行结果

Unity3D - 【UnityGUI】简单设计及应用_第2张图片

 <3>分析

GameObject.CreatePrimitive()函数:创建一个游戏对象并指定一个Unity对象模型,如立方体、球体等;

参考游戏物体的实例化:Instantiate(GameObject,Position,Rotition)     ----  【点我即达】

AddComponent<>()函数:用于给游戏对象添加一个组件,在尖括号内部加上组件名称

GetComponent<>()函数:获得组件,用于对所获得组件进行属性的修改

修改颜色:需要获得渲染器renderer组件,然后调用material.color,对其进行赋值:Color.red

renderer.material.color:设置渲染材质的颜色

Color.red/green...:颜色类型

transform.position:设置该游戏对象的位置

 

 

四:UI组件的定位

GUIt.Button(new Rect(left,top,width,height),"Infomation");

GUIlayou.Button("Infomation",GUILayout.Width(xxx),GUILayout.Height(xxx));

 

 

你可能感兴趣的:(Unity3D)