本文最初发表在我的博客http://www.knowledgescoops.com

在开发2D游戏时,存在一些场景,我们希望子画面根据其当前宽度适合屏幕,以使子画面精确地缩放以接触屏幕的左右边缘。
Unity没有基于屏幕宽度缩放子画面的本机支持。 但是,此问题有一种快速简便的解决方法。
在Unity中,子画面位于世界坐标中。 他们不了解屏幕像素的位置。 为了更新子画面的位置或比例,我们需要将屏幕点转换为世界坐标。
我们将使用相同的原理来获得世界坐标系下屏幕的宽度和高度。
我创建了一个名为ScreenSize.cs的简单脚本,该脚本定义了两个静态吸气剂,可用于获取正交摄影机的屏幕宽度和高度
注意:本文仅说明了正交视图的缩放比例精灵。 它不适用于Perspective相机视图。
使用UnityEngine;公共类ScreenSize
{
公共静态浮动GetScreenToWorldHeight
{
得到
{
Vector2 topRightCorner =新的Vector2(1,1);
Vector2 edgeVector = Camera.main.ViewportToWorldPoint(topRightCorner); var height = edgeVector.y * 2;
返回高度;
}
} public static float GetScreenToWorldWidth
{
得到
{
Vector2 topRightCorner =新的Vector2(1,1);
Vector2 edgeVector = Camera.main.ViewportToWorldPoint(topRightCorner); var width = edgeVector.x * 2;
返回宽度
}
}
}
该脚本使用视口到世界点的计算来获得屏幕的世界单位高度。
现在,我们以世界单位为单位设置了屏幕宽度,现在我们将更改精灵的比例以适合屏幕宽度或高度。
在Unity中导入精灵时,请确保将精灵的“ 像素单位”值设置为精灵本机大小。
例如,假设我们有一个大小为256 x 256像素的精灵。 现在,当我们将精灵导入项目时,请确保将精灵的“ 像素单位”值设置为256。
这样,在单位场景中使用时,子画面将为Vector1(1,1,1)比例的1个世界单位x 1个世界单位 。
考虑一下,我们必须导入大小为256×256像素的精灵。

当我们在Unity中导入该精灵时,我们可以单击该精灵以更改该精灵的“ 像素单位”值。 导入时,默认值设置为100。
要更改“单位像素数”值,请在Unity的“项目”视图中选择精灵,然后将“ 单位像素数 ”值更改为256。

然后单击底部的“ 应用”按钮进行确认。
将精灵导入到场景视图中,并将其放置在(0,0,0)上 ,缩放比例为(1、1、1)
现在创建一个名为Scaler.cs的新C#脚本,并将其附加到场景视图中的精灵上。

在Scaler.cs的Start()方法中,编写以下代码行。
无效Start()
{
浮动宽度= ScreenSize.GetScreenToWorldWidth;
transform.localScale = Vector3.one *宽度;
}
现在单击“ 播放”按钮 ,查看精灵是否会缩放到屏幕宽度的宽度。

1.您也可以尝试将精灵缩放到屏幕的高度。 您也可以对非正方形的精灵进行相同的操作,并将其宽度/高度与屏幕的宽度或高度匹配。
2.您还可以将宽度除以2,以获得屏幕宽度的50%,并且通过一些简单的数学运算,可以并排放置两个精灵。
在下一篇文章中,我将详细介绍所有这些做法,以缩放多个精灵,并排对齐它们。
在这里找到下一篇文章
感谢您的阅读。
给我买一杯咖啡@ paypal.me/KunalTandon94
它使我保持动力。 并且将帮助我写越来越多的信息性和教育性博客。