Unity C#:如何在屏幕位置创建GameObject?

Die*_*urt 5 c# screen unity-game-engine

与delphi相比,Unity非常困难.在delphi中你可以说:

Rectangle1.Position.Y := 0;
Rectangle1.Position.X := screen.Width - Rectangle1.Width;
Run Code Online (Sandbox Code Playgroud)

这只会将矩形的位置更改为屏幕的右上角.但在Unity中,要做到这一点还有很多东西需要学习,我不知道从哪里开始.有人可以向我简化这个吗?我只想在屏幕的右上角创建一个对象,包括智能手机和个人电脑.

我正在使用Unity2D

编辑:这是我要创建的对象的Inspector: 在此输入图像描述

这是我用来在屏幕上创建对象的代码:

Instantiate(objectName, new Vector3(0, 0, 0), Quaternion.identity);

编辑更清楚: 在此输入图像描述

小智 6

相机的屏幕坐标与世界坐标不同(一个有 2 个维度,另一个有 3 个。一个使用像素和其他 Unity 单位)。

我会使用Camera.ScreenToWorldPoint

引用文档:

Camera.ScreenToWorldPoint(position: Vector3) 将位置从屏幕空间转换为世界空间。

屏幕空间以像素为单位定义。屏幕左下角是(0,0);右上角是 (pixelWidth,pixelHeight)。z 位置以相机的世界单位为单位。

因此,以类似于您所描述的方式(使用伪代码 C# 混合)将您的 Rectangle 放在角落:

Vector3 p = camera.ScreenToWorldPoint(new Vector3(0, Screen.height, HowFarFromCamera));
Rectangle1.position = new Vector3(p.x + Rectangle1.Width/2,p.y - Rectangle1.Height/2,p.z);
Run Code Online (Sandbox Code Playgroud)

p是世界坐标中的角点(这很重要)。假设矩形的枢轴在中间,我移动了 Width/2 和 Height/2。

注意:您可以使用Bounds.size来获取宽度或高度(一个可用于 Renderer 和 SpriteRenderer 的结构)