Unity 2D C#在画布上实例化精灵.找不到什么错

Fer*_*osa 2 c# instantiation sprite unity-game-engine

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

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

 [SerializeField] GameObject finishedLevel;

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

 }
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Pro*_*mer 6

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

SpriteRenderer用于显示2D对象,如2D动画角色或2D环境.您可以将Rigidbody2DCollidersSpriteRenderer.

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

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