如何在Unity中以不同的分辨率正确放置对象?

问题描述 投票:0回答:2

我正在编写一个Android游戏,因为我希望它以纵向模式播放,所以我希望对象的比例在屏幕宽度方面保持相同。我想我可以用以下代码做到这一点:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Android;

public class PowerPosition : MonoBehaviour
{
    void Start()
    {
        float w = Screen.width;
        float h = Screen.height;
        Vector2 position = (Camera.main.ScreenToWorldPoint(new Vector2(w * 0.9f, w * 0.53f)));
        float ratio = (w / h) / (9f / 16f);
        gameObject.transform.position = new Vector3(position.x * ratio, position.y * ratio, 0);
        gameObject.transform.localScale = new Vector3(gameObject.transform.localScale.x * ratio, gameObject.transform.localScale.y * ratio, gameObject.transform.localScale.z * ratio);

问题在于定位。它发生了变化,彼此之间应该有相对距离的物体被弄乱了。应该一个出现在另一个之上的对象变得太近且重叠。“位置*比率”是一个测试,无论有没有测试都无法正常工作。例如,在这里我必须要与屏幕右下端保持一致距离的项目。

您该如何解决?

c# android unity3d resolution
2个回答
0
投票

您可以使用百分比计算作为方向基础进行缩放。这表示关系的可伸缩性。

您脑海中有一个虚假的朋友。显示器每英寸具有不同的点。会说,此值可能包含在您的计算中。


0
投票

我将尝试以不同的方式解释它。

设备的屏幕分辨率为X轴,Y轴,颜色深度和ppi / dpi。

您可以购买具有6“或32”的1920x1080xColors的显示器。对于大型显示​​器,与小型显示器相比,像素密度较低。

设备本身只有在具有方向传感器的情况下才会更改X和Y。

风景1920x1080变为肖像1080x1920。

[当我拿iPhone时,显示屏的像素密度比便宜的Android设备高。

在数学中,有一个著名的三句适合计算比例。

您可以从系统中查询像素密度的值。您可以使用此值来重新缩放按钮。

我主要使用水平居中。所以我保持对称。

© www.soinside.com 2019 - 2024. All rights reserved.