メニュー
6/21(月)・6/22(火)はAmazonプライムデー!商品一覧へ

【Unity】知っておくと便利!エディタ拡張まとめ9選

eyecatch-unity-editor-extensions
目次

知っておくと便利!エディタ拡張まとめ

エディタ拡張を使うと、Unityの標準で搭載されていない機能をつくることができます。

実際つかってみて、便利だったエディタ拡張機能を紹介いたします。

先頭や最後尾に文字を追加するエディタ拡張

目的がはっきりしているスクリプトは、使いやすいですよね。

  1. リネームしたいオブジェクトを選択。
  2. メニューバーからツールを起動。
  3. 実行すると階層下すべてリネームされます。


コンポーネントを削除するエディタ拡張

消したいスクリプトがAdd Componentされていたのでエディタ拡張で消してみました。

NewBehaviourScriptをAdd Componentされているゲームオブジェクトを選択して、実行すると削除されます。複数選択可。



たとえばOutlineのコンポーネントを消したい時はusing UnityEngine.UI;を追加して、obj.GetComponentとすると削除できます。

※エディタ拡張の場合Destroyではなく、すぐ削除できるDestroyImmediateを使用する

文字列の最後に連番を追加するエディタ拡張

階層内の数を見て、文字列の最後に連番をつけます。



  • string number = “0”; にすれば0からはじまります
  • .transform.GetSiblingIndex 同階層における順序数
  • {0}{1}は数値の書式指定 0埋め1桁

マスク素材用のマテリアルを作成してアサインするエディタ拡張

「マテリアル 切り替え」で調べると、変更したいオブジェクトにスクリプトを付けてマテリアルも登録し、そこからアサインというやり方が出てくるのですが、いちいち手動で仕込むのは面倒です。

そこで指定したオブジェクトに対してマテリアルをインスタンス、シェーダー選択、カラーも指定後アサインというスクリプトを書いてみました。

スクリプトをつけるスクリプトをかけばよいのかもしれませんが、要するに将来的にMayaのレンダーレイヤーみたいな事したいなということで・・・。

指定した複数オブジェクトにマスク用マテリアルをアサイン

アサインしたいオブジェクトに「Mask」というTagを付けておく

スクリプトは適当なGameObjectにつけておけばOK

using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour {
void Start() {
GameObject[] obstacles = GameObject.FindGameObjectsWithTag ("Mask");
foreach(GameObject obs in obstacles){
Renderer rend = obs.GetComponent<Renderer>();
//シェーダー作成・アサイン
rend.material = new Material(Shader.Find("Unlit/Color"));
//カラーを変更
rend.material.color = Color.red;
}
}
}

Colorについて

RGB、CMYKの色はそれぞれコマンドが用意されています。

自分で色を指定したい時は

rend.material.color = new Color (1f, 0f, 0f);

※ちなみにマスク素材と言っているのはRGB/CMYKなどの色面をAE等で部分的に抽出して、調整するための素材のことです。

単体のオブジェクト名を入力して、マスク用マテリアルをアサイン

using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour {
//オブジェクト名入力
public string objname = "Sphere";
void Start() {
GameObject obj = GameObject.Find(objname);
Renderer rend = obj.GetComponent<Renderer>();
//シェーダー作成・アサイン
rend.material = new Material (Shader.Find( "Unlit/Color"));
//カラーを変更
rend.material.color = Color.red;
}
}

ショートカット一発!ゲームビューのスクリーンショットを撮る方法

Photoshopで作ったレイアウトとUnityで作成したものとを正確に見比べるように、原寸のGameビューのスクリーンショットを撮るEditorスクリプトを使ってみました。

同サイズの画像比較をしないと、システムフォント周りの再現度を上げるのは、なかなか難しいです。

スクリーンショット用Editorスクリプト

参考リンクのCaptureScreenshotFromEditor.csがベースです。

Ctrl + Shift + F12で保存。

Assets直下に画像を保存したくなかったので、ダイアログを出して保存先を指定するように一部変更しています。

using UnityEditor;
using UnityEngine;
public class CaptureScreenshotFromEditor : Editor {
[MenuItem( "Edit/CaptureScreenshot #�2" )]
private static void CaptureScreenshot() {
string path = EditorUtility.SaveFilePanel("Save Screenshot", Application.dataPath, System.DateTime.Now.ToString( "yyyyMMdd-HHmmss" ), "png");
Application.CaptureScreenshot( path );
var assembly = typeof( UnityEditor.EditorWindow ).Assembly;
var type = assembly.GetType( "UnityEditor.GameView" );
var gameview = EditorWindow.GetWindow( type );
gameview.Repaint();
Debug.Log( "ScreenShot: " + path );
}
}
Qiita
Unityエディタ上からGameビューのスクリーンショットを撮るEditor拡張 - Qiita
Unityエディタ上からGameビューのスクリーンショットを撮るEditor拡張 - Qiita 2018/08/23追記 気づいたら Application.ScreenShot が使えなくなっていたので ScreenCapture.ScreenShot に変更しました。 Unity 2018.2.5f1 で動作確認。 困...
生存日記
Unityでスクリーンショットを保存する
Unityでスクリーンショットを保存するエディタの実行中の画面のスクリーンショットをとって保存するスクリプトを書いた。 Editorディレクトリに置く…

選択したオブジェクトをCtrl+Gでグループ化するエディタ拡張

Mayaでよく使うやつです。
Unityでも選択した要素の上に親のゲームオブジェクトを作成したかったので調べてみました。

グループ化するエディタースクリプト

Editorフォルダの中に、CreateEmptyParent.csを入れてやります。

ということでLinqを使って、階層順にグループ化できるようにしました。

あわせて読みたい
Grouping objects in the Hierarchy? - Unity AnswersUnity is the ultimate game development platform. Use Unity to build high-quality 3D and 2D games, deploy them across mobile, desktop, VR/AR, consoles or the Web...

使用コンポーネント名からオブジェクトを検索するエディタ拡張

Assetsに入っているデータから関連している素材を探すことはできるのですが、

そうではなくマスクとかアウトラインとか、デフォルトで入っているコンポーネントがどこで使われているのか調べてみました。

コンポーネントの検索方法

コンポーネント名から検索する方法です。



STEP.2
検索

ウインドウを起動してSerch Forから探したいコンポーネント名を入れて、Find Nextボタンを押します。

MaskOutlineAspectRatioFitter、などなど


無料!多機能リネーマー「Mulligan Renamer Tool for Unity」の紹介

正直、複数選択しての置換さえできればなんでも良いのですが、リネーマーを探してみました。

Mulligan Renamer Tool for Unity

下記の部分をダウンロード

GitHub
redbluegames/unity-mulligan-renamer
redbluegames/unity-mulligan-renamerMulligan Renamer tool for the Unity Editor allows for quick and safe renaming of many assets and gameobjects at once - redbluegames/unity-mulligan-renamer

STEP.1
PDFを開きます

Window > Red Blue > Mulligan Renamerからリネーマーが起動します


STEP.2
検索

詳細は省きますが、画像を見ての通り、多機能かつ見やすいです。

記号を削除できたり、数字を削除できたりと地味に便利な機能も。


日本語のリネーマー

日本語の方が良い場合はこちらが良さそうです。

ツクロウヤ
【Unity】リネームツール - ツクロウヤ
【Unity】リネームツール - ツクロウヤ今回は本当にUnityのリネームツールを紹介したいと思います。それでは早速以下より... ■機能概要 主な機能は以下の4点です。 「追加」レイヤー名に文字列を追加(前後) 「...

使い方はEditorにCommonEditorTools.csとObjRenamer.csを格納してCustome>Prefabs>ObjRenamerから起動します。

複数のプロジェクト共通でエディター拡張する方法

プロジェクト作るごとにエディタースクリプト入れ直すのが面倒だったので、共通化する方法を調べてみました。

こちらの記事を参考にしています。

Qiita
【UnityEditor】プロジェクトをまたいでエディター拡張したい - Qiita
【UnityEditor】プロジェクトをまたいでエディター拡張したい - Qiitaこの記事のUnityのバージョンはUnity5.3.5f1です. はじめに 通常、エディター拡張はエディタースクリプトを入れたプロジェクトにのみ適用されます。 エディター拡張を複...

STEP.1
スクリプトの用意

2種類のスクリプトを用意

・参考記事のデバッグログ出すスクリプト(CustomMenu.cs)
・Ctrl+Shift+F12でゲーム画面のスクリーンショットが撮れるスクリプト(CaptureScreenshotFromEditor.cs)

スクリーンショット用エディタスクリプト


STEP.2
フォルダの作成

Unityがインストールされている場所のC:\Program Files\Unity\20xx.x.xx\Editor\Data\UnityExtensions\Unity
下記のようにフォルダを作成しました。(※UnityExtensions直下であればどこでもいいようです)


STEP.3
フォルダの作成

Unity
 L Custom
  L Editor
   L CustomMenu.cs
   L CaptureScreenshotFromEditor.cs

スクリプトもEditorの中に格納します。


STEP.4
DLLの生成

下記のようなバッチ(build.bat)を作成

"C:\Program Files\Unity\20xx.x.xx\Editor\Data\Mono\bin\smcs.bat" -r:"C:\Program Files\Unity\20xx.x.x\Editor\Data\Managed\UnityEditor.dlll" -r:"C:\Program Files\Unity\20xx.x.x\Editor\Data\Managed\UnityEditor.dll" -target:library -out:"C:\Users\ユーザー名\Desktop\Editor\Script.dll" *.cs

※Unityフォルダにバージョンを入れている場合はパスを変更する

※生成する.dllは仮にEditorScript.dllとしました。

プログラムファイルは管理者権限もあるので、まずはバッチをデスクトップに置き、そこに2つのスクリプトをドラッグ&ドロップして、EditorScript.dllを生成

生成された. dllをスクリプトと同階層に移動


STEP.5
xmlの作成

Editorフォルダと同階層に下記のivy.xmlを配置

Unity
 L Custom
  L Editor
   L CustomMenu.cs
   L CaptureScreenshotFromEditor.cs
   L EditorScript.dll
  L ivy.xml

ivy.xml

<?xml version="1.0" encoding="utf-8"?>
<ivy-module version="2.0">
<info version="2017.3.0f3" organisation="Unity" module="Custom" e:packageType="UnityExtension" e:unityVersion="2017.3.0f3" xmlns:e="http://ant.apache.org/ivy/extra" />
<publications xmlns:e="http://ant.apache.org/ivy/extra">
<artifact name="Editor/EditorScript" type="dll" ext="dll" e:guid="adebbd281f1a4ef3a30be7f21937e02f" />
</publications>
</ivy-module>

※変更箇所はinfo version,organisation,module,unityVersion,artifact name

詳しく知りたい場合はこちら

けいごのなんとか
Module Managerを使って自作ライブラリを読み込んでみた - けいごのなんとか
Module Managerを使って自作ライブラリを読み込んでみた - けいごのなんとか[注意1] これはドキュメントに無く、推奨されていない使い方です。 [注意2] DLLを扱う方法しか調べてません。 Module Managerって? Add-On系のパッケージ(Android、iOS、...


STEP.5
確認

新規プロジェクトを作成しUnityを起動すると、メニューが表示され、またCtrl+Shift+F12でスクショも撮ることができました。

これで自作のエディター拡張制作がますます楽しくなります!


すいみん

uGUIに関するエディタ拡張は下記の記事にまとめました!
あわせて読みたい
【Unity】UI制作に便利!エディタ拡張まとめ13選[uGUI]
【Unity】UI制作に便利!エディタ拡張まとめ13選[uGUI]【UI制作に便利!エディタ拡張まとめ[uGUI]】実際につかってみて便利だったエディタ拡張を紹介します。Unityから直接Photoshopを開くUI組み込み後も画像の修正をPhoto...

この記事も読まれてます

目次
閉じる