Unity 4.6:在运行时添加的按钮实例不会被参考分辨率调整?

mwk*_*mwk 10 unity-game-engine

(使用Unity 4.6.0b20)

在编辑器中添加预制按钮大小时,我遇到了一个问题,但在脚本添加时似乎忽略了参考分辨率.

这使用具有参考分辨率1280x720和MatchWidthOrHeight的Canvas.Canvas具有按钮的面板垂直布局组.Button具有首选宽度/高度,并保存为预制件,因此可以在运行时从资产创建新实例.

在此输入图像描述

在编辑器中,我可以将预制件拖动到场景中以向面板添加实例,该面板也具有宽度102,并且它们可以很好地堆叠和缩放:

在此输入图像描述

但是当我通过脚本将预制件的新实例添加到面板时,它们显示的尺寸错误.看看尺寸,我的猜测是102像素尺寸没有被参考分辨率缩放:

在此输入图像描述

脚本代码通过GameObject.Instantiate()创建实例,并通过设置transform.parent添加到Panel:

GameObject uiInstance = (GameObject)GameObject.Instantiate(Resources.Load<GameObject>(assetPath));
uiInstance.transform.parent = unitButtonsPanel.transform;
Run Code Online (Sandbox Code Playgroud)

我假设将Button添加到Panel时需要做的更多,而不仅仅是设置Parent,或者它是测试版的bug ...

建议?

Rod*_*Rod 27

使用transform.SetParent方法在第二个参数中传递false:

transform.SetParent(transform, false);
Run Code Online (Sandbox Code Playgroud)

这样您就可以防止世界定位和缩放.您可以在统一手册中找到更多信息,搜索"UICreateFromScripting".