示例#1
0
    protected void generateLocalCorners(GameObject parent, bool includeRotation = false)
    {
        RectTransform rectTransform = GetComponent <RectTransform>();
        // 去除旋转
        Quaternion lastQuat = rectTransform.rotation;

        if (!includeRotation)
        {
            rectTransform.rotation = Quaternion.identity;
        }
        Vector2 size = rectTransform.rect.size;

        mLocalCorners[0] = new Vector3(-size.x * 0.5f, -size.y * 0.5f);
        mLocalCorners[1] = new Vector3(-size.x * 0.5f, size.y * 0.5f);
        mLocalCorners[2] = new Vector3(size.x * 0.5f, size.y * 0.5f);
        mLocalCorners[3] = new Vector3(size.x * 0.5f, -size.y * 0.5f);
        for (int i = 0; i < 4; ++i)
        {
            Vector3 worldCorner = UnityUtility.localToWorld(rectTransform, mLocalCorners[i]);
            mLocalCorners[i] = UnityUtility.worldToLocal(parent.transform, worldCorner);
        }
        if (!includeRotation)
        {
            rectTransform.rotation = lastQuat;
        }
    }
示例#2
0
    public static Vector3 localToWorld(Transform transform, Vector3 local)
    {
#if MAKE_CS_DLL
        return((Vector3)callStatic(UTILITY_UNITY, "localToWorld", new object[] { transform, local }));
#else
        return(UnityUtility.localToWorld(transform, local));
#endif
    }