Unity エディタ拡張

7,060 views

Published on

Published in: Technology
0 Comments
12 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
7,060
On SlideShare
0
From Embeds
0
Number of Embeds
2,487
Actions
Shares
0
Downloads
19
Comments
0
Likes
12
Embeds 0
No embeds

No notes for slide

Unity エディタ拡張

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

×