我读了很多关于这个的问题,但是我仍然找不到我的问题是什么... 我正在尝试在画布上实例化一个预制件。它由一个按钮和一个精灵组成。该按钮看起来不错,但精灵在游戏中不可见(但在场景中可见)。
我做错了,但看不到...
[SerializeField] GameObject finishedLevel;
private void Start()
{
finishedLevel = Instantiate(finishedLevel, transform.position, transform.rotation);
finishedLevel.transform.SetParent(GameObject.FindGameObjectWithTag("Canvas").transform, false);
}
答案 0 :(得分:5)
SpriteRenderer不能与Canvas一起使用。您正在混淆和误用两者。
SpriteRenderer
用于显示2D对象,例如2D动画角色或2D环境。您可以将Rigidbody2D
和Colliders
附加到SpriteRenderer
。
画布仅用于UI显示。它用于显示诸如UI文本,按钮,滑块,滚动条和图像之类的内容。您不应将Rigidbody2D和Colliders附加到其或其子对象。
通过上面的解释,您应该能够确定要使用哪个。如果您只需要在Canvas下显示图像,请使用Image
或RawImage
组件,因为它们是UI系统的一部分。这应该可以,但不要将SpriteRenderer
设为Canvas的子代。如果必须使用SpriteRenderer
,请将其设为自己的对象或在另一个对象下,但不应置于Canvas下。您可能会发现Unity的UI tutorial很有用。