zoukankan      html  css  js  c++  java
  • CopyTransform

    // TransformCopier.cs v 1.1
    // homepage: http://wiki.unity3d.com/index.php/CopyTransform
     
    using UnityEngine;
    using UnityEditor;
    using System.Collections;
     
    public class TransformCopier : ScriptableObject {
     
        private static Vector3 position;
        private static Quaternion rotation;
        private static Vector3 scale;
        private static string myName;
     
        [MenuItem ("Window/Transform Copier/Copy",false,0)]
        static void DoRecord () {
            position = Selection.activeTransform.localPosition;
            rotation = Selection.activeTransform.localRotation;
            scale = Selection.activeTransform.localScale;
            myName = Selection.activeTransform.name;
            EditorUtility.DisplayDialog("Transform Copy", "Local position, rotation, & scale of "+myName +" copied relative to parent.", "OK", "");
        }
     
        // PASTE POSITION:
        [MenuItem ("Window/Transform Copier/Paste Position",false,50)]
        static void DoApplyPositionXYZ () {
            Transform[] selections  = Selection.transforms;
            foreach (Transform selection  in selections) selection.localPosition = position;
        }
     
        [MenuItem ("Window/Transform Copier/Paste Position X",false,51)]
        static void DoApplyPositionX () {
            Transform[] selections  = Selection.transforms;
            foreach (Transform selection  in selections) selection.localPosition = new Vector3(position.x, selection.localPosition.y, selection.localPosition.z);
        }
     
        [MenuItem ("Window/Transform Copier/Paste Position Y",false,52)]
        static void DoApplyPositionY () {
            Transform[] selections  = Selection.transforms;
            foreach (Transform selection  in selections) selection.localPosition = new Vector3(selection.localPosition.x, position.y, selection.localPosition.z);
        }
     
        [MenuItem ("Window/Transform Copier/Paste Position Z",false,53)]
        static void DoApplyPositionZ () {
            Transform[] selections  = Selection.transforms;
            foreach (Transform selection  in selections) selection.localPosition = new Vector3(selection.localPosition.x, selection.localPosition.y, position.z);
        }
     
        // PASTE ROTATION:
        [MenuItem ("Window/Transform Copier/Paste Rotation",false,100)]
        static void DoApplyRotationXYZ () {
            Transform[] selections  = Selection.transforms;
            foreach (Transform selection  in selections) selection.localRotation = rotation;
        }
     
        [MenuItem ("Window/Transform Copier/Paste Rotation X",false,101)]
        static void DoApplyRotationX () {
            Transform[] selections  = Selection.transforms;
            foreach (Transform selection  in selections) selection.localRotation = Quaternion.Euler(rotation.eulerAngles.x, selection.localRotation.eulerAngles.y, selection.localRotation.eulerAngles.z);
        }
     
        [MenuItem ("Window/Transform Copier/Paste Rotation Y",false,102)]
        static void DoApplyRotationY () {
            Transform[] selections  = Selection.transforms;
            foreach (Transform selection  in selections) selection.localRotation = Quaternion.Euler(selection.localRotation.eulerAngles.x, rotation.eulerAngles.y, selection.localRotation.eulerAngles.z);
        }
     
        [MenuItem ("Window/Transform Copier/Paste Rotation Z",false,103)]
        static void DoApplyRotationZ () {
            Transform[] selections  = Selection.transforms;
            foreach (Transform selection  in selections) selection.localRotation = Quaternion.Euler(selection.localRotation.eulerAngles.x, selection.localRotation.eulerAngles.y, rotation.eulerAngles.z);
        }
     
        // PASTE SCALE:
        [MenuItem ("Window/Transform Copier/Paste Scale",false,150)]
        static void DoApplyScaleXYZ () {
            Transform[] selections  = Selection.transforms;
            foreach (Transform selection  in selections) selection.localScale = scale;
        }
     
        [MenuItem ("Window/Transform Copier/Paste Scale X",false,151)]
        static void DoApplyScaleX () {
            Transform[] selections  = Selection.transforms;
            foreach (Transform selection  in selections) selection.localScale = new Vector3(scale.x, selection.localScale.y, selection.localScale.z);
        }
     
        [MenuItem ("Window/Transform Copier/Paste Scale Y",false,152)]
        static void DoApplyScaleY () {
            Transform[] selections  = Selection.transforms;
            foreach (Transform selection  in selections) selection.localScale = new Vector3(selection.localScale.x, scale.y, selection.localScale.z);
        }
     
        [MenuItem ("Window/Transform Copier/Paste Scale Z",false,153)]
        static void DoApplyScaleZ () {
            Transform[] selections  = Selection.transforms;
            foreach (Transform selection  in selections) selection.localScale = new Vector3(selection.localScale.x, selection.localScale.y, scale.z);
        }
     
        // CHANGE LOCAL ROTATION :
        [MenuItem ("Window/Transform Copier/localRotation.x + 90",false,200)]
        static void localRotateX90 () {
            Transform[] selections  = Selection.transforms;
            foreach (Transform selection  in selections) selection.localRotation = selection.localRotation*Quaternion.Euler(90f,0f,0f);
        }
     
        [MenuItem ("Window/Transform Copier/localRotation.y + 90",false,201)]
        static void localRotateY90 () {
            Transform[] selections  = Selection.transforms;
            foreach (Transform selection  in selections) selection.localRotation = selection.localRotation*Quaternion.Euler(0f,90f,0f);
        }
     
        [MenuItem ("Window/Transform Copier/localRotation.z + 90",false,202)]
        static void localRotateZ90 () {
            Transform[] selections  = Selection.transforms;
            foreach (Transform selection  in selections) selection.localRotation = selection.localRotation*Quaternion.Euler(0f,0f,90f);
        }
     
        // SWAP:
        [MenuItem ("Window/Transform Copier/Swap Y and Z Scale", false, 251)]
        static void SwapYZScale () {
            Transform[] selections  = Selection.transforms;
            foreach (Transform selection  in selections) selection.localScale = new Vector3 (selection.localScale.x,selection.localScale.z,selection.localScale.y);
        }
    }
  • 相关阅读:
    尖峰冲击测试(spike Testing)
    mysql返回记录的ROWNUM(转)
    SQL2005四个排名函数(row_number、rank、dense_rank和ntile)的比较
    JUnit编写单元测试代码注意点小结
    Linux下Tomcat的启动、关闭、杀死进程
    linux下oracle11g R2的启动与关闭监听、数据库
    linux下使用yum安装mysql详解
    VC++ 实现文件与应用程序关联
    C++ 去掉字符串首尾的 x20 字符
    VC++ 线程同步 总结
  • 原文地址:https://www.cnblogs.com/softimagewht/p/3765460.html
Copyright © 2011-2022 走看看