制作一个用于收集物状态统计系统
本期我们来制作一个收集物统计系统
相信制作过游戏地图的朋友们都知道,收集物是游戏的一个很重要的元素。本期我们来制作一个完整的收集物系统。
第零步:
首先需要为可收集物制作一个脚本,通过“开关”自己来实现可收集的感觉。
比较简单,直接放图。
这个脚本的效果就是将自身关闭。后面我们也是通过Active状态来确认收集物是否被收集。
收集物统计系统
PART1:程序目标设计
这个我们需要这个系统输出以下信息
1:收集物名单(gameobject[])
2:已收集数量(int)
3:未收集数量(int)
4:未收集名单(int[])(未收集的部分在数组中对应的位置)
我们需要向系统输入以下信息
1:收集物名单(gameobject[])
我们通过一个Public的gameobject[]来完成输入,并且这个也是需要输出的信息之一
Event 事件选择
这个选择可以十分的多元,既可以选择常规的interact触发,也可以选择例如OnPlayerTriggerEnter让玩家进入某一个区域后触发。
选择十分宽泛,这里不做指定。
Variables 参数选择
在参数上我们需要以下参数:
1:收集物名单(gameobject[])
2:已收集数量(int)
3:未收集数量(int)
4:未收集名单(int[])(未收集的部分在数组中对应的位置)
命名如下:
Part:2 设计程序
由于这个脚本理论上需要被重复触发,大部分的参数又都是本地参数,在开始之前我们需要对本地参数进行归零处理。
归零后正式进入数据处理,首先我们需要制作一个For循环,每一次循环从名单中获取一个gameobject来进入后续的处理。
使用官方的快捷键可以快速生成一个FOR循环,请在GET后增加一个NULL检测,以防止脚本崩溃。
获取了收集物之后,我们需要对他的状态进行检测,并且且将结果值输出到判定器来判定是否已被收集
在获得该收集物的收集状态后,已收集的物品会执行True流,而未收集则会执行False流。
False流——物品已收集
倘若物品已经被收集,已收集int值+1,结束,回到循环
Ture流——物品未收集
倘若物品没有被收集,从FOR中获取该物品在数组中的位置,保存在int[]数组中,数组位置等于【未收集数int+1值】,然后为未收集数int+1值,结束,回到循环。
在循环结束之后,会执行EXIT处的流,我们将这个流接入输出,将值输出到其他脚本
以上就是收集物统计系统的全部,下面是udon Graph全代码
感谢您的观看,我是麦哲伦,咱们下期再见~
鸣谢:
VRCD中文创作者协会
代理猫猫
PS:谢谢猫猫老师帮我修bug呜呜呜呜呜呜呜
No Comments