2
0
Fork 0
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#

2 years ago
using FairyGUI;
namespace Game
{
public class UIPoolItem : ObjectPoolItemBase { }
public class UIPoolItem<T> : UIPoolItem where T : GComponent, new()
{
public T Component;
2 years ago
protected override void OnCreate()
{
Component.visible = true;
2 years ago
}
protected override void OnDestroy()
{
Component.visible = false;
2 years ago
}
}
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}";
2 years ago
var poolObj = Create<UIPoolItem<T>>(typeName, (item) =>
{
item.Component = CreateUIComponent(pkgName, compName) as T;
2 years ago
});
return poolObj;
}
private GComponent CreateUIComponent(string pkgName, string compName)
{
var comp = UIPackage.CreateObject(pkgName, compName).asCom;
GRoot.inst.AddChild(comp);
return comp;
}
}
}