メニュー
\ 最大8%ポイントアップ! /詳細を見る

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

eyecatch-unity-editor-extensions

海外でフリーランスをしているテクニカルアーティスト
ゲーム開発・映像制作・WEB制作等を請け負っています。
当ブログは作業効率化のための技術ブログです。

目次

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

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

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

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

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

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

[open title=’コード’]

[/open]

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

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

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

[open title=’コード’]

[/open]

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

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

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

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

[open title=’AddSerialNumber.cs’]

[/open]

  • 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 2018/08/23追記気づいたら Application.ScreenShot が使えなくなっていたので ScreenCapture.ScreenShot に変更しました。 Unity 2018…
生存日記
Unityでスクリーンショットを保存する エディタの実行中の画面のスクリーンショットをとって保存するスクリプトを書いた。 Editorディレクトリに置く…

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

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

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

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

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

あわせて読みたい

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

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

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

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

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

[timeline]
[tl label=’STEP.1′ title=’FindObjects.cs’]

FindObjects.csを使用します。

あわせて読みたい
特定のコンポーネントがアタッチされたプレハブを検索するエディタ拡張 - PanzerSoftのブログ サークルPanzerSoftのブログ。移転しました→ https://panzersoft.com/

[/tl]
[tl label=’STEP.2′ title=’検索’]

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

MaskOutlineAspectRatioFitter、などなど
[/tl]
[/timeline]

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

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

Mulligan Renamer Tool for Unity

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

GitHub
unity-mulligan-renamer/Assets/RedBlueGames/MulliganRenamer/Editor at main · redbluegames/unity-mulli... Mulligan Renamer tool for the Unity Editor allows for quick and safe renaming of many assets and gameobjects at once - redbluegames/unity-mulligan-renamer

[timeline]
[tl label=’STEP.1′ title=’PDFを開きます’]

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

[/tl]
[tl label=’STEP.2′ title=’検索’]

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

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

[/tl]
[/timeline]

日本語のリネーマー

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

ツクロウヤ
【Unity】リネームツール - ツクロウヤ ツール類はこちらのブログに引っ越ししました。 www.omusubi-tech.com ■機能概要 主な機能は以下の4点です。 「追加」レイヤー名に文字列を追加(前後) 「置換」レイヤー...

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

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

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

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

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

[timeline]
[tl label=’STEP.1′ title=’スクリプトの用意’]
2種類のスクリプトを用意

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

スクリーンショット用エディタスクリプト
[/tl]
[tl label=’STEP.2′ title=’フォルダの作成’]

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

[/tl]
[tl label=’STEP.3′ title=’フォルダの作成’]

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

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

[/tl]
[tl label=’STEP.4′ title=’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をスクリプトと同階層に移動

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

[/tl]
[tl label=’STEP.5′ title=’確認’]

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

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

[/tl]
[/timeline]

uGUIに関するエディタ拡張は下記の記事にまとめました!

[card2 id=”17346″ target=”_blank”]

全記事一覧

  • URLをコピーしました!

Unityに関する参考記事・ツール・書籍のまとめ

Unityの参考書籍

著:北村 愛実
¥2,673 (2024/04/21 10:25時点 | Amazon調べ)
\ポイント最大9倍!/
楽天市場
\ポイント5%還元!/
Yahooショッピング
著:吉谷幹人, 著:布留川英一, 著:一條貴彰, 著:西森丈俊, 著:藤岡裕吾, 著:室星亮太, 著:車谷勇人, 著:湊新平, 著:土屋つかさ, 著:黒河優介, 著:中村優一, 著:牙竜, 著:コポコポ, 著:かせ, 著:hataken, 著:monmoko
¥4,400 (2024/04/20 09:21時点 | Amazon調べ)
\ポイント最大9倍!/
楽天市場
\ポイント5%還元!/
Yahooショッピング
著:森哲哉, 著:布留川英一, 著:西森丈俊, 著:車谷勇人, 著:一條貴彰, 著:打田恭平, 著:轟昂, 著:室星亮太, 著:井本大登, 著:細田翔, 著:西岡陽, 著:平井佑樹, 著:コポコポ, 著:すいみん, 著:Maruton, 著:karukaru, 著:ハダシA, 著:notargs, 著:EIKI`, 著:おれんじりりぃ, 著:黒河優介, 著:中村優一, 著:藤岡裕吾
¥8,408 (2024/04/20 09:21時点 | Amazon調べ)
\ポイント最大9倍!/
楽天市場
\ポイント5%還元!/
Yahooショッピング
ボーンデジタル
¥5,060 (2024/04/25 06:33時点 | Amazon調べ)
\ポイント最大9倍!/
楽天市場
\ポイント5%還元!/
Yahooショッピング
技術評論社
¥4,620 (2024/04/21 10:25時点 | Amazon調べ)
\ポイント最大9倍!/
楽天市場
\ポイント5%還元!/
Yahooショッピング

Unityの人気アセット

目次