コガネブログ

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

2020-04-01から1ヶ月間の記事一覧

【Mac】各フォルダが専有する容量を確認できる「DiskWave」

概要 「DiskWave」を使用すると Mac の各フォルダが専有する容量を確認できる macOS Mojave(バージョン 10.14.4)で正常に動作した

【Unity】Could not establish connection with the Unity Package Manager local server process.

概要 Could not establish connection with the Unity Package Manager local server process. This is most likely due to a proxy or firewall configuration. Make sure the process [XXXX] is reachable via HTTP on the IP address 127.0.0.1. Unity プ…

【雑記】Windows 10 でスタートメニューの「シャットダウン」「再起動」「スリープ」の項目を非表示にする方法

概要 Windows キーと R キーを同時に押し、 「ファイル名を指定して実行」ダイアログの「名前」に 「gpedit.msc」と入力して「OK」を押し、 「ローカル グループ ポリシー エディター」が表示されたら左メニューの 「ローカル コンピューター ポリシー > ユ…

【Unity】.sln が生成される時に呼び出されるエディタ拡張の関数

概要 using UnityEditor; using UnityEngine; public sealed class Example : AssetPostprocessor { private static string OnGeneratedSlnSolution( string path, string content ) { Debug.Log( path ); Debug.Log( content ); return content; } }

【Unity】Unity Package Manager で入手したパッケージの一部を git のバージョン管理に含める方法

概要 /[Ll]ibrary/* !/[Ll]ibrary/PackageCache/ /[Ll]ibrary/PackageCache/* !/[Ll]ibrary/PackageCache/com.unity.addressables@1.7.5/ 例えば Addressable Asset System を git でバージョン管理したい場合、 .gitignore で上記のように記述する

【Unity】Unity Package Manager で入手したパッケージを git のバージョン管理に含める方法

概要 /[Ll]ibrary/* !/[Ll]ibrary/PackageCache/ .gitignore で上記のように記述する

【おすすめスライド】「【リリースが先か】えっ!Addressablesを新規プロジェクトに?【ver1が先か】」

スライド

【おすすめスライド】「バンダイナムコスタジオ流Unityの使い方」

スライド

【Unity】Addressable Asset System の StreamingAssets の settings.json を読み込むスクリプト

概要 StartCoroutine( UniAddressUtils.LoadSettingsJson( c => Debug.Log( c ) ) );

【Unity】Addressable Asset System の StreamingAssets の link.xml を読み込むスクリプト

概要 StartCoroutine( UniAddressUtils.LoadLinkXml( c => Debug.Log( c ) ) );

【Unity】Addressable Asset System の StreamingAssets の catalog.json を読み込むスクリプト

概要 StartCoroutine( UniAddressUtils.LoadCatalogJson( c => Debug.Log( c ) ) );

【Unity】ランタイムで Scenes In Build に登録されているすべてのシーンのパスを取得する方法

概要 public static IEnumerable<string> GetAllScenePathInBuildSettings() { for ( int i = 0; i < SceneManager.sceneCountInBuildSettings; i++ ) { yield return SceneUtility.GetScenePathByBuildIndex( i ); } } 参考サイト様</string>

【おすすめスライド】「今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~」

スライド

【Unity】Addressable Asset System の InitializeAsync を複数回呼び出したい場合

概要 Addressables.InitializeAsync でリモートカタログがダウンロードされるが ダウンロードに失敗した場合も内部では初期化済みフラグが立ってしまう AddressablesImpl.hasStartedInitialization がそのフラグ フラグが立ってしまうと、再度 Addressables.…

【Unity】Addressable Asset System の AddressablesImpl.hasStartedInitialization をリフレクションで false にする方法

概要 var addressablesType = typeof( Addressables ); var assembly = addressablesType.Assembly; var addressablesImplType = assembly.GetType( "UnityEngine.AddressableAssets.AddressablesImpl" ); var addressablesImplField = addressablesType.Get…

【ReSharper】Reformat Code 時にステートメント形式のラムダを一行にまとめない方法

概要 上記のように Reformat Code 時にステートメント形式のラムダが 一行にまとめられるのをやめたい場合は 「Place simple anonymous method on single line」をオフにする

【Unity】Addressable Asset System の AddressableAssetsData フォルダ以下のアセットはビルドに含まれない

概要 Assets/AddressableAssetsData フォルダ以下のアセットはビルドに含まれない ビルド後に Editor.log の Build Report を見ても含まれていない

【Unity】Addressable Asset System でカタログに記述されているアセットバンドルの一覧をログ出力するエディタ拡張

概要 [MenuItem( "Tools/Hoge" )] private static void Hoge() { var path = @"Library\com.unity.addressables\StreamingAssetsCopy\aa\Windows\catalog.json"; var json = File.ReadAllText( path ); var data = JsonUtility.FromJson<ContentCatalogData>( json ); var intern</contentcatalogdata>…

【Unity】Addressable Asset System で PlatformMappingService.GetAddressablesPlatformInternal をリフレクションで参照する関数

概要 private static AddressablesPlatform GetPlatform( BuildTarget target ) { const string methodName = "GetAddressablesPlatformInternal"; var serviceType = typeof( PlatformMappingService ); var targetType = typeof( BuildTarget ); var metho…

【C#】AmbiguousMatchException: Ambiguous match found.

C#

はじめに private static string GetParam( Hoge hoge ) { ... } private static string GetParam( Fuga fuga ) { ... } 例えば上記のように、引数が違う同名の関数がオーバーロードされており、 var attr = BindingFlags.Static | BindingFlags.NonPublic; …

【Unity】Git で Clone や Pull した時に AddressableAssetSettings.asset が変更状態になる現象を防ぐエディタ拡張

概要 自分の環境だと Git で Clone や Pull した時に AddressableAssetSettings.asset の改行コードが Win から Unix になってしまっていたので、 エディタ拡張で改行コードを Win にするようにした git の core.autocrlf を使おうかと思ったが、現象が発生…

【Unity】Addressable Asset System で Library/com.unity.addressables フォルダをバージョン管理に含める方法

概要 /[Ll]ibrary/* !/[Ll]ibrary/com.unity.addressables/ .gitignore で Library フォルダの無視の指定を上記のように記述する /[Ll]ibrary/ !/[Ll]ibrary/com.unity.addressables/ このように * が付いていないと反映されないので気をつける /[Ll]ibrary/…

【Unity】Player content must be built before entering play mode with packed data.

概要 Addressable Asset System で Play Mode Script を 「Use Existing Build」にしている状態で Unity を再生した時に Player content must be built before entering play mode with packed data. This can be done from the Addressables window in the …

【Unity】Addressable Asset System ではシーンのアセットバンドルの読み込みに失敗した場合にもシーンの読み込み処理に進んでしまいエラーと例外が発生する

概要 AssetBundleResource でシーンのアセットバンドルのダウンロードに失敗しても シーンの読み込み処理に進んでしまう シーンの読み込み処理は SceneProvider.cs に書かれており、 下記のエラーと例外が発生する Scene 'XXXX' couldn't be loaded because …

【Unity】Android で Addressable Asset System のリモートカタログのキャッシュを削除するスクリプト

概要 var path = $"{Application.persistentDataPath}/com.unity.addressables"; var files = Directory.GetFiles( path, "*", SearchOption.AllDirectories ); foreach ( var file in files ) { File.Delete( file ); } Addresable Asset System でリモート…

【Unity】Addressable Asset System のリモートカタログやアセットバンドルは Android でどこに保存されるか

概要 /storage/emulated/0/Android/data/【Package Name】/files/ リモートカタログのキャッシュは上記フォルダ内の 「com.unity.addressables」フォルダに保存される アセットバンドルのキャッシュは上記フォルダ内の 「UnityCache」フォルダに保存される

【Unity】Addressable Asset System でリモートカタログのキャッシュを削除するエディタ拡張

概要 using System; using System.IO; using UnityEditor; using UnityEngine; public static class Tools { [MenuItem( "Tools/リモートカタログのキャッシュを削除" )] private static void DeleteRemoteCatalogCacheFolder() { var path = $"{Application…

【Unity】Addressable Asset System でリモートカタログのキャッシュのフォルダを開くエディタ拡張

概要 using System; using System.Diagnostics; using UnityEditor; using UnityEngine; public static class Tools { [MenuItem( "Tools/リモートカタログのキャッシュのフォルダを開く" )] private static void OpenRemoteCatalogCacheFolder() { var path…

【Unity】Addressable Asset System で IResourceLocation を Json 形式で出力するための構造体

概要 [Serializable] public struct ResourceLocationJsonData { [SerializeField] private string m_internalId; [SerializeField] private string m_primaryKey; [SerializeField] private string m_providerId; [SerializeField] private string m_resour…

【Unity】Addressable Asset System で InitializeAsync でリモートカタログが読み込めなかった場合も成功になる

概要 InitializeAsync でリモートカタログを読み込む処理は InitializationOperation.CreateInitializationOperation で記述されている リモートカタログをサーバからダウンロードする処理は TextDataProvider.InternalOp.Start で記述されている internalId…