コガネブログ

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

【Unity】おすすめのオープンソースがまとめられたリポジトリ「awesome-unity3d」紹介

概要 「awesome-unity3d」はおすすめのオープンソースがまとめられたリポジトリです

【Unity】Found plugins with same names, and . Delete the one of the duplicate plugins.

概要 Found plugins with same names, and . Delete the one of the duplicate plugins. Unity 2018.4 のプロジェクトを 2019.2 にアップデートして Android ビルドしようとしたところ、上記のエラーが発生してビルドできなかった Unity プロジェクトを終了…

【Unity】無料で使用できるおすすめのスクリプト、ライブラリ、プラグインがまとめられたリポジトリ「Unity Script Collection」紹介

概要 「Unity Script Collection」は無料で使用できるおすすめのスクリプト、 ライブラリ、プラグインがまとめられたリポジトリです

【Unity】おすすめのアセットやプロジェクトがまとめられたリポジトリ「Awesome Unity」紹介

概要 「Awesome Unity」はおすすめのアセットやプロジェクトがまとめられたリポジトリです

【Unity】GitHub で公開されているおすすめのオープンソース800個以上をカテゴリごとにまとめました

概要 GitHub で公開されているおすすめのオープンソース800個以上を カテゴリごとにまとめました 上記のリポジトリで確認できます

【Unity】シーン遷移時に簡単にデータを渡すことができるパッケージ「Unity Scene Data Transfer」を GitHub に公開しました

はじめに シーン遷移時に簡単にデータを渡すことができるパッケージ 「Unity Scene Data Transfer」を GitHub に公開しました インストール "com.baba_s.unity-scene-data-transfer": "https://github.com/baba-s/unity-scene-data-transfer.git", manifest.…

【Unity】WebGL で Compression Format によってどのくらいビルド時間に差がでるか

検証環境 Unity 2019.2.15f1 空の 2D プロジェクト 検証結果 Compression Format ビルド時間 Disabled 46 秒 Gzip 47 秒 Brotli 123 秒 補足 gzip: デフォルト設定。gzip ファイルは Brotli ファイルより大きいですが、ビルドにかかる時間が短く、http と ht…

【Unity】Package Manager 用の自作パッケージにサンプルを含める方法

はじめに Package Manager 用の自作パッケージには サンプル用のアセットを含めることができます サンプルは Package Manager からインポートできるようになります インポートしたサンプルはこのように Assets フォルダ内に展開されます 検証環境 Unity 2019…

【Unity】SceneManager.sceneLoaded が呼び出されるタイミング

概要 Awake OnEnable SceneManager.sceneLoaded Start

【Unity】ディープリンクでアプリがアクティブ化した時に呼び出されるイベント「Application.deepLinkActivated」

概要 using UnityEngine; public class Example : MonoBehaviour { private void Start() { Application.deepLinkActivated += url => Debug.Log( url ); } } iOS や Android で ディープリンクでアプリがアクティブ化した時に呼び出されるイベントらしい (…

【Unity】Unity Test Runner のテストをカテゴリ分けする方法

概要 using NUnit.Framework; public class Example { [Test] [Category( "ポケモン/ピカチュウ" )] public void Test1() { } [Test] [Category( "ポケモン/カイリュー" )] public void Test2() { } } Category属性を使用することで Unity Test Runner のテ…

【Unity】Unity 2019.3.0f3 や Unity 2019.3.0f1 だと OnInspectorGUI で EditorGUILayout.Foldout が動作しない

概要 using UnityEditor; [CustomEditor( typeof( Example ) )] public class ExampleEditor : Editor { private bool m_isOpen; public override void OnInspectorGUI() { m_isOpen = EditorGUILayout.Foldout( m_isOpen, "Open" ); if ( m_isOpen ) { Edit…

【Unity】ScriptableObject(.asset)を ProjectSettings フォルダに保存・読み込みしたい場合

概要 ScriptableObject(.asset)は ProjectSettings フォルダ以下に保存・読み込みができないが、 下記のスクリプトのように JSON 形式に変換することで保存・読み込みができる 参考サイト様

【Unity】Unity 2019.3 で UIElements を使用してエディタの色を変更してみる

概要 上記のような「common.uss」という名前のファイルを Unity 2019.3 のプロジェクトの 「Assets/Editor/StyleSheets/Extensions」フォルダに追加することで Unity エディタのいくつかの UI の色を変更することができます 例えば common.uss で AppCommand…

【Unity】LINQ の結果を匿名型ではなく ValueTuple で受け取る

概要 using System.Linq; using UnityEngine; public class Example : MonoBehaviour { private static string[] m_list = { "フシギダネ", "フシギソウ", "フシギバナ", }; private void Update() { // 匿名型 var r1 = m_list.Select( c => new { name = c…

【Unity】構造体をインターフェイスで受け取ると GC Alloc が発生するが Generic 制約でインターフェイスを指定すると発生しない

概要 using UnityEngine; public interface ICharacter { } public struct Character : ICharacter { } public class Example : MonoBehaviour { private Character m_character = new Character(); private void Update() { Hoge1( m_character ); } privat…

【Unity】System.Enum で引数を受け取ると GC Alloc が発生するが Generic 制約 で Enum を指定すると発生しない

概要 using System; using UnityEngine; public class Example : MonoBehaviour { private enum Type { GRASS, FIRE, WATER, } private void Update() { Hoge1( Type.FIRE ); } private void Hoge1( Enum value ) { } } System.Enum で引数を受け取ると GC A…

【Unity】ローカル変数をキャプチャする場合、その処理が実行されなくても GC Alloc は発生する

概要 using System.Linq; using UnityEngine; public class Example : MonoBehaviour { private static string [] m_list = { "フシギダネ", "フシギソウ", "フシギバナ", }; private void Update() { var name = "ピカチュウ"; // ここで return するので r…

【Unity】LINQ の拡張メソッドを自作して GC Alloc を減らす方法

概要 using System.Linq; using UnityEngine; public class Example : MonoBehaviour { private static string[] m_list = { "フシギダネ", "フシギソウ", "フシギバナ", }; private void Update() { var name = "ピカチュウ"; var result = m_list.Where( c…

【Unity】ゲームのパフォーマンスに影響を与えるソースコードやプロジェクトの設定を分析できる「Project Auditor」紹介

はじめに 「Project Auditor」を Unity プロジェクトに導入することで ゲームのパフォーマンスに影響を与えるソースコードやプロジェクトの設定を 分析できるようになります (この記事を書いた時点ではまだ実験中の機能とのことです) 使い方 Unity メニュ…

【Unity】Scene ビューに Cube や Sphere やスプライトのギズモを簡単に表示できる「DrawGizmo」紹介

はじめに 「DrawGizmo」を Uniy プロジェクトに導入することで Scene ビューに Cube や Sphere やスプライトのギズモを簡単に表示できるようになります 使用例 Cube Sphere スプライト

【Unity】エディタで Game ビューのキャプチャを簡単に撮ることができる「UniEditorScreenshot」紹介

はじめに 「UniEditorScreenshot」を Unity プロジェクトに導入することで エディタで Game ビューのキャプチャを簡単に撮ることができます 使い方 Unity メニューの「Window > Capture Editor」を選択します そして、表示されたウィンドウで「Take screensh…

【Unity】メソッドチェーンでリッチテキストを設定できる「RichText for Unity」紹介

はじめに 「RichText for Unity」を Unity プロジェクトに導入することで メソッドチェーンでリッチテキストを設定できるようになります 使用例 var str = "ピカチュウ"; // 通常 Debug.Log( $"<color=purple><size=17><b><i>{str}</i></b></size></color>"); // RichText for Unity Debug.Log( $"{str.Italic().B…

【Unity】Gist からソースコードをダウンロードしてプロジェクトに追加できる「GistImporter.cs」紹介

ソースコード 使い方 上記のソースコードを Unity プロジェクトの「Assets/Gists」フォルダに追加して Gist の URL をクリップボードにコピーした状態で Unity メニューの「Tools > Import Gist」を押すと Gist からソースコードをダウンロードしてプロジェ…

【Unity】Collision で CompareTag を使用できるようにする拡張メソッド

ソースコード using UnityEngine; namespace MyProject { public static class CollisionExt { public static bool CompareTag( this Collision self, string tag ) { return self.gameObject.CompareTag( tag ); } } } 使用例 適用前 private void OnCollis…

【Unity】Collision2D で CompareTag を使用できるようにする拡張メソッド

ソースコード using UnityEngine; namespace MyProject { public static class Collision2DExt { public static bool CompareTag( this Collision2D self, string tag ) { return self.gameObject.CompareTag( tag ); } } } 使用例 適用前 private void OnCo…

【Unity】他のオブジェクトの OnCollisionEnter や TriggerEnter などのイベントを検知できる「Unity Event Bridge」紹介

はじめに 「Unity Event Bridge」を Unity プロジェクトに導入することで 他のオブジェクトの OnCollisionEnter や TriggerEnter などのイベントを 検知できるようになります 使用例 using EventBridge; using UnityEngine; public class Example : MonoBeha…

【Unity】Xcode プロジェクトをキャッシュしてビルド時間を削減できる「UnityXcodeCache」紹介

はじめに 「UnityXcodeCache」を Unity プロジェクトに導入することで Xcode プロジェクトをキャッシュしてビルド時間を削減できようになります 使い方 「Tools > Xcode > WriteCacheXcode」を実行します Xcode プロジェクトをビルドします 「Tools > Xcode …

【Unity】No Sprite Editor Window registered. Please download 2D Sprite package from package manager.

概要 スプライトの「Sprite Editor」を開こうとした時に No Sprite Editor Window registered. Please download 2D Sprite package from package manager. このようなメッセージが表示された場合は Unity メニューの「Window > Package Manager」から 「2D S…

【Unity】Unity Remote で表示されるゲーム画面をキレイにする方法

概要 Unity メニューの「Edit > Project Settings...」から「Editor」を選択して 「Resolution」を「Normal」に変更すると、 Unity Remote で表示されるゲーム画面をキレイにすることができます (代わりに Unity Remote の動作が遅くなる可能性があります)…