SlideShare a Scribd company logo
知って得する Unity
エディタ拡張編
株式会社ハ・ン・ド
プログラマ
馬場翔太
http://baba-s.hatenablog.com/
スライド内容
1. PropertyDrawerでUnityエディタを拡張する
2. AssetPostprocessorでアセットを監視する
3. MenuItemでソースコードを自動生成する
PropertyDrawerで
Unityエディタを拡張する
エディタ拡張は二通りの方法で行えます
• CustomEditorを使用する
スクリプト単位によるエディタ拡張
• PropertyDrawerを使用する
プロパティ単位によるエディタ拡張
このスライドで紹介する機能
使いまわしやすい!
標準で用意されているPropertyDrawer
• RangeAttribute
• MultilineAttribute
RangeAttributeを使うと…
値の入力範囲を制限できるようになります
using UnityEngine;
public class Character : MonoBehaviour
{
[Range(1, 100)] public int Level = 1;
}
MultilineAttributeを使うと…
文字列を複数行で入力できるようになります
using UnityEngine;
public class Character : MonoBehaviour
{
[Multiline(3)] public string Comment;
}
独自のPropertyDrawerを作成して使用する
RangeAttributeやMultilineAttributeのような
PropertyDrawerは自分で作成可能です
独自のPropertyDrawerを作成して使用する
プロパティ名を変更できる
PropertyDrawerを作成してみましょう
using UnityEngine;
public class Character : MonoBehaviour
{
[MyProperty("名前")] public string Name;
}
using UnityEngine;
public class MyPropertyAttribute : PropertyAttribute
{
public string Label;
public MyPropertyAttribute(string label)
{
Label = label;
}
}
1.PropertyAttributeを継承したクラス作成
using UnityEditor;
using UnityEngine;
[CustomPropertyDrawer(typeof(MyPropertyAttribute))]
public class MyPropertyDrawer : PropertyDrawer
{
}
2.PropertyDrawerを継承したクラスを作成
public override void OnGUI(
Rect position,
SerializedProperty property,
GUIContent label)
{
var myPropertyAttribute =
attribute as MyPropertyAttribute;
property.stringValue = EditorGUI.TextField(
position,
myPropertyAttribute.Label,
property.stringValue);
}
3. OnGUI関数をオーバーライドして実装
using UnityEngine;
public class Character : MonoBehaviour
{
[MyProperty("名前")] public string Name;
}
4.作成したPropertyDrawerを使用する
PropertyDrawer作成時の注意
PropertyDrawerを継承したクラスは
Editorフォルダに保存するか
#if UNITY_EDITOR ~ #endifで囲まないと
ビルド時にエラーになるので気をつけてください
MyPropertyAttribute.csを手に入れる
今回作成したMyPropertyAttributeは
Gistで公開しているので参考にしてください
1. 下記のサイトからMyPropertyAttribute.csを取得する
https://gist.github.com/baba-s/9430324
2. 下記のサイトからMyPropertyDrawer.csを取得する
https://gist.github.com/baba-s/9430335
3. MyPropertyAttribute.csを
Unityプロジェクトに追加する
4. MyPropertyDrawer.csを
UnityプロジェクトのEditorフォルダに追加する
PropertyDrawerのサンプル
https://github.com/anchan828/property-drawer-collection
http://blogs.unity3d.com/2012/09/07/property-drawers-in-unity-4/
ネット上で公開されている
PropertyDrawerを使用してみましょう
• CompactAttribute
• EnumLabelAttribute
• PopupAttribute
• SceneNameAttribute
• RegexAttribute
using UnityEngine;
public class Character : MonoBehaviour
{
public Vector3 Position;
}
Vector2やVector3の入力を楽にしたい
CompactAttribute.csを手に入れる
1. 下記のサイトからCompactAttribute.csを取得する
https://github.com/anchan828/property-drawer-collection
2. CompactAttribute.csをUnityプロジェクトに追加する
using UnityEngine;
public class Character : MonoBehaviour
{
[Compact] public Vector3 Position;
}
CompactAttributeを使用する
using UnityEngine;
public class Character : MonoBehaviour
{
public enum JobType
{
SOLDIER,
SORCERER,
}
public JobType Job;
}
列挙型の表示名を変えたい
EnumLabelAttribute.csを手に入れる
1. 下記のサイトからEnumLabelAttribute.csを取得する
https://github.com/anchan828/property-drawer-collection
2. EnumLabelAttribute.csをUnityプロジェクトに追加する
using UnityEngine;
public class Character : MonoBehaviour
{
public enum JobType
{
[EnumLabel("王国兵士")] SOLDIER,
[EnumLabel("魔法使い")] SORCERER,
}
[EnumLabel("ジョブ")] public JobType Job;
}
EnumLabelAttributeを使用する
using UnityEngine;
public class Character : MonoBehaviour
{
public string Job;
public int Money;
}
入力できる値をポップアップで制限したい
PopupAttribute.csを手に入れる
1. 下記のサイトからPopupAttribute.csを取得する
https://github.com/anchan828/property-drawer-collection
2. PopupAttribute.csをUnityプロジェクトに追加する
using UnityEngine;
public class Character : MonoBehaviour
{
[Popup("王国兵士", "魔法使い")]
public string Job;
[Popup(1, 5, 10, 50, 100, 500)]
public int Money;
}
PopupAttributeを使用する
using UnityEngine;
public class LoadSceneButton : MonoBehaviour
{
public string SceneName;
}
ポップアップでシーン名を設定したい
SceneNameAttribute.csを手に入れる
1. 下記のサイトからSceneNameAttribute.csを取得する
https://github.com/anchan828/property-drawer-collection
2. SceneNameAttribute.csをUnityプロジェクトに追加する
using UnityEngine;
public class LoadSceneButton : MonoBehaviour
{
[SceneName] public string SceneName;
}
SceneNameAttributeを使用する
using UnityEngine;
public class Config : MonoBehaviour
{
// IPアドレス
public string ServerAddress;
}
入力できる値を正規表現で制限したい
RegexAttribute.csを手に入れる
1. 下記のサイトからRegexAttribute.csを取得する
https://gist.github.com/baba-s/9430471
2. RegexAttribute.csをUnityプロジェクトに追加する
using UnityEngine;
public class Config : MonoBehaviour
{
// IPアドレス
[Regex(@"^(?:¥d{1,3}¥.){3}¥d{1,3}$", "無効なIPアドレスです!例:'127.0.0.1'")]
public string ServerAddress;
}
RegexAttributeを使用する
PropertyDrawerまとめ
PropertyDrawerを使用すると
スクリプト単位ではなく
プロパティ単位でエディタ拡張が可能なので
多くのスクリプトやプロジェクトで使いまわせます
AssetPostprocessorで
アセットを監視する
AssetPostprocessorを使うと…
• 特定のファイルのみ
Unityプロジェクトに追加不能にできる
• テクスチャやAudioClipの設定を
Unityプロジェクトに追加された時に変更できる
独自のAssetPostprocessorを作成してみる
全角文字が含まれたファイルが
プロジェクトに追加されたら自動で削除する
AssetPostprocessorを作成してみましょう
1.AssetPostprocessorのサブクラスを作成
using UnityEditor;
using UnityEngine;
public class MyAssetPostprocessor : AssetPostprocessor
{
}
2.全角文字を含むか判定する関数を追加
// 1バイト文字で構成された文字列かどうかを判定します
// 1バイト文字のみで構成された文字列の場合 true
// 2バイト文字が含まれている文字列の場合 false
private static bool IsOneByteStr(string str)
{
var bytes = System.Text.Encoding.GetEncoding(932).GetBytes(str);
return bytes.Length == str.Length;
}
http://7ujm.net/NET%20Framework/isOneByteChar.html
3. OnPostprocessAllAssets関数を定義
// すべてのアセットのインポートが終了した際に呼び出されます
// importedAssets :インポートされたアセットのパス
// deletedAssets :削除されたアセットのパス
// movedAssets :移動したアセットの移動後のパス
// movedFromPath:移動したアセットの移動前のパス
private static void OnPostprocessAllAssets(
string[] importedAssets,
string[] deletedAssets,
string[] movedAssets,
string[] movedFromPath)
{
}
4.AssetDatabase.DeleteAssetを利用
foreach (var importedAsset in importedAssets)
{
if (!IsOneByteStr(importedAsset))
{
// 指定されたパスに存在するアセットを削除します
if (AssetDatabase.DeleteAsset(importedAsset))
{
Debug.Log(importedAsset + "を削除しました");
}
}
}
MyAssetPostprocessor.csを手に入れる
今回作成したMyAssetPostprocessorは
Gistで公開しているので参考にしてください
1. 下記のサイトからMyAssetPostprocessor.csを取得する
https://gist.github.com/baba-s/9426854
2. MyAssetPostprocessor.csを
UnityプロジェクトのEditorフォルダに追加する
MenuItemで
ソースコードを自動生成する
MenuItemを使うと…
Unityエディタに独自の機能を追加できます
• すべてのシーンのオブジェクトから
不要なコンポーネントを削除する機能を追加したり…
• 選択中のゲームオブジェクトのパラメータを
一括で設定する機能を追加したり…
独自のMenuItemを作成してみる
ソースコードを自動生成する
MenuItemを作成してみましょう
using UnityEditor;
public static class MyClassCreator
{
// Unityエディタのメニューに
// ソースコード自動生成用のコマンドを追加します
[MenuItem("Tools/Create My Class")]
private static void Create()
{
}
}
1.MenuItemが適用された静的関数を作成
// ソースコードを表す文字列を作成します
var builder = new System.Text.StringBuilder();
builder.AppendLine("public class MyClass");
builder.AppendLine("{");
builder.AppendLine("}");
2.StringBuilderで文字列を作成
// 新しいファイルを作成して
// ソースコードを表す文字列を書き込みます
System.IO.File.WriteAllText(
"Assets/MyClass.cs",
builder.ToString(),
System.Text.Encoding.UTF8);
3.File.WriteAllTextでファイルを作成
// Unityのアセットデータベースをリフレッシュします
AssetDatabase.Refresh(
ImportAssetOptions.ImportRecursive);
4.AssetDatabase.Refreshを実行
5.用意したUnityエディタのコマンドを実行
public class MyClass
{
}
MyClassCreator.csを手に入れる
今回作成したMyClassCreatorは
Gistで公開しているので参考にしてください
1. 下記のサイトからMyClassCreator.csを取得する
https://gist.github.com/baba-s/9446762
2. MyClassCreator.csを
UnityプロジェクトのEditorフォルダに追加する
ソースコードの自動生成のサンプル
MenuItemを使用して
データを定数で管理するクラスの
自動生成を行ってみましょう
• シーン名を定数で管理するクラスの自動生成
• タグ名を定数で管理するクラスの自動生成
• レイヤー名を定数で管理するクラスの自動生成
シーン名を定数で管理するクラスの生成
シーン名の一覧を取得する方法
EditorBuildSettings.scenesを使用すると
シーン名の一覧を取得できます
foreach (var n in EditorBuildSettings.scenes)
{
Debug.Log(n);
}
シーン名を定数で管理するクラスの生成
1. 下記のサイトからSceneNameCreator.csを取得する
https://gist.github.com/baba-s/9286120
2. SceneNameCreator.csをEditorフォルダに追加する
3. Unityエディタの「Tools>Create>Scene Name」を実行する
4. SceneName.csが作成される
シーン名を定数で管理するクラスの生成
/// <summary>
/// シーン名を定数で管理するクラス
/// </summary>
public static class SceneName
{
public const string Title = "Title";
public const string MainMenu = "MainMenu";
}
シーン名を定数で管理するクラスの利用
// タイトル画面に遷移します
Application.LoadLevel(SceneName.Title);
// タイトル画面に遷移します
Application.LoadLevel("Title");
タグ名を定数で管理するクラスの生成
タグ名の一覧を取得する方法
InternalEditorUtility.tagsを使用すると
タグ名の一覧を取得できます
foreach (var n in InternalEditorUtility.tags)
{
Debug.Log(n);
}
タグ名を定数で管理するクラスの生成
1. 下記のサイトからTagNameCreator.csを取得する
https://gist.github.com/baba-s/9287103
2. TagNameCreator.csをEditorフォルダに追加する
3. Unityエディタの「Tools>Create>Tag Name」を実行する
4. TagName.csが作成される
タグ名を定数で管理するクラスの生成
/// <summary>
/// タグ名を定数で管理するクラス
/// </summary>
public static class TagName
{
public const string Untagged = "Untagged";
public const string Respawn = "Respawn";
public const string Finish = "Finish";
public const string EditorOnly = "EditorOnly";
public const string MainCamera = "MainCamera";
public const string Player = "Player";
public const string GameController = "GameController";
public const string Character = "Character";
}
タグ名を定数で管理するクラスの利用
// ゲームオブジェクトがキャラクターかどうか
if (gameObject.CompareTag(TagName.Character))
{
// ...
}
// ゲームオブジェクトがキャラクターかどうか
if (gameObject.CompareTag("Character"))
{
// ...
}
レイヤー名を定数で管理するクラスの生成
レイヤー名の一覧を取得する方法
InternalEditorUtility.layersを使用すると
レイヤー名の一覧を取得できます
foreach (var n in InternalEditorUtility.layers)
{
Debug.Log(n);
}
レイヤー名を定数で管理するクラスの生成
1. 下記のサイトからLayerNameCreator.csを取得する
https://gist.github.com/baba-s/9286212
2. LayerNameCreator.csをEditorフォルダに追加する
3. Unityエディタの「Tools>Create>Layer Name」を実行する
4. LayerName.csが作成される
レイヤー名を定数で管理するクラスの生成
/// <summary>
/// レイヤー名を定数で管理するクラス
/// </summary>
public static class LayerName
{
public const int Default = 0;
public const int TransparentFX = 1;
public const int IgnoreRaycast = 2;
public const int Water = 4;
public const int Character = 8;
public const int DefaultMask = 1;
public const int TransparentFXMask = 2;
public const int IgnoreRaycastMask = 4;
public const int WaterMask = 16;
public const int CharacterMask = 256;
}
レイヤー名を定数で管理するクラスの利用
// ゲームオブジェクトのレイヤーを変更します
gameObject.layer = LayerName.Character;
// ゲームオブジェクトのレイヤーを変更します
gameObject.layer = 8;
MenuItemまとめ
MenuItemを使用すると
Unity APIから取得したデータをもとに
ソースコードの自動生成を行うこともできます
シーン名やタグ名を定数で管理するクラスを
自動生成できるようにしておくことで
タイプセーフなゲーム開発を行うことが可能です
ありがとうございました

More Related Content

What's hot

Unity2018/2019における最適化事情
Unity2018/2019における最適化事情Unity2018/2019における最適化事情
Unity2018/2019における最適化事情
Unity Technologies Japan K.K.
 
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
Unity Technologies Japan K.K.
 
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
U-dai Yokoyama
 
【Unity道場スペシャル 2017博多】TextMesh Pro を使いこなす
【Unity道場スペシャル 2017博多】TextMesh Pro を使いこなす【Unity道場スペシャル 2017博多】TextMesh Pro を使いこなす
【Unity道場スペシャル 2017博多】TextMesh Pro を使いこなす
Unity Technologies Japan K.K.
 
Addressables で大量のリソース管理・困りどころと解消法
Addressables で大量のリソース管理・困りどころと解消法Addressables で大量のリソース管理・困りどころと解消法
Addressables で大量のリソース管理・困りどころと解消法
Kenta Nagai
 
個人開発でも使ってみようAddressableAssetSystem
個人開発でも使ってみようAddressableAssetSystem個人開発でも使ってみようAddressableAssetSystem
個人開発でも使ってみようAddressableAssetSystem
Takuma Sugaya
 
誰もAddressableについて語らないなら、自分が語るしかない…ッッッッ
誰もAddressableについて語らないなら、自分が語るしかない…ッッッッ誰もAddressableについて語らないなら、自分が語るしかない…ッッッッ
誰もAddressableについて語らないなら、自分が語るしかない…ッッッッ
Tatsuhiko Yamamura
 
UE4のモバイル開発におけるコンテンツアップデートの話 - Chunk IDとの激闘編 -
UE4のモバイル開発におけるコンテンツアップデートの話 - Chunk IDとの激闘編 -UE4のモバイル開発におけるコンテンツアップデートの話 - Chunk IDとの激闘編 -
UE4のモバイル開発におけるコンテンツアップデートの話 - Chunk IDとの激闘編 -
エピック・ゲームズ・ジャパン Epic Games Japan
 
Deep-Dive into Scriptable Build Pipeline
Deep-Dive into Scriptable Build PipelineDeep-Dive into Scriptable Build Pipeline
Deep-Dive into Scriptable Build Pipeline
Haruto Otake
 
脱UniRx&Croutineから始めるUniTask
脱UniRx&Croutineから始めるUniTask脱UniRx&Croutineから始めるUniTask
脱UniRx&Croutineから始めるUniTask
Euglenaching
 
「Press Button, Drink Coffee」 UE4における ビルドパイプラインとメンテナンスの全体像
「Press Button, Drink Coffee」 UE4における ビルドパイプラインとメンテナンスの全体像「Press Button, Drink Coffee」 UE4における ビルドパイプラインとメンテナンスの全体像
「Press Button, Drink Coffee」 UE4における ビルドパイプラインとメンテナンスの全体像
エピック・ゲームズ・ジャパン Epic Games Japan
 
Unityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTipsUnityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTips
Unity Technologies Japan K.K.
 
「宴」実装時に得られたUnityプログラムノウハウ
「宴」実装時に得られたUnityプログラムノウハウ「宴」実装時に得られたUnityプログラムノウハウ
「宴」実装時に得られたUnityプログラムノウハウ
Ryohei Tokimura
 
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
Unity Technologies Japan K.K.
 
UIElements+UI BuilderでEditor拡張を作ろう
UIElements+UI BuilderでEditor拡張を作ろうUIElements+UI BuilderでEditor拡張を作ろう
UIElements+UI BuilderでEditor拡張を作ろう
Unity Technologies Japan K.K.
 
はじめてのScriptable Build Pipeline
はじめてのScriptable Build PipelineはじめてのScriptable Build Pipeline
はじめてのScriptable Build Pipeline
Unity Technologies Japan K.K.
 
【Unite Tokyo 2018】Audio機能の基礎と実装テクニック
【Unite Tokyo 2018】Audio機能の基礎と実装テクニック【Unite Tokyo 2018】Audio機能の基礎と実装テクニック
【Unite Tokyo 2018】Audio機能の基礎と実装テクニック
UnityTechnologiesJapan002
 
【Unite 2018 Tokyo】『CARAVAN STORIES』のアセットバンドル事例
【Unite 2018 Tokyo】『CARAVAN STORIES』のアセットバンドル事例【Unite 2018 Tokyo】『CARAVAN STORIES』のアセットバンドル事例
【Unite 2018 Tokyo】『CARAVAN STORIES』のアセットバンドル事例
UnityTechnologiesJapan002
 
UE4におけるLoadingとGCのProfilingと最適化手法
UE4におけるLoadingとGCのProfilingと最適化手法UE4におけるLoadingとGCのProfilingと最適化手法
UE4におけるLoadingとGCのProfilingと最適化手法
エピック・ゲームズ・ジャパン Epic Games Japan
 
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~
UnityTechnologiesJapan002
 

What's hot (20)

Unity2018/2019における最適化事情
Unity2018/2019における最適化事情Unity2018/2019における最適化事情
Unity2018/2019における最適化事情
 
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
 
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
 
【Unity道場スペシャル 2017博多】TextMesh Pro を使いこなす
【Unity道場スペシャル 2017博多】TextMesh Pro を使いこなす【Unity道場スペシャル 2017博多】TextMesh Pro を使いこなす
【Unity道場スペシャル 2017博多】TextMesh Pro を使いこなす
 
Addressables で大量のリソース管理・困りどころと解消法
Addressables で大量のリソース管理・困りどころと解消法Addressables で大量のリソース管理・困りどころと解消法
Addressables で大量のリソース管理・困りどころと解消法
 
個人開発でも使ってみようAddressableAssetSystem
個人開発でも使ってみようAddressableAssetSystem個人開発でも使ってみようAddressableAssetSystem
個人開発でも使ってみようAddressableAssetSystem
 
誰もAddressableについて語らないなら、自分が語るしかない…ッッッッ
誰もAddressableについて語らないなら、自分が語るしかない…ッッッッ誰もAddressableについて語らないなら、自分が語るしかない…ッッッッ
誰もAddressableについて語らないなら、自分が語るしかない…ッッッッ
 
UE4のモバイル開発におけるコンテンツアップデートの話 - Chunk IDとの激闘編 -
UE4のモバイル開発におけるコンテンツアップデートの話 - Chunk IDとの激闘編 -UE4のモバイル開発におけるコンテンツアップデートの話 - Chunk IDとの激闘編 -
UE4のモバイル開発におけるコンテンツアップデートの話 - Chunk IDとの激闘編 -
 
Deep-Dive into Scriptable Build Pipeline
Deep-Dive into Scriptable Build PipelineDeep-Dive into Scriptable Build Pipeline
Deep-Dive into Scriptable Build Pipeline
 
脱UniRx&Croutineから始めるUniTask
脱UniRx&Croutineから始めるUniTask脱UniRx&Croutineから始めるUniTask
脱UniRx&Croutineから始めるUniTask
 
「Press Button, Drink Coffee」 UE4における ビルドパイプラインとメンテナンスの全体像
「Press Button, Drink Coffee」 UE4における ビルドパイプラインとメンテナンスの全体像「Press Button, Drink Coffee」 UE4における ビルドパイプラインとメンテナンスの全体像
「Press Button, Drink Coffee」 UE4における ビルドパイプラインとメンテナンスの全体像
 
Unityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTipsUnityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTips
 
「宴」実装時に得られたUnityプログラムノウハウ
「宴」実装時に得られたUnityプログラムノウハウ「宴」実装時に得られたUnityプログラムノウハウ
「宴」実装時に得られたUnityプログラムノウハウ
 
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
 
UIElements+UI BuilderでEditor拡張を作ろう
UIElements+UI BuilderでEditor拡張を作ろうUIElements+UI BuilderでEditor拡張を作ろう
UIElements+UI BuilderでEditor拡張を作ろう
 
はじめてのScriptable Build Pipeline
はじめてのScriptable Build PipelineはじめてのScriptable Build Pipeline
はじめてのScriptable Build Pipeline
 
【Unite Tokyo 2018】Audio機能の基礎と実装テクニック
【Unite Tokyo 2018】Audio機能の基礎と実装テクニック【Unite Tokyo 2018】Audio機能の基礎と実装テクニック
【Unite Tokyo 2018】Audio機能の基礎と実装テクニック
 
【Unite 2018 Tokyo】『CARAVAN STORIES』のアセットバンドル事例
【Unite 2018 Tokyo】『CARAVAN STORIES』のアセットバンドル事例【Unite 2018 Tokyo】『CARAVAN STORIES』のアセットバンドル事例
【Unite 2018 Tokyo】『CARAVAN STORIES』のアセットバンドル事例
 
UE4におけるLoadingとGCのProfilingと最適化手法
UE4におけるLoadingとGCのProfilingと最適化手法UE4におけるLoadingとGCのProfilingと最適化手法
UE4におけるLoadingとGCのProfilingと最適化手法
 
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~
 

Similar to 知って得するUnity エディタ拡張編

Knockout.js を利用したインタラクティブ web アプリケーション開発
Knockout.js を利用したインタラクティブ web アプリケーション開発Knockout.js を利用したインタラクティブ web アプリケーション開発
Knockout.js を利用したインタラクティブ web アプリケーション開発
Daizen Ikehara
 
sveltekit-ja.pdf
sveltekit-ja.pdfsveltekit-ja.pdf
sveltekit-ja.pdf
ssuser65180a
 
Extending the Unity Editor Extended
Extending the Unity Editor ExtendedExtending the Unity Editor Extended
Extending the Unity Editor ExtendedMasamitsu Ishikawa
 
実践 NestJS
実践 NestJS実践 NestJS
実践 NestJS
Ayumi Goto
 
Marionettejs getting started
Marionettejs getting startedMarionettejs getting started
Marionettejs getting started
Kyohei Morimoto
 
Heroku java
Heroku javaHeroku java
Heroku java
Kazuyuki Kawamura
 
TDD勉強会キックオフ for Java
TDD勉強会キックオフ for JavaTDD勉強会キックオフ for Java
TDD勉強会キックオフ for Java
Yuta Kawadai
 
Jetpack Library 事始め
Jetpack Library 事始めJetpack Library 事始め
Jetpack Library 事始め
Tomohiro Kaizu
 
どこよりも早い Spring Boot 1.2 解説 #渋谷Java
どこよりも早い Spring Boot 1.2 解説 #渋谷Javaどこよりも早い Spring Boot 1.2 解説 #渋谷Java
どこよりも早い Spring Boot 1.2 解説 #渋谷Java
Toshiaki Maki
 
Let's build a simple app with .net 6 asp.net core web api, react, and elasti...
Let's build a simple app with  .net 6 asp.net core web api, react, and elasti...Let's build a simple app with  .net 6 asp.net core web api, react, and elasti...
Let's build a simple app with .net 6 asp.net core web api, react, and elasti...
Shotaro Suzuki
 
dodaiのProvisioning周辺探訪 - dodai勉強会 #4
dodaiのProvisioning周辺探訪 - dodai勉強会 #4dodaiのProvisioning周辺探訪 - dodai勉強会 #4
dodaiのProvisioning周辺探訪 - dodai勉強会 #4
Satoshi Yazawa
 
CleanArchitecture with AssemblyDefinition in unity
CleanArchitecture with AssemblyDefinition in unityCleanArchitecture with AssemblyDefinition in unity
CleanArchitecture with AssemblyDefinition in unity
NakanoYosuke1
 
Swift 2.0 大域関数の行方から #swift2symposium
Swift 2.0 大域関数の行方から #swift2symposiumSwift 2.0 大域関数の行方から #swift2symposium
Swift 2.0 大域関数の行方から #swift2symposium
Tomohiro Kumagai
 
Jhs portfolio
Jhs portfolioJhs portfolio
Jhs portfolio
ssuser25d7ff
 
20120118 titanium
20120118 titanium20120118 titanium
20120118 titanium
Hiroshi Oyamada
 
環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介Etsuji Nakai
 
【18-C-4】Google App Engine - 無限の彼方へ
【18-C-4】Google App Engine - 無限の彼方へ【18-C-4】Google App Engine - 無限の彼方へ
【18-C-4】Google App Engine - 無限の彼方へDevelopers Summit
 

Similar to 知って得するUnity エディタ拡張編 (20)

Knockout.js を利用したインタラクティブ web アプリケーション開発
Knockout.js を利用したインタラクティブ web アプリケーション開発Knockout.js を利用したインタラクティブ web アプリケーション開発
Knockout.js を利用したインタラクティブ web アプリケーション開発
 
sveltekit-ja.pdf
sveltekit-ja.pdfsveltekit-ja.pdf
sveltekit-ja.pdf
 
Extending the Unity Editor Extended
Extending the Unity Editor ExtendedExtending the Unity Editor Extended
Extending the Unity Editor Extended
 
実践 NestJS
実践 NestJS実践 NestJS
実践 NestJS
 
Marionettejs getting started
Marionettejs getting startedMarionettejs getting started
Marionettejs getting started
 
Heroku java
Heroku javaHeroku java
Heroku java
 
Vector
VectorVector
Vector
 
TDD勉強会キックオフ for Java
TDD勉強会キックオフ for JavaTDD勉強会キックオフ for Java
TDD勉強会キックオフ for Java
 
Jetpack Library 事始め
Jetpack Library 事始めJetpack Library 事始め
Jetpack Library 事始め
 
どこよりも早い Spring Boot 1.2 解説 #渋谷Java
どこよりも早い Spring Boot 1.2 解説 #渋谷Javaどこよりも早い Spring Boot 1.2 解説 #渋谷Java
どこよりも早い Spring Boot 1.2 解説 #渋谷Java
 
20061125
2006112520061125
20061125
 
Let's build a simple app with .net 6 asp.net core web api, react, and elasti...
Let's build a simple app with  .net 6 asp.net core web api, react, and elasti...Let's build a simple app with  .net 6 asp.net core web api, react, and elasti...
Let's build a simple app with .net 6 asp.net core web api, react, and elasti...
 
dodaiのProvisioning周辺探訪 - dodai勉強会 #4
dodaiのProvisioning周辺探訪 - dodai勉強会 #4dodaiのProvisioning周辺探訪 - dodai勉強会 #4
dodaiのProvisioning周辺探訪 - dodai勉強会 #4
 
20080524
2008052420080524
20080524
 
CleanArchitecture with AssemblyDefinition in unity
CleanArchitecture with AssemblyDefinition in unityCleanArchitecture with AssemblyDefinition in unity
CleanArchitecture with AssemblyDefinition in unity
 
Swift 2.0 大域関数の行方から #swift2symposium
Swift 2.0 大域関数の行方から #swift2symposiumSwift 2.0 大域関数の行方から #swift2symposium
Swift 2.0 大域関数の行方から #swift2symposium
 
Jhs portfolio
Jhs portfolioJhs portfolio
Jhs portfolio
 
20120118 titanium
20120118 titanium20120118 titanium
20120118 titanium
 
環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介
 
【18-C-4】Google App Engine - 無限の彼方へ
【18-C-4】Google App Engine - 無限の彼方へ【18-C-4】Google App Engine - 無限の彼方へ
【18-C-4】Google App Engine - 無限の彼方へ
 

Recently uploaded

FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
yassun7010
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
Sony - Neural Network Libraries
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
atsushi061452
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
NTT DATA Technology & Innovation
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
iPride Co., Ltd.
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 

Recently uploaded (16)

FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 

知って得するUnity エディタ拡張編