コガネブログ

平日更新を目標に 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】シンプルなメッセージバス「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】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 …

【おすすめスライド】「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】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】ゲームオブジェクトのルートパスを取得できる拡張メソッド

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

【Unity】Inspector で参照が設定されていない項目が存在したらエディタを再生できなくするエディタ拡張

ソースコード 上記のスクリプトを Unity プロジェクトの 「Editor」フォルダに追加することで使用できます 使い方 using JetBrains.Annotations; using UnityEngine; public class Test : MonoBehaviour { [NotNull] public Sprite m_sprite; } 例えば NotNu…

【Unity】Unity エディタの Game ビューに iPhone X のセーフエリアを表示できる「iPhone X Safe Area Drawer」を GitHub に公開しました

はじめに Unity エディタの Game ビューに iPhone X のセーフエリアを表示できる 「iPhone X Safe Area Drawer」を GitHub に公開しました バージョン Unity 2018.3.9f1 使用例 使い方 「iPhoneXSafeAreaDrawerSettings」を選択して IsEnable をオンにすると…

【Unity】static 変数、Hierarchy のオブジェクト、プレハブ、ScriptableObject などがどのくらいヒープ領域を使用しているか内訳を見ることができる「Unity Heap Crawler」紹介

はじめに 「Unity Heap Crawler」を Unity プロジェクトに導入することで static 変数、Hierarchy のオブジェクト、プレハブ、ScriptableObject などが どのくらいヒープ領域を使用しているか内訳を見ることができます 使い方 Unity エディタ再生中にメニュ…

【Unity】アセットバンドル化するアセットがアプリに内包するアセットから参照されていないか確認できる「AssetReferenceFinder」紹介

はじめに 「UnitySamples」リポジトリに含まれている 「AssetReferenceFinder.cs」を使用することで アセットバンドル化するアセットが アプリに内包するアセットから参照されていないか確認できます 使用例 例えば、アセットバンドル化するアセットが含まれ…

【Unity】任意のコードの実行時間や GC Alloc を測定して Profiler に表示できる「CustomSampler」

概要 using UnityEngine; using UnityEngine.Profiling; public class Example : MonoBehaviour { private void Start() { var sampler = CustomSampler.Create( "Pokemon" ); sampler.Begin(); for ( int i = 0; i < 10000; i++ ) { Debug.Log( "あああああ…

【Unity】TexturePacker でパッキングしたテクスチャを SpriteRenderer や uGUI の Image で使用する

はじめに TexturePacker でパッキングしたテクスチャは SpriteRenderer や uGUI の Image で使用することができます 検証環境 Unity 2018.3.7f1 TexturePacker 4.12.1 準備 上記サイトから TexturePacker をインストールします また、 「TexturePacker Impor…