SlideShare a Scribd company logo
1 of 67
Download to read offline
知って得する 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

Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]DeNA
 
徹底解説!UE4を使ったモバイルゲーム開発におけるコンテンツアップデートの極意!
徹底解説!UE4を使ったモバイルゲーム開発におけるコンテンツアップデートの極意!徹底解説!UE4を使ったモバイルゲーム開発におけるコンテンツアップデートの極意!
徹底解説!UE4を使ったモバイルゲーム開発におけるコンテンツアップデートの極意!エピック・ゲームズ・ジャパン Epic Games Japan
 
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~UnityTechnologiesJapan002
 
【Unite Tokyo 2019】「禍つヴァールハイト」Timelineだから可能だった!モバイルに最適化されたリアルタイム3D演出!
【Unite Tokyo 2019】「禍つヴァールハイト」Timelineだから可能だった!モバイルに最適化されたリアルタイム3D演出!【Unite Tokyo 2019】「禍つヴァールハイト」Timelineだから可能だった!モバイルに最適化されたリアルタイム3D演出!
【Unite Tokyo 2019】「禍つヴァールハイト」Timelineだから可能だった!モバイルに最適化されたリアルタイム3D演出!UnityTechnologiesJapan002
 
Unityアニメーションシステムの 今と未来の話
Unityアニメーションシステムの 今と未来の話Unityアニメーションシステムの 今と未来の話
Unityアニメーションシステムの 今と未来の話Unity Technologies Japan K.K.
 
【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説
【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説
【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説Unity Technologies Japan K.K.
 
【Unity道場スペシャル 2017京都】スマホゲーム開発者なら知っておくべきチートのリスク&対策
【Unity道場スペシャル 2017京都】スマホゲーム開発者なら知っておくべきチートのリスク&対策【Unity道場スペシャル 2017京都】スマホゲーム開発者なら知っておくべきチートのリスク&対策
【Unity道場スペシャル 2017京都】スマホゲーム開発者なら知っておくべきチートのリスク&対策Unity Technologies Japan K.K.
 
UniTask入門
UniTask入門UniTask入門
UniTask入門torisoup
 
Unityではじめるオープンワールド制作 エンジニア編
Unityではじめるオープンワールド制作 エンジニア編Unityではじめるオープンワールド制作 エンジニア編
Unityではじめるオープンワールド制作 エンジニア編Unity Technologies Japan K.K.
 
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -historia_Inc
 
Addressables で大量のリソース管理・困りどころと解消法
Addressables で大量のリソース管理・困りどころと解消法Addressables で大量のリソース管理・困りどころと解消法
Addressables で大量のリソース管理・困りどころと解消法Kenta Nagai
 
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>エピック・ゲームズ・ジャパン Epic Games Japan
 
ビジュアルスクリプティングシステムBoltを使ってみよう 2回目
ビジュアルスクリプティングシステムBoltを使ってみよう 2回目ビジュアルスクリプティングシステムBoltを使ってみよう 2回目
ビジュアルスクリプティングシステムBoltを使ってみよう 2回目Unity Technologies Japan K.K.
 

What's hot (20)

Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
 
徹底解説!UE4を使ったモバイルゲーム開発におけるコンテンツアップデートの極意!
徹底解説!UE4を使ったモバイルゲーム開発におけるコンテンツアップデートの極意!徹底解説!UE4を使ったモバイルゲーム開発におけるコンテンツアップデートの極意!
徹底解説!UE4を使ったモバイルゲーム開発におけるコンテンツアップデートの極意!
 
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~
 
【Unite Tokyo 2019】「禍つヴァールハイト」Timelineだから可能だった!モバイルに最適化されたリアルタイム3D演出!
【Unite Tokyo 2019】「禍つヴァールハイト」Timelineだから可能だった!モバイルに最適化されたリアルタイム3D演出!【Unite Tokyo 2019】「禍つヴァールハイト」Timelineだから可能だった!モバイルに最適化されたリアルタイム3D演出!
【Unite Tokyo 2019】「禍つヴァールハイト」Timelineだから可能だった!モバイルに最適化されたリアルタイム3D演出!
 
Unityアニメーションシステムの 今と未来の話
Unityアニメーションシステムの 今と未来の話Unityアニメーションシステムの 今と未来の話
Unityアニメーションシステムの 今と未来の話
 
UE4におけるエフェクトの為のエンジン改造事例
UE4におけるエフェクトの為のエンジン改造事例UE4におけるエフェクトの為のエンジン改造事例
UE4におけるエフェクトの為のエンジン改造事例
 
エフェクトツール機能の実装例
エフェクトツール機能の実装例エフェクトツール機能の実装例
エフェクトツール機能の実装例
 
【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説
【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説
【Unite 2018 Tokyo】そろそろ楽がしたい!新アセットバンドルワークフロー&リソースマネージャー詳細解説
 
【Unity道場スペシャル 2017京都】スマホゲーム開発者なら知っておくべきチートのリスク&対策
【Unity道場スペシャル 2017京都】スマホゲーム開発者なら知っておくべきチートのリスク&対策【Unity道場スペシャル 2017京都】スマホゲーム開発者なら知っておくべきチートのリスク&対策
【Unity道場スペシャル 2017京都】スマホゲーム開発者なら知っておくべきチートのリスク&対策
 
UniTask入門
UniTask入門UniTask入門
UniTask入門
 
はじめてアンリアルエンジンで海戦をつくってみたときのお話
はじめてアンリアルエンジンで海戦をつくってみたときのお話はじめてアンリアルエンジンで海戦をつくってみたときのお話
はじめてアンリアルエンジンで海戦をつくってみたときのお話
 
UE4を用いたTPS制作事例 EDF:IR 地球を衛る兵士の歩き方
UE4を用いたTPS制作事例 EDF:IR 地球を衛る兵士の歩き方UE4を用いたTPS制作事例 EDF:IR 地球を衛る兵士の歩き方
UE4を用いたTPS制作事例 EDF:IR 地球を衛る兵士の歩き方
 
UE4における大規模レベル実装ワークフローとブループリント活用事例
UE4における大規模レベル実装ワークフローとブループリント活用事例UE4における大規模レベル実装ワークフローとブループリント活用事例
UE4における大規模レベル実装ワークフローとブループリント活用事例
 
UE4で作成するUIと最適化手法
UE4で作成するUIと最適化手法UE4で作成するUIと最適化手法
UE4で作成するUIと最適化手法
 
Unityではじめるオープンワールド制作 エンジニア編
Unityではじめるオープンワールド制作 エンジニア編Unityではじめるオープンワールド制作 エンジニア編
Unityではじめるオープンワールド制作 エンジニア編
 
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
 
Addressables で大量のリソース管理・困りどころと解消法
Addressables で大量のリソース管理・困りどころと解消法Addressables で大量のリソース管理・困りどころと解消法
Addressables で大量のリソース管理・困りどころと解消法
 
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
 
ビジュアルスクリプティングシステムBoltを使ってみよう 2回目
ビジュアルスクリプティングシステムBoltを使ってみよう 2回目ビジュアルスクリプティングシステムBoltを使ってみよう 2回目
ビジュアルスクリプティングシステムBoltを使ってみよう 2回目
 
UE4を用いたTPS制作事例 EDF:IR レベル構成について
UE4を用いたTPS制作事例 EDF:IR レベル構成についてUE4を用いたTPS制作事例 EDF:IR レベル構成について
UE4を用いたTPS制作事例 EDF:IR レベル構成について
 

Viewers also liked

Extending the Unity Editor Extended
Extending the Unity Editor ExtendedExtending the Unity Editor Extended
Extending the Unity Editor ExtendedMasamitsu Ishikawa
 
BRDF レンダリングの方程式
BRDF レンダリングの方程式BRDF レンダリングの方程式
BRDF レンダリングの方程式康弘 等々力
 
Shadow gunのサンプルから学べるモバイル最適化
Shadow gunのサンプルから学べるモバイル最適化Shadow gunのサンプルから学べるモバイル最適化
Shadow gunのサンプルから学べるモバイル最適化Katsutoshi Makino
 
Unityのasset bundle運用実例@lordofknights
Unityのasset bundle運用実例@lordofknightsUnityのasset bundle運用実例@lordofknights
Unityのasset bundle運用実例@lordofknightsKouji Hosoda
 
「宴」実装時に得られたUnityプログラムノウハウ
「宴」実装時に得られたUnityプログラムノウハウ「宴」実装時に得られたUnityプログラムノウハウ
「宴」実装時に得られたUnityプログラムノウハウRyohei Tokimura
 
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移まべ☆てっく運営
 
Unity エディタ拡張
Unity エディタ拡張Unity エディタ拡張
Unity エディタ拡張Shota Baba
 

Viewers also liked (7)

Extending the Unity Editor Extended
Extending the Unity Editor ExtendedExtending the Unity Editor Extended
Extending the Unity Editor Extended
 
BRDF レンダリングの方程式
BRDF レンダリングの方程式BRDF レンダリングの方程式
BRDF レンダリングの方程式
 
Shadow gunのサンプルから学べるモバイル最適化
Shadow gunのサンプルから学べるモバイル最適化Shadow gunのサンプルから学べるモバイル最適化
Shadow gunのサンプルから学べるモバイル最適化
 
Unityのasset bundle運用実例@lordofknights
Unityのasset bundle運用実例@lordofknightsUnityのasset bundle運用実例@lordofknights
Unityのasset bundle運用実例@lordofknights
 
「宴」実装時に得られたUnityプログラムノウハウ
「宴」実装時に得られたUnityプログラムノウハウ「宴」実装時に得られたUnityプログラムノウハウ
「宴」実装時に得られたUnityプログラムノウハウ
 
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
 
Unity エディタ拡張
Unity エディタ拡張Unity エディタ拡張
Unity エディタ拡張
 

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

Knockout.js を利用したインタラクティブ web アプリケーション開発
Knockout.js を利用したインタラクティブ web アプリケーション開発Knockout.js を利用したインタラクティブ web アプリケーション開発
Knockout.js を利用したインタラクティブ web アプリケーション開発Daizen Ikehara
 
Marionettejs getting started
Marionettejs getting startedMarionettejs getting started
Marionettejs getting startedKyohei Morimoto
 
TDD勉強会キックオフ for Java
TDD勉強会キックオフ for JavaTDD勉強会キックオフ for Java
TDD勉強会キックオフ for JavaYuta 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 解説 #渋谷JavaToshiaki 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勉強会 #4Satoshi Yazawa
 
CleanArchitecture with AssemblyDefinition in unity
CleanArchitecture with AssemblyDefinition in unityCleanArchitecture with AssemblyDefinition in unity
CleanArchitecture with AssemblyDefinition in unityNakanoYosuke1
 
Swift 2.0 大域関数の行方から #swift2symposium
Swift 2.0 大域関数の行方から #swift2symposiumSwift 2.0 大域関数の行方から #swift2symposium
Swift 2.0 大域関数の行方から #swift2symposiumTomohiro Kumagai
 
環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介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
 
Spring bootでweb セキュリティ(ログイン認証)編
Spring bootでweb セキュリティ(ログイン認証)編Spring bootでweb セキュリティ(ログイン認証)編
Spring bootでweb セキュリティ(ログイン認証)編なべ
 

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
 
実践 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 - 無限の彼方へ
 
Spring bootでweb セキュリティ(ログイン認証)編
Spring bootでweb セキュリティ(ログイン認証)編Spring bootでweb セキュリティ(ログイン認証)編
Spring bootでweb セキュリティ(ログイン認証)編
 

Recently uploaded

TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 

Recently uploaded (8)

TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 

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