Successfully reported this slideshow.
Your SlideShare is downloading. ×

そうだプラグイン作ろう =Unityの巻=

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Upcoming SlideShare
(たぶん)やさしいUnity
(たぶん)やさしいUnity
Loading in …3
×

Check these out next

1 of 21 Ad

More Related Content

Similar to そうだプラグイン作ろう =Unityの巻= (20)

More from Keiichi Kobayashi (20)

Advertisement

Recently uploaded (20)

そうだプラグイン作ろう =Unityの巻=

  1. 1. そうだプラグイン作ろう =Unityの巻= @kobayan_tokyo
  2. 2. 自己紹介 ・@kobayan_tokyo ・http://blog.clock-up.jp/ ・フリーランス。ツール開発業(?)。および講師。 ・実はUnityでゲーム本体を作ったことが無い ・純Windowsユーザ (Mac分からない…)
  3. 3. そうだプラグイン作ろう
  4. 4. 使うもの ・Unity ・MonoDevelop ・Visual Studio 2010
  5. 5. サンプルコード https://github.com/kobake/unity-plugin-sample 今回紹介する事例をいくつが載せました。
  6. 6. 組み込み方は? Assets の中にソースコード置くだけ。   ↓ 自動でコンパイル走って 組み込まれます。
  7. 7. コード例
  8. 8. メニューを拡張しよう Assets/TestDesu.cs ----------------------------------- using UnityEngine; using UnityEditor; public class TestDesu{ [MenuItem("Hoge/Fuga")] public static void Fugafuga(){ Debug.Log("Hello"); } } ※波括弧の位置とかはスライド紙面の都合でほげほげ。
  9. 9. ウィンドウを出そう // ウィンドウ定義 public class PiyoWin : EditorWindow{ } // ウィンドウ表示 PiyoWin.GetWindow( typeof(PiyoWin) );
  10. 10. ウィンドウ内の部品 class PiyoWindow : EditorWindow{ void OnGUI() { GUILayout.Label("Hoge"); GUILayout.Button("Fuga"); } }
  11. 11. イベントハンドリング if (GUILayout.Button("FugaA")) { Debug.Log("A!!!"); } if (GUILayout.Button("FugaB")) { Debug.Log("B!!!"); }
  12. 12. もっとレイアウト GUILayout.BeginHorizontal(); GUILayout.Button("1"); GUILayout.Button("2"); GUILayout.Button("3"); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Button("4"); GUILayout.Button("5"); GUILayout.Button("6"); GUILayout.EndHorizontal();
  13. 13. レイアウト注意 GUILayout.BeginHorizontal(); GUILayout.Button("4"); GUILayout.Button("5"); GUILayout.Button("6"); GUILayout.EndHorizontal(); GUILayout.EndHorizontal(); // 終わり過ぎた
  14. 14. レイアウト注意 GUILayout.BeginHorizontal(); GUILayout.Button("4"); GUILayout.Button("5"); GUILayout.Button("6"); GUILayout.EndHorizontal(); GUILayout.EndHorizontal(); // 終わり過ぎた 過剰に怒られる。
  15. 15. レイアウトラップ(自前) public void V(Action action) { GUILayout.BeginVertical("box"); try{ action(); } catch (Exception ex){ Debug.Log(ex.ToString()); } GUILayout.EndVertical(); }
  16. 16. ネストが込み入っても大丈夫!(?) H(delegate() { H(delegate() { H(delegate() { H(delegate() { V(delegate() { GUILayout.Button("a"); GUILayout.Button("b"); }); V(delegate() {
  17. 17. その他レイアウト ・EditorGUILayout.Foldout … 折り畳み ・GUILayout.Toggle … チェックボックス ・GUILayout.Space … 隙間あける …等々。
  18. 18. ゲーム状態を監視しよう class HogeWindow : EditorWindow{ void Update(){ if (data changed){ Repaint(); } } void OnGUI(){ GUILayout.Label( "state:" + GameObject.find~~ ); } } ゲーム本体の構造 ツールの構造 ガンガン依存す れば良い あまり依存した くない
  19. 19. デバッグ用コード切り分け ------------------------------ #if UNITY_EDITOR プラグイン関連依存の処理 #endif ------------------------------
  20. 20. 参考資料等
  21. 21. 参考URL Unity Manual - Editor Windows http://docs-jp.unity3d. com/Documentation/Components/editor- EditorWindows.html

×