这次的音游,是2d的,所以新建一个2d的unity工程就可以了;

首先需要导入三个包文件;

先拖拽导入这个;

然后是导入游戏的资源文件;

再之后,就是导入音游插件了;

如果提示升级,让它升级就完事了;

导入之后,有可能会出现报错,是因为插件里面的demo,是用了旧版本的一些api接口,然后在新版本的unity里面,不支持了;

反正旧版本的插件demo,也是不需要的,直接删掉就好了;

删掉这个文件夹就可以了;

删掉之后,引擎会自动重新编译,等它编译完就没有报错了;

然后,首先设置一下,鼠标的光标;

期间可能会出现这个提示,直接取消就好,不用安装的;

然后,就是这里设置的;

点这里,就可以设置一下;

知道名字的情况下,是可以直接搜出来的;

然后就设置好了;

这时切换到game界面,就可以看到设置是生效的; 用截图软件无法截鼠标,所以这个没截图;

然后,就开始写代码了,首先新建一个文件夹

在代码文件夹里面,再创建三个文件夹,分别是代表,框架,游戏业务逻辑,ui界面逻辑;

先创建一个基础的脚本文件,游戏管理类;

然后,通过rider打开一下,这个脚本文件,顺便打开这个工程文件;

这个要新建脚本的话,就可以这样,直接通过rider来创建即可;

在框架目录下,直接创建剩下的几个管理类,分别是音频管理器,玩家管理器,资源管理器,节奏管理器,UI管理器;

回到游戏管理器,这个是需要继承自mono的,然后这些就是用到的命名空间;

然后,先写一个获取器,和设置器;

然后,先处理资源管理器的逻辑; 资源管理器,涉及到资源工厂,和对象池相关; 还是在Framework文件夹,先创建一个ResFactory脚本,作为资源工厂;

改一下脚本的目录结构,引用需要的命名空间,写一个统一调用的接口; 其中的两个方法,分别是用来初始化工厂,和获得资源的;

然后,资源工厂这个类,是继承自这个接口的;

先自动生成继承过来的,需要实现的函数;

然后,定义一个字典,一个func委托;

然后,那个委托,是用来返回的;

然后,就是初始化资源工厂函数的完善;

然后,就是对象池相关了; 新建一个ObjectPool脚本文件;

然后,删掉默认的命名空间,还有类相关,只调用后面使用到的,命名空间,而且定义一个接口;

然后,定义一个类,是继承自这个接口的,先实现一下,继承过来的函数;

声明一个资源工厂的私有变量,一个栈; 然后,再写一个构造函数;

然后,完善获取游戏物体对象的函数;

然后,完善回收对象,到对象池的方法;

还需要一个管理类,来统一管理,所有的物体路径,在框架文件夹里,新建;

因为都是常量,所以直接复制粘贴过来就好;

资源管理相关的其他类都准备好了,接下来就回到资源管理类中,先调用好,需要使用到的命名控件,还有定义好对应的管理类;

然后,声明定义几个资源工厂,再写一个初始化工厂的函数;

然后,最开始,就是图片工厂的初始化操作;

紧跟其后的,还有三个资源工厂的初始化,参考原工程写就好;

初始化完成之后,就要获取相应资源了,也是写上,对应的接口即可;

以上,就是资源管理相关的整合,然后就到了,对象池相关的,资源整合,先声明定义一个对象池的字典,然后再写一个,对象池字典初始化的方法;

然后,写一个,从对象池中,获取数据的方法,从预制工厂中,取得数据即可;

再写一个,回收对象的方法,也是直接调用,对象池中的回收方法即可;

调用一下游戏管理类(备用),然后写一个构造函数,其中包含上面写好的,资源管理,和对象池管理的初始化操作;

回到游戏管理类中,声明一个资源管理类的变量,再写一个初始化管理类的方法,直接new实例化一下;

然后,就开始弄事件管理器了; 事件系统的话,实际上就是由委托构成的;

先改一下,对应的目录结构,调用一下,需要用到的命名空间,再声明一个委托的字典;

先写一下注释;

加一个注册事件的方法;

然后,就是取消注册事件的方法;

然后,就是发送事件的方法;

在外部也定义一个整合,用来划分,特殊的消息结构,例如对话的游戏开始等;

用结构体,来填充一下整合;

在游戏管理类中,也声明和初始化,事件管理类的对象;

在游戏管理类中,补充一下,资源管理的整合;

填充一下整合,主要是跟获取资源相关的函数调用; 后面统一都在游戏管理类这个中介,调用就好;

再补充一个事件管理的整合;

填充一下;

顺道再加上,游戏管理类的唤醒函数,主要都是跟初始化,实例化相关的;