缩放和位置实例化UI元素

本文关键字:UI 元素 实例化 位置 缩放 | 更新日期: 2023-09-27 18:16:43

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

现在我一直在尝试设置一个简单的UI,用于显示按钮列表,以选择要加载的关卡。在运行时,代码只是创建适当的按钮等,并将它们放置在scrollview的内容对象中。很简单,对吧?嗯,正如你所看到的,位置和右边是完全错误的,800单位

画布设置为屏幕空间覆盖画布缩放器设置为缩放屏幕尺寸,我猜这是问题所在。我已经遇到了位置和比例更加偏离的问题(取决于屏幕大小),但是通过手动设置变换的位置和localscale来"固定"这个问题。

然而,我没有运气找到一个解决方案,与我所有的谷歌,所以我将非常感激,如果有人可以帮助我这个和解释给我的问题是什么。

这是它对每个关卡执行的代码。这当然很乱,因为我一直在尽我所能地找出问题所在。

        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);

缩放和位置实例化UI元素

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

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