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

6

与Delphi相比,Unity更加困难。在Delphi中,你只需这样说:

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

这将只是将矩形的位置更改为屏幕右上角。但在Unity中,有很多需要学习的内容,我不知道从哪里开始。有人能简化一下吗?我只想在智能手机和电脑的屏幕右上角创建一个对象。
我正在使用Unity2D。
编辑:这是我想要创建的对象的检查器: enter image description here 这是我用来在屏幕上创建对象的代码: Instantiate(objectName, new Vector3(0, 0, 0), Quaternion.identity); 编辑以更清晰明确: enter image description here

1
你在说这里是一个3D立方体吗?还是某种GUI元素? - byxor
1
用什么语言?C#还是Unityscript?更新标签,加上你尝试过的内容。 - Programmer
1
抱歉,您的问题太过宽泛。1.请解释您正在做什么。2.您需要将该代码添加到您的问题中,以让人们知道您已经尝试了什么。您还需要解释预制图像是SpriteRenderer还是UI组件。如果您不确定,请上传实例化的预制体附加了哪些组件的截图。这将有助于我们回答您的问题。您还应该包括关于您正在使用的编程语言的标签。标题也是错误的。最后,请告诉我们您得到了什么结果以及您期望得到什么结果。 - Programmer
你能解释一下那个图像是用来做什么的吗?我认为我可能有一个更好的解决方案。 - Programmer
这张图片是地图的一部分,玩家可以在这里建造轨道。当我把位置x=0和y=0时,瓦片将被创建在屏幕中心。这张图片会更好的说明问题:https://scontent.fmgf1-2.fna.fbcdn.net/v/t34.0-12/15841254_1542948989063619_986763702_n.png?oh=101c38dbe6610518bc1a99bbac4bca91&oe=586BF885这就是为什么我想知道如何将图片放在屏幕左上角。如果我只放置一个瓦片,我可以基于它的位置建造其他所有瓦片,因为我知道它的高度/宽度=0.9f。 - Diego Bittencourt
显示剩余5条评论
2个回答

7
相机的屏幕坐标与世界坐标不同(一个有2个维度,另一个有3个维度,一个使用像素,另一个使用Unity单位)。
我会使用Camera.ScreenToWorldPoint
引用文档:
Camera.ScreenToWorldPoint(position: Vector3) 将位置从屏幕空间转换为世界空间。
屏幕空间以像素为单位定义。屏幕的左下角是(0,0);右上角是(pixelWidth,pixelHeight)。z位置是相对于相机的世界单位。
因此,要将您的矩形放在角落里,类似于您描述的方式(使用伪代码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是世界坐标系中的角落(这很重要)。我将其偏移了宽度/2和高度/2,假设您的矩形枢轴在中间。

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


2
另一个建议是,因为你似乎只使用2D(根据你的其他帖子),你可以查找Unity UI系统(在4.6版本中发布:许多人将其称为UI 4.6):
- 您可以在此处找到有关画布和其他UI组件的大量信息:这里。 - 在这里,您将找到入门基础教程。
思路是您可以将对象锚定在Canvas内:在您的情况下,您只需将图像锚定到所需角落,然后偏移其宽度/高度的一半即可(您还可以将对象枢轴点设置为右侧角落,并将其锚定到相匹配的角落而无需进行偏移)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接