【Unity】【Editor拡張】Transformの値をクリップボードに保存してみた。
初めに
今回作成したのは、
汎用的な用途ではなくとある一点にのみ有用なEditor拡張として君臨します。
ほんとに用途は限定的です。。。
使用用途
Transformの値をコピーして、そのコピーした内容をClipboardに保存してしまおうという機能です。 単純にそれだけです。 なお、エクセルにペーストしても問題ないように(というか特化)一応別セルへ分けれるようにはなっております。
使用方法
1.Hierarchyでオブジェクトを選択して、コンポーネント右上のメニュー(点が縦に三連なっているやつ)を選択します。
その中にある、「CustomCopy」を選択します。
選択するとConsoleにコピーした値が表示されます。
※Debug.Logが有効の場合のみ
終了!
ちなみに
スプシにPasteするとこうなります。
ね?便利でしょ?()
コード全文
クリックすると展開されます
using System.Collections; using System.Collections.Generic; using UnityEngine; #if DEBUG using UnityEditor; #endif using System.Text; public class CustomCopyComponent : Editor { #if DEBUG // コピー対象のオブジェクト public static GameObject copyObject; // コピー対象のオブジェクトのTransform public static Transform copyComponent; // context menu へ追加 [MenuItem("CONTEXT/Component/Custom Copy", false,100)] static void ComponentCopy() { // 現在選択されているオブジェクト copyObject = Selection.activeGameObject; if(copyObject == null) { return; } copyComponent = copyObject.transform; if(copyComponent == null) { return; } Vector3[] copyTransform = new Vector3[3]; // 必要なTransformの要素を取得 copyTransform[0] = copyComponent.localPosition; copyTransform[1] = copyComponent.localEulerAngles; copyTransform[2] = copyComponent.localScale; StringBuilder strBuilder = new StringBuilder(); foreach(var c in copyTransform) { // 文字列結合 strBuilder.AppendFormat("{0} ", c); } // 末尾のタブ列は不要なため削除 strBuilder.ToString().TrimEnd(' '); Debug.Log(strBuilder.ToString()); // システムのバッファへコピー GUIUtility.systemCopyBuffer = strBuilder.ToString(); } #endif }
ちょっとだけ解説
Selection.activeGameObject;
Unity上で現在選択されているオブジェクトがこの中に入っています。
GUIUtility.systemCopyBuffer = strBuilder.ToString();
いつも使うコピー(Ctrl+C)と同じ動作をすると思えばきっと問題なさそう。 コピーされたものはクリップボードにも保存されます。 (Windows+Vで確認できます。)
下に公式を張っておきます。