UDON GRAPH 实战:白名单系统
麦哲伦的乌冬面馆
编辑于 2024年12月07日 11:14
收录于文集
共6篇

欢迎来到麦哲伦的udon graph实战教程,本期专栏将带大家手把手设计一个本地白名单系统。那么事不宜迟,让我们马上开始!


PART1:程序目标设计

黑白名单系统的目标很简单,分为以下几点:

1:名单

2:确认本地玩家是否是名单中的人

3:如果是-执行操作,如果不是-略过

至于执行什么操作,我们可以通过将customEVENT发送到下一个udon,让其他的udon来执行具体操作,而黑白名单系统只需要做好自己的事情——确认玩家是否存在于黑白名单中

PART2:设计参数

EVENT:事件选择

首先我们肯定是加入地图就决定玩家是不是白名单了所以我们要脚本从加入地图开始执行。而且仅需要执行一次

所以事件的触发我们选择——Events:Start 从玩家加入开始执行

Variables:参数选择

在参数上我们需要

1:udonBehavious

用于把customEvent发送出去

2:string[]

用于存放白名单/黑名单

3:string

用于存放customEvent名称

具体命名如下:

PART3:设计程序

第一步:获取本地玩家名称

首先我们需要获取本地玩家名称,这将会用到三个模块。

1.Get Localplayer :获取本地玩家信息

该组件会输出包含玩家所有信息的VRCPlayerAPI属性

2.Get displayName:获取本地玩家名称

该组件会从PlayerApi当中输出玩家的名字,以string字符串的方式

到这一步,我们完成了获取本地玩家名称的任务,储存方式为string

第二步:判断玩家是否处于名单内

我们需要用到两个组件来完成判断:IndexOF与Equals

IndexOF提供了一个接口,允许在事件接入时检查Value是否与Array内的元素相同,如果相同则返回相同元素所在的层级,如果不相同则返回-1

Equals则会确认int值是否等于obj,这里将值设为常数-1

在左侧的Array一栏输入参数-string[]-数组,下方Value输入上文获取的LocalPlay Displayname。IndexOF会比对玩家名称与string[]中存放的玩家名称名单是否有相同的。并输出到int值。已知如果不存在则会输出-1,那么仅需要检测值是否不等于-1,即可得知玩家是否属于名单内。

所以Udon Graph里面应该这么写——

至此我们已经完成了从获取玩家名称到判断是否属于白名单的整个过程了,剩下的只需要加入我们喜闻乐见的发送事件(结果)到其他Udon脚本即可

恭喜你,到这里你已经完成了一个基于UDON Graph的白/黑名单系统的构筑。

下面是UDON Graph全貌:

感谢您的观看,我是麦哲伦,咱们下期再见~

鸣谢:

VRCD中文创作者协会

代理猫猫