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;
|
|
}
|
|
|
|
}
|
|
} |