在 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);
}
希望对你有帮助。
我知道网上有很多这样的问题,但我还没有找到解决问题的方法...
我正在尝试制作填满屏幕的背景图片。在我的游戏中,有一个 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);
}
希望对你有帮助。