uGUI动态加载控件位置错误

原文链接:http://www.cnblogs.com/mezero/p/4542939.html


最近在使用uGUI时遇到了一个问题,在此记录一下。
在Canvas的Render Mode设置为Screen Space-Overlay模式时,动态加载控件是不会发生问题的。但是在Screen Space-Camera模式下,动态加载的控件位置及缩放会有很大的偏差。

private Canvas canvas;
// Use this for initialization
void Start () 
{
   canvas = GameObject.FindObjectOfType<Canvas>();
   GameObject button = GameObject.Instantiate(Resources.Load("UI/Button")) as GameObject;
   button.transform.parent = canvas.transform;
} 

运行结果:

uGUI动态加载控件位置错误

看不清就对了,因为放大了66倍...

uGUI动态加载控件位置错误

本来心想查看源码,查找问题的原因,尼玛在 bitbucket上的官方库里找半天没找到Canvas的源码,后来仔细一看原来Canvas是UnityEngine.dll下的。一定是逗我...说好的,开源呢...

无耐求助于万能的Google,终于找到了这个uGui alignment is wrong when adding prefabs to canvas

private Canvas canvas;
// Use this for initialization
void Start () 
{
    canvas = GameObject.FindObjectOfType<Canvas>();
    GameObject button = GameObject.Instantiate(Resources.Load("UI/Button")) as GameObject;
    //button.transform.parent = canvas.transform;
    button.transform.SetParent(canvas.transform,false);//不受父节点的影响,保持原局部坐标和缩放
}

uGUI动态加载控件位置错误

就是这样。

转载于:https://www.cnblogs.com/mezero/p/4542939.html

上一篇:Unity-UGUI-Toggle功能扩展


下一篇:unity UGUI跟随3D物体的坐标转换