目次
はじめに
以下の画像を見てもらうとわかりますが、インスペクターの特定のスクリプトに画像が配置できます。
すごいですね、最終的な成果物にはまったく関係ないですが Asset Store などでライブラリを公開する場合などにこういったスクリプトを含めるとすごくできる感が出ますのでおすすめです!
Unityを知らない方は、ぜひ こちらの記事 をご参照ください。
便利機能一覧
以下に、他にもある便利機能のリンクを載せますのでぜひご参照ください。- Unity オブジェクトにアイコンを設定して視認性をあげる
- Unity:Projectウィンドウの検索を使いこなす!
- Unity:Material(Shader) の設定一覧を表示する
- Unity:カメラの位置・回転を Sceneビュー の見た目に合わせる
- Unity:インスペクター(Inspector)で計算式が使える!
- Unity:オブジェクトをくっつけて配置する
- Unity:ヒエラルキに複数シーンで開発効率アップ!
- Unity:スクリプトから一時停止・停止・再生をする方法
- Unity:シーンビューの背景色を変更する
使い方
Editor スクリプトを用意
Editorフォルダを作成して、以下のスクリプトと画像を配置します。
using System;
using UnityEngine;
using UnityEditor;
namespace DigitalRuby.Earth
{
[CustomEditor(typeof(TestScript))]
public class LogoView : Editor
{
private Texture2D logo;
public override void OnInspectorGUI()
{
if (logo == null)
{
string[] guids = AssetDatabase.FindAssets("LogoView");
foreach (string guid in guids)
{
string path = AssetDatabase.GUIDToAssetPath(guid);
logo = AssetDatabase.LoadMainAssetAtPath(path) as Texture2D;
if (logo != null)
{
break;
}
}
}
if (logo != null)
{
const float maxLogoWidth = 430.0f;
EditorGUILayout.Separator();
float w = EditorGUIUtility.currentViewWidth;
Rect r = new Rect();
r.width = Math.Min(w - 40.0f, maxLogoWidth);
r.height = r.width / 4f;
Rect r2 = GUILayoutUtility.GetRect(r.width, r.height);
r.x = ((EditorGUIUtility.currentViewWidth - r.width) * 0.5f) - 4.0f;
r.y = r2.y;
GUI.DrawTexture(r, logo, ScaleMode.StretchToFill);
EditorGUILayout.Separator();
}
DrawDefaultInspector();
}
}
}
対象スクリプトを用意
ロゴを表示するための空のスクリプトを用意します。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TestScript : MonoBehaviour {
}
使ってみる
適当なゲームオブジェクトを作成して、TestScript をアタッチすると、見事にロゴが表示されるようになりました、すごいですね!!
番外:クリックアクションを取得する
実はロゴをクリックしたときのイベントを追加できます。
以下のように追加すると、Googleをブラウザで開きます。
GUI.DrawTexture(r, logo, ScaleMode.StretchToFill);
↓
GUI.DrawTexture(r, logo, ScaleMode.StretchToFill);
if (GUI.Button(r, "", new GUIStyle()))
{
Application.OpenURL("https://www.google.com/");
}