예제 #1
0
    /// <summary>
    /// Get menu that is bind to certain architecture gameboject.
    /// It will automatically create new one if it can not found.
    /// </summary>
    /// <returns>The menu.</returns>
    /// <param name="transform">Transform.</param>
    /// <param name="menuType">Menu type.</param>
    /// <param name="hideOther">If set to <c>true</c> hide other.</param>
    public UIArchitectureMenu GetMenu(Transform transform, ArchitectureMenuType menuType, bool hideOther = true)
    {
        //if other menu need to hide
        if (hideOther)
        {
            HideMenuExcept(transform, menuType);
        }

        //if it has object id
        if (_idToMenu.ContainsKey(transform.GetInstanceID()))
        {
            //if it contain certain menu type...return that menu
            if (_idToMenu[transform.GetInstanceID()].ContainsKey(menuType))
            {
                UIArchitectureMenu retMenu = _idToMenu[transform.GetInstanceID()][menuType];

                //set menu active
                retMenu.gameObject.SetActive(true);

                return(retMenu);
            }
            else            //it does not contatin certain menu type...create new menu
            {
                return(CreateMenu(transform, menuType));
            }
        }
        else        //it does not have object id
        {
            //add object id
            _idToMenu.Add(transform.GetInstanceID(), null);

            return(CreateMenu(transform, menuType));
        }
    }
예제 #2
0
    /// <summary>
    /// Creates the menu.
    /// </summary>
    /// <returns>The menu.</returns>
    /// <param name="transform">Transform.</param>
    /// <param name="menuType">Menu type.</param>
    UIArchitectureMenu CreateMenu(Transform transform, ArchitectureMenuType menuType)
    {
        GameObject         go      = NGUITools.AddChild(gameObject, GetPrefab(menuType));
        UIArchitectureMenu newMenu = go.GetComponent <UIArchitectureMenu> ();

        //if dictionary of menu type is exist
        if (_idToMenu[transform.GetInstanceID()] != null)
        {
            _idToMenu[transform.GetInstanceID()].Add(menuType, newMenu);
        }
        else        //dictionary of menu type is not exist
        {
            Dictionary <ArchitectureMenuType, UIArchitectureMenu> newDic = new Dictionary <ArchitectureMenuType, UIArchitectureMenu>();

            newDic.Add(menuType, newMenu);

            _idToMenu[transform.GetInstanceID()] = newDic;
        }

        newMenu.SetTargetToFollow(transform);

        return(newMenu);
    }