例如,使用void Update连续对齐它们的位置,如
first.transform.position = second.transform.position;
似乎相当低效,在情况下,你不能真正使一个孩子,例如:尝试将对象与文本UI对齐
q8l4jmvw1#
您可以将该对象指定为firstGameObject的子对象,这样,当您移动主对象时,它将始终相应地移动。
first
GameObject
second.transform.SetParent(first.transform);
请记住,在将second对象添加为子对象时,仍需要将其居中一次。
second
o2rvlv0m2#
对于文本元素,有两个选项可以让它们跟随世界中的特定游戏对象:1.可以创建“画布”,并将“渲染模式”设定为World Space,如下所示:
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的扩展,这是我经常使用的一个优秀的扩展,它可以创建任何类型的约束:广告牌,跟随,看,等等,但取决于你的游戏,这可能是一个压倒性的解决方案。
8fq7wneg3#
将你想要对齐的游戏对象分组到一个公共游戏对象下,并在检查器中添加一个 * 水平布局组 * 组件。使用子对齐选项和间距来对齐对象。参考:https://needoneapp.medium.com/how-to-align-game-objects-in-unity-735f93d5b74
3条答案
按热度按时间q8l4jmvw1#
您可以将该对象指定为
first
GameObject
的子对象,这样,当您移动主对象时,它将始终相应地移动。请记住,在将
second
对象添加为子对象时,仍需要将其居中一次。o2rvlv0m2#
对于文本元素,有两个选项可以让它们跟随世界中的特定游戏对象:
1.可以创建“画布”,并将“渲染模式”设定为
World Space
,如下所示:1.您可以使用TextMesh Pro(现在是免费的)及其TextMeshPro组件:
我宁愿使用第二种解决方案,因为你不必创建一个画布,以适应您的简单组件TextMesh Pro是真正伟大的任何大小的字体,因为它使用Signed Distance Field Fonts。
但是如果你想让文本始终面对玩家的摄像头,你就必须实现一个Billboard,它可能会和你最初的脚本产生同样的效果
实际上,还有第三种解决方案,但需要购买一个名为UnityConstraints的扩展,这是我经常使用的一个优秀的扩展,它可以创建任何类型的约束:广告牌,跟随,看,等等,但取决于你的游戏,这可能是一个压倒性的解决方案。
8fq7wneg3#
将你想要对齐的游戏对象分组到一个公共游戏对象下,并在检查器中添加一个 * 水平布局组 * 组件。使用子对齐选项和间距来对齐对象。
参考:https://needoneapp.medium.com/how-to-align-game-objects-in-unity-735f93d5b74