在Unity中按比例缩放精灵以达到屏幕的分辨率-第2部分

本文最初发表在我的博客中:http://knowledgescoops.com/unity/scaling-sprites-to-screens-resolution-part-2/

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

本文是第1部分的续篇。在继续本文之前,请先阅读本文章。

在第1部分中,我们学习了如何根据屏幕的分辨率缩放Sprite。 我们将深入研究以上文章,以涵盖本文的高级概念。

在本文中,我们将使用非正方形的精灵,以使其完全适合屏幕的宽度/高度。 我们还将看到如何将多个精灵并排放置在屏幕边缘内。

在示例中,请确保您的相机处于正交视图中,否则示例将不起作用

在本节中,我们将在屏幕中间创建一个水平分隔线。 我们将从以下256px宽和5px高的矩形图像开始。

导入图像并将“ 像素单位”值设置为256 ,然后单击“ 应用”

现在,在游戏视图中导入分隔线,并通过选择精灵并单击“重置变换”按钮来重置变换。

当“像素每单位”值为256时 ,子画面的宽度为1个世界单位 ,我们将使用上一篇文章中使用的概念将此子画面缩放为屏幕的宽度。

创建一个名为ScaleDivider.cs的新脚本, 然后将其附加到游戏视图中导入的水平分隔线,然后用以下代码替换脚本的内容。

 使用System.Collections; 
使用System.Collections.Generic;
使用UnityEngine;公共类ScaleDivider:MonoBehaviour
{
//使用它进行初始化
无效Start()
{
float screenWidth = ScreenSize.GetScreenToWorldWidth; transform.localScale = Vector3.one * screenWidth;
}
}

现在点击播放按钮,并检查分隔线将如何随着屏幕的宽度缩放。

现在,我们将并排安装两个精灵,水平地恰好适合屏幕宽度的一半,以使一半的宽度被精灵1覆盖,另一半被精灵2覆盖。

考虑以下两个精灵:

将精灵的“ 像素单位”值更新为以下值后,将其导入场景视图中:

  • 对于红色雪碧, 256
  • 对于绿色雪碧, 512

此时,项目层次结构将如下所示:

游戏视图中的子画面可能看起来像

否则您可能只会看到红色的精灵,而绿色的精灵则隐藏在红色的精灵之后。

现在重置两个精灵的变换。

现在创建一个名为SpriteScaler.cs的脚本,并将其附加到Main Camera

SpriteScaler.cs脚本将同时引用两个Sprite ,并且将按比例调整和放置Sprite ,使其完全适合屏幕的宽度。

现在,将SpriteScaler.cs文件中的代码替换为以下代码:

 使用System.Collections; 
使用System.Collections.Generic;
使用UnityEngine;公共类SpriteScaler:MonoBehaviour
{
公共SpriteRenderer RedSprite,GreenSprite;
浮动screenWidth; //使用它进行初始化
无效Start()
{
screenWidth = ScreenSize.GetScreenToWorldWidth; //将红色精灵的比例更新为屏幕宽度的一半
RedSprite.transform.localScale = new Vector3(screenWidth / 2,screenWidth / 2,screenWidth / 2); //更新红色精灵的位置以适合屏幕的左半部分
RedSprite.transform.position = new Vector3(-(screenWidth / 2)/ 2,RedSprite.transform.position.y,RedSprite.transform.position.z);
//将绿色精灵的缩放比例更新为屏幕宽度的一半
GreenSprite.transform.localScale = new Vector3(screenWidth / 2,screenWidth / 2,screenWidth / 2); //更新绿色精灵的位置以适合屏幕的右半部分
GreenSprite.transform.position = new Vector3((screenWidth / 2)/ 2,GreenSprite.transform.position.y,GreenSprite.transform.position.z);
}
}

现在,在ScriptScaler脚本中更新精灵的参考。

按下播放按钮,您将在游戏视图中并排看到精灵。

Sprite缩放器脚本以世界单位计算屏幕的宽度。 假设屏幕的宽度6个单位,以便适合两个精灵,每个精灵的宽度必须为3个单位。

然后,代码将精灵分别缩放为3个单位

现在我们必须将精灵并排放置。 这是简单的向量数学。 我们有两个宽度为3个单位的精灵,必须将它们并排放置。 有两个精灵,因此假设摄影机在x = 0时 ,这些精灵将在原点彼此接触。因此,一个精灵的中心位于x = -1.5即ScreenWidth / 4 ),而另一个精灵的中心位于x = -1.5将在x = 1.5,并且脚本仅将两个精灵放置在以下位置。

因此,可以将精灵并排放置,使其完全适合屏幕宽度。

给我买一杯咖啡@ paypal.me/KunalTandon94

它使我保持动力。 并且将帮助我写越来越多的信息性和教育性博客。