/// <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)); } }
/// <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); }