【Unity3D日常开发】(二十七)Unity3D中快速复制场景中的对象的坐标位置,并且粘贴出来

举报
恬静的小魔龙 发表于 2021/12/10 21:44:46 2021/12/10
【摘要】 推荐阅读CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客QQ群:1040082875 一、前言在开发中,会遇到要复制场景中对象的位置坐标的操作,通常的方法是看着对象的坐标,然后手动打出来坐标。这种方式,效率会有点低,耽误时间,然后也可以打错,造成位置的偏移。接下来就介绍如何快速复制坐标位置,并且复制效果: 二、实现代码:复制坐标using UnityEditor;u...

推荐阅读

一、前言

在开发中,会遇到要复制场景中对象的位置坐标的操作,通常的方法是看着对象的坐标,然后手动打出来坐标。
这种方式,效率会有点低,耽误时间,然后也可以打错,造成位置的偏移。

接下来就介绍如何快速复制坐标位置,并且复制

效果:
在这里插入图片描述

二、实现

代码:
复制坐标

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、基于团队的持续优化之道

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。