【发布时间】:2016-11-06 14:14:49
【问题描述】:
所以我一直在为我所在的一个班级做一个项目,并且遇到了一个我似乎无法解决的问题。我问过教练,他和我一样困惑。
现在我一直在尝试设置一个简单的 UI 来显示按钮列表以选择要加载的关卡。在运行时,代码只是简单地创建适当的按钮等,并将它们放在 scrollview 的 内容对象中。很简单,对吧?好吧,as you can see 位置和权利完全错误,相差 800 个单位。
Canvas 设置为 Screen Space - Overlay,Canvas Scaler 设置为随屏幕尺寸缩放,我猜这是问题所在。我已经遇到了位置和比例更加偏离的问题(取决于屏幕尺寸),但是通过手动设置变换的位置和本地比例来“修复”这个问题。
然而,我没有运气找到解决这个问题,我所有的谷歌搜索,所以如果有人能帮助我解决这个问题并向我解释问题所在,我将非常感激。
这是它为每个级别执行的代码。这当然很混乱,因为我一直在尽可能多地尝试找出问题所在。
Level thisLevel = levelManager.levelList [i];
GameObject levelButton = (GameObject)Instantiate (menuManager.levelButtonContainerObject);
levelButton.transform.SetParent (menuManager.mainMenuLevelContainer.transform, false);
levelButton.transform.position = Vector3.zero;
levelButton.transform.localPosition = Vector3.zero;
levelButton.transform.localScale = Vector2.one;
RectTransform levelButtonRect = levelButton.GetComponent<RectTransform> ();
// levelButtonRect.position = ApplyCanvasScale (new Vector3 (0f, -50 + (-100 * i), 0f));
levelButtonRect.position = new Vector3(0f, -50 + (-100 * i), 0f);
// levelButtonRect.position = Vector3.zero;
levelButtonRect.sizeDelta = new Vector2 (0f, 100f);
Debug.Log ("Position " + levelButtonRect.position + ", Scale " + levelButtonRect.sizeDelta);
【问题讨论】:
-
我可能过早地回答了。按钮是否成为 VerticalLayoutGroup 的父级?
-
如何锚定 ui 对象?它是中心还是拉伸填充或......?