委托事件模拟unity生命周期

本文介绍了一种在Unity游戏开发中使用管理器模式的方法,通过创建一系列子管理类实现对场景物体行为的有效控制,避免了多人合作时可能出现的问题。

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

在多人合作的时候,为避免一个物体被多份代码共同控制产生不可描述的bug,我们往往需要写一系列控制类来控制场景中的物体的各种行为
比如场景加载,动画播放,人物行为等等等
这种时候,如果我们不对这些类进行统一管理就可能造成分工不明确,代码重复,沟通困难等问题
所以,我们需要一种模式对这些代码进行统一的管理,方便我们的程序开发
首先,我们当然需要一个继承子mono的类挂载到物体上并作为总的管理类。
不扯,直接上代码

public static GameKernel _instance;//将他做成单例方便其他类进行调用
//定义委托事件
    public delegate void OnStart();
    public event OnStart onStart;
    public delegate void OnUpdate();
    public event OnUpdate onUpdate;
    //定义各种子管理类
    public VoiceManager voiceManager ;
    public PlayerManager playerManager ;
    public PaperManager paperManager ;
    public ItemManager itemManager ;
    public InputManager inputManager;
    void Awake()
    {
        _instance = this;
        //将子管理类实例化
        voiceManager = new VoiceManager();
        playerManager = new PlayerManager();
        paperManager = new PaperManager();
        itemManager = new ItemManager();
        inputManager = new InputManager();
    }
    void Start()
    {
        onStart();//触发start事件
    }
    void Update()
    {
        onUpdate();//触发udate事件
    }

看到这里可能大家会很疑惑,你明明没有将事件注册上去,怎么可能调用
没错,为了节省代码量并提高代码复用性
我们需要给子管理类定义一个Manager父类,并在这个父类里面进行统一的注册,没错,注册代码只需要写一遍

using UnityEngine;
using System.Collections;

public class Manager{
    //构造函数,在类被实例化时调用
    public Manager()
    {
        GameKernel._instance.onStart += this.OnStart;
        GameKernel._instance.onUpdate += this.OnUpdate;
    }
    //虚函数,供其他子管理类继承
    public virtual void OnStart()
    {

    }
    public virtual void OnUpdate()
    {

    }
    public virtual void OnDestory()
    {

    }
}

然后就是我们的普通的子管理类了
这里由于代码是重复的,所以只贴PlayerManager的

using UnityEngine;
using System.Collections;

//继承自Manager类
public class PlayerManager : Manager {

//由于基础关系,在实例化对象时会自动调用Manager的构造函数注册委托事件
    public override void OnStart()
    {
        base.OnStart();
    }
    public override void OnUpdate()
    {
        base.OnUpdate();
    }
    public override void OnDestory()
    {
        base.OnDestory();
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值