そうだプラグイン作ろう
=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 TestDesu{
[MenuItem("Hoge/Fuga")]
public static void Fugafuga(){
Debug.Log("Hello");
}
}
※波括弧の位置とかはスライド紙面の都合でほげほげ。
ウィンドウを出そう
// ウィンドウ定義
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.EndHorizontal();
GUILayout.BeginHorizontal();
GUILayout.Button("4");
GUILayout.Button("5");
GUILayout.Button("6");
GUILayout.EndHorizontal();
レイアウト注意
GUILayout.BeginHorizontal();
GUILayout.Button("4");
GUILayout.Button("5");
GUILayout.Button("6");
GUILayout.EndHorizontal();
GUILayout.EndHorizontal(); // 終わり過ぎた
レイアウト注意
GUILayout.BeginHorizontal();
GUILayout.Button("4");
GUILayout.Button("5");
GUILayout.Button("6");
GUILayout.EndHorizontal();
GUILayout.EndHorizontal(); // 終わり過ぎた
過剰に怒られる。
レイアウトラップ(自前)
public void V(Action action)
{
GUILayout.BeginVertical("box");
try{
action();
}
catch (Exception ex){
Debug.Log(ex.ToString());
}
GUILayout.EndVertical();
}
ネストが込み入っても大丈夫!(?)
H(delegate()
{
H(delegate()
{
H(delegate()
{
H(delegate()
{
V(delegate()
{
GUILayout.Button("a");
GUILayout.Button("b");
});
V(delegate()
{
その他レイアウト
・EditorGUILayout.Foldout … 折り畳み
・GUILayout.Toggle … チェックボックス
・GUILayout.Space … 隙間あける
…等々。
ゲーム状態を監視しよう
class HogeWindow : EditorWindow{
void Update(){
if (data changed){
Repaint();
}
}
void OnGUI(){
GUILayout.Label(
"state:" + GameObject.find~~
);
}
}
ゲーム本体の構造
ツールの構造
ガンガン依存す
れば良い
あまり依存した
くない
デバッグ用コード切り分け
------------------------------
#if UNITY_EDITOR
プラグイン関連依存の処理
#endif
------------------------------
参考資料等
参考URL
Unity Manual - Editor Windows
http://docs-jp.unity3d.
com/Documentation/Components/editor-
EditorWindows.html

More Related Content

PDF
(たぶん)やさしいUnity
PDF
Jenkins study 7 2013-01-28
PDF
テストを書こう、Unity編
PDF
自作ゲームをWebpack対応させてみた
PPTX
活動報告7 d&dなディレクティブを作る-
PDF
はじめてのWord pressプラグイン勉強会
PDF
MOONBlockでプログラミング体験
ODP
Unity入門講座その1
(たぶん)やさしいUnity
Jenkins study 7 2013-01-28
テストを書こう、Unity編
自作ゲームをWebpack対応させてみた
活動報告7 d&dなディレクティブを作る-
はじめてのWord pressプラグイン勉強会
MOONBlockでプログラミング体験
Unity入門講座その1

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

PDF
【Unite 2018 Tokyo】エディター拡張マニアクス2018
KEY
Unityの夕べ in Fukuoka
PPTX
その後のBash on windows
PDF
Visual studio de debug
PDF
NuGet でゲット! Visual Studio パッケージ マネージャ―概要
PDF
ゲーム開発初心者の僕がUnity + WebSocketで何か作ってみた
PDF
Jenkins+Play!で気軽にCI
PDF
Css nite(2010.09.23)
PDF
Handson opencv! 画像処理ライブラリを使って面白いプログラムを作ろう!その2
PDF
Android初心者開発その前に
PDF
Unityティーチャートレーニングデイ -認定プログラマー編-
PDF
Python toolforvsをインストールをしてみる
PPTX
Azure PlayFab Unity SDK vs C# SDK
PPTX
Visual Studio 2010で楽しくデバッグ
PPTX
Windowsマシン上でVisual Studio Codeとpipenvを使ってPythonの仮想実行環境を構築する方法(Jupyter notebookも)
PPTX
Jenkinsを使おうよ
PDF
こんなに違う!Unityアプリケーション講座
PPTX
C#で作ったプログラムのインストーラーをInnoSetupで作成(1)
PDF
Unity2015_No2~Terrain~
PDF
Windows 11とNPUで実現するWindowsのAI
【Unite 2018 Tokyo】エディター拡張マニアクス2018
Unityの夕べ in Fukuoka
その後のBash on windows
Visual studio de debug
NuGet でゲット! Visual Studio パッケージ マネージャ―概要
ゲーム開発初心者の僕がUnity + WebSocketで何か作ってみた
Jenkins+Play!で気軽にCI
Css nite(2010.09.23)
Handson opencv! 画像処理ライブラリを使って面白いプログラムを作ろう!その2
Android初心者開発その前に
Unityティーチャートレーニングデイ -認定プログラマー編-
Python toolforvsをインストールをしてみる
Azure PlayFab Unity SDK vs C# SDK
Visual Studio 2010で楽しくデバッグ
Windowsマシン上でVisual Studio Codeとpipenvを使ってPythonの仮想実行環境を構築する方法(Jupyter notebookも)
Jenkinsを使おうよ
こんなに違う!Unityアプリケーション講座
C#で作ったプログラムのインストーラーをInnoSetupで作成(1)
Unity2015_No2~Terrain~
Windows 11とNPUで実現するWindowsのAI
Ad

More from Keiichi Kobayashi (20)

PDF
こだわりの仕事スタイル:モチベ維持
PDF
Ssh公開鍵認証ハンズオン
PDF
PHP with Visual Studio
PDF
Angular js活用事例:filydoc
PDF
Chromeデベロッパーツール
PDF
Filydoc紹介(8月末版)
PDF
いまさら触るAwt
PDF
Filydoc紹介
PDF
Java script関数コールの追跡
PDF
似非燃え尽き症候群
PDF
ドハマリ Is ナレッジ
PDF
Tbsアイデアソンに参加しました
PDF
オープンソースコミュニティへのライトな貢献
PDF
職業エンジニアの生態
PDF
検索の工夫
PDF
個人名刺を作ろう
PDF
ソフトウェア開発ブースト4手
PDF
新サービス(勉強会まとめ)を作り始めてみた
PDF
フリーエンジニアになりました
PPT
Visual studio
こだわりの仕事スタイル:モチベ維持
Ssh公開鍵認証ハンズオン
PHP with Visual Studio
Angular js活用事例:filydoc
Chromeデベロッパーツール
Filydoc紹介(8月末版)
いまさら触るAwt
Filydoc紹介
Java script関数コールの追跡
似非燃え尽き症候群
ドハマリ Is ナレッジ
Tbsアイデアソンに参加しました
オープンソースコミュニティへのライトな貢献
職業エンジニアの生態
検索の工夫
個人名刺を作ろう
ソフトウェア開発ブースト4手
新サービス(勉強会まとめ)を作り始めてみた
フリーエンジニアになりました
Visual studio
Ad

Recently uploaded (8)

PPTX
Cosense - 整えずして完全勝利!Cosenseが他のwikiツールと違う理由
PDF
20250823_IoTLT_vol126_kitazaki_v1___.pdf
PDF
Yamaha DT200WR Real Enduro ENGINE CYLINDER TRANSMISSION
PPTX
Vibe Codingを触って感じた現実について.pptx .
PDF
Geminiの出力崩壊 本レポートは、Googleの大規模言語モデル「Gemini 2.5」が、特定の画像と短文入力に対して、誤った地名を推定し、最終的に...
PDF
R-SCoRe: Revisiting Scene Coordinate Regression for Robust Large-Scale Visual...
PPTX
生成AIとモデルベース開発:実はとても相性が良いことを説明します。まあそうだろうなと思われる方はご覧ください。
PDF
20250826_Devinで切り拓く沖縄ITの未来_AI駆動開発勉強会 沖縄支部 第2回
Cosense - 整えずして完全勝利!Cosenseが他のwikiツールと違う理由
20250823_IoTLT_vol126_kitazaki_v1___.pdf
Yamaha DT200WR Real Enduro ENGINE CYLINDER TRANSMISSION
Vibe Codingを触って感じた現実について.pptx .
Geminiの出力崩壊 本レポートは、Googleの大規模言語モデル「Gemini 2.5」が、特定の画像と短文入力に対して、誤った地名を推定し、最終的に...
R-SCoRe: Revisiting Scene Coordinate Regression for Robust Large-Scale Visual...
生成AIとモデルベース開発:実はとても相性が良いことを説明します。まあそうだろうなと思われる方はご覧ください。
20250826_Devinで切り拓く沖縄ITの未来_AI駆動開発勉強会 沖縄支部 第2回

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