Skip to main content

六:就像Avatar一样,我推荐你在使用Udon做网络同步的时候也能考虑到参数压缩

特别是在使用类似PlayerData这种所有脚本,玩家都能收发信息的VRChat中转站的时候,使用参数压缩大法可以让你在限制之下拥有更多的功能以及更好的性能表现,比如:

当你有16个Bool,但是PlayerData只支持单个数据?难道要写16个键值对吗?那也太垃圾了!

使用一个UShort,将16个布尔按照Bit的形式排列在UShort上,即可在一个UShort数据上容纳16个布尔。

如果是一个数字呢?

先规定好每一个数字的最大值,并且根据最大值找位数:

如果一个数字最大值只有0-1?

那一个数字就只用占1bit即可

如果一个数字最大值只有0-15?

那一个数字占用4Bit即可

以此类推

你问如果有负数怎么办?计算机怎么学的,第一位当符号位不就好了。

然后根据你所需要的数据的数量,从以下位数中选取一个当作载体。

1:Ushort :16bit

2:Uint : 32bit

3: Ulong : 64bit

然后写好相互转换的代码即可: