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

时间:2017-06-20 20:45:39

标签: c# unity5

例如,使用void Update连续调整其位置,如

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

似乎效率很低,如果您不能真正生孩子,例如: 尝试将对象与文本UI对齐

3 个答案:

答案 0 :(得分:0)

您可以将对象作为子项分配给first GameObject,这样当您移动主对象时它始终会相应移动。

second.transform.SetParent(first.transform);

请注意,在将second对象添加为孩子时,您仍需要将SELECT i.cust_id, oa.* FROM input_table i OUTER APPLY (SELECT pvt.* FROM (SELECT month, col = CONCAT('month', ROW_NUMBER() OVER (ORDER BY idx)) FROM (SELECT month, idx, to_preserve = MAX(IIF(month=0,0,1)) OVER (ORDER BY idx) FROM (VALUES (1, month1), (2, month2), (3, month3), (4, month4), (5, month5) ) V(idx, month)) unpvt WHERE to_preserve = 1) t PIVOT (MAX(month) FOR col IN (month1, month2, month3, month4, month5)) pvt ) oa 对象居中一次。

答案 1 :(得分:0)

对于Text Elements,有两个选项可以让它们跟随世界中的特定GameObject:

  1. 您可以创建一个渲染模式设置为World Space的画布,如下所示: Using World Space Canvas
  2. 您可以使用TextMesh Pro(现在免费)并使用它的TextMeshPro组件:enter image description here
  3. 我宁愿使用第二种解决方案,因为您不必创建适合您的简单组件的Canvas TextMesh Pro非常适合任何大小的字体,因为它使用Signed Distance Field Fonts

    但如果您希望文本始终面向播放器摄像头,则必须实施Billboard,这可能与初始脚本具有相同的影响

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

    实际上,还有第三种解决方案,但是我们购买了一个名为UnityConstraints的扩展程序,这是我一直使用的优秀扩展程序,它可用于创建任何类型的约束:广告牌,关注,查看等但是根据你的游戏,这可能是一个压倒性的解决方案。

答案 2 :(得分:0)

将要对齐的GameObject分组到一个普通GameObject下,并在检查器中添加一个 Horizo​​ntal Layout Group 组件。使用子对齐选项和间距可以按所需方式对齐对象。

参考:https://needoneapp.medium.com/how-to-align-game-objects-in-unity-735f93d5b74