obsidian/笔记文件/2.笔记/设计模式复习_第二章.md
2025-03-26 00:02:56 +08:00

3.4 KiB
Raw Permalink Blame History

开始导入美术资源素材

!Pasted image 20230527131342.png

到这两个子文件夹,其中包含的,就是敌人和士兵的美术资源预制体

!Pasted image 20230527131436.png

选中其中一个,把缺失的脚本移除 其他几个同理不要忽略了Soldier战士文件夹

!Pasted image 20230527131542.png

先勾选自动保存,移除结束再取消勾选

!Pasted image 20230527131646.png

先整场景切换的相关逻辑 新建一个文件夹

!Pasted image 20230527131859.png

基类

!Pasted image 20230527131947.png

继续Ctrl+N 创建新场景Ctrl+S 保存 一共三个场景,用来切换

!Pasted image 20230527132222.png

加到这里

!Pasted image 20230527132319.png

注意序号

!Pasted image 20230527132413.png

继续整一个场景控制器

!Pasted image 20230527132452.png

基类这些东西,都不要有命名空间限制

!Pasted image 20230527132603.png

场景状态控制器,声明场景状态变量,异步场景加载,布尔判断场景是否在跑

!Pasted image 20230527132632.png

回到场景状态类,先声明场景名字,场景状态控制器

!Pasted image 20230527132817.png

然后,是场景名字获取器

!Pasted image 20230527132919.png

三个函数状态,分别是开始,结束,更新

!Pasted image 20230527133015.png

回到场景控制器,引用命名空间,其中有场景管理器

!Pasted image 20230527133212.png

设置场景状态函数 如果当前场景状态不为空,就调用结束函数,让上一个场景,清理 然后改一下场景状态如果是要加载场景就异步加载场景判断是否开始的布尔设置为false 否则,就可以开始具体的场景逻辑了

!Pasted image 20230527133312.png

更新函数如果场景的异步加载不为空同时isDone这个标识还没加载完成直接return就好

再通过是否开始的布尔和上述俩条件,判断场景是否加载完成→开始场景的具体业务逻辑

还有更新函数

!Pasted image 20230527133554.png

然后,新建三个类,分别代表三种场景状态

!Pasted image 20230528000243.png

打开第一个场景,新建一个图片 命名

!Pasted image 20230528000355.png

按住alt设置占满全屏

!Pasted image 20230528000433.png

继续

!Pasted image 20230528000520.png

因为几个场景的名字都是固定好的 所以子类不需要传参场景名字,写死就好

!Pasted image 20230528000824.png

!Pasted image 20230528000900.png

!Pasted image 20230528000915.png

注意命名空间 声明图片image滑动的浮点速度 等待时间

重写父类的开始业务逻辑先找到Logo这个图片然后颜色设置为黑

!Pasted image 20230528001010.png

更新函数里,颜色随着时间乘以速度,渐变 然后还有一个定时器定时到达小于等于0的时候就传参然后切换到下一个场景

!Pasted image 20230528001121.png

在初始场景挂载的GameLoop脚本 前面定义了,是不会销毁的 开始写开始函数:实例化一个场景状态控制器,然后设置第一个场景状态,是开始场景

更新函数也是调用控制器的更新逻辑就好

!Pasted image 20230528001352.png

运行游戏,可以看到,变色正常,切换也是正常的

!Pasted image 20230528001533.png