コガネブログ

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

【Unity】AssetDatabase.StartAssetEditing のスコープを管理するクラス

ソースコード using System; using UnityEditor; public sealed class AssetEditingScope : IDisposable { public AssetEditingScope() { AssetDatabase.StartAssetEditing(); } public void Dispose() { AssetDatabase.StopAssetEditing(); } }

【Unity】Unsaved scenes

概要 Unsaved scenes Addressable Asset System でアセットバンドルをビルドする時に上記のエラーが発生して ビルドできない状況に遭遇した シーンファイルに変更がある状態でビルドを開始すると シーンファイルを保存するかどうか確認するダイアログが表示…

【Unity】SBP ErrorUnsavedChanges

概要 SBP ErrorUnsavedChanges Addressable Asset System でアセットバンドルをビルドする時に上記のエラーが発生して ビルドできない状況に遭遇した シーンファイルに変更がある状態でビルドを開始すると シーンファイルを保存するかどうか確認するダイアロ…

【Unity】Addressable Asset System の DownloadDependenciesAsync で AsyncOperationHandle.PercentComplete が正常な値を返してくれない場合のメモ

概要 自分の環境だと下記のような状況だった バージョン 動作 1.8.3 0.0 ~ 1.0 の値を返してくれる 1.8.4 0.0 ~ 1.0 の値を返してくれる 1.9.2 0.75 ~ 1.0 の値を返してくる 1.10.0 0.75 ~ 1.0 の値を返してくる

【Unity】FancyScrollView の FancyScrollRect を使用した時に「Assertion failed」というエラーが出る場合

概要 public void UpdateContents( IList<ItemData> list ) { base.UpdateContents( list ); } FancyScrollRect を使用して上記のような関数を定義して実行したときに Assertion failed UnityEngine.Debug:Assert(Boolean) FancyScrollView.FancyScrollRect`2:UpdateCo</itemdata>…

【Unity】FancyScrollView で OnSelectionChanged に登録した関数を常に呼び出す方法

概要 protected override void Initialize() { base.Initialize(); m_scroller.OnValueChanged( UpdatePosition ); m_scroller.OnSelectionChanged( UpdateSelection ); } protected override void UpdatePosition( float position ) { base.UpdatePosition(…

【Unity】uGUI のオブジェクトを自作のメニューから呼び出すエディタ拡張

概要 using System.Linq; using UnityEditor; using UnityEditor.Presets; using UnityEngine; using UnityEngine.UI; public static class Example { [MenuItem( "GameObject/MyProject/Image", false, 9 )] private static void CreateImage( MenuCommand …

【Unity】Addressable Asset System でキャッシュの保存場所や保存期間を変更する方法

概要 Project ビューの「+ > Addressables > Initialization > Cache Initialization Settings」を選択すると アセットバンドルのキャッシュの保存場所や保存期間を設定できるファイルが生成されます 項目 内容 Compress Bundles キャッシュに保存するアセッ…

【Unity】Addressable Asset System を使用している ROM で InitializeAsync 時にエラーが発生した時のメモ

概要 NullReferenceException: Object reference not set to an instance of an object UnityEngine.ResourceManagement.AsyncOperations.InitalizationObjectsOperation.Execute () (at Library/PackageCache/com.unity.addressables@1.10.0/Runtime/Initia…

【Unity】Unity プロジェクトが起動しなくなった時のメモ

概要 Project Settings で「Player > Other Settings > Graphics APIs for Windows」を変更したら Unity プロジェクトが起動できなくなる PC があった Unity プロジェクトを開こうとすると エラーダイアログなど何も表示されずクラッシュする状態だった 「Gr…

【Unity】Android 向けにビルドしたアセットバンドルを Unity エディタで読み込んだ時に TextMesh Pro のテキストが表示されない場合

概要 Unity の Project Settings の「Player > Other Settings」を開く 「Auto Graphics API for Windows」のチェックを外す 「Graphics APIs for Windows」を Android プラットフォームと同じ状態にする Unity を再起動する これで Android 向けにビルドし…

【Unity】uGUI の Slider の値をスクリプトから設定する時に onValueChanged を発生しない関数

概要 using UnityEngine; using UnityEngine.UI; public class Example : MonoBehaviour { public Slider m_slider; private void Awake() { m_slider.onValueChanged.AddListener( _ => Debug.Log( "ピカチュウ" ) ); // onValueChanged が呼び出される m_s…

【Unity】ScriptableObject に後から PreferBinarySerialization 属性を付与した時にシリアライズし直すエディタ拡張

ソースコード using System.Linq; using UnityEditor; using UnityEngine; public class Example { [MenuItem( "Tools/Hoge" )] private static void Hoge() { var paths = AssetDatabase .FindAssets( $"t:{nameof( ScriptableObject )}" ) .Select( x => A…

【Unity】Unity Test Runner をバッチモードで実行する時にカテゴリで絞り込みする方法

概要 Unity.exe ^ -batchmode ^ -runEditorTests ^ -projectPath "【Unity プロジェクト】" ^ -editorTestsCategories "【カテゴリ名】" ^ -editorTestsResultFile "results.xml" -editorTestsCategories でカテゴリ名を指定する using NUnit.Framework; pub…

【Unity】Too many sprite tiles on Image "XXXX". The tile size will be increased.

概要 Too many sprite tiles on Image "XXXX". The tile size will be increased. To remove the limit on the number of tiles, set the Wrap mode to Repeat in the Image Import Settings UnityEditor.Undo:Internal_CallWillFlushUndoRecord() Image オ…