学习与分享:
奇怪的大冒险简单部分的UI框架分为三种:
一、综合管理类(UIManager);
1、先写一个单例使UIManager脚本调用方便
//static UIManager instance;
//public static UIManager Instanc { get { return instanc;}}
//void Awake(){
//等于脚本本身
instance = this;}
2.创建 一个用来存放游戏界面预设体的字典 、一个存放所有界面脚本的字典、 一个存放界面的栈
预设体的字典 Dictionary UIobjDict = new Dictionary();
脚本的字典 Dictionary currentUIDict = new Dictionary();
界面显示的栈:StackUIStack = new Stack();
3、写个方法给预设体加载到字典内;
void AddUIPrefabByName(string UIName) {
//判断是否存在,不存在再加载
if(UIObjDict.ContainsKey(UIName)){
return; }
string path = prefabDir + "/" + UIName; GameObject uiObj = Resources.Load(path); //构建一条路径
if(uiObj != null){
UIObjDict.Add(UIName, uiObj);
//print("11");}}
public UIBase InstantiteUIByName(string UIName) //我们需要有返回UIBase所以我们给方法的返回值为UIBase
{
if (currentUIDict.ContainsKey(UIName)){
return currentUIDict[UIName]; //我们需要先进行判断 如果存在则可以直接返回
}
//不存在 我们将预设体进行实例化 并获取脚本
GameObject objPerfab = UIobjDict[UIName];//取出预设体
GameObject obj = GameObject.Instantiate(objPerfab);//根据预设体进行实例化
UIBase uibase = obj.GetComponent();
currentUIDict.Add(UIName, uibase);//保存游戏对象身上的UIBase的脚本进currentUIDict字典
obj.name = UIName;
return uibase;
}
二、界面管理基类(UIBase);
1、.过预设体来实例化这个物体,并获取到这个物体上的UIBase(继承UIBase的脚本)脚本
public virtual void UserInterfaceEnter(){} //当界面第一次进入的时候调用
public virtual void UserInterfacePause(){} //当界面隐藏的时候调用
public virtual void UserInterfaceResume(){} //当界面重新显示时调用
public virtual void UserInterfaceExit(){} //当界面退出是调用
三、总体游戏控制脚本;
//UIManager.Instance.PushUserInterface("StartCanvas"); //表示显示StartCanvas这个界面
分析:UI框架使得你的编程思维更清晰,读取脚本更又条例性、更利于维护;