37 lines
1016 B
C#
37 lines
1016 B
C#
using AibisDream.Framework;
|
|
using AibisDream.Kit;
|
|
using AibisDream.Utility;
|
|
using UnityEngine;
|
|
|
|
namespace AibisDream
|
|
{
|
|
public class BubbleFactory
|
|
{
|
|
private readonly SimpleObjectPool<Bubble> _pool;
|
|
private readonly GameObject _bubblePrefab;
|
|
private readonly Transform _bubbleRoot;
|
|
|
|
public BubbleFactory(Transform bubbleRoot)
|
|
{
|
|
_bubbleRoot = bubbleRoot;
|
|
_bubblePrefab = ResourceKit.LoadAssetSync<GameObject>(ConstRef.BubblePrefab);
|
|
_pool = new SimpleObjectPool<Bubble>(InstantiateBubble);
|
|
}
|
|
|
|
public Bubble Create(BubbleSlotData data)
|
|
{
|
|
var bubble = _pool.Allocate();
|
|
bubble.OnDisposed += o => _pool.Recycle(o);
|
|
|
|
bubble.LoadConfig(data);
|
|
bubble.Hide();
|
|
|
|
return bubble;
|
|
}
|
|
|
|
private Bubble InstantiateBubble()
|
|
{
|
|
return Object.Instantiate(_bubblePrefab, _bubbleRoot).GetComponent<Bubble>();
|
|
}
|
|
}
|
|
} |