这是一个很玄学的问题,目前可能知道原理,但是不知道解决方法,其实问题出在哪里都毫无头绪
首先看一下问题的截图:

这是我们社团用于周活的地图,但经常出现这种现象,可以看到一些玩家的衣服直接消失了,一些玩家则是身体部位消失了,而且外面的天空盒也出现了拖影的效果。另外,地图里的一些物品也会一起消失,都是玻璃或UI材质的物品(这点比较重要)
这个bug也非常,非常非常随机,完全无法稳定复现,有猜测是在一些玩家进出这个地图时会短暂出现这种bug(详见下文),一两个人测试的时候没有遇到过这种问题,但是营业时就经常会这样,而且不同人的视角也不相同,有的人经常看到其他人的模型部件消失,有些人就很少出现这种问题。
问过好几位大佬了,但有很多种说法,也无法确定是哪一个,我现在把所有可能性罗列出来:
1.Render Queue(下简称RQ)导致的问题:
目前认为可能性最高的问题,而且感觉是引发问题的原理之一。
前面说到了,玩家衣服消失的时候,和地图上的一些玻璃材质是一块消失的,说明这两者消失的原因有一点是共通的,在刚开始发布地图时,经常出现咖啡系统的玻璃杯消失的情况,在修复时,我发现,咖啡系统以及大多数透明材质的RQ都是3000,当我将材质的RQ调整至2501,也就是他能调整到的最低的状态时,玻璃杯就再也没有出现消失的情况,而那些依旧保持RQ在3000的材质则还是会出现消失的情况。
所以猜测一:玩家的一些衣服,或者是头发等部件,和那些玻璃材质一样,在地图中的RQ是3000甚至更高,导致了有时候会消失的情况。
不过未知的点在于:是什么东西把玻璃这些RQ为3000的物体挡住了?这个东西的RQ是3000及以上的东西吗?但是摄像机,或者地图里没有这种全局的东西,至少我现在没有找到。而且还有一点,天空盒拖影的效果是同时发生的,但是天空盒的RQ目前在1000(甚至设置成0过),他理应是最最优先渲染的,作为背景的东西,那么为啥他会消失呢?而且它为什么不能测试时复现呢?
2.部分玩家模型的问题:
如果是这样,可能就没法解决了,猜测是,有可能一些玩家的模型有屏蔽的效果,就把别的玩家的部件给屏蔽掉了,这可能也解释的通为什么测试的时候不会出现这个问题,但在营业时似乎找不到这个人,而且大部分人的模型我是关闭的不加载的,但它依旧有时候会出现这种问题,这就非常的奇怪。关键最核心的点在于,如果是玩家模型的问题,那么理应这个玩家去别的地图时也会出现这个问题,但似乎只会在这个地图里出现。
但为什么把这个也保持了可能性是因为,有反馈说这个bug会在有玩家进出房间的时候可能会复现,而且确实似乎有一点关联,所以猜测是:有玩家进出房间的时候,整个地图被重新加载了一下,然后搞得这样(我真的不知道这方面的原理,对不起),或者说是上文的玩家的屏蔽罩的问题导致的。
3.Occ遮挡剔除的问题:
这个可能性可能可以排除,但有大佬提出了这个想法,所以列出来吧。
总而言之,是因为有些玩家的模型,或者有一个全局的特别大的东西,被当成了遮挡物,将这些被遮挡的东西剔除了,可能可以将这个理解为1和2的结合起来的问题。不过这样有很多疑点,就是为什么只剔除玩家的衣服?虽然有时甚至会出现玩家整个消失的情况,但剔除不应该将所有被遮挡物,包括玩家本体都剔除吗?
但的确早期的时候有反馈,说是将一些玩家的模型关掉,一些剔除的问题就似乎会解决(当时是为了解决地图玻璃材质会消失的问题的时候),不过按理来说,Occ不应该会将玩家也给当成遮挡物啊,玩家被当成被遮挡物倒是有可能的,那么遮挡物到底是谁呢?为什么会使玩家出现部件消失再出现的情况?而且和视角转动没什么特别大的关系呢?
不过后来我简单粗暴将地图所有的Occ区域删掉了再重新在营业时间测试,结果还是会有这种情况,所以我觉得这可能可以排除吧。
(休息了一下)
就在刚刚我朋友指出了问题所在,说我的unity版本是c1版的,导致一些脚本出了问题看,现在使用的是国际版的unity好像就没有这种问题了,可能是的,就是不知道下周周活的时候还会不会这样。
我在这里码了半天的字,结果最后一句说是unity版本错了,这感觉不太好受,就像是写一道数学题,算来算去算不对最后发现是最开始的未知数设错了一样。。。
字码都码了,可能会借这个贴讨论一些问题啥的。