在 Unity 中调用我的背景 Sprite 来填充屏幕

Calling my background Sprite to fill screen in Unity

我知道网上有很多这样的问题,但我还没有找到解决问题的方法...

我正在尝试制作填满屏幕的背景图片。在我的游戏中,有一个 canvas 并且在这个 Canvas 里面有一个附加了 sprite 组件的 gameObject。

许多解决方案都包含此代码:

void Awake()
{
    SpriteRenderer sr = GetComponent<SpriteRenderer>();
    if (sr == null) return;

    transform.localScale = new Vector3(1, 1, 1);

    float width = sr.sprite.bounds.size.x;
    float height = sr.sprite.bounds.size.y;

    double variable = Camera.main.orthographicSize * 4.0;
    float worldScreenHeight = (float)variable;
    float worldScreenWidth = worldScreenHeight / Screen.height * Screen.width;

    transform.localScale = new Vector2(worldScreenWidth / width, worldScreenHeight / height);
}

但我试过了,它让游戏对象变得很小。 有什么想法吗?

首先,select 你的 Canvas 游戏对象。在 Canvas Scaler 组件中,将 UI Scale Mode 设置为 Constant Pixel Size

请注意,当您将 UI Scale Mode 设置为 Scale With Screen Size 时,您的图像会根据屏幕宽度或高度发生变化。

此外,请注意,您的图片应位于其父图片的中央。将图像的变换位置和旋转设置为:

现在将您的代码更改为:

void Awake()
{
    SpriteRenderer sr = GetComponent<SpriteRenderer>();
    if (sr == null) return;

    transform.localScale = new Vector3(1, 1, 1);

    float width = sr.sprite.bounds.size.x;
    float height = sr.sprite.bounds.size.y;

    transform.localScale = new Vector2(Screen.width / width, Screen.height / height);
}

希望对你有帮助。