本文最初发表在我的博客中: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
它使我保持动力。 并且将帮助我写越来越多的信息性和教育性博客。