如何计算小部件边界?

时间:2014-01-20 07:42:39

标签: c# widget unity3d bounds ngui

我需要找到他所有孩子的小部件边界。我尝试使用以下代码但得到一个奇怪的输出。小部件的子宽度和高度都超过100像素,输出大约为1。

Vector3 widgetBounds = NGUIMath.CalculateRelativeWidgetBounds(this.transform).size;

我做错了什么?

谢谢。

1 个答案:

答案 0 :(得分:1)

这样做你想要的吗?

// copied from UIDragObject.UpdateBounds()
public static Bounds GetContentRectBounds(UIRect content, UIPanel uiPanel){
    Matrix4x4 toLocal = uiPanel.transform.worldToLocalMatrix;
    Vector3[] corners = content.worldCorners;
    for( int i = 0; i < 4; ++i ){
        corners[i] = toLocal.MultiplyPoint3x4(corners[i]);
    }
    Bounds mBounds = new Bounds(corners[0], Vector3.zero);
    for( int i = 1; i < 4; ++i ){
       mBounds.Encapsulate(corners[i]);
    }
    return mBounds;
}