C# 世界领先,但位置仍然不同

C# 世界领先,但位置仍然不同,c#,unity3d,C#,Unity3d,所以我开始使用WorldToScreenPoint,但问题是不同屏幕大小的对象不一样:( 这是我的密码 public virtual void Move() { Vector2 buttonFirst = thisCam.WorldToScreenPoint(gameButtons[0].transform.position); buttonFirst.x = 316.5f; //242 buttonFirst.y = 111f;

所以我开始使用WorldToScreenPoint,但问题是不同屏幕大小的对象不一样:(

这是我的密码

    public virtual void Move()
    {
        Vector2 buttonFirst = thisCam.WorldToScreenPoint(gameButtons[0].transform.position);
        buttonFirst.x = 316.5f;  //242
        buttonFirst.y = 111f;
        gameButtons[0].transform.position = buttonFirst;
}
这是输出

不同屏幕尺寸上的对象不同

当然,大小不同所以位置不同

如果需要返回位置保持不变,请使用,它始终返回一个介于(0,0)到(1,1)之间的值

不同屏幕尺寸上的对象不同

当然,大小不同所以位置不同


如果您需要返回位置保持不变,请使用,它总是返回一个介于(0,0)到(1,1)之间的值。

据我所知,您需要使用ScreenToWorldPoint


检查此项,因为我知道您需要使用Screen ToWorldPoint


检查此项

对不起,从您的图像中,我不了解应该发生什么和出现什么问题。请注意,不同的分辨率会导致不同的屏幕坐标,我希望它位于不同屏幕大小的相同位置:对不起,从您的图像中,我不了解应该发生什么和出现什么问题。请注意,不同的分辨率会导致不同的屏幕坐标ent分辨率导致不同的屏幕坐标我希望它在不同的屏幕尺寸上处于相同的位置:我的语法正确吗?我的意思是向量2=buttonFirst=thisCam.WorldToScreenPoint(gameButton[0].transform.position);???那么我只需要将其更改为viewport?viewport意味着相机区域大小始终为1.0x1.0,在获得它之后,您仍然需要使用画布/屏幕大小进行多次转换。@Nicolerasga,事实上,您发布的代码几乎是奇怪的,您可以使用
WorldToScreenPoint
来转换位置,但接下来您需要使用一个固定的位置。它使
WorldToScreenPoint
调用无效。我的语法正确吗?我的意思是向量2=buttonFirst=thisCam.WorldToScreenPoint(gameButton[0].transform.position);???那么我只需要将其更改为viewport?viewport意味着相机区域大小始终为1.0x1.0,在获得它之后,您仍然需要使用画布/屏幕大小进行多次转换。@Nicolerasga,事实上,您发布的代码几乎是奇怪的,您可以使用
WorldToScreenPoint
来转换位置,但接下来您需要使用一个固定的位置。它使
WorldToScreenPoint
调用无效。这个答案与有什么不同?这个答案与有什么不同?