需要注意的是,前面使用到的,命令类型,一共是五种,在字符常量类中,是有相关定义的; ![[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]]