您的位置:首页 > 移动开发 > Unity3D

【Unity 3D】学习笔记十六:实例-添加与关闭窗口

2014-06-15 15:23 666 查看
Unity 学习笔记十六

学习资料:《Unity 3D游戏开发》 宣雨松

在游戏里,是可以动态的添加与关闭一个游戏窗口的,所以这次我们就制作一个可以动态添加与关闭窗口的实例。

例子:

//使用ArrayList储存窗口
var winArrayList = new ArrayList();

//图标
var icon : Texture;

function Start()
{
//初始化添加一个窗口
winArrayList.Add(Rect(winArrayList.Count*100,50,150,100));
}

function OnGUI()
{

//遍历窗口数量,并且添加入视图
var count = winArrayList.Count;
for(var i = 0; i < count;i++)
{
winArrayList[i]= GUILayout.Window (i, winArrayList[i], AddWindow, "窗口ID:"+i);

}

}

function AddWindow (windowID:int)
{

//开始一个水平布局
GUILayout.BeginHorizontal ();
//绘制图标
GUILayout.Label(icon,GUILayout.Width(50),GUILayout.Height(50));
//绘制文字
GUILayout.Label("这是一个全新的窗口");
//关闭水平布局
GUILayout.EndHorizontal ();

//开始一个水平布局
GUILayout.BeginHorizontal ();

if (GUILayout.Button ("添加新窗口"))
{
//添加窗口
winArrayList.Add(Rect(winArrayList.Count*100,50,150,100));
}

if (GUILayout.Button ("关闭当前窗口"))
{
//关闭窗口
winArrayList.RemoveAt(windowID);
}
//关闭水平布局
GUILayout.EndHorizontal ();
//设置窗口拖动的区域
GUI.DragWindow(Rect(0,0, Screen.width, Screen.height));

}






在这个例子中,winArrayList这个数组链表,用来记录每一个窗口的信息,点击添加按钮后,其实是给这个链表增添一条新窗口的信息。点击关闭,就是删除这个窗口的信息。

链表的长度就是窗口的总数量。使用for循环去遍历这个链表,并在循环中使用GUILayout.Window()将窗口绘制在屏幕中。

觉得这个小例子还是蛮有趣的,也证明unity还是蛮强大的,用如此简洁的代码就能实现这个小例子。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: