回到界面类,确认一下,相机是否已经设置为,只渲染颜色;

然后创建一个空物体GameManager,挂上游戏管理类的脚本文件;

再创建一个画布,注意设置一下固定缩放;

设置好这些基础之后,就可以开始处理,UI管理类相关的事情了; 调用一下,常用的命名空间,然后优化一下管理类的代码结构;

游戏内是存在遮罩的,写一个初始化遮罩的函数,然后再在构造函数里面,完成游戏管理类,画布的初始化,还有调用一下,初始化遮罩函数;

因为遮罩相关,要处理的东西也比较多,所以先定义一个遮罩的整合,然后把初始化遮罩的函数,放进去;

声明几个,遮罩需要使用到的gameobject和tween,还有image图片;

在遮罩的整合之外,添加一个方法,是用来纠正位置的;

然后,在初始化函数里面调用一下,纠正位置的方法; 再使用dotween的方法,完成图片透明度的变化

然后在整合里,再创建两个方法,分别是显示遮罩和隐藏遮罩;

完成了遮罩的初始化; 然后,在外部再定义一个,加载UI的方法;

再写一个,加载面板的方法;

既然有加载面板,也就会有,回收面板; 也写一个方法来回收面板;

以上就是ui管理类的方法开发; 回到游戏管理类中,先声明一下ui管理类;

然后,在初始化函数中,实例化一下对象;

在游戏管理类中,新建一个UI管理的相关整合;

然后,填充上,加载UI,加载面板等,在UI管理类中的方法;

以上,就是ui管理类相关的方法了; 然后,开始处理,玩家管理类的方法; 先引用,需要使用到的命名空间,然后添加一下注释,优化代码结构;

玩家的操作类型,有三种,分别是攻击,跳跃,攻击+跳跃; 所以,定义一个枚举去区分;

然后,声明几个需要用到的几个变量,和构造函数;

角色一般是跟动画挂钩的,所以先弄一个其他动画的整合;

然后参考原来的,状态机相关,填充一下就好;

再设立一个其他方法的整合,然后填充一下,后面会需要使用到的方法;

以上还不是全部的“其他方法”整合,剩下的,参考原工程补全即可;

跳跃需要使用dotween来处理,也单独弄一个整合出来; 参考原工程填充一下就好;

然后,就是角色管理类的操作部分了,监听玩家输入,玩家通过鼠标的左右按键,直接可以控制玩家的一系列操作;

然后,回到构造函数,完成一系列的初始化,和调用前面定义好的基本函数;

回到游戏管理类中,先声明一个玩家管理类的对象;

然后,在初始化中,对该对象,完成初始化操作;

然后,在游戏管理类中,写一个玩家管理类的整合,然后填充一下,玩家管理类相关的操作;

以上,就是完成了,玩家管理类相关了; 然后,就到了推动游戏进程,管理游戏关卡数据,以及关卡对象,相关的管理类了;

调用一下,需要使用到的命名空间,再优化一下代码结构;

先处理一下,角色之间的对话台词; 具体的文本内容,在游戏资源里面的,这个剧本文件中;

具体文本内容:

定义一个游戏剧情的整合,然后填充一下代码内容: 主要是不同的关卡剧情,和触发顺序判断;

因为涉及到关卡的话,就是有具体的业务逻辑在其中; 所以,在Game目录下,创建两个脚本文件,分别是关卡,和关卡控制器;

先打开关卡类,调用一下,需要使用到的命名空间,再写一个关卡的接口; 然后,优化一下代码结构;

设置关卡类,为抽象类,继承自关卡接口,先让它们自动生成一下,各个需要实现的接口:初始化关卡,关卡逻辑,退出关卡;

然后,打开音轨控制者,调用一下,需要使用到的,命名空间,优化一下代码结构;

有了关卡类,也有了音轨控制器,负责生成音符,所以还需要一个,音符类,用来处理,最基础的,音符相关操作,创建一个音符的脚本文件;

调用一下,需要用到的命名控件,再优化一下代码结构,其中音符对象,是继承自mono的,因为它会在场景中使用,是需要在场景中,实例化出来的玩意儿;

声明一下,需要使用到各个变量;

在音符代码中,先写好,对应的初始化函数;

在原工程中,是有一个对应音符的预制体文件;

可以直接复制到新工程中; 完成复制后,可能会出现,以下,代码缺失的提示;

没关系,选择前面写好的,音符对象的脚本,挂上去就好了;

回到音符对象的脚本,创建两个方法,分别是,重置音符,和返回对象池的;

发现关卡相关的内容,需要处理的脚本文件,有点偏多,所以也可以,直接先处理,音频管理类;

调用一下,需要使用到的,命名空间,优化一下代码结构;

声明一下,后面需要用到的各个变量,然后在构造函数中,对他们进行初始化;

然后,写一系列,关于音效播放和停止相关的接口即可;

在游戏管理类中,新增对应的,音频管理类对象;

然后,在初始化函数中,完成该对象的实例化;

在游戏管理类中,添加音频管理的整合,然后填充一下,对应的音频管理接口即可;

在关卡类中,先把需要用到的,通用关卡变量,给写出来;

然后,新增两个方法,是跟采样相关的;

再写一个函数,是用来得到,在音乐样本中,命中窗口的宽度;

定义一个抽象方法,是用来进入关卡之前,加载当前关卡,所有相关数据的;

然后,在关卡类中,需要使用到,推动游戏进程管理类的,新的整合方法;

定义一个新的整合,然后声明几个,需要用到的变量;

再写一下,构造推动游戏进程管理类的,构造函数;

在游戏管理类中,对推动进程类,声明对象;

然后,在初始化函数中,完成实例化;

然后,在游戏管理类中,添加一个整合,是用来统一处理,游戏管理的;

回到关卡类中,完成初始化当前关卡的方法;

在关卡类中,再写一个构造函数,和增加分数的函数;

回到音符对象类中,添加一个,是否命中的函数,传参是击打的等级;

回到音符对象类,写一个方法,是用来获取,样本偏移值的;

根据样本偏移值,就可以计算得到,当前音符的命中等级了;