整体思路:
首先我们先要有一些面板的预制体
然后在Resources文件夹下,我们创建一个文件夹,命名为UIPanel,将这些预制体放在UIPanel下(没有Resources文件夹就在Assets文件夹下创建一个)
然后我们根据这些预制体及其路径编写一个json文件,首个类型必须是对象(由于JsonUtility神奇的解析功能,可以不使用JsonUtility,这里主要老师使用的是JsonUtility,我就跟着用了)
{
"infoList":
[
{
"panelTypeString": "ItemMessage",
"path": "UIPanel/ItemMessagePanel"
},
{
"panelTypeString": "Knapsack",
"path": "UIPanel/KnapsackPanel"
},
{
"panelTypeString": "MainMenu",
"path": "UIPanel/MainMenuPanel"
},
{
"panelTypeString": "Shop",
"path": "UIPanel/ShopPanel"
},
{
"panelTypeString": "Skill",
"path": "UIPanel/SkillPanel"
},
{
"panelTypeString": "System",
"path": "UIPanel/SystemPanel"
},
{
"panelTypeString": "Task",
"path": "UIPanel/TaskPanel"
}
]
}
我们根据这个json文档,创建一个枚举用于保存对应的面板类型
public enum UIPanelType
{
ItemMessage,
Knapsack,
MainMenu,
Shop,
Skill,
System,
Task
}
然后创建整个UI框架的核心:UIManager(不用继承MonoBehaviour)
首先声明一个字典用于保存面板对应的路径:
private Dictionary<UIPanelType, string> PanelPathDict;//用于存放面板类型对应的路径
由于必须使UIManager唯一,所以我们将其做成单例
private static UIManager _instance;//单例返回的私有静态对象
public static UIManager Instance//单例
{
get
{
if (_instance