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 环境。您可以将 Rigidbody2D
和 Colliders
附加到 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很有用。
我看了很多关于这个的问题,但我还是找不到我的问题是什么...... 我正在尝试在 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 环境。您可以将 Rigidbody2D
和 Colliders
附加到 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很有用。