05-使用非MonoBehaviour类

本文介绍了如何使用Zenject框架让普通类也能像Unity的MonoBehaviour一样拥有Start、Update、FixedUpdate、LateUpdate等生命周期回调。通过实现IInitializable、ITickable、IFixedTickable、ILateTickable接口,可以实现类似的游戏循环方法。同时,通过实现IDisposable接口,可以在关闭程序或资源销毁时执行清理操作。这种方法避免了不必要的MonoBehaviour继承,提高了资源利用率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Unity中的脚本都默认继承MonoBehaviour类,该类提供了游戏循环中的各类回调函数。但在有些情况下我们不需要MonoBehaviour中提供的如此多的方法,此时如果仍然继承MonoBehaviour就会造成资源的浪费。Zenject提供了如下几个接口,让普通类也可以使用类似于MonoBehaviour中的回调函数。

IInitializable

等同于Unity中的Start方法,一般用于给对象进行一些初始化操作。
只需要让类实现IInitializable接口,然后实现接口提供的Initialize()方法,最后绑定到容器即可。

class ZenjectInterfaceTestClass : IInitializable
{
	public void Initialize()
	{
		Debug.Log("Initialize");
	}
}
public class SceneContextExample : MonoInstaller
{
    public override void InstallBindings()
    {
        Container.BindInterfacesAndSelfTo<ZenjectInterfaceTestClass>().AsSingle();
    }
}

ITickable、IFixedTickable、ILateTickable

ITickable、IFixedTickable、ILateTickable接口分别对应Unity中的Update、FixedUpdate、LateUpdate方法。
它们的用法如下:

class ZenjectInterfaceTestClass :  IFixedTickable, ILateTickable,ITickable
{
	public void FixedTick()
	{
		Debug.Log("FixedTick");
	}
	public void LateTick()
	{
		Debug.Log("LateTick");
	}

	public void Tick()
	{
		Debug.Log("Tick");
	}
}
public class SceneContextExample : MonoInstaller
{
    public override void InstallBindings()
    {
        Container.BindInterfacesAndSelfTo<ZenjectInterfaceTestClass>().AsSingle();
    }
}

IDisposable

IDisposable并不是由Zenject提供的,而是在C#的System命名空间下。但它同样可以像上面几个接口那样使用。
IDisposable接口提供的方法主要是在关闭程序或上下文资源被销毁时执行。

class ZenjectInterfaceTestClass :  IDisposable
{
	public void Dispose()
	{
		Debug.Log("Dispose");
	}
}
public class SceneContextExample : MonoInstaller
{
    public override void InstallBindings()
    {
        Container.BindInterfacesAndSelfTo<ZenjectInterfaceTestClass>().AsSingle();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值