Unity 2D C#在canvas上实例化精灵。 找不到什么问题

我读了很多关于这个的问题,但我仍然无法找到我的问题…我正试图在canvas上实例化一个预制件。 它由一个按钮和一个精灵组成。 按钮看起来没问题,但精灵在游戏中不可见(但在场景中可见)。

我做错了什么,但我看不出是什么……

[SerializeField] GameObject finishedLevel; private void Start() { finishedLevel = Instantiate(finishedLevel, transform.position, transform.rotation); finishedLevel.transform.SetParent(GameObject.FindGameObjectWithTag("Canvas").transform, false); } 

在此处输入图像描述

SpriteRenderer不能与Canvas一起使用。 你是混乱和误用两者。

SpriteRenderer用于显示2D对象,如2D动画角色或2D环境。 您可以将Rigidbody2DColliders附加到SpriteRenderer

Canvas仅用于UI显示。 它用于显示UI文本,按钮,滑块,滚动条和图像等内容。 您不应将Rigidbody2D和Colliders附加到它或其子对象。

通过上面的解释,您应该能够确定使用哪一个。 如果您只需要在Canvas下显示图像,请使用ImageRawImage组件,因为它们是UI系统的一部分。 这应该工作,但不要使SpriteRenderer成为Canvas的子项。 如果你必须使用SpriteRenderer ,将它作为自己的对象或在另一个对象下,但它应该在Canvas下。 你可能会发现Unity的UI 教程很有用。