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.
Asset Storeに出す為               のEditor開発入門                 さいたま開発勉強会 vol6                     三上 浩平13年1月20日日曜日
自己紹介              •   三上 浩平(@mi_kami)              •   自分のWebサイト: http://mkgames.me              •   会社ではeclipseプラグインの開発をし...
THE 破壊                     (Break it!)          • 1週間で作ったUnityのゲーム(iOS/Android)13年1月20日日曜日
SimpleData              • C82で頒布したUnityのAsset              • Unity版Core Dataみたいなもの13年1月20日日曜日
ateliate              •   電子書籍が作れるかもしれないMacアプリ              •   C78で頒布 → ねじさん買いにきた!!!13年1月20日日曜日
ギークハウス武蔵小杉              •   神奈川県川崎市にあるシェアハウス              •   GGJ in ギークハウス(参加者募集中)                  • 1/25~1/27 → http://...
UnityのEditorを作ろう13年1月20日日曜日
なんで?              •   ゲーム開発にはツールがたくさん必要!              •   例: (ソーシャルでない)カードゲーム作るとき                  •   カードのバランスを編集する為のエディタ...
Unityのツールを作る利点              •   カードのバランスを編集するなら、Excelや                  XMLを編集してインポートでは駄目?              •   別にUnityでツール作らな...
AssetStoreとは         •    ユーザーが3Dモデルや              ツールを購入する為の              ストア         •    購入するだけでなく、              販売すること...
Assetが作れると...              •   ゲームを作ってて、何かに困ったのでツール                  (Asset)を作った                  • 自分が困った = 他にも困ってる人がいる  ...
例1: NGUI              •   UIを作成する為のAsset              •   Unityでゲームを作った                  がまったくヒットせ                  ず、このAs...
例2: CutScene        •     よくある3Dのムービー              シーンを作る為のAsset        •     ゴリゴリ矩形を描画し              てFlashのタイムライン       ...
Assetを作りましょう13年1月20日日曜日
Editorを作ろう     •   Editorとは、何かを編集す         るための領域(Window)     •   この領域に対して、ユー         ザーは自由にGUIパーツを         配置したり描画できる    ...
目次              1. Editorの作り方の基本              2. キーボード入力とマウス入力              3. データの持ち方              4. 矩形と線の描画            ...
1. Editorの作り方の基本13年1月20日日曜日
Editorを実装する              •   EditorWindowを継承したクラスを作る              •   Init()でEditorWindow.GetWindow()を呼ぶ                  ...
メニューへの登録         •    MenuItem属性を追加する        using System;              とメニューに登録される            using UnityEngine;         ...
処理の記述        •     public void OnSelectionChange()              • ProjectビューやHierarchyビューで                要素が選択された時に呼ばれる  ...
GUIを配置する方法              •   GUIを配置する為の3つの方法                  •   GUI : 好きな座標に、好きな大きさで配置                  •   GUILayout : 自...
GUIの実装方法              • EditorGUILayout.TextField(“Object                Name”, variable);              • 返却値を変数に格納       ...
2. キーボードとマウス              入力13年1月20日日曜日
キー入力の実装              •   ショートカット等を作るだけでEditorがより使                  いやすくなる              •   簡単そうに見えるものでも、キー入力の処理           ...
マウス入力の実装              •   OnGUI()でマウスイベントを処理する              •   Event.current.mousePositionで座標を取得              •   Event.c...
コード例              private void OnGUI()              {                 Event e = Event.current;                  EventType ...
3. データの持ち方13年1月20日日曜日
SimpleDataのデータ              •   スクリプトでシリアライズさ                  れるデータを設計情報として                  使用する              •   描画されてい...
シリアライズとは         •    シリアライズ = 永続化(データ              が保存される)         •    UnityのInspector上で編集出来              る値は、すべてシリアライズ ...
シリアライズする              •   シリアライズする2種類の方法                  1. MonoBehaviourを継承したクラスで、public変                     数を追加する    ...
コード例                using UnityEngine;                using System.Collections;                                 [System.Se...
4. 矩形と線の描画13年1月20日日曜日
矩形の描画              •   OnGUI()でGUI.Box (new                  Rect(0, 0, 100, 100), " ");              •   この背景に使われている矩    ...
テクスチャの張り方              •   OnGUI()内で                  GUI.DrawTexture (new                  Rect (0, 0, 16, 16),          ...
線の描画              •   実は線の描画もテクス                  チャの描画              •   GUI.DrawLineは無い              •   一本線を引いたテクス      ...
5. AssetStoreの出し方13年1月20日日曜日
Asset Store Guidline              •   Asset Storeに出すとき                  の注意点がまとめられ                  た(味気ない)文書             ...
Assetに関連する項目(1)              •   Assetのセットアップが必要な場合、明確にドキュメント化して、ユー                  ザーをサポートすること              •   デモ用のビデオや...
Assetに関連する項目(2)              •   通常のUI標準に従う必要があり、反直感的なUIは避ける(ドキュメン                  トを見なくても使えるようにすべき)              •   すべて...
価格のガイドライン13年1月20日日曜日
Asset Storeの申請              •   Asset StoreからAsset                  Store ToolsをDL              •   Asset Storeに掲載する      ...
Upcoming SlideShare
Loading in …5
×

Asset Storeに出すためのEditor開発入門

19,869 views

Published on

さいたま開発勉強会 vol.6の発表資料です

Published in: Technology
  • Be the first to comment

Asset Storeに出すためのEditor開発入門

  1. 1. Asset Storeに出す為 のEditor開発入門 さいたま開発勉強会 vol6 三上 浩平13年1月20日日曜日
  2. 2. 自己紹介 • 三上 浩平(@mi_kami) • 自分のWebサイト: http://mkgames.me • 会社ではeclipseプラグインの開発をしています • 家でUnity使ってゲームを作っています13年1月20日日曜日
  3. 3. THE 破壊 (Break it!) • 1週間で作ったUnityのゲーム(iOS/Android)13年1月20日日曜日
  4. 4. SimpleData • C82で頒布したUnityのAsset • Unity版Core Dataみたいなもの13年1月20日日曜日
  5. 5. ateliate • 電子書籍が作れるかもしれないMacアプリ • C78で頒布 → ねじさん買いにきた!!!13年1月20日日曜日
  6. 6. ギークハウス武蔵小杉 • 神奈川県川崎市にあるシェアハウス • GGJ in ギークハウス(参加者募集中) • 1/25~1/27 → http://mkgames.me/ggj • Unity勉強会 in ギークハウス武蔵小杉 • 第2回: 2/17 → http://atnd.org/events/36103 • コースを借りてミニ四駆イベント(2月中) • 大会に出る人とかArduinoを載せる人とか13年1月20日日曜日
  7. 7. UnityのEditorを作ろう13年1月20日日曜日
  8. 8. なんで? • ゲーム開発にはツールがたくさん必要! • 例: (ソーシャルでない)カードゲーム作るとき • カードのバランスを編集する為のエディタ (プログラマでなくても編集できるように) • ゲームのルールを変更する為のエディタ • 規模が大きくなると、作りたいゲームに合わ せて自身でツールも開発する必要がある13年1月20日日曜日
  9. 9. Unityのツールを作る利点 • カードのバランスを編集するなら、Excelや XMLを編集してインポートでは駄目? • 別にUnityでツール作らなくても好きな環境で 作るし...。 • Unityでツールを作るとAsset Storeに出せ る!!(利点)13年1月20日日曜日
  10. 10. AssetStoreとは • ユーザーが3Dモデルや ツールを購入する為の ストア • 購入するだけでなく、 販売することも可能 • 無料∼$100以上するも のまで様々13年1月20日日曜日
  11. 11. Assetが作れると... • ゲームを作ってて、何かに困ったのでツール (Asset)を作った • 自分が困った = 他にも困ってる人がいる • ゲームを作るついでに作ったツールをAsset Storeに出して、それを売れる!! • 自分が何に困っていて、他の人をどう便利に できるか考えよう13年1月20日日曜日
  12. 12. 例1: NGUI • UIを作成する為のAsset • Unityでゲームを作った がまったくヒットせ ず、このAssetだけが大 ヒット • フレームワークが良く 考えられている • EditorとInspectorの拡張13年1月20日日曜日
  13. 13. 例2: CutScene • よくある3Dのムービー シーンを作る為のAsset • ゴリゴリ矩形を描画し てFlashのタイムライン のようなものを実装し ている13年1月20日日曜日
  14. 14. Assetを作りましょう13年1月20日日曜日
  15. 15. Editorを作ろう • Editorとは、何かを編集す るための領域(Window) • この領域に対して、ユー ザーは自由にGUIパーツを 配置したり描画できる Scene Inspector • Editor以外にも、Inspectorや Sceneビューを拡張できる Editor • これら全てをまとめてパッ ケージングしたものをAsset Storeで公開13年1月20日日曜日
  16. 16. 目次 1. Editorの作り方の基本 2. キーボード入力とマウス入力 3. データの持ち方 4. 矩形と線の描画 5. AssetStoreの出し方13年1月20日日曜日
  17. 17. 1. Editorの作り方の基本13年1月20日日曜日
  18. 18. Editorを実装する • EditorWindowを継承したクラスを作る • Init()でEditorWindow.GetWindow()を呼ぶ using System; using UnityEngine; using UnityEditor; public class TestWindow : EditorWindow { [MenuItem ("Window/Test Window %v")] static void Init () { TestWindow window = (TestWindow)EditorWindow.GetWindow (typeof(TestWindow)); } }13年1月20日日曜日
  19. 19. メニューへの登録 • MenuItem属性を追加する using System; とメニューに登録される using UnityEngine; using UnityEditor; • “Window/Test Window” → /で区切ると階層化 public class TestWindow : EditorWindow { [MenuItem ("Window/Test Window")] static void Init () • Windowメニューの中に { } TestWindowメニューを作 } る13年1月20日日曜日
  20. 20. 処理の記述 • public void OnSelectionChange() • ProjectビューやHierarchyビューで 要素が選択された時に呼ばれる • public void OnGUI() • 描画のタイミングで呼ばれる • ユーザからの入力/各種描画処理 • EditorWindowを継承した抽象クラス を作り、OnGUIの処理を分割すると 良い13年1月20日日曜日
  21. 21. GUIを配置する方法 • GUIを配置する為の3つの方法 • GUI : 好きな座標に、好きな大きさで配置 • GUILayout : 自動でレイアウト • GUIEditorLayout : Editor用のラベルとセット になったUI GUILayout GUI13年1月20日日曜日
  22. 22. GUIの実装方法 • EditorGUILayout.TextField(“Object Name”, variable); • 返却値を変数に格納 • その変数をTextFieldの引数として渡す • 他のGUIの実装方法も同様 public class TestWindow : EditorWindow { public string hoge; static void OnGUI () { hoge = EditorGUILayout.TextField(“Object Name”, hoge); } }13年1月20日日曜日
  23. 23. 2. キーボードとマウス 入力13年1月20日日曜日
  24. 24. キー入力の実装 • ショートカット等を作るだけでEditorがより使 いやすくなる • 簡単そうに見えるものでも、キー入力の処理 は意外と難しい(Projectビューとか) • OnGUI()でキー入力イベントを処理する • Event.current.keyCodeで入力されたキーを取得13年1月20日日曜日
  25. 25. マウス入力の実装 • OnGUI()でマウスイベントを処理する • Event.current.mousePositionで座標を取得 • Event.current.typeでイベントの種類を取得 • EventType.ContextClick : 右クリック • EventType.MouseDown : 左クリック • ドラッグは自分で状態を持つよう実装する • MouseDownしたときドラッグ開始 • MouseUpしたときドラッグ終了13年1月20日日曜日
  26. 26. コード例 private void OnGUI() { Event e = Event.current; EventType type = e.type; KeyCode keyCode = e.keyCode; Vector2 position = Event.current.mousePosition; switch (e.type) { case EventType.MouseUp: /* マウス入力処理 */ break; case EventType.KeyDown: if(keyCode == ‘A’) { /* キー入力処理 */ } break; ... 略 } }13年1月20日日曜日
  27. 27. 3. データの持ち方13年1月20日日曜日
  28. 28. SimpleDataのデータ • スクリプトでシリアライズさ れるデータを設計情報として 使用する • 描画されている矩形/矢印/文字 はすべてこの情報を使用する • #ifdefを使って設計情報はゲー ム内に持ち込まないようにす る(矩形の座標など)13年1月20日日曜日
  29. 29. シリアライズとは • シリアライズ = 永続化(データ が保存される) • UnityのInspector上で編集出来 る値は、すべてシリアライズ 可能な値 • Sceneに追加されたGameObject の値は.sceneファイルに、 Prefabの値は対応する.prefab ファイルに保存される13年1月20日日曜日
  30. 30. シリアライズする • シリアライズする2種類の方法 1. MonoBehaviourを継承したクラスで、public変 数を追加する 2. 通常のクラスに[System.Serializable]属性追加 し、public変数を追加する • SimpleDataでは、上記の2の方法を使って必要 な情報が1つのPrefabに収まるようにした13年1月20日日曜日
  31. 31. コード例 using UnityEngine; using System.Collections;   [System.Serializable] public class Fuga { public int aaa; public string bbb; public float ccc; }13年1月20日日曜日
  32. 32. 4. 矩形と線の描画13年1月20日日曜日
  33. 33. 矩形の描画 • OnGUI()でGUI.Box (new Rect(0, 0, 100, 100), " "); • この背景に使われている矩 形を描画する • 背景色を変更する場合、 GUI.color = white GUI.Boxを実行する前に GUI.colorの値を変更する13年1月20日日曜日
  34. 34. テクスチャの張り方 • OnGUI()内で GUI.DrawTexture (new Rect (0, 0, 16, 16), texTriangle); • SimpleDataの各種UIもこ のDrawTextureを使用し ている13年1月20日日曜日
  35. 35. 線の描画 • 実は線の描画もテクス チャの描画 • GUI.DrawLineは無い • 一本線を引いたテクス チャを回転させ、座標 を計算して引き延ばす • 矢印は矩形との交点を 計算して、回転させて 適切な位置に描画13年1月20日日曜日
  36. 36. 5. AssetStoreの出し方13年1月20日日曜日
  37. 37. Asset Store Guidline • Asset Storeに出すとき の注意点がまとめられ た(味気ない)文書 • http://unity3d.com/asset- store/docs/submission- guidelines.html • 出す前にはよく読もう13年1月20日日曜日
  38. 38. Assetに関連する項目(1) • Assetのセットアップが必要な場合、明確にドキュメント化して、ユー ザーをサポートすること • デモ用のビデオや、WebPlayerのデモを用意しよう • Assetの名前は分かりやすく(ex. ただのSpaceshipではなく、Deep Space Cargo Spaceshipなど) • パッケージに.txt等でドキュメントを含め、デモ用のシーンを用意す ること • ユーザーのゲームで使われるコードの場合、正しく例外処理をするこ と(※何が正しいのかというガイドラインは無い) • あなたのAssetがエラーを出すと、ユーザーのエラーと警告が埋も れてしまう13年1月20日日曜日
  39. 39. Assetに関連する項目(2) • 通常のUI標準に従う必要があり、反直感的なUIは避ける(ドキュメン トを見なくても使えるようにすべき) • すべてのEditorはUndoできるように実装する • トップメニューに企業名のメニューを表示させてはいけない • 代わりにEdit, Window, Component, GameObjectメニューの中に追加す る13年1月20日日曜日
  40. 40. 価格のガイドライン13年1月20日日曜日
  41. 41. Asset Storeの申請 • Asset StoreからAsset Store ToolsをDL • Asset Storeに掲載する 情報の記載+ロゴ画像 等を登録してSubmit • 審査に通ればAsset Storeに出る(らしい)13年1月20日日曜日

×