C# 如何根据统一的不同屏幕分辨率调整精灵的大小?
我正在做一个2d项目。我在项目中使用不同像素的不同精灵。每个精灵都有不同的高度和宽度,而不是正方形的边。 例如,查看项目中的精灵设置。类似地,也有许多类似的精灵。此浅绿色背景用作足球场。它在ipad视图(2732 x 2048纵向模式)中看起来正常。 但如果我将其更改为iphone6视图(750 x 1334 Potrait模式)。精灵不会调整大小。仍然看起来很大。深绿色部分看不见。我添加了其他精灵,它们也不会改变大小。下图所示C# 如何根据统一的不同屏幕分辨率调整精灵的大小?,c#,unity3d,sprite,C#,Unity3d,Sprite,我正在做一个2d项目。我在项目中使用不同像素的不同精灵。每个精灵都有不同的高度和宽度,而不是正方形的边。 例如,查看项目中的精灵设置。类似地,也有许多类似的精灵。此浅绿色背景用作足球场。它在ipad视图(2732 x 2048纵向模式)中看起来正常。 但如果我将其更改为iphone6视图(750 x 1334 Potrait模式)。精灵不会调整大小。仍然看起来很大。深绿色部分看不见。我添加了其他精灵,它们也不会改变大小。下图所示 public static float GetScreenToW
public static float GetScreenToWorldWidth
{
get
{
Vector2 topRightCorner = new Vector2(1, 1);
Vector2 edgeVector = Camera.main.ViewportToWorldPoint(topRightCorner);
var width = edgeVector.x * 2;
return width;
}
}
我得到了一个获取屏幕大小的代码,如下所示
public static float GetScreenToWorldWidth
{
get
{
Vector2 topRightCorner = new Vector2(1, 1);
Vector2 edgeVector = Camera.main.ViewportToWorldPoint(topRightCorner);
var width = edgeVector.x * 2;
return width;
}
}
如果我有屏幕宽度,如何利用它将精灵调整到不同的屏幕分辨率。对于此分辨率(2732 x 2048肖像模式ipad pro),我不需要更改精灵的大小。但对于所有其他屏幕分辨率,都会相应更改。您可以在正交相机上执行类似操作:
public class MatchCameraToFit : MonoBehaviour
{
public int Height;
public int Width;
public void Awake()
{
MatchCamera();
}
private void OnValidate()
{
MatchCamera();
}
private void MatchCamera()
{
var cam = GetComponent<Camera>();
if (cam == null) return;
var position = cam.ViewportToWorldPoint(Vector3.zero);
var up = cam.ViewportToWorldPoint(Vector3.up) - position;
var right = cam.ViewportToWorldPoint(Vector3.right) - position;
var matchSize = Mathf.Max(Height, Width * up.magnitude / right.magnitude);
cam.orthographicSize = matchSize;
}
}
public类MatchCameraToFit:MonoBehavior
{
公众内部高度;
公共整数宽度;
公共图书馆
{
匹配摄像机();
}
私有void OnValidate()
{
匹配摄像机();
}
专用照相机()
{
var cam=GetComponent();
if(cam==null)返回;
变量位置=cam.ViewportToWorldPoint(矢量3.0);
var up=cam.ViewportToWorldPoint(矢量3.up)-位置;
var right=cam.ViewportToWorldPoint(矢量3.right)-位置;
var matchSize=Mathf.Max(高度、宽度*up.MARGENT/右.MARGENT);
凸轮。正交尺寸=匹配尺寸;
}
}
此脚本将调整相机的大小,使世界大小的对象(宽度、高度)始终与相机在水平或垂直方向(取决于哪个方向不适合)完全匹配。您可以在正交相机上执行类似操作:
public class MatchCameraToFit : MonoBehaviour
{
public int Height;
public int Width;
public void Awake()
{
MatchCamera();
}
private void OnValidate()
{
MatchCamera();
}
private void MatchCamera()
{
var cam = GetComponent<Camera>();
if (cam == null) return;
var position = cam.ViewportToWorldPoint(Vector3.zero);
var up = cam.ViewportToWorldPoint(Vector3.up) - position;
var right = cam.ViewportToWorldPoint(Vector3.right) - position;
var matchSize = Mathf.Max(Height, Width * up.magnitude / right.magnitude);
cam.orthographicSize = matchSize;
}
}
public类MatchCameraToFit:MonoBehavior
{
公众内部高度;
公共整数宽度;
公共图书馆
{
匹配摄像机();
}
私有void OnValidate()
{
匹配摄像机();
}
专用照相机()
{
var cam=GetComponent();
if(cam==null)返回;
变量位置=cam.ViewportToWorldPoint(矢量3.0);
var up=cam.ViewportToWorldPoint(矢量3.up)-位置;
var right=cam.ViewportToWorldPoint(矢量3.right)-位置;
var matchSize=Mathf.Max(高度、宽度*up.MARGENT/右.MARGENT);
凸轮。正交尺寸=匹配尺寸;
}
}
此脚本将调整相机的大小,使世界大小的对象
(宽度、高度)
始终与相机水平或垂直匹配(取决于哪个方向不适合)。这是配置相机的问题。你在使用正交投影吗?(请注意,对于正交投影,您可以编辑的参数是“大小”,它表示相机可以垂直看到的世界单位数。)是投影-主相机的正交。这是一个配置相机的问题。你在使用正交投影吗?(请注意,对于正交投影,可以编辑的参数是“大小”,它表示相机可以垂直看到的世界单位数。)是投影-主相机的正交。