示例#1
0
        private void DoOptionsGUI(UiPositionOptions option, string positionField, string targetField)
        {
            switch (option)
            {
            case UiPositionOptions.CurrentPosition:
                break;

            case UiPositionOptions.Position:
                EditField(positionField, "Position");
                break;

            case UiPositionOptions.Offset:
                EditField(positionField, "Offset");
                break;

            case UiPositionOptions.OffscreenTop:
            case UiPositionOptions.OffscreenBottom:
            case UiPositionOptions.OffscreenLeft:
            case UiPositionOptions.OffscreenRight:
                break;

            case UiPositionOptions.TargetGameObject:
                EditField(targetField, "GameObject");
                EditField(positionField, "Offset");
                break;

            default:
                throw new ArgumentOutOfRangeException("option", option, null);
            }
        }
示例#2
0
        public override void Reset()
        {
            base.Reset();

            fromOption   = UiPositionOptions.CurrentPosition;
            fromTarget   = null;
            fromPosition = null;
            toOption     = UiPositionOptions.Position;
            toTarget     = null;
            toPosition   = null;
        }
示例#3
0
        public static Vector3 GetUiTargetPosition(UiPositionOptions option, RectTransform owner, Transform target, Vector3 position)
        {
            if (owner == null)
            {
                return(Vector3.zero);
            }

            switch (option)
            {
            case UiPositionOptions.CurrentPosition:

                return(owner.anchoredPosition3D);

            case UiPositionOptions.Position:

                return(position);

            case UiPositionOptions.Offset:

                return(owner.anchoredPosition3D + position);

            case UiPositionOptions.OffscreenTop:

                var offscreen = owner.anchoredPosition3D;
                var rect      = GetWorldRect(owner);
                offscreen.y += Screen.height - rect.yMin;
                return(offscreen);

            case UiPositionOptions.OffscreenBottom:

                offscreen    = owner.anchoredPosition3D;
                rect         = GetWorldRect(owner);
                offscreen.y -= rect.yMax;
                return(offscreen);

            case UiPositionOptions.OffscreenLeft:

                offscreen    = owner.anchoredPosition3D;
                rect         = GetWorldRect(owner);
                offscreen.x -= rect.xMax;
                return(offscreen);

            case UiPositionOptions.OffscreenRight:

                offscreen    = owner.anchoredPosition3D;
                rect         = GetWorldRect(owner);
                offscreen.x += Screen.width - rect.xMin;
                return(offscreen);

            case UiPositionOptions.TargetGameObject:

                if (target == null)
                {
                    return(owner.anchoredPosition3D);
                }
                if (position != Vector3.zero)
                {
                    return(target.TransformPoint(position));
                }
                return(target.position);

            default:
                throw new ArgumentOutOfRangeException("option", option, null);
            }
        }