/// <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; } }
/// <summary> /// 添加“限制移动” /// </summary> public MCLimitMove AddLimitMove() { LimitMove = OperaObject.GetComponent <MCLimitMove>() ?? OperaObject.AddComponent <MCLimitMove>(); LimitMove.hideFlags = HideFlags.HideInInspector; return(LimitMove); }