# ModiParentOnly **Repository Path**: acoloco/modi-parent-only ## Basic Information - **Project Name**: ModiParentOnly - **Description**: 一种Unity编辑器实用工具,按住Shift键就可以在移动或旋转物体时,使子物体们保持原样。 - **Primary Language**: C# - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-21 - **Last Updated**: 2025-08-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: Csharp, Unity, editor, Unity编辑器 ## README # ModiParentOnly #### 介绍 在Unity编辑器里,实现移动或旋转物体时按住Shift键,就可以只调整它们的位置和角度,而让子物体们保持原样。支持多选,支持RectTransform。理论上也支持其他Transform的子类,原理是按下时记录所有子物体的位置和角度,然后不断赋值,没有什么破坏性操作。 在多选移动时会绘制各个物体的坐标轴方便参考。 自带一个按钮,在Tools菜单下,用于把选中的所有物体移动到所有子物体的中心位置。 #### 软件架构 就一个文件 #### 环境要求 可能要求C#8.0及以上。可能要求Unity2022版本及以上。 使用到了以下命名空间: - UnityEngine; - UnityEditor; #### 设计思路 1. 使用InitializeOnLoad标签,在编辑器里初始化一个实例 2. 注册SceneView的事件,监听Shift按键 3. 使用Selection获取并记录选中的Transform们 4. 注册SceneView的事件,当选中物体们变化时修改其子物体为原样 5. 配合Undo实现撤销和重做 #### 使用说明 一般情况下,直接复制粘贴到Unity里就可以开始用了。选中你想调整的父物体,移动或旋转时按住“Shift”键就会生效,松开则失效。你可以在一次移动过程中多次开关此功能,能够正常地撤销和重做。 如果你不喜欢Shift键,可以改成其他快捷键。推荐使用大写锁定键,不会和其他Unity操作冲突。 ``` private static EventModifiers Key = EventModifiers.Shift; //修改为你喜欢的快捷键,例如 private static EventModifiers Key = EventModifiers.CapsLock; //也可以让两个快捷键都能生效 private static EventModifiers Key = EventModifiers.Shift| EventModifiers.CapsLock; ```