新增菜单all和列表标题功能
This commit is contained in:
Binary file not shown.
Binary file not shown.
@@ -62,17 +62,16 @@ namespace NBF
|
|||||||
{
|
{
|
||||||
// var map = LanguageConst.languageMap;
|
// var map = LanguageConst.languageMap;
|
||||||
|
|
||||||
// Lan.Inst.AddLanguageModule((int)LanguageModuleType.Text, new LanguageText());
|
Lan.Inst.AddLanguageModule((int)LanguageModuleType.Text, new LanguageText());
|
||||||
// Lan.Inst.AddLanguageModule((int)LanguageModuleType.Image, new LanguageImage());
|
Lan.Inst.AddLanguageModule((int)LanguageModuleType.Image, new LanguageImage());
|
||||||
// Lan.Inst.AddLanguageModule((int)LanguageModuleType.Font, new LanguageFont());
|
Lan.Inst.AddLanguageModule((int)LanguageModuleType.Font, new LanguageFont());
|
||||||
//
|
|
||||||
// foreach (var key in LanguageConst.languageMap.Keys)
|
foreach (var key in LanguageConst.languageMap.Keys)
|
||||||
// {
|
{
|
||||||
// Lan.Inst.AddLanguage(key);
|
Lan.Inst.AddLanguage(key);
|
||||||
// }
|
}
|
||||||
//
|
App.UI.SetUILanguage<UILangeageConfig>();
|
||||||
// UI.Inst.SetUILanguage<UILangeageConfig>();
|
Lan.Inst.AutoUseLanguage();
|
||||||
// Lan.Inst.AutoUseLanguage();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|||||||
4
Assets/Scripts/UI/Bag/BagPanel.Designer.cs
generated
4
Assets/Scripts/UI/Bag/BagPanel.Designer.cs
generated
@@ -16,10 +16,10 @@ namespace NBF
|
|||||||
|
|
||||||
[AutoFind(Name = "back")]
|
[AutoFind(Name = "back")]
|
||||||
public GImage back;
|
public GImage back;
|
||||||
[AutoFind(Name = "Menu")]
|
|
||||||
public CommonMenu Menu;
|
|
||||||
[AutoFind(Name = "BottomMenu")]
|
[AutoFind(Name = "BottomMenu")]
|
||||||
public BottomMenu BottomMenu;
|
public BottomMenu BottomMenu;
|
||||||
|
[AutoFind(Name = "ItemList")]
|
||||||
|
public CommonItemList ItemList;
|
||||||
public override string[] GetDependPackages(){ return new string[] {"Common"}; }
|
public override string[] GetDependPackages(){ return new string[] {"Common"}; }
|
||||||
|
|
||||||
public static void Show(object param = null){ App.UI.OpenUI<BagPanel>(param); }
|
public static void Show(object param = null){ App.UI.OpenUI<BagPanel>(param); }
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ namespace NBF
|
|||||||
protected override void OnInit()
|
protected override void OnInit()
|
||||||
{
|
{
|
||||||
base.OnInit();
|
base.OnInit();
|
||||||
Menu.OnTabChange += ChangeTab;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnShow()
|
protected override void OnShow()
|
||||||
@@ -36,12 +35,6 @@ namespace NBF
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ChangeTab(int index)
|
|
||||||
{
|
|
||||||
if (index < 0) return;
|
|
||||||
Log.Info($"Change tab index={index}");
|
|
||||||
}
|
|
||||||
|
|
||||||
private void UseBottomMenu()
|
private void UseBottomMenu()
|
||||||
{
|
{
|
||||||
BottomMenu.Use(this);
|
BottomMenu.Use(this);
|
||||||
|
|||||||
3
Assets/Scripts/UI/Common/Extensions.meta
Normal file
3
Assets/Scripts/UI/Common/Extensions.meta
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 688374f241004942b3ef3af4086c983e
|
||||||
|
timeCreated: 1760344663
|
||||||
73
Assets/Scripts/UI/Common/Extensions/TabItemDataExtensions.cs
Normal file
73
Assets/Scripts/UI/Common/Extensions/TabItemDataExtensions.cs
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
|
namespace NBF
|
||||||
|
{
|
||||||
|
public static class TabItemDataExtensions
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 为TabItemData列表添加"全部"选项卡
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="tabItems">原始选项卡列表</param>
|
||||||
|
/// <param name="addListTitle"></param>
|
||||||
|
/// <returns>包含"全部"选项卡的新列表</returns>
|
||||||
|
public static void AddAllTabItem(this List<TabItemData> tabItems, bool addListTitle = false)
|
||||||
|
{
|
||||||
|
//判断是否存在二级目录,有二级目录则只在二级目录有"全部"选项卡
|
||||||
|
if (tabItems.Any(tabItem => tabItem.Children.Count > 0))
|
||||||
|
{
|
||||||
|
foreach (var tabItemData in tabItems)
|
||||||
|
{
|
||||||
|
if (tabItemData.Children.Count > 0)
|
||||||
|
{
|
||||||
|
var allTab = new TabItemData
|
||||||
|
{
|
||||||
|
Id = 0,
|
||||||
|
Key = "All",
|
||||||
|
Icon = "All",
|
||||||
|
IsAll = true,
|
||||||
|
Items = GetAllItemsFromTabs(tabItemData.Children, addListTitle)
|
||||||
|
};
|
||||||
|
tabItemData.Children.Insert(0, allTab);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var allTab = new TabItemData
|
||||||
|
{
|
||||||
|
Id = 0,
|
||||||
|
Key = "All",
|
||||||
|
Icon = "All",
|
||||||
|
IsAll = true,
|
||||||
|
Items = GetAllItemsFromTabs(tabItems, addListTitle)
|
||||||
|
};
|
||||||
|
tabItems.Insert(0, allTab);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 递归获取所有选项卡中的项目(去重)
|
||||||
|
/// </summary>
|
||||||
|
private static List<object> GetAllItemsFromTabs(List<TabItemData> tabs, bool addListTitle = false)
|
||||||
|
{
|
||||||
|
var allItems = new List<object>();
|
||||||
|
|
||||||
|
foreach (var tab in tabs)
|
||||||
|
{
|
||||||
|
allItems.Add(new ClassifyListTitleData()
|
||||||
|
{
|
||||||
|
Title = tab.Key
|
||||||
|
});
|
||||||
|
// 添加当前选项卡的项目
|
||||||
|
if (tab.Items != null)
|
||||||
|
{
|
||||||
|
allItems.AddRange(tab.Items);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 去重处理(基于引用相等,如果需要基于内容去重需要重写Equals方法)
|
||||||
|
return allItems.Distinct().ToList();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: ab38f91a1c10449ea1d908bdffc5111a
|
||||||
|
timeCreated: 1760344665
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
using System.Collections.Generic;
|
|
||||||
|
|
||||||
namespace NBF
|
|
||||||
{
|
|
||||||
public static class ItemDataHelper
|
|
||||||
{
|
|
||||||
public static List<TabItemData> GetItemTabDataList<T>(List<T> list) where T : class
|
|
||||||
{
|
|
||||||
List<TabItemData> ret = new List<TabItemData>();
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: ea59c591744a47729f78e4984cea1675
|
|
||||||
timeCreated: 1760170968
|
|
||||||
@@ -11,5 +11,13 @@ namespace NBF
|
|||||||
private void OnInited()
|
private void OnInited()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public virtual void SetData(object showData)
|
||||||
|
{
|
||||||
|
if (showData is ClassifyListTitleData listTitleData)
|
||||||
|
{
|
||||||
|
this.SetLanguage(listTitleData.Title);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -8,6 +8,11 @@ using NBC;
|
|||||||
|
|
||||||
namespace NBF
|
namespace NBF
|
||||||
{
|
{
|
||||||
|
public class ClassifyListTitleData
|
||||||
|
{
|
||||||
|
public string Title;
|
||||||
|
}
|
||||||
|
|
||||||
public partial class ClassifyList : GComponent
|
public partial class ClassifyList : GComponent
|
||||||
{
|
{
|
||||||
private readonly List<object> _listData = new List<object>();
|
private readonly List<object> _listData = new List<object>();
|
||||||
@@ -19,6 +24,10 @@ namespace NBF
|
|||||||
private void OnInited()
|
private void OnInited()
|
||||||
{
|
{
|
||||||
Game.Input.OnUICanceled += OnUICanceled;
|
Game.Input.OnUICanceled += OnUICanceled;
|
||||||
|
List.defaultItem = ListTitleItem.URL;
|
||||||
|
List.itemProvider = GetListItemResource;
|
||||||
|
List.itemRenderer = OnRenderItem;
|
||||||
|
List.onClickItem.Add(OnClickListItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Dispose()
|
public override void Dispose()
|
||||||
@@ -67,18 +76,13 @@ namespace NBF
|
|||||||
ListSelectionMode selectionMode = ListSelectionMode.Single)
|
ListSelectionMode selectionMode = ListSelectionMode.Single)
|
||||||
{
|
{
|
||||||
List.selectedIndex = -1;
|
List.selectedIndex = -1;
|
||||||
List.defaultItem = ListTitleItem.URL;
|
|
||||||
List.itemProvider = GetListItemResource;
|
|
||||||
List.itemRenderer = OnRenderItem;
|
|
||||||
List.onClickItem.Add(OnClickListItem);
|
|
||||||
// List.SetVirtual();
|
|
||||||
_listData.Clear();
|
_listData.Clear();
|
||||||
|
|
||||||
foreach (var obj in listData)
|
foreach (var obj in listData)
|
||||||
{
|
{
|
||||||
_listData.Add(obj);
|
_listData.Add(obj);
|
||||||
}
|
}
|
||||||
|
List.RemoveChildrenToPool();
|
||||||
List.selectionMode = selectionMode;
|
List.selectionMode = selectionMode;
|
||||||
List.numItems = _listData.Count;
|
List.numItems = _listData.Count;
|
||||||
List.ScrollToView(0);
|
List.ScrollToView(0);
|
||||||
@@ -92,17 +96,19 @@ namespace NBF
|
|||||||
|
|
||||||
void OnRenderItem(int index, GObject obj)
|
void OnRenderItem(int index, GObject obj)
|
||||||
{
|
{
|
||||||
|
var itemData = _listData[index];
|
||||||
if (obj is ListItemBase item)
|
if (obj is ListItemBase item)
|
||||||
{
|
{
|
||||||
item.SetData(_listData[index]);
|
item.SetData(itemData);
|
||||||
obj.SetSize(350, 300);
|
obj.SetSize(350, 300);
|
||||||
}
|
}
|
||||||
else if (obj is ListTitleItem titleItem)
|
else if (obj is ListTitleItem titleItem)
|
||||||
{
|
{
|
||||||
|
titleItem.SetData(itemData);
|
||||||
titleItem.SetSize(List.width, 32);
|
titleItem.SetSize(List.width, 32);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//根据索引的不同,返回不同的资源URL
|
//根据索引的不同,返回不同的资源URL
|
||||||
string GetListItemResource(int index)
|
string GetListItemResource(int index)
|
||||||
@@ -114,7 +120,7 @@ namespace NBF
|
|||||||
return ShopGearItem.URL;
|
return ShopGearItem.URL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (itemData is string title)
|
if (itemData is ClassifyListTitleData titleData)
|
||||||
{
|
{
|
||||||
return ListTitleItem.URL;
|
return ListTitleItem.URL;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
// 本脚本只在不存在时会生成一次。组件逻辑写在当前脚本内。已存在不会再次生成覆盖
|
// 本脚本只在不存在时会生成一次。组件逻辑写在当前脚本内。已存在不会再次生成覆盖
|
||||||
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using FairyGUI;
|
using FairyGUI;
|
||||||
using NBC;
|
using NBC;
|
||||||
@@ -27,22 +28,29 @@ namespace NBF
|
|||||||
base.Dispose();
|
base.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetData<T>(List<T> list) where T : class
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="tabItemList"></param>
|
||||||
|
/// <param name="showAll">是否显示全部页签</param>
|
||||||
|
/// <param name="showListTitle">是否列表页显示分类标题</param>
|
||||||
|
public void SetData(List<TabItemData> tabItemList, bool showAll = false, bool showListTitle = true)
|
||||||
{
|
{
|
||||||
_tabList.Clear();
|
_tabList.Clear();
|
||||||
_currentTab = null;
|
_currentTab = null;
|
||||||
var tabList = ItemDataHelper.GetItemTabDataList(list);
|
|
||||||
style.selectedIndex = 0; //一级菜单
|
style.selectedIndex = 0; //一级菜单
|
||||||
foreach (var tabItemData in tabList)
|
if (tabItemList.Any(tabItem => tabItem.Children.Count > 0))
|
||||||
{
|
{
|
||||||
if (tabItemData.Children.Count > 0)
|
style.selectedIndex = 1; //有二级菜单
|
||||||
{
|
|
||||||
style.selectedIndex = 1; //有二级菜单
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_tabList.AddRange(tabList);
|
_tabList.AddRange(tabItemList);
|
||||||
|
if (showAll)
|
||||||
|
{
|
||||||
|
_tabList.AddAllTabItem(showListTitle);
|
||||||
|
}
|
||||||
|
|
||||||
|
Menu.SetTabs(_tabList);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ChangeTab(int index)
|
private void ChangeTab(int index)
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ namespace NBF
|
|||||||
{
|
{
|
||||||
var tab = new TabItemData
|
var tab = new TabItemData
|
||||||
{
|
{
|
||||||
Name = group
|
// Name = group
|
||||||
};
|
};
|
||||||
tabList.Add(tab);
|
tabList.Add(tab);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ using System.Collections.Generic;
|
|||||||
using FairyGUI;
|
using FairyGUI;
|
||||||
using NBC;
|
using NBC;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
|
using UnityEngine;
|
||||||
using UIPanel = NBC.UIPanel;
|
using UIPanel = NBC.UIPanel;
|
||||||
|
|
||||||
namespace NBF
|
namespace NBF
|
||||||
@@ -11,8 +12,6 @@ namespace NBF
|
|||||||
public class ShopGearData
|
public class ShopGearData
|
||||||
{
|
{
|
||||||
public string title;
|
public string title;
|
||||||
public int type;
|
|
||||||
public int subType;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public partial class FishingShopPanel : UIPanel
|
public partial class FishingShopPanel : UIPanel
|
||||||
@@ -23,21 +22,32 @@ namespace NBF
|
|||||||
this.AutoAddClick(OnClick);
|
this.AutoAddClick(OnClick);
|
||||||
IsShowCursor = true;
|
IsShowCursor = true;
|
||||||
|
|
||||||
var testData = new List<ShopGearData>();
|
List<TabItemData> tabItemList = new List<TabItemData>();
|
||||||
for (int i = 0; i < 10; i++)
|
for (int i = 0; i < 10; i++)
|
||||||
{
|
{
|
||||||
for (int j = 20; j < 25; j++)
|
TabItemData tabItem = new TabItemData();
|
||||||
|
tabItem.Key = $"Tab_{i}";
|
||||||
|
for (int j = 0; j < 5; j++)
|
||||||
{
|
{
|
||||||
var item = new ShopGearData
|
TabItemData tabSubItem = new TabItemData();
|
||||||
|
tabSubItem.Key = $"SubTab_{j}";
|
||||||
|
var count = Random.Range(2, 5);
|
||||||
|
for (int k = 0; k < count; k++)
|
||||||
{
|
{
|
||||||
type = i,
|
var item = new ShopGearData
|
||||||
subType = j
|
{
|
||||||
};
|
title = $"Item:{i}-{j}-{k}"
|
||||||
testData.Add(item);
|
};
|
||||||
|
tabSubItem.Items.Add(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
tabItem.Children.Add(tabSubItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tabItemList.Add(tabItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
ItemList.SetData(testData);
|
ItemList.SetData(tabItemList, true, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnShow()
|
protected override void OnShow()
|
||||||
|
|||||||
@@ -4,12 +4,11 @@
|
|||||||
<image id="n0_lvql" name="back" src="kryob" fileName="Images/Square.png" pkg="6hgkvlau" xy="0,0" size="1920,1080" color="#182128">
|
<image id="n0_lvql" name="back" src="kryob" fileName="Images/Square.png" pkg="6hgkvlau" xy="0,0" size="1920,1080" color="#182128">
|
||||||
<relation target="" sidePair="width-width,height-height"/>
|
<relation target="" sidePair="width-width,height-height"/>
|
||||||
</image>
|
</image>
|
||||||
<component id="n1_lvql" name="Menu" src="fcfggr" fileName="Com/Menu/CommonMenu.xml" pkg="6hgkvlau" xy="0,0" controller="showType,1">
|
<component id="n2_lvql" name="BottomMenu" src="9mf1z" fileName="Com/Menu/BottomMenu.xml" pkg="6hgkvlau" xy="0,1015" size="1920,65">
|
||||||
<relation target="" sidePair="width-width,center-center,top-top"/>
|
|
||||||
</component>
|
|
||||||
<component id="n2_lvql" name="BottomMenu" src="9mf1z" fileName="Com/Menu/BottomMenu.xml" pkg="6hgkvlau" xy="0,992" size="1920,88">
|
|
||||||
<relation target="" sidePair="width-width,center-center,bottom-bottom"/>
|
<relation target="" sidePair="width-width,center-center,bottom-bottom"/>
|
||||||
</component>
|
</component>
|
||||||
<component id="n4_sh9y" name="n4" src="drkwh1" fileName="Com/ClassifyList.xml" pkg="6hgkvlau" xy="37,111" size="1846,872"/>
|
<component id="n5_uq3a" name="ItemList" src="p1fps" fileName="Com/List/CommonItemList.xml" pkg="6hgkvlau" xy="0,0">
|
||||||
|
<relation target="" sidePair="left-left,top-top,rightext-right,bottomext-bottom"/>
|
||||||
|
</component>
|
||||||
</displayList>
|
</displayList>
|
||||||
</component>
|
</component>
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
</image>
|
</image>
|
||||||
<image id="n12_r03u" name="ba" src="r03uif" fileName="Images/Panels/RarityBg.png" pkg="6hgkvlau" xy="0,0" size="194,300" alpha="0.6" color="#ff6c00"/>
|
<image id="n12_r03u" name="ba" src="r03uif" fileName="Images/Panels/RarityBg.png" pkg="6hgkvlau" xy="0,0" size="194,300" alpha="0.6" color="#ff6c00"/>
|
||||||
<text id="n7_oome" name="title" xy="18,7" size="323,32" alpha="0.7" fontSize="22" color="#ffffff" vAlign="middle" autoSize="ellipsis" text="Title"/>
|
<text id="n7_oome" name="title" xy="18,7" size="323,32" alpha="0.7" fontSize="22" color="#ffffff" vAlign="middle" autoSize="ellipsis" text="Title"/>
|
||||||
<loader id="n13_r03u" name="n13" xy="50,55" size="250,190" url="ui://6hgkvlaur03uiy" align="center" vAlign="middle" fill="scale"/>
|
<loader id="n13_r03u" name="n13" xy="50,55" size="250,190" align="center" vAlign="middle" fill="scale" clearOnPublish="true"/>
|
||||||
<text id="n15_r03u" name="n15" xy="237,246" size="57,29" alpha="0.7" fontSize="20" color="#d8fbff" align="right" text="50.99"/>
|
<text id="n15_r03u" name="n15" xy="237,246" size="57,29" alpha="0.7" fontSize="20" color="#d8fbff" align="right" text="50.99"/>
|
||||||
<loader id="n16_r03u" name="n16" xy="296,251" size="20,20" url="ui://6hgkvlaur03uj9" align="center" vAlign="middle" fill="scale" color="#8bf3ff"/>
|
<loader id="n16_r03u" name="n16" xy="296,251" size="20,20" url="ui://6hgkvlaur03uj9" align="center" vAlign="middle" fill="scale" color="#8bf3ff"/>
|
||||||
</displayList>
|
</displayList>
|
||||||
|
|||||||
Reference in New Issue
Block a user