コガネブログ

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

【Unity】error: Build input file cannot be found: 'XXXX/YYYY.mm' (in target 'UnityFramework' from project 'Unity-iPhone')

概要 error: Build input file cannot be found: 'XXXX/YYYY.mm' (in target 'UnityFramework' from project 'Unity-iPhone') .mm ファイルの管理フォルダを変更したあとに Unity で iOS ビルドしたら Xcode ビルド時に上記のエラーが発生する現象に遭遇した…

【Unity】Assertion failed on expression: 'it != m_SendMap.end()'

概要 AcceleratorClientConnectionCallback - disconnected - 192.168.0.6:10080 Assertion failed on expression: 'it != m_SendMap.end()' ================================================================= Native Crash Reporting ==================…

【Unity】プレハブモードで FindObjectOfType を使いたい場合

概要 var tilemap = GameObject.FindObjectOfType<Tilemap>(); プレハブモードでは FindObjectOfType を使ってもコンポーネントは見つからない var tilemap = PrefabStageUtility .GetCurrentPrefabStage() .FindComponentOfType<Tilemap>() ; 上記のようなコードを書くとコン</tilemap></tilemap>…

【Unity】AssetPostprocessor の OnPreprocessAudio や OnPreprocessTexture だと ScriptableSingleton の最新の情報を取得できなかった

概要 private void OnPreprocessAudio() { var example = Example.instance; } AssetPostprocessor の OnPreprocessAudio や OnPreprocessTexture で ScriptableSingleton にアクセスしたところ、初回は正常に値を取得できたが ScriptableSingleton の値を変…

【Unity】Sprite Atlas V2 だと SetPackingSettings や SetTextureSettings が反映されない

概要 [MenuItem( "hoge/hoge" )] private static void Hoge() { var assetPath = "Assets/New Sprite Atlas.spriteatlas"; var spriteAtlas = AssetDatabase.LoadAssetAtPath<SpriteAtlas>( assetPath ); var packingSettings = spriteAtlas.GetPackingSettings(); packin</spriteatlas>…

【Unity】SpriteAtlas V2 を有効にした場合の SpriteAtlas の拡張子は .spriteatlasv2

概要 var list = importedAssets .Where( x => x.EndsWith( ".spriteatlas" ) || x.EndsWith( ".spriteatlasv2" ) ) .ToArray() ; アセットのパスの拡張子で SpriteAtlas かどうかを確認する場合は .spriteatlas だけではなく .spriteatlasv2 も確認する必要…

【Unity】AssetPostprocessor の OnPreprocessAudio や OnPreprocessTexture では Application.isBatchMode が true になる

概要 Unity Hub から Unity を起動した状態で [MenuItem( "hoge/hoge" )] private static void Hoge() { Debug.Log( Application.isBatchMode ); // False } Application.isBatchMode にアクセスすると通常は False になるが private void OnPreprocessAudio…

【Unity】エディタの GUI を上下の中央に表示する方法

概要 using var scope = new EditorGUILayout.VerticalScope(); GUILayout.FlexibleSpace(); if ( GUILayout.Button( icon, EditorStyles.iconButton ) ) { } GUILayout.FlexibleSpace(); EditorGUILayout.VerticalScope と GUILayout.FlexibleSpace を組み…

【Unity】エディタの GUI でリストに要素がドラッグされたかどうかを検知する方法

概要 using var scope = new EditorGUI.ChangeCheckScope(); var oldCount = m_list.Count; m_editor.OnInspectorGUI(); if ( !scope.changed && oldCount == m_list.Count ) return; Debug.Log( "ピカチュウ" ); エディタの GUI でリストに要素がドラッグさ…

【Unity】Duplicate Array Element と Delete Array Element を実行した時は ChangeCheckScope.changed は true にならない

【Unity】Hierarchy の Create メニューから EventSystem が作成できなくなった時の対処方法

概要 EventSystem の Preset を作成して Preset Manager に登録したら Hierarchy の Create メニューから EventSystem が作成できなくなった Unity を再起動したら作成できるように直った 開発環境 Unity 2022.1.11f1 macOS Monterey バージョン 12.5.1

【Unity】UnityException: LoadSerializedFileAndForget is not allowed to be called from a ScriptableObject constructor (or instance field initializer), call it in OnEnable instead. Called from ScriptableObject 'XXXX'.

概要 [InitializeOnLoad] internal static class Example { static Example() { Debug.Log( ExampleSetting.instance ); } } InitializeOnLoad のタイミングで ScriptableSingleton にアクセスしたら UnityException: LoadSerializedFileAndForget is not al…

【Unity】Importer(TextScriptImporter) generated inconsistent result for asset(guid:XXXX) "YYYY"

概要 File.Move(sourceFileName, destFileName); FileUtil.MoveFileOrDirectory( source, dest ); 上記の関数でアセットのファイル名を変更したら AssetDatabase.ImportAsset のタイミングで Importer(TextScriptImporter) generated inconsistent result fo…

【Unity】Assertion failed on expression: 'it != m_SendMap.end()'

概要 Unity の Project ウィンドウで画像を選択したら Unity エディタが強制終了する現象に遭遇した Assertion failed on expression: 'it != m_SendMap.end()' ================================================================= Native Crash Reporting …

【Unity】iOS ビルドでのみ「The referenced script on this Behaviour (XXXX) is missing!」が発生した

概要 Unity エディタだと正常に動作するが iOS ビルドだと 「The referenced script on this Behaviour (XXXX) is missing!」が発生する現象に遭遇した Library フォルダを削除してからクリーンビルドしたら解決した

【Unity】Line Renderer の Order in Layer を設定してもスプライトとの描画順が変わらない場合

概要 Line Renderer が使用しているマテリアルの Shader を 「Sprites/Default」にしたら描画順が設定できるようになった

【Unity】Quad の OnPointerClick が反応しない場合

概要 using UnityEngine; using UnityEngine.EventSystems; public class Example : MonoBehaviour, IPointerClickHandler { public void OnPointerClick( PointerEventData eventData ) { Debug.Log( "OnPointerClick" ); } } 上記のようなスクリプトを Qua…

【Unity】Device Simulator だと OnPointerEnter が反応しない

概要 シーンのカメラに Physics 2D Raycaster をアタッチして シーンに Event System を配置して スプライトに OnPointerEnter 検知用のスクリプトと Circle Collider 2D をアタッチして using UnityEngine; using UnityEngine.EventSystems; public class E…

【Unity】The target object is null. Check for missing scripts.

概要 The target object is null. Check for missing scripts. Unity エディタで上記のエラーが発生する場合は 削除されたスクリプトを参照しているゲームオブジェクトが シーンに存在する可能性があります 「Missing」になっているスクリプトを右クリックし…

【Unity】SendMessage cannot be called during Awake, CheckConsistency, or OnValidate (XXXX: OnRectTransformDimensionsChange)

はじめに using UnityEngine; public class Example : MonoBehaviour { private void OnValidate() { Apply(); } private void Apply() { var rectTransform = GetComponent<RectTransform>(); rectTransform.sizeDelta = new Vector2 ( Random.Range( 0f, 100f ), Random.R</recttransform>…

【Unity】UI の Image では Material Property Block は使用できない

参考サイト様

【Unity】InvalidProgramException: Invalid IL code in XXXX:CecilAttributesGenerated_ResetStatics (): IL_0001: call 0x06000301

概要 [ResetStatic] public static bool IsInitialized { get; private set; } Cecil Attributes の Reset Static をプロパティに対して付与したら InvalidProgramException: Invalid IL code in XXXX:CecilAttributesGenerated_ResetStatics (): IL_0001: c…

【Unity】Cecil Attributes の Reset Static を null 許容値型のフィールドに使うと Unity 再生時にエディタがクラッシュする

概要 [ResetStatic] private static float? m_value; null 許容値型のフィールドに Reset Static を使ったら Unity 再生時にエディタがクラッシュする現象に遭遇した null 許容値型のフィールドに Reset Static を使わないようにしたらクラッシュしなくなっ…

【Unity】The package cache was invalidated and rebuilt because the following immutable asset(s) were unexpectedly altered:

概要 The package cache was invalidated and rebuilt because the following immutable asset(s) were unexpectedly altered: Unity で作業していたら上記の警告が出力されるようになった Unity を再起動したら出なくなった

【Unity】ビルド時に勝手に StreamingAssets フォルダが作られて UnityServicesProjectConfiguration.json というファイルが生成されるのを防ぐ方法

概要 「Version Control」パッケージが依存している 「com.unity.services.core」が勝手にフォルダやファイルを作成してしまうので Package Manager を開いて「Version Control」を選択して「Remove」する その後ビルドすると勝手に StreamingAssets フォル…

【Unity】[Package Manager Window] Cannot perform upm operation: Unable to add package [AAAA]:

概要 [Package Manager Window] Cannot perform upm operation: Unable to add package [AAAA]: Package BBBB@AAAA has invalid dependencies or related test packages: CCCC (dependency): Package [CCCC@DDDD] cannot be found [NotFound]. UnityEditor.E…

【Unity】warning: You are currently using Visual Studio 2019 to compile and link C++ code. It is recommended that you upgrade to Visual Studio 2022 for better performance.

概要 warning: You are currently using Visual Studio 2019 to compile and link C++ code. It is recommended that you upgrade to Visual Studio 2022 for better performance. Unity で PC 向けに IL2CPP ビルドしたらビルド完了時に上記の警告が出力さ…

【Unity】error: Build path contains project built with Mono scripting backend, while current project is using IL2CPP scripting backend. Consider building your project into an empty directory.

概要 error: Build path contains project built with Mono scripting backend, while current project is using IL2CPP scripting backend. Consider building your project into an empty directory. Unity で PC 向けにビルドしたら上記のエラーが発生す…

【Unity】Uncaught (in promise) DOMException: The play method is not allowed by the user agent or the platform in the current context, possibly because the user denied permission.

概要 自動再生はユーザーが承認したとき、サイト別設定で許可したとき、 またはメディアがミュートのときだけ許可されます。 Build.framework.js.gz:3:48743 Uncaught (in promise) DOMException: The play method is not allowed by the user agent or the …

【Unity】Uncaught (in promise) TypeError: e is undefined

概要 WEBGL_debug_renderer_info is deprecated in Firefox and will be removed. Please use RENDERER. Build.loader.js:1:9894 [UnityCache] Failed to load 'http://localhost:51173/Build/Build.data.br' from indexedDB cache due to the error: TypeEr…