7MHzバンド拡張対応 V型ダイポール 730V-xW · 7MHzバンド拡張対応V型ダイポール730V-xW 7MHzバンド拡張整合器BS41付V型ダイポール リモート操作による4バンド切替え
Unity エディタ拡張
-
Upload
shota-baba -
Category
Technology
-
view
1.260 -
download
2
Transcript of Unity エディタ拡張
Unity エディタ拡張
株式会社ハ・ン・ド
プログラマ
馬場翔太
/68
自己紹介
• 馬場翔太
• 株式会社ハ・ン・ド
• プログラマ
• Twitter:@baba_s_
• Qiita:baba_s
2
/68
株式会社ハ・ン・ド
3
/68
株式会社ハ・ン・ド
4
/68
コガネブログ
http://baba-s.hatenablog.com/
5
/68
アジェンダ
1. エディタ拡張の基本
2. Hierarchyビューの拡張
3. Projectビューの拡張
4. Sceneビューの拡張
5. 参考アセット
6
/68
ターゲット
• エディタ拡張初学者の方
• Unity 5 以上
7
/68
アジェンダ
1. エディタ拡張の基本
2. Hierarchyビューの拡張
3. Projectビューの拡張
4. Sceneビューの拡張
5. 参考アセット
8
/68
いろいろな場所が拡張可能
9
/68
エディタ拡張の方法
1. 「Editor」フォルダを作成
2. エディタ拡張用のスクリプトを格納
3. スクリプトに処理を記述
10
/68
アジェンダ
1. エディタ拡張の基本
2. Hierarchyビューの拡張
3. Projectビューの拡張
4. Sceneビューの拡張
5. 参考アセット
11
/68
Hierarchyビューとは
シーン内に存在するオブジェクトの一覧
12
/68
Hierarchyビューの拡張サンプル
オブジェクトが編集可能かどうか変更するアイコンを表示
13
/68
Hierarchyビューの拡張サンプル
オブジェクトを複数選択できるチェックボックスを表示
14
/68
Hierarchyビューの拡張サンプル
無効なコンポーネントがアタッチされているかを表示
15
/68
Hierarchyビューの拡張サンプル
オブジェクトに設定されているアイコンを表示
16
/68
Hierarchyビューの拡張サンプル
オブジェクトが持つコンポーネントの一覧を表示
17
/68
Hierarchyビューの拡張サンプル
一行おきに色を変える
18
/68
Hierarchyビューの拡張サンプル
NGUIのUIWidgetの
depthを編集するGUIを表示
19
/68
ゲームオブジェクトのアクティブを変更できる
チェックボックスを表示してみる
Hierarchyビューの拡張
20
/68
Hierarchyビューの拡張
「Editor」フォルダを作成して
エディタ拡張用のスクリプトを格納
21
/68
Hierarchyビューの拡張
クラスを定義
22
using UnityEditor; using UnityEngine; public class ExampleClass { ... }
/68
Hierarchyビューの拡張
「EditorApplication.hierarchyWindowItemOnGUI」に
コールバック関数を登録
23
[InitializeOnLoadMethod] static void Example() { EditorApplication.hierarchyWindowItemOnGUI += OnGUI; } static void OnGUI( int instanceID, Rect selectionRect ) { ... }
/68
Hierarchyビューの拡張
「EditorUtility.InstanceIDToObject」で
ゲームオブジェクトの情報を取得
24
var obj = EditorUtility.InstanceIDToObject( instanceID ); var go = obj as GameObject; if ( go == null ) { return; } ...
/68
Hierarchyビューの拡張
「GUI.Toggle」でゲームオブジェクトの
アクティブを変更するチェックボックスを表示
25
var pos = selectionRect; pos.x = pos.xMax - 16; pos.width = 16; var newActive = GUI.Toggle( pos, go.activeSelf, string.Empty ); go.SetActive( newActive );
/68
Hierarchyビューの拡張
26
using UnityEditor; using UnityEngine; public static class ExampleClass { [InitializeOnLoadMethod] static void Example()
{ EditorApplication.hierarchyWindowItemOnGUI += OnGUI; } static void OnGUI( int instanceID, Rect selectionRect ) {
var obj = EditorUtility.InstanceIDToObject( instanceID ); var go = obj as GameObject; if ( go == null ) { return; } var pos = selectionRect; pos.x = pos.xMax - 16; pos.width = 16; var newActive = GUI.Toggle( pos, go.activeSelf, string.Empty ); go.SetActive( newActive );
} }
/68
Hierarchyビューの拡張サンプル一覧
オブジェクトのアクティブを変更するチェックボックスを表示
http://baba-s.hatenablog.com/entry/2015/04/28/121747
オブジェクトが編集可能かどうか変更するアイコンを表示
http://baba-s.hatenablog.com/entry/2015/04/27/101143
オブジェクトを複数選択できるチェックボックスを表示
http://baba-s.hatenablog.com/entry/2015/04/29/133141
無効なコンポーネントがアタッチされているかを表示
http://baba-s.hatenablog.com/entry/2015/05/04/171926
オブジェクトに設定されているアイコンを表示
http://baba-s.hatenablog.com/entry/2015/05/05/103647
27
/68
Hierarchyビューの拡張サンプル一覧
オブジェクトが持つコンポーネントの一覧を表示
http://baba-s.hatenablog.com/entry/2015/05/08/114119
一行おきに色を変える
http://baba-s.hatenablog.com/entry/2015/05/09/122713
NGUIのUIWidgetのdepthを編集するGUIを表示
http://baba-s.hatenablog.com/entry/2015/05/25/125552
28
/68
アジェンダ
1. エディタ拡張の基本
2. Hierarchyビューの拡張
3. Projectビューの拡張
4. Sceneビューの拡張
5. 参考アセット
29
/68
Projectビューとは
プロジェクトに含まれるリソースの一覧
30
/68
Projectビューの拡張サンプル
拡張子を表示
31
/68
Projectビューの拡張サンプル
容量を表示
32
/68
Projectビューの拡張サンプル
ファイル数を表示
33
/68
Projectビューの拡張サンプル
テクスチャのプレビューを表示
34
/68
Projectビューの拡張サンプル
一行おきに色を変える
35
/68
アセットが管理されているフォルダを
エクスプローラで開くことができるボタンを表示してみる
Projectビューの拡張
36
/68
Projectビューの拡張
「Editor」フォルダを作成して
エディタ拡張用のスクリプトを格納
37
/68
Projectビューの拡張
クラスを定義
38
using UnityEditor; using UnityEngine; public class ExampleClass { ... }
/68
Projectビューの拡張
「EditorApplication.projectWindowItemOnGUI」に
コールバック関数を登録
39
[InitializeOnLoadMethod] static void Example() { EditorApplication.projectWindowItemOnGUI += OnGUI; } static void OnGUI( string guid, Rect selectionRect ) { ... }
/68
Projectビューの拡張
「AssetDatabase.GUIDToAssetPath」で
アセットが存在するファイルのパスを取得
40
var path = AssetDatabase.GUIDToAssetPath( guid ); path = path.Replace( “/”, “¥¥” ); ...
/68
Projectビューの拡張
「GUI.Button」でフォルダを開くためのボタンを表示
41
var pos = selectionRect; pos.x = pos.xMax - 16; pos.width = 16; if ( !GUI.Button( pos, "!" ) ) { return; } ...
/68
Projectビューの拡張
「Process.Start」でフォルダを開く
42
Process.Start( "explorer.exe", "/select," + path );
/68
Projectビューの拡張
43
using System.Diagnostics; using UnityEditor; using UnityEngine; public class ExampleClass {
[InitializeOnLoadMethod] static void Example() { EditorApplication.projectWindowItemOnGUI += OnGUI; } static void OnGUI( string guid, Rect selectionRect ) {
var pos = selectionRect; pos.x = pos.xMax - 16; pos.width = 16; if ( !GUI.Button( pos, "!" ) ){ return; } var path = AssetDatabase.GUIDToAssetPath( guid ); path = path.Replace( "/", "¥¥" ); Process.Start( "explorer.exe", "/select," + path );
} }
/68
Projectビューの拡張サンプル一覧
フォルダを開くボタンを表示
http://baba-s.hatenablog.com/entry/2015/06/21/193838
拡張子を表示
http://baba-s.hatenablog.com/entry/2015/05/07/103743
容量を表示
http://baba-s.hatenablog.com/entry/2015/06/18/101052
ファイル数を表示
http://baba-s.hatenablog.com/entry/2015/06/22/090000
テクスチャのプレビューを表示
http://baba-s.hatenablog.com/entry/2015/05/13/224633
44
/68
Projectビューの拡張サンプル一覧
一行おきに色を変える
http://baba-s.hatenablog.com/entry/2015/05/16/115549
45
/68
アジェンダ
1. エディタ拡張の基本
2. Hierarchyビューの拡張
3. Projectビューの拡張
4. Sceneビューの拡張
5. 参考アセット
46
/68
シーンの編集画面
Sceneビューとは
47
/68
Sceneビューの拡張サンプル
カメラを初期位置に戻すボタンを表示
48
/68
Sceneビューの拡張サンプル
Sceneビューと
Gameビューの
カメラを同期
49
/68
ボタンを表示してみる
Sceneビューの拡張
50
/68
Sceneビューの拡張
「Editor」フォルダを作成して
エディタ拡張用のスクリプトを格納
51
/68
Sceneビューの拡張
クラスを定義
52
using UnityEditor; using UnityEngine; public class ExampleClass { ... }
/68
Sceneビューの拡張
「SceneView.onSceneGUIDelegate」に
コールバック関数を登録
53
[InitializeOnLoadMethod] static void Example() { SceneView.onSceneGUIDelegate += OnGUI; } static void OnGUI( SceneView sceneView ) { ... }
/68
Sceneビューの拡張
「GUI.WindowFunction」で表示するボタンの一覧を作成
54
GUI.WindowFunction func = id => {
if ( GUILayout.Button( "Shaded" ) ) { // TODO } else if ( GUILayout.Button( "Wireframe" ) ) { // TODO }
}; ...
/68
Sceneビューの拡張
「GUILayout.Window」でボタンの一覧を表示
55
var rect = new Rect( 8, 24, 80, 0 ); GUILayout.Window( 1, rect, func, string.Empty );
/68
Sceneビューの拡張
56
using UnityEditor; using UnityEngine; public class ExampleClass {
[InitializeOnLoadMethod] static void Example() { SceneView.onSceneGUIDelegate += OnGUI; } static void OnGUI( SceneView sceneView ) { GUI.WindowFunction func = id =>
{ if ( GUILayout.Button( "Shaded" ) ) {} else if ( GUILayout.Button( “Wireframe" ) ) {}
}; var rect = new Rect( 8, 24, 80, 0 ); GUILayout.Window( 1, rect, func, string.Empty );
} }
/68
Sceneビューの拡張サンプル一覧
ボタンを表示
http://baba-s.hatenablog.com/entry/2015/06/19/103708
カメラを初期位置に戻すボタンを表示
http://baba-s.hatenablog.com/entry/2015/05/11/100630
SceneビューとGameビューのカメラを同期
https://github.com/anchan828/unitejapan2014
57
/68
アジェンダ
1. エディタ拡張の基本
2. Hierarchyビューの拡張
3. Projectビューの拡張
4. Sceneビューの拡張
5. 参考アセット
58
/68
参考アセット
• QHierarchy
• Favorites Tab[s]
• UNITY EDITOR ENHANCEMENTS
59
/68
QHierarchy
https://www.assetstore.unity3d.com/jp/#!/content/28577
60
/68
QHierarchy
61
/68
QHierarchy
62
/68
Favorites Tab[s]
https://www.assetstore.unity3d.com/jp/#!/content/4237
63
/68
Favorites Tab[s]
64
/68
UNITY EDITOR ENHANCEMENTS
http://www.tenebrous.co.uk/?portfolio=unity-editor-enhancements
65
/68
まとめ
• エディタ拡張は簡単
• Hierarchyビューは拡張可能
• Projectビューも拡張可能
• Sceneビューも拡張可能
• 既に便利なアセットがたくさん
66
/68
知って得するUnity エディタ拡張編
http://www.slideshare.net/shotababa359/unity-32294734
67
/68 68
ありがとうございました