有一个界面:
public interface IUpdatable
{
public void Awake();
public void Start();
public void Update();
public void FixedUpdate();
public void LateUpdate();
}
该接口旨在从不继承自的类中提取 Unity 方法MonoBehaviour
。我有一个PlayerController
实现该接口的类。
这是装饰器本身。我试图使用接口将所有调用集中在一个地方,但是当我运行它时,它至少List<IUpdatable> updatable
有一个后继者。Count = 0;
IUpdatable
public class UpdatableDecorator : MonoBehaviour
{
private List<IUpdatable> _updatables = new();
[Inject]
public void Construct(List<IUpdatable> updatable)
{
_updatables.AddRange(updatable);
Debug.Log(_updatables.Count);
}
private void Awake()
{
foreach (var awake in _updatables)
{
awake.Awake();
}
}
void Start()
{
foreach (var start in _updatables)
{
start.Start();
}
}
void Update()
{
foreach (var update in _updatables)
{
update.Update();
}
}
private void FixedUpdate()
{
foreach (var fixedUpdate in _updatables)
{
fixedUpdate.FixedUpdate();
}
}
private void LateUpdate()
{
foreach (var lateUpdate in _updatables)
{
lateUpdate.LateUpdate();
}
}
}
绑定如下所示SceneInstaller
:
private void BindDicorator()
{
Container.Bind<List<IUpdatable>>().AsSingle();
Container.BindInterfacesAndSelfTo<UpdatableDecorator>().FromComponentInHierarchy().AsSingle();
}
我不知道我做错了什么。我将非常感激您的指导。