克隆对象的精确位置

时间:2016-07-26 03:49:19

标签: c# unity3d uibutton position

我试图制作一部BTD游戏。对于我的塔,我已经在每个GameObject上放置了一个升级按钮,并将其附加到GameObject(塔)本身。每次选择新塔时,都会出现新塔的按钮,之前选择的塔的按钮消失。但是,我的问题是每当我选择一个新的塔稍微边缘(足以看不对齐)时,按钮的位置会发生变化,即使按钮的位置表示相同的X,Y和Z值。我目前正在使用此代码来告诉GameTower按钮的位置:

clone.transform.GetChild(9).GetChild(0).localPosition = new Vector3 (-50, 17, 0).

无论如何,即使通过克隆也可以固定按钮的位置(前一段代码不起作用?如果需要,我很乐意扩展和分享我的代码。

1 个答案:

答案 0 :(得分:0)

我不知道为什么这个职位会突然改变。 但我认为你应该看看其中的一些观点。

会发生什么:

  1. 按钮的父级会改变它的位置。
  2. 其他代码可能会在您不知情的情况下干扰和更改位置。
  3. 使用getchild.getchild.localposition也是不正确的。 您应该尝试创建一个知道其子项的脚本,以便您可以直接从该脚本中获取子项。

    类似这样的事情

    父母的脚本

    public GameObject ButtonsContainer
    {
       get
       {
           return buttonsContainer;
       }
    }
    
    [SerializeField] private GameObject buttonsContainer;
    

    改变清醒位置的脚本

    [SerializeField] private Script parentScript;
    [SerializeField] private Vector3 buttonPosition;
    void Awake()
    {
         parentScript.ButtonsContainer.transform.localPosition = buttonPosition;
    }