一、前言
在开发中,会遇到要复制场景中对象的位置坐标的操作,通常的方法是分别复制物体的xyz的值,然后再粘贴,这样效率非常低,耽误时间,也可以复制错误,造成位置的偏移。
接下来就介绍如何快速复制坐标位置,并且复制
效果:
网络异常,图片无法展示
|
二、实现
代码:复制坐标
using UnityEditor; using UnityEngine; public class CopyObjXYZ : Editor { [UnityEditor.MenuItem("CopyXYZ/CopyXYZ %X")] static void CopyXYZ() { GameObject obj = UnityEditor.Selection.activeGameObject; if (obj != null) { string ret = obj.transform.localPosition.x + "f," + obj.transform.localPosition.y + "f," + obj.transform.localPosition.z + "f"; GUIUtility.systemCopyBuffer = ret; } } } 复制代码
选中物体之后,使用快捷键 Ctrl+X ,就可以将选中的物体的坐标位置复制下来,然后在要复制的地方Ctrl+V就可以复制出来。。
复制旋转
using UnityEditor; using UnityEngine; public class CopyRotation : Editor { static void CopyRotation() { GameObject obj = UnityEditor.Selection.activeGameObject; if (obj != null) { string ret = obj.transform.localEulerAngles.x + "f," + obj.transform.localEulerAngles.y + "f," + obj.transform.localEulerAngles.z + "f"; GUIUtility.systemCopyBuffer = ret; } } } 复制代码
transform.localEulerAngles 欧拉角,这个复制出来的数据是物体的Transform组件的Rotation的值
使用transform.localRotation四元数也可以 但是需要transform.localRotation.eulerAngles转成欧拉角
四元数跟欧拉角之间的关系就不在这篇讲了 - -,
三、参考文档
1、[Unity]提供效率,方便策划复制地图布点对象的坐标朝向 贴到excel里。2、基于团队的持续优化之道