Unity C#:如何在屏幕位置创建游戏对象?

Unity C#: How can I create a GameObject at screen position?

与delphi相比,团结是如此困难。在 delphi 你可以说:

Rectangle1.Position.Y := 0;
Rectangle1.Position.X := screen.Width - Rectangle1.Width;

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

我正在使用 Unity2D

编辑:这是我要创建的对象的检查器:

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

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

编辑更清楚:

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

我会用 Camera.ScreenToWorldPoint.

正在引用文档:

Camera.ScreenToWorldPoint(position: Vector3) Transforms position from screen space into world space.

Screenspace is defined in pixels. The bottom-left of the screen is (0,0); the right-top is (pixelWidth,pixelHeight). The z position is in world units from the camera.

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

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);

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

注意:您可以使用 Bounds.size 获取宽度或高度(可用于渲染器和 SpriteRenderer 的结构)

我给你的另一个建议是寻找 Unity UI 系统(在 4.6 中发布:许多人提到它作为 UI 4.6) :

  • 您可以找到很多关于 Canvas 和其他 UI 组件的信息 here
  • Here 您会找到开始使用它的基本教程。

想法是您可以将对象锚定在 Canvas 中:在您的情况下,您只需锚定 Image 到所需的角,然后将其偏移 width/height 的一半(您也可以将对象轴心点设置到右角并将其锚定到匹配的角而无需偏移)。