要实现的功能:
1、个性化Windows界面
2、减少个性化的背景图片尺寸
3、个性化样式ExitButton和TabButton
4、实现三个选项卡窗口
一、个性化Windows界面
1.1、创建一个空的GameObject、在Project中新建GUI Skin 用于绘制Windows图片
1.2 GUI Skin设置
1.3效果 按M键盘 弹出Windows窗口
二、减少个性化的背景图片尺寸
因GUISkin中图片我们用的是大图片这个在游戏中不但占资源对性能也有影响,和WebForm中相似的是都可以通过样式来使用小图片来完成大图片的功能。Unity3D也不例外:
效果很不好,设置下即可,按下面图片的尺寸
OK
三、个性化样式ExitButton和TabButton
3.1
3.2、效果
3.3、TabButton
四、实现三个选项卡窗口
4.1、效果出来了 不过不美观(代码见下有具体注释)
4.2、设置
4.3、再看看效果
五、最终效果
代码:
using UnityEngine; using System.Collections; public class myTest : MonoBehaviour { /// <summary> /// 是否打开窗口 /// </summary> bool isOpenMenu = false; /// <summary> /// 窗体的大小和位置【矩形】 /// </summary> Rect myWindow = new Rect(10, 10, 640, 480); /// <summary> /// GUI Skin /// </summary> public GUISkin customSkin; /// <summary> /// 关闭按钮 /// </summary> Rect closeButton = new Rect(598, 8, 26, 22); /// <summary> /// 用于工具栏在屏幕上的矩形位置 /// </summary> Rect tabButton = new Rect(35, 15, 490, 40); /// <summary> /// 选项卡索引号 /// </summary> int toolsCount = 0; /// <summary> /// 显示在工具栏按钮上的字符串数组 /// </summary> string[] toolsName = { "选项卡1", "选项卡2", "选项卡3" }; /// <summary> /// 选项卡中的图片 /// </summary> public Texture img; Rect imgRect = new Rect(19, 35, 225, 441); // Use this for initialization void Start() { } // Update is called once per frame void Update() { if (Input.GetKey(KeyCode.M))//当通过名称指定的按键被用户按住时返回true { isOpenMenu = true; } } void OnGUI() { GUI.skin = customSkin; if (isOpenMenu) { int windowId = 0; myWindow = GUI.Window(windowId, myWindow, WindowFunction, "Hello Window"); #region Mathf.Clamp 限制 // 限制value的值在min和max之间, 如果value小于min,返回min。 如果value大于max,返回max,否则返回value myWindow.x = Mathf.Clamp(myWindow.x, 0, Screen.width - myWindow.width);// [klæmp] vt.& vi. 夹紧,夹住;锁住;把(砖等)堆高 myWindow.y = Mathf.Clamp(myWindow.y, 0, Screen.height - myWindow.height); #endregion } } void WindowFunction(int windowId) { //begin 关闭按钮 if (GUI.Button(closeButton, "", GUI.skin.GetStyle("closeButton"))) { isOpenMenu = false;//单击关闭按钮:窗口菜单关闭 } //end //beign 选项卡 //返回int类型,被选择按钮的索引号 toolsCount = GUI.Toolbar(tabButton, toolsCount, toolsName, GUI.skin.GetStyle("tabButton"));//工具栏 //end //begin 选项卡图片 GUI.DrawTexture(imgRect, img); //end GUI.DragWindow();//拖动窗口 } }