打开主菜单

Ballance Wiki β

更改

关卡加载

添加417字节2023年12月25日 (一) 22:25
无编辑摘要
== Init Arrays ==
# 恢复四个物体的IC:Checkpoints恢复四个Array的IC:Checkpoints, PH_Groups, Reset_Points, PH
== Load LevelXX ==
# 从CurrentLevel读取当前需要被加载的关卡,然后去AllLevel中寻找文件名,然后在3D 从CurrentLevel读取当前需要被加载的关卡,然后在名为"AllLevel"的Array中将数字减一并按Row寻找文件名,然后在3D Entities\Level\下找文件加载。
# 新建一个名为All_Level的Group,将新加载的关卡中的所有物件归到此组中,让后将此组插入到表RegisterNMO中(Load ID = 1)
# 发送阶段完成信号(1格进度条)发送阶段完成信号("Part_Loaded"Message,Dest是Level,下同)(1格进度条)
== load Music ==
# 将Musicfiles.nmo放入Levelinit_Loading中,再将Levelinit_Loading放入Loading_Param,然后执行脚本LoadingManagerScript,然后清空Levelinit_Loadingnmo放入"Levelinit_Loading"中,再将"Levelinit_Loading"放入Loading_Param,然后执行脚本LoadingManagerScript,然后清空Levelinit_Loading
# 根据GameSetting中的13列LowMemory判断,如果为真,则从Sounds_low加载音乐,否则从Sounds加载
# 构造了文件名,加载三个音乐文件并归入All_Music组(加载失败不会阻止后续操作)
== load Tutorial.nmo ==
# 读取GameSetting,确认是否需要Tutorial,如果不需要,跳过本节后续步骤读取GameSettings,确认是否需要Tutorial,如果不需要,跳过本节后续步骤
# 将Tutorial.nmo放入Levelinit_Loading中,再将Levelinit_Loading放入Loading_Param,然后执行脚本LoadingManagerScript,然后清空Levelinit_Loading
== set CurrentLevel ==
# 读取AllLevel,获得StartBall,实例化一个然后添加到CurrentLevel里读取AllLevel,获得该关卡对应的StartBall,实例化一个然后添加到CurrentLevel里
# 实例化一个Ball_Pos_Frame添加到CurrentLevel里
=== Replace PH ===
# 遍历PH_Groups,对于每一行,查找其Group Names的组,然后开始遍历里面的物体
# 如果物体没有Sector的Attribute,那么程序会卡死在这。如果有Sector,将会把此物品记录在PH表内,包括这个物体本身(3d 如果物体没有Sector的Attribute,那么程序会卡死在这,并运行TT_Debug,Debugtext是No Sector-Attrib by Object (Name)。如果有Sector,将会把此物品记录在PH表内,包括这个物体本身(3d Entity),World Matrix,归属的机关类型名(上文的Group Names)和对应的小节组
# 遍历PH表,以全部依赖模式删除物体本身(3d Entity)
# 发送阶段完成信号(4格进度条)
PS:如果PC_Checkpoints中没有任何元素,程序会继续运行,不会停止PS:如果PC_Checkpoints中没有任何元素,程序会继续运行,不会停止,但是因为Particle_Flames贴图的定义是存储在PC_TwoFlames.nmo中的,所以开头盘点火会丢失贴图,从而呈三角形。例如[[飞船也整人]]。
=== init Resetpoints ===
# 发送阶段完成信号(5格进度条)
PS:如果PS_Levelstart中没有任何元素,程序会继续运行,不会停止PS:如果PS_Levelstart中没有任何元素,程序会运行TT_Debug,Debugtext是no Element in LevelStartgroup,然后继续运行,不会停止
=== init and load Levelende ===
32
个编辑