节奏天国_第四章.md 5.5 KB

需要注意的是,前面使用到的,命令类型,一共是五种,在字符常量类中,是有相关定义的;

![[Pasted image 20220414223831.png]]

其中,音乐节奏相关的,节奏点处理文件,都放在这个文件夹下,直接复制过去就好;

![[Pasted image 20220414223834.png]]

可以看到,训练关是有挂载了,两个Track的,分别是攻击Track和文本提示Track;

![[Pasted image 20220414223837.png]]

点开之后,就可以发现,挂载在上面的两个track是可以切换查看,对应的打点;

![[Pasted image 20220414223840.png]]

这个软件存在bug,有时会很卡顿; 这时添加一个tempo,就可以缓解卡顿了; 在处理完成之后,再点击选择delete,就可以删除,为了缓解卡顿创建处理的tempo了;

![[Pasted image 20220414223847.png]]

而第一关,就只有一个track,就是攻击;

![[Pasted image 20220414223851.png]]

这些track,都是跟这些定义,可以对应上的;

![[Pasted image 20220414223854.png]]

回到关卡类中,重写第一关的,退出关卡函数; 可以看到,也是有报错提示; 还是老问题;

![[Pasted image 20220414223907.png]]

去父类中,改一下就好;

![[Pasted image 20220414223913.png]]

然后,在第一关中,重写一下,初始化关卡的函数;

![[Pasted image 20220414223921.png]]

以上,就是第一关的具体业务逻辑; 也是游戏的核心玩法逻辑;

之后要处理的话,就是界面相关了; 最开始使用到的,是一个不透明的遮罩; 它上面没有挂载什么脚本,所以直接复制过去就好;

![[Pasted image 20220414223926.png]]

然后,就是这个,开始界面;

![[Pasted image 20220414223931.png]]

复制过去; 会提示缺少脚本文件;

![[Pasted image 20220414223934.png]]

创建一个新的文件夹,命名为UI即可; 在UI文件夹下,创建对应的界面逻辑脚本;

![[Pasted image 20220414223938.png]]

完善一下,界面相关的业务逻辑;

![[Pasted image 20220414223942.png]]

挂到脚本上;

![[Pasted image 20220414223945.png]]

控制音乐播放的,也有一个实体; 直接复制过去就好;

![[Pasted image 20220414223947.png]]

调整一下分辨率;

![[Pasted image 20220414223951.png]]

这时,运行程序,可以看到,界面缺少了两行文字(应该是字体没有导入的原因,用默认字体也可解决) 而且角色没有动(估计是状态机没挂上去的原因)

问题不大,解决一下就好;

![[Pasted image 20220414223956.png]]

首先,把缺失的字体文件,用默认的字体替换即可;

![[Pasted image 20220414224003.png]]

而动画没有动的原因,也找到了,是因为UI相关的动画和状态机,没有复制过去; 直接复制过去就好;

![[Pasted image 20220414224008.png]]

这时再重新运行游戏,就可以发现,UI里面的动画和文字,也都正常显示了;

![[Pasted image 20220414224011.png]]

然后,点击屏幕就会进入第一关了; 第一关会使用到,背景图片,和对话的预制体; 直接复制过去就好;

![[Pasted image 20220414224014.png]]

需要注意的是,对话预制体中,提示缺失脚本的,是它的子物体; 脚本是挂载在子物体上面的;

![[Pasted image 20220414224018.png]]

在UI目录下,新建一个对话的脚本文件;

![[Pasted image 20220414224021.png]]

完善一下,具体的业务逻辑;

![[Pasted image 20220414224024.png]]

然后挂载到,子物体上即可;

![[Pasted image 20220414224028.png]]

保存修改,重新运行,到第一关的时候,会出现这个空的报错;

![[Pasted image 20220414224032.png]]

检查一下,之前在推动游戏进程的管理类中,有一个,实例化关卡的接口,是todo的;

![[Pasted image 20220414224035.png]]

通过switch控制,先把第一关的,加上;

![[Pasted image 20220414224049.png]]

再次运行,进入第一关,可以发现,对话是没问题了,但是会连续报错很多; 继续解决一下;

![[Pasted image 20220414224053.png]]

这个报错,找起来就比较麻烦; 因为是在,音符对象函数里面的,Update函数;

![[Pasted image 20220414224058.png]]

而报错的根本原因,是因为这里的level,并没有进行初始化赋值,为null;

![[Pasted image 20220414224103.png]]

可以发现,继承自音符对象的,目前有三个; 所以,在这三个玩意儿里面,打断点去找问题;

![[Pasted image 20220414224107.png]]

最后发现,是Predator首长类,没有重写update函数,导致在继承实例化出来之后,就调用了父类的update,从而导致这个报错了;

之前之所以没有重写或者说,发现这个,是因为,这里用到的beginmove,原本是第三关,首长作为boss的时候,才会使用到的变量对象;

寻思目前第一关没用到,所以就连带它的所有函数,都没写了;

结果,就导致了update函数的异常调用;

重写一下update函数,报错就消失了;

![[Pasted image 20220414224118.png]]

保存修改,编译,重新运行,报错就消失了; 但可以发现,首长头顶的提示,文本为空;

![[Pasted image 20220414224125.png]]

老问题,字体丢失,替换成默认字体就好;

![[Pasted image 20220414224128.png]]

重新运行游戏,可以发现,训练关卡,和第一关,都已经是正常运行的了!

![[Pasted image 20220414224133.png]]