Files
aibis-dream/Assets/Scripts/FixSystemNew/WhackMole/PipelineHandler.cs
T
2025-08-05 14:36:28 +08:00

40 lines
1.3 KiB
C#

using System.Collections;
using AibisDream.Framework;
using AibisDream.Kit;
using AibisDream.Utility;
using UnityEngine;
namespace AibisDream.FixSystem
{
public class PipelineHandler
{
private PipelineData _data;
private readonly GameObject _pipelinePrefab;
private Transform _pipelineRoot;
private SimpleObjectPool<PipelineObject> _pool;
private readonly ISelector<PipelineObjectData> _selector;
public PipelineHandler(PipelineData data)
{
_data = data;
_pipelinePrefab = ResourceKit.LoadAssetSync<GameObject>(ConstRef.PipelinePrefabAddress);
// 对象池
_pool = new SimpleObjectPool<PipelineObject>(InstantiateObject, ResetObject);
// 随机选择器
_selector = new SingleSelector<PipelineObjectData>(_data.pipelineObjectDatas, item => item.weight);
}
private PipelineObject InstantiateObject()
{
var obj = Object.Instantiate(_pipelinePrefab, _pipelineRoot);
return obj.GetComponent<PipelineObject>();
}
private void ResetObject(PipelineObject pipelineObject)
{
pipelineObject.transform.localPosition = Vector3.zero;
}
}
}