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.
		
		
		
		
		
			
		
			
				
	
	
		
			43 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C#
		
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C#
		
	
| 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;
 | |
|         }
 | |
| 
 | |
|     }
 | |
| } |