From 0c44f985ec397f25165e7f603a73b4f0757765f5 Mon Sep 17 00:00:00 2001 From: xmac Date: Fri, 23 May 2025 11:48:20 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=87=E6=8D=A2=E6=A0=87=E7=AD=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Resources/Fgui/Common/Common_fui.bytes | Bin 16350 -> 16572 bytes Assets/Resources/Fgui/Shop/Shop_fui.bytes | Bin 1476 -> 1374 bytes Assets/Scripts/Data.meta | 3 + Assets/Scripts/Data/ListClassifyData.cs | 12 +++ Assets/Scripts/Data/ListClassifyData.cs.meta | 3 + Assets/Scripts/UI/Binders/CommonBinder.cs | 1 + .../UI/Common/ClassifyList.Designer.cs | 25 +++++++ .../UI/Common/ClassifyList.Designer.cs.meta | 2 + Assets/Scripts/UI/Common/ClassifyList.cs | 69 ++++++++++++++++++ Assets/Scripts/UI/Common/ClassifyList.cs.meta | 2 + Assets/Scripts/UI/Common/CommonMenu.cs | 21 +++++- Assets/Scripts/UI/Common/Items.meta | 3 + .../Scripts/UI/Common/Items/ListItemBase.cs | 14 ++++ .../UI/Common/Items/ListItemBase.cs.meta | 3 + .../Items}/ListTitleItem.Designer.cs | 0 .../Items}/ListTitleItem.Designer.cs.meta | 0 .../Scripts/UI/Common/Items/ListTitleItem.cs | 27 +++++++ .../{ => Common/Items}/ListTitleItem.cs.meta | 0 Assets/Scripts/UI/Common/Items/TabListData.cs | 30 ++++++++ .../UI/Common/Items/TabListData.cs.meta | 3 + Assets/Scripts/UI/ListTitleItem.cs | 15 ---- .../UI/Shops/FishingShopPanel.Designer.cs | 2 +- Assets/Scripts/UI/Shops/FishingShopPanel.cs | 62 ++++------------ Assets/Scripts/UI/Shops/ShopGearItem.cs | 10 ++- .../assets/Common/Com/Buttons/ButtonTab.xml | 4 +- .../assets/Common/Com/ClassifyList.xml | 42 +++++++++++ .../assets/Common/Com/Items/ListTitleItem.xml | 5 +- FGUIProject/assets/Common/CommonMenu.xml | 6 +- FGUIProject/assets/Common/package.xml | 1 + FGUIProject/assets/Shop/FishingShopPanel.xml | 40 +--------- .../settings/whoot/6hgkvlaudrkwh1.json | 1 + 31 files changed, 295 insertions(+), 111 deletions(-) create mode 100644 Assets/Scripts/Data.meta create mode 100644 Assets/Scripts/Data/ListClassifyData.cs create mode 100644 Assets/Scripts/Data/ListClassifyData.cs.meta create mode 100644 Assets/Scripts/UI/Common/ClassifyList.Designer.cs create mode 100644 Assets/Scripts/UI/Common/ClassifyList.Designer.cs.meta create mode 100644 Assets/Scripts/UI/Common/ClassifyList.cs create mode 100644 Assets/Scripts/UI/Common/ClassifyList.cs.meta create mode 100644 Assets/Scripts/UI/Common/Items.meta create mode 100644 Assets/Scripts/UI/Common/Items/ListItemBase.cs create mode 100644 Assets/Scripts/UI/Common/Items/ListItemBase.cs.meta rename Assets/Scripts/UI/{ => Common/Items}/ListTitleItem.Designer.cs (100%) rename Assets/Scripts/UI/{ => Common/Items}/ListTitleItem.Designer.cs.meta (100%) create mode 100644 Assets/Scripts/UI/Common/Items/ListTitleItem.cs rename Assets/Scripts/UI/{ => Common/Items}/ListTitleItem.cs.meta (100%) create mode 100644 Assets/Scripts/UI/Common/Items/TabListData.cs create mode 100644 Assets/Scripts/UI/Common/Items/TabListData.cs.meta delete mode 100644 Assets/Scripts/UI/ListTitleItem.cs create mode 100644 FGUIProject/assets/Common/Com/ClassifyList.xml create mode 100644 FGUIProject/settings/whoot/6hgkvlaudrkwh1.json diff --git a/Assets/Resources/Fgui/Common/Common_fui.bytes b/Assets/Resources/Fgui/Common/Common_fui.bytes index e7f06c1640ed79d4152d04b513e5d56e953e885c..54cebc1ff83d17a4d323493bf8604c57fa614cf1 100644 GIT binary patch delta 2516 zcmZvd33yc1701t+I}6MtlV!GSGZ{!;fK0+<2qa1a1`q_YK~qQq1WJn$!e(VFt+FV! zZl$!RYTcr!rLAHL2Db`WYmMJ$1B6;lRlwGT(&~q$R=^60|Mzl<;>Vlsyx)KR=e~E& zz3<(bV;lEw=4}uFx@?v$xjn#GF?S=G>dMeEhO%~-o9SC5~e;bsv}$cnNsO?OztzY zHbydn&zD2V4Q+;X*v!T)hqUK4s7D#K_B>uLvr^R`p97`)I zBSqh#@6rTopWfLIKae^T-7leP+z?YoK_Gy*GM8zEWUuxH3!~GOs_alQ?^>swe&s8v6`nvxbw&)Jn^QB zny-R03UL|2)HSjza23vH1NF>O9n8+Tj^uKUwCRBmfdE#LD0j~cc zU5|4iCKQqGG?$cSL>)KK2HGf%8FP7)?8&HCo9RYzXV&md(wN!GTTm_6*`Vl0bhDhu zoSXDxx{Pk2v1T_miH9=Ot#q5TX3gZ=Wp7pk-+}QV=}vL_`HJeU1DFU7_A2@bZAF>M z*=CvT+5KhCWH%NRD*7pHqo4Kfwhb5^H`g)cqIFEj40}*+&l#qEP9jg`RHy|-W~mOGxyf7={Ey= zt3uNA!u(t8uc+fOdYpF3th|`x32LX`$@aXEV;Ak#>PhO*Y7ad{PfJ>U$ngw4tJQP# zd##?Qy;|*~{aU?1f6(eh`Xkh4T>BFJNqa9-XTOq<@;$){OmjG~Za0JIRr)h^$thfN zfDUSPh`O~pOn=epHTtVouhSb^_0Zq6dXwJL>TNor)loX8)jRlA?2-uu+1y{rP4DT< z`}6@+b3tgxar!59_3xib^jJC2V-dChoxrF&3u1DlAj&7L#rc^2L;dO${a33`=zm&$ zN~h^VYup(+tJP=pf2}^Jb6TCJUaibuOY@50cxJZIhnH$4gIKZsLN1CnqXTUs=U^ww zCx(X{E;PJTYKF%ggLp914Nz|OaFXzdkRzGBTBUHRR%x8Bm5=>e1vscxh%>axlW zn|D$ZaU&(Qv9S6K{(kspE>y5pTK=c-y+wxS6Vta}IWYbd{Q2-dHht&R0skZT?ePC) z`Zfn@IIR0T2fw$-P8u&E$Hh2tt6LiK6bpRX*z6#C;4}lxNcfcLs5bz+F3!VnUV5G!Q+29l~6I@YZ zctYkZT+7Y%mfDiA3c%lwdf)a z_&V5|$hTulU^zw^>Nr>nz5=cV-v`@31$Kfx;7RZ?Fj#6X!}wA|J;B3dE4YhCSbUOW zV4fl_?l@A~WGi2E-O_c76O=S**}_$;mb9#|Ub1R6xmJu>uyW<{tI2MCO<%KQY&>4J h_?o3_mn~dlCR#g6%SN%hJKEQ=p?o)YlwSV0^9%g#ee(bS delta 2337 zcmcJQd013c7>9pn&fFPgfMFS!0cK!8uA&2ixmJ*omLgIZ5t5RvmYJ>EZfbj(Wqs{M zX=Pm$)1 z{t|Lay4E)%_tpox<(6* zMfIL8*6f|hy07;EdQ3MOia5$S`Z01KM^a6Oqk1VReG^4;-XVL?5Zl?HxV|HC}}@48;C85W`S|n(i3Q4xY?T zKNlFOC*l-wXEjM{Aj{Xp_#~VLc&15vC|@da-O`$s?`vdyGLB|HYWIr!WJ4%CXrjjH zn1XP;UpR?d>zmB)yY@f*s%4}%M<0$Vj-hgB_6Rjn=43Z0$kyz<@EI5rud@o(sN*7s zgI}tjpL+t%lu&Sh3y^i;kjzZV^qi`37S5JA!4`Fn>gUGY07EP({ZV^<4vl)N$OYMGGNq^{x2NI(r8y=EHVo+$mQTOi*{pwu0L3ck|#a=EAj7T~H+BqnX}&SX(RZmGh#5)9-T* z9FN{S!}+p2I!NDx`#XM%7P(R%NNfYV9UsJke{RQ0S=l3^9*P&UGuhj%6nGeqV4=8+ zW7ea143A5FanNeR6UG+dNn`DJ3LUb7*~NI;*fV(6*b+Qv?0LLkY$=u*TaFiL6?V{C zft4oq5?)SN;VW2$R}<%pHylc!Oz|OLHD1H(GLKijfj5nwCO z?-jGQ;VW!+IwxoLimDy)9)5@Kk+7Zk!Pt-ZDKXFb8NV3&6~7t#9e)`66T6J7+(C4&9VnO5{PZm)LCej07s~FEm}Myst+aQ{@~UpCyFA%DXeBA1 zv1FBEELHi9rKxmd87k9QKxG-rRzYJSm18VdWhAQXjZ+^^Ne2Q@>85+yf%TP#`={fc$#MVPaeauSmlf(?Id@8_?fp6NDYCM( zQ2)r-GRAf~G57HJyzdxGDYL!b#Mc=akA2NpOPTH4=EPhU*R-TF7SYcz-d1Moc5*%W zJlRPuCGEbpUP0E8FOk#8#bhhFgj_{#Cco|5i|<+GwtkDOBHtlTCO49E$PdV;$v4PP z$kn7(Ve2(y8Tm2UNamB%$uPNq%q7>7A@Ub8n~e0ceF0||-YHJ6rL!WUGZ>%J&(_K0 ztz;6pjPtzld80V(HfiI$DB~&n*?JQ>kW3?6$W-!5@?ElRzhXDKDC-&coa`iDA?^OQ z-b&VyAg7Vji`@Y_u_;2q{d^O0lwz&Kua+ z3HEmS96o|C;AK6VAHF$f<_z@6gRAH_jI8;=?18qmvD z{pezkIKyQmnR#Qh81GMwpm6WH1qPAD1~##a0vc%IHefvCA&5RMt8m*rkL>UO)ua~@ z%LNgEG0Z~>R>t|X%`OvY!>8mwBZM(Ffd=~Re10KBUm~ss5T;(aqa#2k?aSd<^sg-M z2!yc8%h}(qBd`3X3B>4I&e5w(s5mD1o>D^?qo_)#DU4E1rNjtbaW;(^dQ=55OH$8^ z1TE-V+Bsd?t5z!q&|9V21;X{xitDD24o@!2#kv)a+gx%neO^qJ&n%arXZ`RC?m _listData = new List(); + + public event Action OnClickItem; + + public int SelectedIndex => List.selectedIndex; + + private void OnInited() + { + List.itemProvider = GetListItemResource; + List.itemRenderer = OnRenderItem; + List.onClickItem.Add(OnClickListItem); + } + + public void SetListData(List listData) + { + _listData.Clear(); + foreach (var obj in listData) + { + _listData.Add(obj); + } + List.numItems = _listData.Count; + List.ScrollToView(0); + } + + void OnClickListItem(EventContext context) + { + Debug.Log($"con={context.data} nm={context.sender}"); + OnClickItem?.Invoke(null); + } + + void OnRenderItem(int index, GObject obj) + { + if (obj is ListItemBase item) + { + item.SetData(_listData[index]); + } + } + + //根据索引的不同,返回不同的资源URL + string GetListItemResource(int index) + { + var itemData = _listData[index]; + + if (itemData is ShopGearData shopItem) + { + return ShopGearItem.URL; + } + + if (itemData is ListClassifyData item) + { + return ListTitleItem.URL; + } + + return List.defaultItem; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/UI/Common/ClassifyList.cs.meta b/Assets/Scripts/UI/Common/ClassifyList.cs.meta new file mode 100644 index 000000000..3aea40d06 --- /dev/null +++ b/Assets/Scripts/UI/Common/ClassifyList.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: ec101ca53ba6849efa2e51492b6310cf \ No newline at end of file diff --git a/Assets/Scripts/UI/Common/CommonMenu.cs b/Assets/Scripts/UI/Common/CommonMenu.cs index 6c807f42d..97ed54a47 100644 --- a/Assets/Scripts/UI/Common/CommonMenu.cs +++ b/Assets/Scripts/UI/Common/CommonMenu.cs @@ -1,6 +1,7 @@ // 本脚本只在不存在时会生成一次。组件逻辑写在当前脚本内。已存在不会再次生成覆盖 using System; +using System.Collections.Generic; using UnityEngine; using FairyGUI; using NBC; @@ -14,15 +15,29 @@ namespace NBF private void OnInited() { BtnClose.onClick.Add(OnClickClose); + List.onClickItem.Add(OnClickItem); } - - public void SetTabs() + + public void SetTabs(List tabList,int selectIndex = 0) { List.RemoveChildrenToPool(); - + for (int i = 0; i < tabList.Count; i++) + { + var tabData = tabList[i]; + var tabItem = List.AddItemFromPool().asButton; + tabItem.title = tabData.TabName; + } + Log.Info($"Set tab index={List.selectedIndex}"); + List.selectedIndex = selectIndex; + OnClickItem(); } + private void OnClickItem() + { + OnTabChange?.Invoke(List.selectedIndex); + } + private void OnClickClose() { OnClose?.Invoke(); diff --git a/Assets/Scripts/UI/Common/Items.meta b/Assets/Scripts/UI/Common/Items.meta new file mode 100644 index 000000000..a4e2ce7e1 --- /dev/null +++ b/Assets/Scripts/UI/Common/Items.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: c64fdab373ea4ce29f82649e8be2a186 +timeCreated: 1747969700 \ No newline at end of file diff --git a/Assets/Scripts/UI/Common/Items/ListItemBase.cs b/Assets/Scripts/UI/Common/Items/ListItemBase.cs new file mode 100644 index 000000000..55f1aa228 --- /dev/null +++ b/Assets/Scripts/UI/Common/Items/ListItemBase.cs @@ -0,0 +1,14 @@ +using FairyGUI; + +namespace NBF +{ + public abstract class ListItemBase : GButton + { + public virtual void SetData(object showData) + { + OnSetData(showData); + } + + protected abstract void OnSetData(object showData); + } +} \ No newline at end of file diff --git a/Assets/Scripts/UI/Common/Items/ListItemBase.cs.meta b/Assets/Scripts/UI/Common/Items/ListItemBase.cs.meta new file mode 100644 index 000000000..363644d79 --- /dev/null +++ b/Assets/Scripts/UI/Common/Items/ListItemBase.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 380c357d667646b69158440a7d7eecd9 +timeCreated: 1747969715 \ No newline at end of file diff --git a/Assets/Scripts/UI/ListTitleItem.Designer.cs b/Assets/Scripts/UI/Common/Items/ListTitleItem.Designer.cs similarity index 100% rename from Assets/Scripts/UI/ListTitleItem.Designer.cs rename to Assets/Scripts/UI/Common/Items/ListTitleItem.Designer.cs diff --git a/Assets/Scripts/UI/ListTitleItem.Designer.cs.meta b/Assets/Scripts/UI/Common/Items/ListTitleItem.Designer.cs.meta similarity index 100% rename from Assets/Scripts/UI/ListTitleItem.Designer.cs.meta rename to Assets/Scripts/UI/Common/Items/ListTitleItem.Designer.cs.meta diff --git a/Assets/Scripts/UI/Common/Items/ListTitleItem.cs b/Assets/Scripts/UI/Common/Items/ListTitleItem.cs new file mode 100644 index 000000000..b5605fb8a --- /dev/null +++ b/Assets/Scripts/UI/Common/Items/ListTitleItem.cs @@ -0,0 +1,27 @@ +// 本脚本只在不存在时会生成一次。组件逻辑写在当前脚本内。已存在不会再次生成覆盖 + +using UnityEngine; +using FairyGUI; +using NBC; + +namespace NBF +{ + public partial class ListTitleItem : ListItemBase + { + public ListClassifyData ClassifyData; + private void OnInited() + { + } + + protected override void OnSetData(object showData) + { + width = parent.width - 40; + ClassifyData = showData as ListClassifyData; + if (ClassifyData == null) + { + ClassifyData = new ListClassifyData(string.Empty); + } + title = ClassifyData.Title; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/UI/ListTitleItem.cs.meta b/Assets/Scripts/UI/Common/Items/ListTitleItem.cs.meta similarity index 100% rename from Assets/Scripts/UI/ListTitleItem.cs.meta rename to Assets/Scripts/UI/Common/Items/ListTitleItem.cs.meta diff --git a/Assets/Scripts/UI/Common/Items/TabListData.cs b/Assets/Scripts/UI/Common/Items/TabListData.cs new file mode 100644 index 000000000..1f55719d6 --- /dev/null +++ b/Assets/Scripts/UI/Common/Items/TabListData.cs @@ -0,0 +1,30 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace NBF +{ + public class TabListData + { + public string TabName; + public bool Selected; + public List ListData; + + public void AddTestData(int index) + { + ListData = new List(); + TabName = $"标题-{index + 1}"; + var count1 = Random.Range(5, 10); + var count2 = Random.Range(10, 30); + for (int i = 0; i < count1; i++) + { + ListData.Add(new ListClassifyData($"Title-{i}")); + for (int j = 0; j < count2; j++) + { + var item = new ShopGearData(); + item.title = $"Item {i}-" + j; + ListData.Add(item); + } + } + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/UI/Common/Items/TabListData.cs.meta b/Assets/Scripts/UI/Common/Items/TabListData.cs.meta new file mode 100644 index 000000000..c838cb7fd --- /dev/null +++ b/Assets/Scripts/UI/Common/Items/TabListData.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 47a09808fe3440d59857224bdc01a91f +timeCreated: 1747970638 \ No newline at end of file diff --git a/Assets/Scripts/UI/ListTitleItem.cs b/Assets/Scripts/UI/ListTitleItem.cs deleted file mode 100644 index 7a570fe41..000000000 --- a/Assets/Scripts/UI/ListTitleItem.cs +++ /dev/null @@ -1,15 +0,0 @@ -// 本脚本只在不存在时会生成一次。组件逻辑写在当前脚本内。已存在不会再次生成覆盖 - -using UnityEngine; -using FairyGUI; -using NBC; - -namespace NBF -{ - public partial class ListTitleItem : GComponent - { - private void OnInited() - { - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/UI/Shops/FishingShopPanel.Designer.cs b/Assets/Scripts/UI/Shops/FishingShopPanel.Designer.cs index 4400d991d..32b1b893f 100644 --- a/Assets/Scripts/UI/Shops/FishingShopPanel.Designer.cs +++ b/Assets/Scripts/UI/Shops/FishingShopPanel.Designer.cs @@ -18,7 +18,7 @@ namespace NBF [AutoFind(Name = "divisionLine")] public GImage divisionLine; [AutoFind(Name = "List")] - public GList List; + public ClassifyList List; public override string[] GetDependPackages(){ return new string[] {"Common"}; } diff --git a/Assets/Scripts/UI/Shops/FishingShopPanel.cs b/Assets/Scripts/UI/Shops/FishingShopPanel.cs index cfc683f6f..a61255e27 100644 --- a/Assets/Scripts/UI/Shops/FishingShopPanel.cs +++ b/Assets/Scripts/UI/Shops/FishingShopPanel.cs @@ -7,22 +7,20 @@ using UIPanel = NBC.UIPanel; namespace NBF { - public class ListDataBase + + public class ShopGearData { public string title; } - public class ShopGearData : ListDataBase - { - } - public partial class FishingShopPanel : UIPanel { public override string UIPackName => "Shop"; public override string UIResName => "FishingShopPanel"; - private List _data = new List(); + private List _tabList = new List(); + protected override void OnInit() { base.OnInit(); @@ -31,58 +29,26 @@ namespace NBF for (int i = 0; i < 10; i++) { - var data = new ListDataBase(); - data.title = "Title" + i; - _data.Add(data); - for (int j = 0; j < 30; j++) - { - var item = new ShopGearData(); - item.title = $"Item {i}-" + j; - _data.Add(item); - } + var itemData = new TabListData(); + itemData.AddTestData(i); + _tabList.Add(itemData); } - // List.SetVirtual(); - List.itemProvider = GetListItemResource; - List.itemRenderer = OnRenderItem; - List.numItems = _data.Count; + Menu.OnTabChange += ChangeTab; } protected override void OnShow() { base.OnShow(); + Menu.SetTabs(_tabList); } - void OnRenderItem(int index, GObject obj) + + private void ChangeTab(int index) { - if (obj is ListTitleItem titleItem) - { - titleItem.width = List.width - 60; - titleItem.height = 47; - } - // else - // { - // obj.width = 224; - // obj.height = 320; - // } - } - - //根据索引的不同,返回不同的资源URL - string GetListItemResource(int index) - { - var itemData = _data[index]; - - if (itemData is ShopGearData shopItem) - { - return ShopGearItem.URL; - } - - if (itemData is ListDataBase item) - { - return ListTitleItem.URL; - } - - return List.defaultItem; + Log.Info($"Change tab index={index}"); + var listData = _tabList[index]; + List.SetListData(listData.ListData); } private void OnClick(GComponent btn) diff --git a/Assets/Scripts/UI/Shops/ShopGearItem.cs b/Assets/Scripts/UI/Shops/ShopGearItem.cs index 68884d10d..e5de871c7 100644 --- a/Assets/Scripts/UI/Shops/ShopGearItem.cs +++ b/Assets/Scripts/UI/Shops/ShopGearItem.cs @@ -6,10 +6,18 @@ using NBC; namespace NBF { - public partial class ShopGearItem : GButton + public partial class ShopGearItem : ListItemBase { + public ShopGearData GearData; private void OnInited() { } + + protected override void OnSetData(object showData) + { + GearData = showData as ShopGearData; + if(GearData == null) return; + title = GearData.title; + } } } \ No newline at end of file diff --git a/FGUIProject/assets/Common/Com/Buttons/ButtonTab.xml b/FGUIProject/assets/Common/Com/Buttons/ButtonTab.xml index c7ce17437..d5f51572c 100644 --- a/FGUIProject/assets/Common/Com/Buttons/ButtonTab.xml +++ b/FGUIProject/assets/Common/Com/Buttons/ButtonTab.xml @@ -2,12 +2,14 @@ - + +