コガネブログ

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

【Unity】ゲームオブジェクトが破棄される時に自動で IDisposable.Dispose を呼び出す拡張メソッド

ソースコード 使用例 using System; using UnityEngine; public class Character : IDisposable { public void Dispose() { Debug.Log( "ピカチュウ" ); } } public class Example : MonoBehaviour { private void Start() { var character = new Character(…

【Unity】Addressable Asset System のビルドのキャッシュを削除するエディタ拡張

概要 AddressableAssetSettings.CleanPlayerContent(); BuildCache.PurgeCache( false ); AddressableAssetSettings.CleanPlayerContent を呼ぶだけだと ビルドのキャッシュは完全に消えない BuildCache.PurgeCache を呼ぶと Library/BuildCache フォルダが…

【Unity】Addressable Asset System のビルドのキャッシュの保存先

概要 【Unity プロジェクト】/Library/BuildCache Addressables Goups ウィンドウの 「Build > Clean Build > All」で削除されるのはこのフォルダ

【Unity】Addressable Asset System でダウンロード対象のアセットバンドルの容量を取得する方法

概要 var handle = Addressables.GetDownloadSizeAsync( address ); handle.Completed += _ => Debug.Log( handle.Result ); Addressables.GetDownloadSizeAsync を使用することで ダウンロード対象のアセットバンドルの容量を取得できる ダウンロード対象の…

【Unity】Addressable Asset System でデフォルト以外のすべての空のグループを削除するエディタ拡張

概要 使用例 using UnityEditor; public static class Example { [MenuItem( "Tools/Hoge" )] private static void Hoge() { AddressableUtils.RemoveAllEmptyGroupWithoutDefault(); } }

【Unity】Addressable Asset System のグループ名を昇順でソートするエディタ拡張

概要 使用例 using UnityEditor; public static class Example { [MenuItem( "Tools/Hoge" )] public static void Hoge() { // グループを名前でソートします AddressableUtils.SortGroups(); // AddressableAssetsWindow の描画を更新します AddressableUti…

【Unity】指定した EditorWindow が開いているかどうかエディタ拡張で確認する方法

概要 using UnityEditor; using UnityEngine; public static class Example { [MenuItem( "Tools/Hoge" )] public static void Hoge() { var assembly = typeof( EditorApplication ).Assembly; var windowTypeName = "UnityEditor.InspectorWindow"; var wi…

【Unity】Addressable Asset System の AddressableAssetsWindow を再描画するエディタ拡張

using System.Reflection; using UnityEditor; using UnityEngine; public static class Example { [MenuItem( "Tools/Hoge" )] public static void Repaint() { const BindingFlags attr = BindingFlags.Instance | BindingFlags.Public | BindingFlags.Non…

【C#】シーケンスから重複している要素を取得する拡張メソッド

ソースコード using System; using System.Collections.Generic; using System.Linq; public static class IEnumerableExt { public static IEnumerable<TKey> GetDuplication<TKey, TSource> ( this IEnumerable<TSource> self, Func<TSource, TKey> keySelector ) { return self .GroupBy( keySelector )</tsource,></tsource></tkey,></tkey>…

【Unity】Addressable Asset System で重複しているアドレスが存在しないか確認するテストコード

概要 使用例 using NUnit.Framework; using System.Linq; using System.Text; public static class Example { [Test] public static void CheckDuplicateAddress() { var list = AddressableUtils .GetDuplicateAddress() .ToArray() ; var isExist = list.A…

【おすすめスライド】「SpriteAtlasの落とし穴」

スライド

【おすすめスライド】「AssetBundleダウンロードサイズ表示対応」

スライド

【Unity】アセットバンドル名が存在するかどうか確認するテストコード

概要 using NUnit.Framework; using System.Linq; using System.Text; using UnityEditor; public static class Example { [Test] public static void CheckAssetBundleNames() { var list = AssetDatabase.GetAllAssetBundleNames(); var isExist = list.An…

【Unity】アセットバンドル名が設定されているアセットが存在するかどうか確認するテストコード

概要 using NUnit.Framework; using System.Linq; using System.Text; using UnityEditor; public static class Example { [Test] public static void CheckAssetBundleNamedAssets() { var list = AssetDatabase.GetAllAssetPaths() .Select( c => new { as…

【Unity】Addressable Asset System の BundledAssetGroupSchema の Build Path と Load Path を変更するエディタ拡張

概要 使用例 using System.Linq; using UnityEditor; using UnityEditor.AddressableAssets.Settings; using UnityEditor.AddressableAssets.Settings.GroupSchemas; public static class Example { [MenuItem( "Tools/Hoge" )] public static void Hoge() {…