You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
	
	
		
			
				
					
						
							|  |  |  | using FairyGUI; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace Game | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     public class UIPoolItem : ObjectPoolItemBase { } | 
					
						
							|  |  |  |     public class UIPoolItem<T> : UIPoolItem where T : GComponent, new() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         public T Component; | 
					
						
							|  |  |  |         protected override void OnCreate() | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             Component.visible = true; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         protected override void OnDestroy() | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             Component.visible = false; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     public class UIPoolManager : ObjectPoolBase<UIPoolManager> | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         public override void OnCreate() | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         public UIPoolItem<T> CreateUIItem<T>(string url) where T : GComponent, new() | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             var contentItem = UIPackage.GetItemByURL(url); | 
					
						
							|  |  |  |             var pkgName = contentItem.owner.name; | 
					
						
							|  |  |  |             var compName = contentItem.name; | 
					
						
							|  |  |  |             var typeName = $"{contentItem.owner.name}_{contentItem.name}"; | 
					
						
							|  |  |  |             var poolObj = Create<UIPoolItem<T>>(typeName, (item) => | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 item.Component = CreateUIComponent(pkgName, compName) as T; | 
					
						
							|  |  |  |             }); | 
					
						
							|  |  |  |             return poolObj; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         private GComponent CreateUIComponent(string pkgName, string compName) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             var comp = UIPackage.CreateObject(pkgName, compName).asCom; | 
					
						
							|  |  |  |             GRoot.inst.AddChild(comp); | 
					
						
							|  |  |  |             return comp; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } |