【三】有限状态机
老实说,很久前学习了多种有限状态机写法,有学习打工人小祺的、有跟着鬼鬼鬼ii的,有学习Joker老师的…学得越多反而越来越不知道怎么做。但是分析这次需求,我们决定玩家和敌人都用有限状态机,我觉得Joker老师写得最好。既然Joker老师造好了轮子,我们直接拿来用最方便了。
实践过程
在设计有限状态机前,我们先设置好我们的状态基类StateBase,记录下我们所有要执行的函数。
12345678910111213141516171819202122232425262728293031323334353637383940using System.Collections;using System.Collections.Generic;using UnityEngine;public abstract class StateBase{ //状态机初始化 public virtual void Init(IStateMachineOwner owner) { } //卸载资源 public virtual void UnIn ...
【二】公共Mono模块
在Unity开发中,有时我们不想继承Mono却想使用其中的功能,于是写了这样一个公共Mono模块,使用举例:MonoManager.MainInstance.AddStart(传入一个Action)
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869using System;using UnityEngine;public class MonoManager : SingleMono<MonoManager>{ // 使用标准的 System.Action 替代 UnityAction(除非需要序列化) private event Action onStart; private event Action onUpdate; private event Action onLateUpdate; private event Act ...
【一】单例模式基类
首先最基础的便是单例模式基类,在Unity开发中,有些东西我们只想让它有一个,比如单独的关卡管理器、单独的公共Mono模块,而单例模式就是为了实现这一需求。下面的单例模式,是我结合各家所长(如唐老狮、鬼鬼鬼ii、joker老师)写的一个较为简易的版本,虽然简易,但足够够用,它考虑到多线程、继承MonoBehaviour等方面,可以直接复制粘贴使用。
不继承MonoBehaviour的单例模式基类123456789101112131415161718192021using UnityEngine;public class SingleTonBase<T> where T : class, new(){ private static T instance; protected static readonly object _lock = new object(); public static T GetInstance() { if (instance == null) { ...
Unity轮子合集
最近我又开始捣鼓我的Unity了,在一年多的学习后,我写了一些简单的框架,却始终没做出来游戏O_o原因在我的学习态度,去年学Unity时,我主打学习和练习,总想着要全凭自己、独立去开发一个游戏(吐槽自己,怎么不把汇编、造计算机也学一遍),重复的轮子一直在造。现在看来,无论通过什么方式、能开发出来游戏就是好游戏。我主要学习的是开发ARPG游戏,在此期间我写了很多框架,虽然并不是太完美就是了…为了方便Unity使用者能迅速上手、不用花费太多时间去造轮子,于是我想要把我写的代码开源在网上,公共Mono模块、单例模式,还有其它乱七八糟的,想要使用时直接复制粘贴。话已至此,开干吧。