/// <summary>
        /// 限制移动显示面板
        /// </summary>
        private void InspectorLimitMove()
        {
            if (features.ActiveLimitMove)
            {
                _limitMoveController = features.AddLimitMove();

                if (_limitMoveController == null)
                {
                    return;
                }

                //grabObject
                _limitMoveController.grabObject = EditorGUILayout.ObjectField("    *被抓取物体",
                                                                              _limitMoveController.grabObject, typeof(GameObject), true) as GameObject;
                if (_limitMoveController.grabObject == null)
                {
                    EditorGUILayout.HelpBox("当射线照射到该物体时,赋予谁被抓取,不赋值默认为本身...", MessageType.None, false);
                }

                _limitMoveController.type = (ProcessType)EditorGUILayout.EnumPopup("    *选择更新事件", _limitMoveController.type);

                _limitMoveController.isLocal = EditorGUILayout.Toggle("      *使用本地坐标:", _limitMoveController.isLocal);
                EditorGUILayout.Space();
                _limitMoveController.activeX = EditorGUILayout.Toggle("      *开启X轴限制:", _limitMoveController.activeX);
                if (_limitMoveController.activeX)
                {
                    _limitMoveController.xRange = EditorGUILayout.Vector2Field("  *x值的限制范围", _limitMoveController.xRange);
                }
                EditorGUILayout.Space();
                _limitMoveController.activeY = EditorGUILayout.Toggle("      *开启Y轴限制:", _limitMoveController.activeY);
                if (_limitMoveController.activeY)
                {
                    _limitMoveController.yRange    = EditorGUILayout.Vector2Field("  *初始y值的限制范围", _limitMoveController.yRange);
                    _limitMoveController.minYCurve = EditorGUILayout.CurveField("  *在x范围內的最小Y值", _limitMoveController.minYCurve);
                    _limitMoveController.maxYCurve = EditorGUILayout.CurveField("  *在x范围內的最大Y值", _limitMoveController.maxYCurve);
                    if (GUILayout.Button("重置曲线", GUILayout.Width(60), GUILayout.Height(20)))
                    {
                        Debug.Log("生成Y曲线");
                        _limitMoveController.minYCurve = new AnimationCurve();
                        _limitMoveController.maxYCurve = new AnimationCurve();
                        _limitMoveController.AddKeyGroup(_limitMoveController.yRange.x, _limitMoveController.yRange.y, AxisLimits.Y, 0);
                        _limitMoveController.AddKeyGroup(_limitMoveController.yRange.x, _limitMoveController.yRange.y, AxisLimits.Y, 1);
                    }
                }
                EditorGUILayout.Space();
                _limitMoveController.activeZ = EditorGUILayout.Toggle("      *开启Z轴限制:", _limitMoveController.activeZ);
                if (_limitMoveController.activeZ)
                {
                    _limitMoveController.zRange    = EditorGUILayout.Vector2Field("  *初始z值的限制范围", _limitMoveController.zRange);
                    _limitMoveController.minZCurve = EditorGUILayout.CurveField("  *在x范围內的最小z值", _limitMoveController.minZCurve);
                    _limitMoveController.maxZCurve = EditorGUILayout.CurveField("  *在x范围內的最大z值", _limitMoveController.maxZCurve);
                    if (GUILayout.Button("重置曲线", GUILayout.Width(60), GUILayout.Height(20)))
                    {
                        Debug.Log("生成Z曲线");
                        _limitMoveController.minZCurve = new AnimationCurve();
                        _limitMoveController.maxZCurve = new AnimationCurve();
                        _limitMoveController.AddKeyGroup(_limitMoveController.zRange.x, _limitMoveController.zRange.y, AxisLimits.Z, 0);
                        _limitMoveController.AddKeyGroup(_limitMoveController.zRange.x, _limitMoveController.zRange.y, AxisLimits.Z, 1);
                    }
                }
            }
            else
            {
                features.RemoveLimitMove();
                _limitMoveController = null;
            }
        }
예제 #2
0
 /// <summary>
 /// 添加“限制移动”
 /// </summary>
 public MCLimitMove AddLimitMove()
 {
     LimitMove           = OperaObject.GetComponent <MCLimitMove>() ?? OperaObject.AddComponent <MCLimitMove>();
     LimitMove.hideFlags = HideFlags.HideInInspector;
     return(LimitMove);
 }