Пример #1
0
    Dictionary <GameMenu, MenuInfo> cachedMenu = new Dictionary <GameMenu, MenuInfo>(); //讲预设体 和他的管理者 存起来的 字典
    MenuInfo LoadMenu(GameMenu gameMenu, MenuParams parms, bool bInit = true)           //通过当前所在的gameMenu 的位置来加载预设体
    {
        MenuInfo   menuInfo;
        GameObject menu = null;

        if (cachedMenu.TryGetValue(gameMenu, out menuInfo) == false)                                              //如果cacheMenu中没有这个预设体
        {
            GameObject obj = Resources.Load(string.Format("Prefab/Menu/{0}", gameMenu.ToString())) as GameObject; //通过 当前gameMenu 的状态来获取 预设体
            menu = Instantiate(obj);                                                                              //实例化这个预设体
            menu.transform.SetParent(m_UIRoot.transform, false);                                                  //在这里就添加上去了
            menu.transform.localScale = Vector3.one;
            parms.RemoveGameObject();                                                                             //从字典中移除所有的预设体
            parms.AddParam <GameObject>(menu);                                                                    //把这个预设体加入到字典中
            menuInfo = new MenuInfo(gameMenu, parms);                                                             //实例化一个预设体的管理类
            cachedMenu.Add(gameMenu, menuInfo);                                                                   //讲当前的预设体 和 他的管理类 添加打cachedMenu中
        }
        else //cacheMenu里面已经有这个预设体了
        {
            parms.RemoveGameObject();
            parms.AddParam <GameObject>(menuInfo.obj);
            menuInfo = new MenuInfo(gameMenu, parms);
        }
        menuInfo.SetActive(true); //激活这儿预设体
        if (bInit == true)
        {
            menuInfo.Init();
        }

        return(menuInfo);
    }