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

Unity 2D C# Instantiate sprite on canvas. Can't find what's wrong

我看了很多关于这个的问题,但我还是找不到我的问题是什么...... 我正在尝试在 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下显示图像,使用Image, or RawImage component since they are part of the UI system. This should work but do not make SpriteRenderer a child of a Canvas. If you have to use SpriteRenderer, make it its own object or under another object but it should not be under a Canvas. You may find Unity's UI tutorial很有用。