コガネブログ

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

【Fork】git クライアントの Fork でコミット履歴にプロフィール画像を表示する方法

概要 Fork メニューの「File > Preferences...」から 「Git」タブの「Change the avatar at gravatar.com」のリンクを選択して 表示された上記のサイトでアカウントを作成して アカウント設定の画面にプロフィール画像をアップロードする そして Fork を再起…

【Unity】DOTween で 対象のゲームオブジェクトが破棄されたら Tween も破棄する方法

概要 MissingReferenceException: The object of type 'XXXX' has been destroyed but you are still trying to access it. Your script should either check if it is null or you should not destroy the object. DOTween を使っているシーンで他のシーン…

【Rider】string.Format のように扱う必要があること明示する StringFormatMethod 属性

概要 例えば上記のようなコードで StringFormatMethod 属性を適用すると 正しく書式が指定されていない場合に警告が表示されるようになります このように、StringFormatMethod 属性を適用することで string.Format のように扱う必要があること明示できます …

【Rider】戻り値が使用されていない場合に警告を表示できる Pure 属性

概要 例えば上記のようなコードで Pure 属性を適用すると その関数で受け取った値を使用していない場合に警告が表示されるようになります 参考サイト様

【Rider】null になる可能性があることを明示する CanBeNull 属性

概要 例えば上記のようなコードで CanBeNull 属性を適用すると その関数で受け取った値を null チェックしていない場合に 警告が表示されるようになります このように、CanBeNull 属性を適用することで その関数は null を返す可能性があることを明示できま…

【Rider】null ではないことを保証する NotNull 属性

概要 例えば上記のような関数に NotNull 属性を適用すると その関数で null を返そうとしている場合に警告が表示されるようになります このように、NotNull 属性を適用することで その関数は null を返さない、ということを保証できるようになります 他にも…

【Unity】プロジェクトのアップデート後にすべてのアセットをシリアライズし直す方法

概要 Unity のプロジェクトをアップデートした場合、 基本的にはすべてのアセットは古いバージョンの形式で保存されたままになります そして、アセットを変更して保存すると、 そのアセットのみが新しいバージョンの形式で保存されます そのため、Unity プロ…

【Unity】Unity プロジェクトの初回起動時に指定したプラットフォームに自動で切り替えるエディタ拡張

概要 例えば上記のスクリプトを Unity プロジェクトの Editor フォルダに追加することで Unity プロジェクトの初回起動時に Android プラットフォームに自動で切り替えることができます 参考サイト様 関連記事

【Unity】string.Format や StringBuilder、TextMesh Pro の割り当てを削減できる「ZString」紹介

はじめに 「ZString」を Uniy プロジェクトに導入することで string.Format や StringBuilder、TextMesh Pro の割り当てを削減できるようになります string.Format 通常 using UnityEngine; public class Example : MonoBehaviour { private void Update() {…

【Unity】特定のフォルダ内のアセットを編集して保存できないようにするエディタ拡張

概要 例えば上記のスクリプトを Unity プロジェクトの Editor フォルダに追加すると Assets/Folder1 Assets/Folder2 これらのフォルダ以下に存在するアセットは編集して保存できないようになります

【Unity】特定のフォルダ内のアセットが他のフォルダに移動しないようにするエディタ拡張

概要 例えば上記のスクリプトを Unity プロジェクトの Editor フォルダに追加すると 「@Project」フォルダ内のアセットを「@Project」フォルダ外に移動したり、 「@Project」フォルダ外のアセットを「@Project」フォルダ内に移動したりできなくなります

【Unity】Hierarchy を右クリックした時に表示されるメニューをカスタマイズできるエディタ拡張「Unity Hierarchy Menu Customizer」を GitHub に公開しました

はじめに Hierarchy を右クリックした時に表示されるメニューをカスタマイズできるエディタ拡張 「Unity Hierarchy Menu Customizer」を GitHub に公開しました 使用例 インストール "com.baba_s.unity-hierarchy-menu-customizer": "https://github.com/bab…

【Unity】Project ビューを右クリックした時に表示されるメニューをカスタマイズできるエディタ拡張「Unity Project Window Menu Customizer」を GitHub に公開しました

はじめに Project ビューを右クリックした時に表示されるメニューをカスタマイズできるエディタ拡張 「Unity Project Window Menu Customizer」を GitHub に公開しました 使用例 インストール "com.baba_s.unity-project-window-menu-customizer": "https://…

【Unity】各プラットフォームにおいてコンパイルエラーが発生しないか確認できるテストコード

検証環境 Unity 2019.3.0f6 ソースコード 上記のスクリプトを Unity プロジェクトの Editor フォルダに追加します 使用例 using UnityEngine; public class Example : MonoBehaviour { private void Awake() { #if UNITY_ANDROID ここでコンパイルエラー #en…

【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.…

【おすすめスライド】「今日からできる!簡単 .NET 高速化 Tips」

スライド

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

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

【C#】関数の戻り値で ValueTuple を使用する

概要 private (int id, string name) GetCharacter() { return ( 25, "ピカチュウ" ); } 関数の戻り値で ValueTuple を使用することで var character = GetCharacter(); Console.WriteLine( character.id + ", " + character.name ); var ( id, name ) = Get…

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

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

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

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

【Unity】Python で .asset や .prefab、.unity などのファイルを編集する方法

はじめに この記事は「Unity #3 Advent Calendar 2019」の 12/9 の記事です 「Unity YAML Parser」を Python で使用することで Unity の .asset や .prefab、.unity などのファイルを編集できます 目次 はじめに 目次 検証環境 インストール方法 ProjectSett…

【Unity】エディタの再生ボタンの左右に独自の GUI を追加する

はじめに この記事は「Unity Advent Calendar 2019」の 12/6 の記事です 上記の「CustomToolbar」を Unity プロジェクトに導入することで エディタの再生ボタンの左右に独自の GUI を追加することができます 使用例 使い方 「CustomToolbar」を Unity プロジ…

【Unity】using static を使用してエディタ拡張の OnGUI の記述を少し楽にする

はじめに この記事は「Unity #3 Advent Calendar 2019」の 12/5 の記事です private void OnGUI() { EditorGUILayout.BeginHorizontal(); if ( GUILayout.Button( "ピカチュウ" ) ) { } if ( GUILayout.RepeatButton( "ライチュウ" ) ) { } EditorGUILayout.…

【Unity】50種類以上のデバイスでゲーム画面がどう表示されるかエディタ上で確認できて、ノッチやセーフエリアの対応もできる「Universal Device Preview」紹介

はじめに この記事は「Unityアセット冬のアドベントカレンダー 2019 Winter」の 12/2 の記事です 「Universal Device Preview」を Unity プロジェクトに導入することで 50種類以上のデバイスでゲーム画面がどう表示されるかエディタ上で確認できて、 ノッチ…

【Unity】GetComponentInParent の null チェックを少しだけ簡潔に記述できる TryGetComponentInParent 拡張メソッド

ソースコード using UnityEngine; public static class ComponentExt { public static bool TryGetComponentInParent<T>( this Component self, out T component ) where T : Component { component = self.GetComponentInParent<T>(); return component != null; </t></t>…

【Unity】GetComponentInChildren の null チェックを少しだけ簡潔に記述できる TryGetComponentInChildren 拡張メソッド

ソースコード using UnityEngine; public static class ComponentExt { public static bool TryGetComponentInChildren<T>( this Component self, out T component ) where T : Component { component = self.GetComponentInChildren<T>(); return component != nu</t></t>…

【Unity】TryGetComponent を Unity 2018 でも使用できるようにする拡張メソッド

ソースコード using UnityEngine; public static class ComponentExt { public static bool TryGetComponent<T>( this Component self, out T component ) where T : Component { component = self.GetComponent<T>(); return component != null; } } public stati</t></t>…

【Unity】TryGetComponent の活用方法

概要 var collider = GetComponent<BoxCollider>(); if ( collider != null ) { Debug.Log( collider ); } GetComponent だとこのように記述する処理を if ( TryGetComponent<BoxCollider>( out var collider ) ) { Debug.Log( collider ); } TryGetComponent を使うとちょっとだけ簡潔</boxcollider></boxcollider>…

【Unity】EditorGUIUtility.IconContent で使用できる 1000 種類以上のアイコンがまとめられている GitHub リポジトリ

概要 上記の GitHub リポジトリでは EditorGUIUtility.IconContent で使用できる 1000 種類以上のアイコンがすべてまとめられています 使用例 using UnityEditor; using UnityEngine; public sealed class Example : EditorWindow { [MenuItem( "Tools/Hoge"…