コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】C# 7.0 新機能の分解(Deconstruction)を Unity のいくつかの型で使用できるようにするパッケージ「Uni Deconstruction」を GitHub に公開しました

はじめに C# 7.0 新機能の分解(Deconstruction)を Unity のいくつかの型で使用できるようにするパッケージ 「Uni Deconstruction」を GitHub に公開しました バージョン Unity 2018.3.11f1 インストール "com.baba_s.uni_deconstruction": "https://github…

【Unity】TODO コメントが残っていたらビルドできなくするエディタ拡張

ソースコード 使用例 TODO コメントが残っている状態でビルドするとビルドに失敗して Console に TODO コメントが残っているファイルが出力されます IGNORE_FILE 配列で無視するファイルやフォルダを指定できます ソースコードの 51 行目あたりをカスタマイ…

【Unity】Android ビルド完了後に Bundle Version Code を増やすエディタ拡張

ソースコード using UnityEditor; using UnityEditor.Build; using UnityEditor.Build.Reporting; public class BundleVersionCodeIncrementer : IPostprocessBuildWithReport { public int callbackOrder => 0; public void OnPostprocessBuild( BuildRepor…

【Unity】Android ビルド開始時に Bundle Version Code を増やすエディタ拡張

ソースコード using UnityEditor; using UnityEditor.Build; using UnityEditor.Build.Reporting; public sealed class BundleVersionCodeIncrementer : IPreprocessBuildWithReport { public int callbackOrder => 0; public void OnPreprocessBuild( Build…

【Unity】シンプルなメッセージバス「Signals」紹介

はじめに 「Signals」を Unity プロジェクトに導入することで シンプルなメッセージバスを使用できるようになります 使用例 送信側のスクリプト using deVoid.Utils; using UnityEngine; public class PlayerRespawnSignal : ASignal { } public class Playe…

【Unity】FPS、GC 発生回数、メモリ使用量を実機で確認できるプロファイラの UI「UniSimpleProfiler」を GitHub に公開しました

はじめに FPS、GC 発生回数、メモリ使用量を実機で確認できるプロファイラの UI 「UniSimpleProfiler」を GitHub に公開しました(実機なら GC Alloc は発生しません) バージョン Unity 2018.3.9f1 準備 UniSimpleProfiler は TextMesh Pro を使用するため…

【Unity】unity-webview のマージンを RectTranform から設定できる機能「UniWebViewMarginsFromRectTransform」を GitHub に公開しました

はじめに unity-webview のマージンを RectTranform から設定できる機能 「UniWebViewMarginsFromRectTransform」を GitHub に公開しました バージョン Unity 2018.3.11f1 使い方 var rectTransform = GetComponent<RectTransform>(); var margins = WebViewUtils.ToMargins</recttransform>…

【Unity】シンボルを簡単に定義できるエディタ拡張「UniSymbol」を GitHub に公開しました

はじめに シンボルを簡単に定義できるエディタ拡張 「UniSymbol」を GitHub に公開しました バージョン Unity 2018.3.11f1 下準備 UniSymbol を使用する場合は「Odin」を導入する必要があります https://assetstore.unity.com/packages/tools/utilities/odin…

【Unity】Transform の Inspector にリセットボタンを追加するエディタ拡張「Uni Transform Inspector」を GitHub に公開しました

はじめに Transform の Inspector にリセットボタンを追加するエディタ拡張 「Uni Transform Inspector」を GitHub に公開しました バージョン Unity 2018.3.11f1 インストール "com.baba_s.uni_transform_inspector": "https://github.com/baba-s/uni-trans…

【Unity】Unity エディタで使用できるカスタマイズ可能なツールバー「Unity Customizable Toolbar v2」を GitHub に公開しました

はじめに Unity エディタで使用できるカスタマイズ可能なツールバー 「Unity Customizable Toolbar v2」を GitHub に公開しました バージョン Unity 2018.3.11f1 使用例 クイックスタート Project ビューの「Create > Customizable Toolbar Settings」を選択…

【Unity】TextMesh Pro の設定をルール化して管理できる機能「TMP Rule」を GitHub に公開しました

はじめに TextMesh Pro の設定をルール化して管理できる機能 「TMP Rule」を GitHub に公開しました バージョン Unity 2018.3.11f1 使い方 Project ビューの「Create > TMP Rule Settings」を選択します すると、TextMesh Pro の設定をルール化して管理でき…

【Unity】adb shell am start で Android アプリを起動した時に指定された引数を解析する機能「Uni Android Intent」を GitHub に公開しました

はじめに adb shell am start で Android アプリを起動した時に指定された引数を解析する機能 「Uni Android Intent」を GitHub に公開しました バージョン Unity 2018.3.11f1 使用例 adb shell am start ^ -n com.baba_s.uniandroidintent/com.unity3d.play…

【Unity】TextMesh Pro でモバイル向けのシェーダを使用する

概要 TextMesh Pro の FontAtlas などに含まれるマテリアルを選択して Shader を「TextMeshPro/Mobile」以下の物に変更することで モバイル向けのシェーダに切り替えることができます

【Unity】Transform の Inspector にリセットボタンやコピペボタンを追加できる「Unity3D Editor Extensions and Tools」紹介

はじめに 「Unity3D Editor Extensions and Tools」を Unity プロジェクトに導入することで Transform の Inspector にリセットボタンやコピペボタンを追加できるようになります 使い方 ローカル座標系、グローバル座標系を変更するボタンが追加されます R …

【Unity】PlayerPrefs のデータを閲覧・編集できる「Player Preferences Editor for Unity 3D」紹介

はじめに 「Player Preferences Editor for Unity 3D」を Unity プロジェクトに導入することで PlayerPrefs のデータを閲覧・編集できるようになります 使い方 Unity メニューの「Tools > DevTools > Preferences Editor」を選択すると PlayerPrefs のデータ…

【Unity】Transform の Inspector にリセットボタンを追加したりできる「Extended Transform Editor」紹介

はじめに 「Extended Transform Editor」を Unity プロジェクトに導入することで Transform の Inspector にリセットボタンを追加したりできるようになります 使い方 各項目の右端のアイコンを選択すると、パラメータを初期値にリセットできます Transform …

【Unity】空のフォルダ(ディレクトリ)を一括で削除するエディタ拡張

ソースコード 使い方 上記のスクリプトを Unity プロジェクトの「Editor」フォルダに追加して Unity メニューの「Tools > Remove empty folders」を選択すると 空のフォルダ(ディレクトリ)を一括で削除できます 関連リポジトリ 参考サイト様 関連記事

【おすすめスライド】「UIデザイナーのUnity事情 ~ワークフロー心得編~」

スライド

【おすすめスライド】「メモリと闘う者達」

スライド

【おすすめ記事】「Unityで設定できるテクスチャの圧縮フォーマットについて」

リンク

【Unity】ビルド時に Build Summary をテキストファイルに書き込むサンプル

ソースコード 使用例 <b>ビルド概要</b> ビルド開始日時 : 2019/01/01 09:00:00 GUID : XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX オプション : ForceOptimizeScriptCompilation Il2CPP StripDebugSymbols CompressTextures ShowBuiltPlayer 出力先 : D:/app/app.exe プラ…

【Unity】要素を使い回すスクロールを実装できる「Scroll - Mutate - Infinity - ZenUI」紹介

はじめに 「Scroll - Mutate - Infinity - ZenUI」を Unity プロジェクトに導入することで 要素を使い回すスクロールを実装できるようになります 目次 はじめに 目次 使用例 特徴 基本的な使い方 スクリプトの作成 シーンのオブジェクトの作成 要素の追加、…

【Unity】チュートリアルなどで特定のボタンのみハイライトして、それ以外のボタンを押せなくすることができる「Unity UI强制引导框」紹介

はじめに 「Unity UI强制引导框」を Unity プロジェクトに導入することで チュートリアルなどで特定のボタンのみハイライトして、 それ以外のボタンを押せなくすることができるようになります 使用例 使い方 シーンのキャンバス内に「GuideMask」のオブジェ…

【Unity】デリゲートだと 112B の GC Alloc が発生するがローカル関数だと GC Alloc が発生しない

概要 using System; using UnityEngine; using UnityEngine.Profiling; public class Test : MonoBehaviour { private void Update() { var samplerA = CustomSampler.Create( "TEST A" ); samplerA.Begin(); Func<int, int> funcA = n => n + 1; funcA( 25 ); sampler</int,>…

【Unity】Scene View のカメラの位置と角度をシーンのメインカメラに同期させるエディタ拡張

ソースコード 使い方 Unity メニューの「Edit > Scene View Camera Align」をオンにすると Scene View のカメラの位置と角度をシーンのメインカメラに同期させることができます

【Unity】クラスと構造体それぞれのインスタンスを object 型にキャストした時の GC Alloc の違い

クラス using UnityEngine; public class Example : MonoBehaviour { private class Hoge { } private Hoge hoge = new Hoge(); private void Update() { object obj = hoge; Hoge hoge2 = ( Hoge )obj; } } クラスの場合は GC Alloc は発生しない 構造体 us…

【Unity】クラスと構造体それぞれのインスタンスを生成した時の GC Alloc の違い

概要 using UnityEngine; using UnityEngine.Profiling; public class Example : MonoBehaviour { public class Hoge { } public struct Fuga { } private void Start() { var count = 1000000; var samplerA = CustomSampler.Create( "AAAAAAAAAAAAAAAAAAAA…

【Unity】static な event の登録数を取得する方法

概要 using System; using System.Reflection; public static class DelegateExt { public static int GetLength<T>( string name ) { return GetLength( typeof( T ), name ); } public static int GetLength( this Type self, string name ) { var attrs = Bi</t>…

【Unity】Hierarchy に uGUI の raycastTarget を変更するチェックボックスを表示するエディタ拡張

概要

【Unity】ゲームオブジェクトの Hierarchy におけるパスを取得できる拡張メソッド

ソースコード using UnityEngine; public static class GameObjectExt { public static string GetHierarchyPath( this GameObject gameObject ) { var path = gameObject.name; var parent = gameObject.transform.parent; while ( parent != null ) { path…