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