obsidian/笔记文件/2.笔记/节奏天国_第四章.md
2025-03-26 00:02:56 +08:00

5.5 KiB
Raw Permalink Blame History

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

!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