예제 #1
0
    public void updateRect(bool force = false)
    {
        // 是否为编辑器手动预览操作,手动预览不需要启动游戏
#if UNITY_EDITOR
        bool preview = !EditorApplication.isPlaying;
#else
        bool preview = false;
#endif
        // 如果是第一次更新,则需要获取原始属性
        if (mFirstUpdate || preview)
        {
            mScreenScale = UnityUtility.getScreenScale(UnityUtility.getRootSize(preview));
            mOriginSize  = WidgetUtility.getRectSize(GetComponent <RectTransform>());
            mOriginPos   = transform.localPosition;
            mFirstUpdate = false;
        }
        if (!preview && !force && !mDirty)
        {
            return;
        }
        mDirty = false;
        Vector3 realScale  = UnityUtility.adjustScreenScale(mScreenScale, mKeepAspect ? mAspectBase : ASPECT_BASE.NONE);
        float   thisWidth  = mOriginSize.x * realScale.x;
        float   thisHeight = mOriginSize.y * realScale.y;
        MathUtility.checkInt(ref thisWidth, 0.001f);
        MathUtility.checkInt(ref thisHeight, 0.001f);
        Vector2 newSize = new Vector2(thisWidth, thisHeight);
        // 只有在刷新时才能确定父节点,所以父节点需要实时获取
        WidgetUtility.setRectSize(GetComponent <RectTransform>(), newSize, mAdjustFont);
        transform.localPosition = MathUtility.round(MathUtility.multiVector3(mOriginPos, realScale));
    }
예제 #2
0
    public static Vector2 getRootSize(bool ngui, bool useGameViewSize = false)
    {
#if MAKE_CS_DLL
        return((Vector2)callStatic(UTILITY_UNITY, "getRootSize", new object[] { ngui, useGameViewSize }));
#else
        return(UnityUtility.getRootSize(ngui, useGameViewSize));
#endif
    }