按图层排序和按排序组效果不佳

问题描述

我向不同的对象添加了排序组,并且运行得很好,但是我在使用围栏时遇到了很多问题(看图片),我试图添加排序组,但是运行不正常,所以我尝试修改Order在带有脚本的图层中,我遇到了相同的问题,我尝试过的另一种方法是将图层手动排序,并且只能在前面或后台运行。

我花了很多时间思考这个问题并测试了不同的东西,但我不知道问题和解决方案是什么。

我需要社区的帮助来了解这个问题,可能是我不认识的精灵,我真的很困惑和不安。

脚本非常简单且效率低下(仅用于测试): SpriteRenderer [] rendererFernce;

void Awake()    
{    
     rendererFernce = FindobjectsOfType<SpriteRenderer>();
}

private void FixedUpdate()
{
     foreach (SpriteRenderer renderer in rendererFernce)
     {
          renderer.sortingOrder = (int)(renderer.transform.position.y * -100);
     }
}

Wrong Order in Layer

解决方法

这可能有不同的原因。

  1. 围栏实际上是3d模型:如果3d模型更靠近摄影机,则会显示在其上方。
  2. 变换的中心不在您认为的位置:围栏非常宽,其不同部分在y轴上的位置不同
  3. 您要更改orderInLayer,但不能更改排序层:层的优先级高于orderInLayer

您可以尝试更改此设置,然后查看它是否有效而不是自己实现: 编辑>投影设置>图形>透明度排序轴 将其设置为(0,1,0)

您可以找到有关排序here的更多信息。