2. 遮挡剔除如何影响物体
遮挡剔除分别对待静态对象(如地图)遮挡剔除对静态对象(如地图元素)和动态对象(如玩家和拾取物)。如玩家和可拾取物品)的处理方式有所不同。
- 静态对象
可以隐藏也可以被隐藏。既可以隐藏其他物体,也可以被其他物体隐藏。(你不总是希望静态对象同时做这两件事。在某些情况下,你可能不希望静态对象同时具备这两种特性。)它们将被烘焙进数据中,并且在运行时不能改变。这些对象的遮挡信息会在运行前被预烘焙,而在运行时无法更改。 - 动态对象
不能隐藏它们背后的物体,但会根据一个粗略的计算被隐藏,这个计算判断它们是否在静态物体后面。则无法隐藏它们背后的物体,但它们可以根据一种粗略的特殊计算而被其他物体隐藏,这种计算会判断它们是否位于某个静态对象之后。
Unity使用对象上的静态标志来确定遮挡如何影响它们。遮挡考虑三种不同的情况。Unity 通过检查对象上的静态标志来确定遮挡剔除将会如何影响它们。遮挡剔除考虑了以下三种不同的情况:
- 静态遮挡物。
唯一可以遮挡的是不移动的静态物体—唯一能够遮挡其他物体的静态对象——特别是网格渲染器和地形。如果它们被标记为遮挡静态,如果它们被标记为遮挡物,则它们后面的物体会被隐藏。它们将被烘焙进遮挡数据中。这些遮挡信息会在运行前被预先烘焙。 - 静态被遮挡物。
这指定了会被隐藏的静态物体。这指的是那些可以被隐藏的静态对象。被遮挡物可以是任何带有渲染器的物体,只要它不移动。只要它在运行过程中不移动。 - 动态被遮挡物。
这涵盖了场景中的其他任何东西。这包括了场景中的其他所有物体。如果启用了“动态遮挡”属性,那么它可以被静态遮挡物使用烘焙数据隐藏。那么这些物体可以被静态遮挡物根据预先计算的遮挡信息隐藏。
动态遮挡不如静态遮挡精确。需要注意的是,动态遮挡的效果通常不如静态遮挡精确。实际上,只有大型的、实心的物体才会隐藏动态对象。只有那些大型的、实心的物体才可能有效地隐藏动态对象。