【发布时间】:2015-07-20 21:31:42
【问题描述】:
我正在制作一款 3D 游戏,它将成为一款策略游戏。我想通过代码(C#)创建一个面板(一组文本和按钮的 UI 组),然后移动它们,使它们位于 Canvas 布局中的 GameObject 之上。所以我这样做:
if (ThisBuilding == null)
ThisBuilding = this.gameObject;
Panel = Canvas.Instantiate(Panel);
Panel.transform.SetParent(canvas.transform, false); //false to prevent stupid scaling issues created by the parent change
Vector3 centerPosition = ThisBuilding.GetComponentInChildren<MeshRenderer>().bounds.center; //the building GameObject contains a MeshRenderer component in its only children.
panelRect.anchoredPosition = Vector3.Lerp(panelRect.anchoredPosition, centerPosition, 1.0f);
问题是这个脚本在每个建筑物上运行一次(在 Start() 上),希望面板会被实例化 3 次并且每个面板对应于一个建筑物,但是由于某些奇怪的原因,这不起作用。
预期结果:每次实例化面板时,位置与实例化它的建筑物的位置相同(建筑物 GameObject 持有脚本并激活/停用面板)
实际结果:尽管面板确实被实例化了 3 次,但它们都处于相同的位置,即使我的 Update() 函数改变了它的位置,它们也不会改变。我做错了什么?
【问题讨论】: