Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Unity エディタ拡張

13,067 views

Published on

Published in: Technology

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 ありがとうございました

×