コガネブログ

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

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

【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…

【Git】git diff --cached で拡張子を指定して絞り込む方法

概要 git diff --cached -- "*.png" 上記のように記述する

【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」がオンになっていないかどうか確認する オンになっているとプレハブを編集するたびに保存処理が走る

【ReSharper】クラスや関数の Full Name をコピーする方法

概要 Visual Studio メニューの「RESHARPER > Edit > Copy Fully-qualified name/Source browser URI to Clipboard」を選択して コピーしたい書式を選択することで、クラスや関数の Full Bane をコピーできます 参考サイト様

【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>…

【ReSharper】Alt + Delete で関数を安全に削除

概要 削除したい関数を選択した状態で Alt + Delete を押して 確認ダイアログで「Next > 」を2回押すと、 その関数が呼び出されている箇所も含めて安全に削除できる

【Unity】Dictionary を JsonUtility で変換できるようにするクラス

ソースコード 使用例 using System.Collections.Generic; using Kogane; using UnityEngine; public class Example : MonoBehaviour { private void Awake() { var dictionary1 = new Dictionary<int, string>() { { 1, "フシギダネ" }, { 2, "フシギソウ" }, { 3, "フシ</int,>…

【Unity】iOS で SystemInfo.deviceUniqueIdentifier と iOS.Device.vendorIdentifier で取得できる文字列は同じ

概要 using UnityEngine; using UnityEngine.iOS; public class Example : MonoBehaviour { private void Awake() { // 同じ Debug.Log( SystemInfo.deviceUniqueIdentifier ); Debug.Log( Device.vendorIdentifier ); } }