👨💻个人主页:@元宇宙-秩沅
👨💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!
👨💻 本文由 秩沅 原创
👨💻 收录于专栏:Unity基础实战
⭐🅰️⭐
文章目录
- ⭐🅰️⭐
- ⭐前言⭐
- 🎶(==W==) 公共Update管理器
- 1.涉及知识点
- 2.未优化的管理器特点
- 3.优化后的管理器特点
- ⭐🅰️⭐
⭐前言⭐
🎶(W) 公共Update管理器
1.涉及知识点
2.未优化的管理器特点
- 为事件添加Mono的帧更新功能
- 激活需要拖拽和add
- 要继承Mono
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
//作用为事件添加Mono的帧更新功能--激活需要拖拽和add
public class UpdateController : MonoBehaviour {
private event UnityAction updateEvent;
void Start ()
{
DontDestroyOnLoad(this.gameObject); //过场景不移除
}
void Update ()
{
if (updateEvent != null)
updateEvent();
}
public void AddUpdateListener(UnityAction fun) //添加帧更新事件
{
updateEvent += fun;
}
public void RemoveUpdateListener(UnityAction fun)//移除帧更新事件
{
updateEvent -= fun;
}
}
3.优化后的管理器特点
- 为事件添加Mono的帧更新功能,也可以添加协程功能等
- 激活不需要拖拽和add
- 不用继承Mono
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using UnityEngine;
using UnityEngine.Events;
//作用为事件添加Mono的帧更新功能--激活不需要拖拽和add
public class UpdateManager : SingleManager<UpdateManager>
{
private UpdateController controller;
public UpdateManager()
{
//保证了UpdateController对象的唯一性
GameObject obj = new GameObject("UpdateController");
controller = obj.AddComponent<UpdateController>();
}
public void AddUpdateListener(UnityAction fun)
{
controller.AddUpdateListener(fun);
}
public void RemoveUpdateListener(UnityAction fun)
{
controller.RemoveUpdateListener(fun);
}
//若需要开启协程则,直接可以将协程中的Coroutine中的反编译源码复制过来即可
}
⭐🅰️⭐
⭐【Unityc#专题篇】之c#进阶篇】
⭐【Unityc#专题篇】之c#核心篇】
⭐【Unityc#专题篇】之c#基础篇】
⭐【Unity-c#专题篇】之c#入门篇】
⭐【Unityc#专题篇】—进阶章题单实践练习
⭐【Unityc#专题篇】—基础章题单实践练习
⭐【Unityc#专题篇】—核心章题单实践练习
你们的点赞👍 收藏⭐ 留言📝 关注✅是我持续创作,输出优质内容的最大动力!、
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using UnityEngine;
using UnityEngine.Events;
//作用为事件添加Mono的帧更新功能–激活不需要拖拽和add
public class UpdateManager : SingleManager
{
private UpdateController controller;
public UpdateManager()
{
//保证了UpdateController对象的唯一性
GameObject obj = new GameObject("UpdateController");
controller = obj.AddComponent<UpdateController>();
}
public void AddUpdateListener(UnityAction fun)
{
controller.AddUpdateListener(fun);
}
public void RemoveUpdateListener(UnityAction fun)
{
controller.RemoveUpdateListener(fun);
}
//若需要开启协程则,直接可以将协程中的Coroutine中的反编译源码复制过来即可
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
//作用为事件添加Mono的帧更新功能–激活需要拖拽和add
public class UpdateController : MonoBehaviour {
private event UnityAction updateEvent;
void Start ()
{
DontDestroyOnLoad(this.gameObject); //过场景不移除
}
void Update ()
{
if (updateEvent != null)
updateEvent();
}
public void AddUpdateListener(UnityAction fun) //添加帧更新事件
{
updateEvent += fun;
}
public void RemoveUpdateListener(UnityAction fun)//移除帧更新事件
{
updateEvent -= fun;
}
}