内容简介:最近学习了Unity3d游戏界面UI的设计思路,发现自己原来的设计简直就是在瞎搞,特别记录一下,一份代码解决所有按钮与界面切换的逻辑,主要是通过命名按钮与界面名字的耦合以及deleget委托。一言不合,先上代码
最近学习了Unity3d游戏界面UI的设计思路,发现自己原来的设计简直就是在瞎搞,特别记录一下,
一份代码解决所有按钮与界面切换的逻辑,主要是通过命名按钮与界面名字的耦合以及deleget委托。
一言不合,先上代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
public class UIController : MonoBehaviour {
Dictionary<string, GameObject> panels = new Dictionary<string, GameObject>();
Stack<GameObject> history = new Stack<GameObject>();
GameObject[] btns;
public GameObject StartPanel;
GameObject currentPanel;
private void Start()
{
GameObject[] myPanels = GameObject.FindGameObjectsWithTag("UIPanel");
btns = GameObject.FindGameObjectsWithTag("UIBtn");
foreach(GameObject g in myPanels)
{
Debug.Log(g.name.Substring(2));
panels.Add(g.name.Substring(2),g);
currentPanel = StartPanel;
if(g != StartPanel)
{
g.SetActive(false);
}
}
foreach(GameObject b in btns)
{
b.GetComponent<Button>().onClick.AddListener(delegate () {
OnButtonClickEvent(b);
});
}
}
public void ShowPanel(string panelName)
{
GameObject newPanel = null;
if (panelName != "Back")
{
if (panels.ContainsKey(panelName))
{
history.Push(currentPanel);
newPanel = panels[panelName];
}
}else if (history.Count > 0) {
newPanel = history.Pop();
}
if(newPanel != null && currentPanel != null)
{
currentPanel.SetActive(false);
currentPanel = newPanel;
currentPanel.SetActive(true);
}
}
public void OnButtonClickEvent(GameObject g)
{
ShowPanel(g.name.Substring(2));
}
}
效果图
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 轻松实现Lua脚本控制W5500
- 控制perl脚本的CPU利用率?
- PyAndroidControl:使用python脚本控制你的安卓设备
- 脚本文件里的 Hybrid Script(混合式脚本)
- 脚本错误量极致优化-定位压缩且无 SourceMap 文件的脚本错误
- 如何从PHP脚本(如批处理文件)中运行多个PHP脚本?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
设计原本
Frederick P. Brooks, Jr. / InfoQ中文站、王海鹏、高博 / 机械工业出版社 / 2011-1-1 / 55.00元
无论是软件开发、工程还是建筑,有效的设计都是工作的核心。《设计原本:计算机科学巨匠Frederick P. Brooks的思考》将对设计过程进行深入分析,揭示进行有效和优雅设计的方法。 本书包含了多个行业设计者的特别领悟。Frederick P. Brooks, Jr.精确发现了所有设计项目中内在的不变因素,揭示 了进行优秀设计的过程和模式。通过与几十位优秀设计者的对话,以及他自己在几个设计......一起来看看 《设计原本》 这本书的介绍吧!