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の巻=
@kobayan_tokyo
自己紹介
・@kobayan_tokyo
・http://blog.clock-up.jp/
・フリーランス。ツール開発業(?)。および講師。
・実はUnityでゲーム本体を作ったことが無い
・純Windowsユーザ (Mac分からない…)
そうだプラグイン作ろう
使うもの
・Unity
・MonoDevelop
・Visual Studio 2010
サンプルコード
https://github.com/kobake/unity-plugin-sample
今回紹介する事例をいくつが載せました。
組み込み方は?
Assets の中にソースコード置くだけ。
  ↓
自動でコンパイル走って
組み込まれます。
コード例
メニューを拡張しよう
Assets/TestDesu.cs
-----------------------------------
using UnityEngine;
using UnityEditor;
public class TestD...
ウィンドウを出そう
// ウィンドウ定義
public class PiyoWin : EditorWindow{
}
// ウィンドウ表示
PiyoWin.GetWindow(
typeof(PiyoWin)
);
ウィンドウ内の部品
class PiyoWindow : EditorWindow{
void OnGUI()
{
GUILayout.Label("Hoge");
GUILayout.Button("Fuga");
}
}
イベントハンドリング
if (GUILayout.Button("FugaA"))
{
Debug.Log("A!!!");
}
if (GUILayout.Button("FugaB"))
{
Debug.Log("B!!!");
}
もっとレイアウト
GUILayout.BeginHorizontal();
GUILayout.Button("1");
GUILayout.Button("2");
GUILayout.Button("3");
GUILayout.EndHo...
レイアウト注意
GUILayout.BeginHorizontal();
GUILayout.Button("4");
GUILayout.Button("5");
GUILayout.Button("6");
GUILayout.EndHor...
レイアウト注意
GUILayout.BeginHorizontal();
GUILayout.Button("4");
GUILayout.Button("5");
GUILayout.Button("6");
GUILayout.EndHor...
レイアウトラップ(自前)
public void V(Action action)
{
GUILayout.BeginVertical("box");
try{
action();
}
catch (Exception ex){
Debug.L...
ネストが込み入っても大丈夫!(?)
H(delegate()
{
H(delegate()
{
H(delegate()
{
H(delegate()
{
V(delegate()
{
GUILayout.Button("a");
GUILay...
その他レイアウト
・EditorGUILayout.Foldout … 折り畳み
・GUILayout.Toggle … チェックボックス
・GUILayout.Space … 隙間あける
…等々。
ゲーム状態を監視しよう
class HogeWindow : EditorWindow{
void Update(){
if (data changed){
Repaint();
}
}
void OnGUI(){
GUILayout.Labe...
デバッグ用コード切り分け
------------------------------
#if UNITY_EDITOR
プラグイン関連依存の処理
#endif
------------------------------
参考資料等
参考URL
Unity Manual - Editor Windows
http://docs-jp.unity3d.
com/Documentation/Components/editor-
EditorWindows.html
Upcoming SlideShare
Loading in …5
×

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

1,024 views

Published on

Unity お・と・な のLT大会2

Published in: Technology
  • Be the first to comment

そうだプラグイン作ろう =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

×