【问题标题】:Unity 5.4.2 - Scale and position instantiated UI elementsUnity 5.4.2 - 缩放和定位实例化的 UI 元素
【发布时间】:2016-11-06 14:14:49
【问题描述】:

所以我一直在为我所在的一个班级做一个项目,并且遇到了一个我似乎无法解决的问题。我问过教练,他和我一样困惑。

现在我一直在尝试设置一个简单的 UI 来显示按钮列表以选择要加载的关卡。在运行时,代码只是简单地创建适当的按钮等,并将它们放在 scrollview 的 内容对象中。很简单,对吧?好吧,as you can see 位置和权利完全错误,相差 800 个单位

Canvas 设置为 Screen Space - OverlayCanvas 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 对象?它是中心还是拉伸填充或......?

标签: c# unity3d unity5


【解决方案1】:

尝试在您设置位置和比例的地方添加这些:

levelButton.transform.offsetMin = Vector2.zero
levelButton.transform.offsetMax = Vector2.zero

【讨论】:

    猜你喜欢
    • 2021-10-27
    • 1970-01-01
    • 2021-04-22
    • 1970-01-01
    • 2021-12-28
    • 2018-08-18
    • 1970-01-01
    • 1970-01-01
    • 2014-07-19
    相关资源
    最近更新 更多