コガネブログ

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

【Unity】Cannot recognize file type for entry located at 'XXXX.png'. Asset import failed or using an unsupported file type.

概要 Cannot recognize file type for entry located at 'XXXX.png'. Asset import failed or using an unsupported file type. アセットバンドルビルド時に上記のエラーが発生する状況に遭遇した Project ビューで .png を確認するとサムネイルが正常に表示…

【Unity】Could not create asset from XXXX.png: File could not be read

概要 Could not create asset from XXXX.png: File could not be read .png のインポート時に上記のエラーが発生する状況に遭遇した Project ビューで .png を確認するとサムネイルが正常に表示されていなかった 画像編集ソフトや画像ビューアでは正常に .pn…

【Unity】RectTransform の internal な機能にアクセスできるようにするパッケージ「UniRectTransformInternal」を GitHub に公開しました

リポジトリ 使用例 using Kogane; using UnityEditor; using UnityEngine; public static class Example { [MenuItem( "Tools/Hoge" )] private static void Hoge() { // 「Some values driven by XXXX」の状態を取得 var rectTransform = ( RectTransform )…

【Unity】Action 型に関係する汎用的な関数を管理するクラス「UniActionUtils」を GitHub に公開しました

リポジトリ 使用例 using Kogane; using System; using UnityEngine; public class Example : MonoBehaviour { public Action onClick; private void Awake() { // onClick 実行後に onClick は null になる ActionUtils.CallOnce( ref onClick ); } }

【Unity】iOS / Android でトースト表示できる「Unity-Native-Toasts」紹介

はじめに 「Unity-Native-Toasts」を Unity プロジェクトに導入することで iOS / Android でトースト表示できるようになります 使用例 using UnityEngine; using UnityNative.Toasts; public class Example : MonoBehaviour { private static readonly IUnit…

【iOS】Xcode の Info.plist の「Value」の欄の横幅が狭くて広げられない場合の対処方法

概要 Xcode の Info.plist の「Value」の欄の横幅が狭くて広げられない場合、 Xcode 右上の赤枠のボタンを2回押すことで、 「Value」の欄の横幅を限界まで広げることができます 参考サイト様

【Unity】iOS ビルド時に Info.plist に Privacy - Tacking Usage Description(NSUserTrackingUsageDescription)を設定するエディタ拡張

概要 #if UNITY_IOS using UnityEditor; using UnityEditor.Callbacks; using UnityEditor.iOS.Xcode; public static class Example { [PostProcessBuild] private static void OnPostProcessBuild ( BuildTarget buildTarget, string pathToBuiltProject ) …

【iOS】This app has crashed because it attempted to access privacy-sensitive data without a usage description.

概要 This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSUserTrackingUsageDescription key with a string value explaining to the user how the app use…

【Unity】変更が必要ないはずのアセットバンドルがビルドされる場合

概要 該当のアセットバンドルに含まれるアセットに対して AssetDatabase.ForceReserializeAssets を実行してみる もしもアセットに変更が発生する場合は、 そのアセットのシリアライズされているデータが古かった AssetDatabase.ForceReserializeAssets を実…

【Unity】Selection 型に関係する汎用的な関数を管理するクラス「UniSelectionUtils」を GitHub に公開しました

リポジトリ 使用例 using Kogane; using UnityEditor; using UnityEngine; public class Example { [MenuItem("Tools/Hoge")] private static void Hoge() { // Project ビューで選択されているフォルダと、 // そのフォルダ内のすべてのサブフォルダのパス…

【Unity】Unity の再生を止めた時に各イベントが呼び出される順番

順番 EditorApplication.playModeStateChanged の PlayModeStateChange.ExitingPlayMode MonoBehaviour.OnApplicationQuit Application.quitting MonoBehaviour.OnDestroy EditorApplication.playModeStateChanged の PlayModeStateChange.EnteredEditMode …

【Unity】EditorUtility.DisplayDialog に関する記述を短く書けるようにするクラス「UniEditorDialog」を GitHub に公開しました

リポジトリ 使用例 using Kogane; using UnityEditor; public class Example { private static readonly EditorDialog m_editorDialog = new EditorDialog( "【ここにタイトル】" ); [MenuItem( "Tools/Hoge" )] private static void Hoge() { // OK ダイア…

【Unity】Image 型に関係する汎用的な関数を管理するクラス「UniImageUtils」を GitHub に公開しました

リポジトリ 使用例 using Kogane; using UnityEngine; using UnityEngine.UI; public class Example : MonoBehaviour { public Image m_image; private void Awake() { // Inspector で「It looks like~」が表示されている場合 true Debug.Log( ImageUtils.I…

【Unity】UI の Image で Sliced と Filled を同時に使用できる「SlicedFilledImage.cs」紹介

ソースコード(引用)

【Unity】Inspector で参照を設定されている ScriptableObject の情報をインラインで表示できる「ExtendedScriptableObjectDrawer.cs」紹介

ソースコード(引用) 使用例 前述のソースコードを Unity プロジェクトに追加すると Inspector の ScriptableObject の欄に、設定されている ScriptableObject の情報がインラインで表示されるようになります ScriptableObject が設定されていない場合は「C…

【Unity】クリップボードにコピーされているパスを含むアセットを Project ビューでハイライトするエディタ拡張

概要 using UnityEditor; using UnityEngine; [InitializeOnLoad] public static class Example { static Example() { EditorApplication.projectWindowItemOnGUI += OnGUI; } private static void OnGUI( string guid, Rect selectionRect ) { var path = A…

【Unity】エディタ拡張で Inspector の最大化を切り替える方法

ソースコード using System; using UnityEditor; using UnityEngine; public sealed class Example { [MenuItem( "Tools/Hoge" )] private static void Hoge() { var windows = Resources.FindObjectsOfTypeAll<EditorWindow>(); var inspectorWindow = Array.Find( window</editorwindow>…

【Unity】Mathf.Clamp、Mathf.Max、Mathf.Min を拡張メソッドで呼び出せるようにするパッケージ「UniClampExtensionMethods」を GitHub に公開しました

リポジトリ 使用例 using Kogane; using UnityEngine; public class Example : MonoBehaviour { private void Awake() { int i = 25; Debug.Log( i.Clamp( 0, 100 ) ); Debug.Log( i.Max( 100 ) ); Debug.Log( i.Min( 0 ) ); float f = 25f; Debug.Log( f.Cl…

【Unity】IL2CPP ビルドした環境で Odin のシリアライズ周りでエラーが発生する場合の対応方法

はじめに 例えば上記のように JobType という列挙型が存在し、 その列挙型を Dictionary で使用している CharacterData という SerializedScriptableObject が存在する場合に Example.Awake で Resources.Load を使用して CharacterData を読み込もうすると …

【Unity】Debug.Log する時に Application.logMessageReceivedThreaded を無視する方法

ソースコード using System; using System.Collections.Generic; using System.Reflection; using UnityEngine; public class Example : MonoBehaviour { private readonly List<string> m_conditions = new List<string>(); private void Awake() { Application.logMessageR</string></string>…

【Unity】StreamingAssets 内のファイルの一覧を取得できる「Better Streaming Assets」紹介

はじめに 「Better Streaming Assets」を Unity プロジェクトに導入することで StreamingAssets 内のファイルの一覧を取得できるようになります 使用例 using System.IO; using UnityEngine; public class Example : MonoBehaviour { private void Awake() {…

【Unity】CS0169 と CS0649 の警告を無効化する方法

概要 Unity プロジェクトに「csc.rsp」という名前のファイルを作成して -nowarn:0169 -nowarn:0649 「csc.rsp」ファイルに上記の記述を入力して保存することで CS0169 と CS0649 の警告を無効化できます using UnityEngine; public class Example : MonoBeha…

【Unity】Unity 2020.1 新機能 - CS0169 と CS0649 の警告を無効化できるようになった

概要 Unity メニューの「Edit > Project Settings...」から Project Settings ウィンドウを開いて 左メニューから「Player」を選択して「Suppress Common Warnings」をオンにすることで CS0169 と CS0649 の警告を無効化できます using UnityEngine; public …

【Unity】エディタ拡張で Add Component のようなドロップダウンメニューを実装できる「AdvancedDropdown」

使用例 using System; using UnityEditor; using UnityEditor.IMGUI.Controls; using UnityEngine; class WeekdaysDropdown : AdvancedDropdown { public event Action<AdvancedDropdownItem> OnSelect; public WeekdaysDropdown( AdvancedDropdownState state ) : base( state ) {</advanceddropdownitem>…

【Unity】エディタ拡張でプロジェクト外のスクリプトをコンパイルできる「AssemblyBuilder」

ソースコード using System.IO; using System.Linq; using UnityEditor; using UnityEditor.Compilation; using UnityEngine; public static class AssembyBuilderExample { [MenuItem( "AssemblyBuilder Example/Build Assembly Async" )] public static vo…

【Unity】プレハブ編集中に「Hold On...」が頻繁に表示される場合

概要 Scene ビュー右上の「Auto Save」がオンになっていないかどうか確認する オンになっているとプレハブを編集するたびに保存処理が走る

【Unity】Dictionary 型に関係する汎用的な関数を管理するクラス「UniDirectoryUtils」を GitHub に公開しました

リポジトリ 使用例 通常 using System.IO; using UnityEditor; public class Example { [MenuItem( "Tools/Hoge" )] private static void Hoge() { var path = "Assets/Scripts/Example.Generated.cs"; var dir = Path.GetDirectoryName( path ); Directory.…

【Unity】Unity Test Runner の開始終了時に呼び出されるコールバックを設定できるようにするクラス「UniTestRunnerApiCallbacks」を GitHub に公開しました

リポジトリ 使用例 using Kogane; using UnityEditor; using UnityEditor.TestTools.TestRunner.Api; using UnityEngine; public class Example { [MenuItem( "Tools/Hoge" )] private static void Hoge() { // Test Runner の開始終了時に呼び出されるコー…

【Unity】TestRunnerApi の情報を JSON に変換できるようにするパッケージ「UniJsonTestRunnerApi」を GitHub に公開しました

リポジトリ 使用例 using Kogane; using UnityEditor; using UnityEditor.TestTools.TestRunner.Api; using UnityEngine; public class Callbacks : ICallbacks { public void TestStarted( ITestAdaptor test ) { // JSON 形式で ITestAdaptor の情報をログ…

【Unity】JsonUtility の「Unexpected node type.」を例外としてキャッチする方法

概要 using System; using UnityEngine; public class Example : MonoBehaviour { public T Hoge<T>( string json ) { var isError = false; void OnReceive( string condition, string trace, LogType type ) { if ( type != LogType.Error && type != LogType</t>…