【问题标题】:How do I change the sorting layer in Unity programmatically?如何以编程方式更改 Unity 中的排序层?
【发布时间】:2019-10-30 07:34:13
【问题描述】:

我正在制作一个 2D 游戏。我很困惑,因为有两种类型的图层。图层和“排序图层”。似乎只有“排序层”很重要。

我在每一层都有很多对象,我想以编程方式设置“排序层”。我试过了

item.layer = LayerMask.NameToLayer("IslandLayer");

但这仅设置图层而不是“排序图层”。有没有办法以编程方式设置“排序层”?

【问题讨论】:

  • 排序层在sprite renderer中。
  • 层和排序层是不同的类别。对于您的情况,您只需设置排序层名称
  • GetComponent().sortingLayer = "sortingLayerName" 或者如果你使用 Image 那么你需要使用 Canvas 来改变它

标签: sorting unity3d layer


【解决方案1】:

您更改的是GameObject.layer,它是“其他”Layer,而不是SortingLayer


排序层在相应的Renderer 组件中发生了相当大的变化,例如通过Renderer.sortingLayerID 使用SortingLayer.NameToID

item.GetComponent<Renderer>().sortingLayerID = SortingLayer.NameToID("NameOfTheSortingLayer");

【讨论】:

  • 不需要GetComponent&lt;SpriteRenderer&gt;()吗?
  • @trojanfoe Nope .. 正如您在链接中看到的,它是通用 Renderer 基类的属性。如果您查看SpriteRenderer 的 API,您可以看到它列在“继承的属性”下;)
猜你喜欢
  • 1970-01-01
  • 2019-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-14
相关资源
最近更新 更多