unity3d 在Unity中对齐多个对象的最有效方法(有或没有代码)?

ih99xse1  于 2023-02-09  发布在  其他
关注(0)|答案(3)|浏览(263)

例如,使用void Update连续对齐它们的位置,如

first.transform.position = second.transform.position;

似乎相当低效,在情况下,你不能真正使一个孩子,例如:尝试将对象与文本UI对齐

q8l4jmvw

q8l4jmvw1#

您可以将该对象指定为firstGameObject的子对象,这样,当您移动主对象时,它将始终相应地移动。

second.transform.SetParent(first.transform);

请记住,在将second对象添加为子对象时,仍需要将其居中一次。

o2rvlv0m

o2rvlv0m2#

对于文本元素,有两个选项可以让它们跟随世界中的特定游戏对象:
1.可以创建“画布”,并将“渲染模式”设定为World Space,如下所示:

1.您可以使用TextMesh Pro(现在是免费的)及其TextMeshPro组件:

我宁愿使用第二种解决方案,因为你不必创建一个画布,以适应您的简单组件TextMesh Pro是真正伟大的任何大小的字体,因为它使用Signed Distance Field Fonts
但是如果你想让文本始终面对玩家的摄像头,你就必须实现一个Billboard,它可能会和你最初的脚本产生同样的效果

public class Billboard : MonoBehaviour {
    private void Update() { transform.forward = Camera.main.transform.forward; }
}

实际上,还有第三种解决方案,但需要购买一个名为UnityConstraints的扩展,这是我经常使用的一个优秀的扩展,它可以创建任何类型的约束:广告牌,跟随,看,等等,但取决于你的游戏,这可能是一个压倒性的解决方案。

8fq7wneg

8fq7wneg3#

将你想要对齐的游戏对象分组到一个公共游戏对象下,并在检查器中添加一个 * 水平布局组 * 组件。使用子对齐选项和间距来对齐对象。
参考:https://needoneapp.medium.com/how-to-align-game-objects-in-unity-735f93d5b74

相关问题