コガネブログ

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

iOS framework addition failed due to a CocoaPods installation failure. This will will likely result in an non-functional Xcode project.

概要 iOS framework addition failed due to a CocoaPods installation failure. This will will likely result in an non-functional Xcode project. After the failure, "pod repo update" was executed and succeeded. "pod install" was then attempted …

マウスの第 4・5 ボタンで Undo / Redo できるエディタ拡張

ソースコード

ビルド後に書き出された AndroidManifest.xml を確認できる EditorWindow

ソースコード 使用例 Unity メニューの「Window > Kogane > Merged Android Manifest Path」を選択すると ビルド後に書き出された AndroidManifest.xml を開ける EditorWindow が表示される

EditorWindowTitleAttribute で EditorWindow のタイトルとアイコンを設定できる

使用例 参考サイト様

「Enable Helper Bar」で便利なショートカットキーをエディタ下に表示できる

概要 Unity 2023.1 から、「Preferences > General > Enable Helper Bar」をオンにすると 便利なショートカットキーをエディタ下に表示できるようになった

エディタのタイトルバーやメニューバーをダークモードにできる .dll

概要 上記のリポジトリで公開されている UnityEditorDarkMode.dll を Unity プロジェクトで読み込むことで Windows 10 や 11 で Unity エディタの以下の箇所をダークモードにできます タイトルバー メニューバー コンテキストメニュー 導入前 導入後 使い方 …

【Unity】「External Dependency Manager > Android Resolver > Resolve」をスクリプトから呼び出す方法

ソースコード 参考サイト様

【Unity】MonoBehaviour.didStart で Start が呼び出されたか確認できる

使用例 using UnityEngine; public class Example : MonoBehaviour { private void Awake() { Debug.Log( didAwake ); // True Debug.Log( didStart ); // False } private void Start() { Debug.Log( didAwake ); // True Debug.Log( didStart ); // True }…

【Unity】AssetEditingScope で Start / StopAssetEditing を using で記述できる

これまで AssetEditingScope Unity 2023.1 から AssetDatabase.AssetEditingScope が追加されて Start / StopAssetEditing を using で記述できるようになった

【Unity】TMP_Text.OnMissingCharacter でフォントに登録されていない文字を検知できる

使用例 デフォルトではフォントに登録されていない文字を使おうとしたら警告が出力されるが TMP_Text.OnMissingCharacter を使えば「エラーを出す」など自由に処理を追加できる

【Unity】BuildReport.GetLatestReport で最後のビルドの情報をいつでも取得できる

使用例 補足 最後のビルドの情報は Library/LastBuild.buildreport ファイルに格納されている 参考サイト様

【Unity】IShortcutContext で特定の状況でのみ有効になるショートカットキーを設定できる

使用例 Unity 6000.0 から追加された IShortcutContext を使用すると 特定の状況でのみ有効になるショートカットキーを設定できる 例えば以下のようなスクリプトを実装すると ExampleEditorWindow という EditorWindow が開いている時にスペースを押すと Exa…

【Unity】ISupportsOverlays で EditorWindow に Overlay を表示できる

使用例 参考サイト様

【Unity】Android ビルドで Debug Symbols を App Bundle に埋め込む

概要 Unity 6000.0 や 2023.3 から Android ビルド時に 「Symbols output options」を 「App Bundle」にすることで App Bundle に Debug Symbols を埋め込めるようになった

【Unity】BuildPlayerWindow.RegisterBuildPlayerHandler で Build や Build And Run の動作を上書きできる

目次 目次 BuildPlayerWindow.RegisterBuildPlayerHandler BuildPlayerWindow.RegisterGetBuildPlayerOptionsHandler 参考サイト様 BuildPlayerWindow.RegisterBuildPlayerHandler 例えば、上記のようにログを出力するだけの OnBuildPlayer 関数を BuildPlay…

【Unity】EditorApplication.updateMainWindowTitle でエディタのタイトルを変えられる

使用例 Unity 2022 までは internal でアクセスできなかったが、 Unity 2023 からは public でアクセスできるようになった? 参考サイト様 https://docs.unity3d.com/ja/2023.2/ScriptReference/EditorApplication-updateMainWindowTitle.html

【Unity】TMP_Text.OnFontAssetRequest を使えば font タグで Resources を使わずに済む

使用例 デフォルトだと font タグで使用するフォントアセットは Resources/Fonts & Materials/ フォルダに入れておく必要があるが、 TMP_Text.OnFontAssetRequest を使うと font タグで使用する フォントアセットを自由に設定できるため Resources を使わず…

【Unity】Application.memoryUsageChanged でメモリの使用状況を検知できる

使用例 Unity 2022.2 から使用できるようになった iOS / Android / ユニバーサル Windows プラットフォームで使用できる 参考サイト様

【Python】フォルダ内のすべてのファイルの名前から特定の文字列を正規表現で削除する例

スクリプト

【Unity】「Multi-Process AssetBundle Building」でアセットバンドルのビルドを高速化

概要 Unity 2023.1 から、アセットバンドルをマルチプロセスでビルドできる 「Multi-Process AssetBundle Building」という機能が追加された Project Settings の「Editor > Multi-Process AssetBundle Building」をオンにすることで BuildPipeline.BuildAss…

【Unity】他のシーンのゲームオブジェクトの参照を Inspector で設定する方法

概要 上記のパッケージを Unity プロジェクトに追加すると 他のシーンのゲームオブジェクトの参照を Inspector で設定できるようになります 使い方 「Scene1」と「Scene2」という 2 つのシーンが存在しており、 Scene2 のゲームオブジェクトを Scene1 で参照…

【Unity】Android ビルドで Firebase Crashlytics が正常に動作しない場合

概要 using System; using UnityEngine; public class Example : MonoBehaviour { private void Update() { throw new Exception( "ライチュウ" ); } } Firebase Crashlytics を導入している Unity プロジェクトで Android で例外が発生しても Firebase コン…

【Unity】ArgumentException: GetComponent requires that the requested component 'GameObject' derives from MonoBehaviour or Component or is an interface.

概要 using UnityEngine; public class Example : MonoBehaviour { private void Start() { var go = gameObject.GetComponent<GameObject>(); } } 上記のようなコードを実行したら ArgumentException: GetComponent requires that the requested component 'GameObject'</gameobject>…

【Unity】Crashlytics.ReportUncaughtExceptionsAsFatal で、捕捉されなかった例外を「非致命的」ではなく「クラッシュ」として扱う

概要 using System; using UnityEngine; public class Hoge : MonoBehaviour { private void Update() { throw new Exception( "ピカチュウ" ); } } Firebase の Crashlytics では通常、try ~ catch で捕捉されなかった例外は 「非致命的」として扱われるが…

【Unity】Object.InstantiateAsync で複数のオブジェクトを同時に Instantiate する

使用例 1 using Cysharp.Threading.Tasks; using UnityEngine; public class Example : MonoBehaviour { [SerializeField] private GameObject m_original; private async UniTask Start() { var operation = InstantiateAsync( m_original, 10 ); // 10 個…

【Unity】Alt + 数字キーでシーンやアセットを開けるエディタ拡張

リポジトリ 使い方 Project Settings の「Kogane > Open Asset Shortcuts」を選択して シーンやアセットを設定することで、Alt + 数字キーで開けるようになります 補足 「Shortcut Conflict」が表示された場合は 「Kogane/Open Asset Shortcuts/Open Asset X…

【Unity】ローカル座標の距離が一番近いコンポーネントを検索して返す拡張メソッド

ソースコード /// <summary> /// ローカル座標の距離が一番近いコンポーネントを検索して返します /// </summary> public static T2 FindClosestByLocalPosition<T1, T2> ( this IReadOnlyList<T2> self, T1 component, float maxDistance ) where T1 : Component where T2 : Component { T2</t2></t1,>…

【Unity】GameObject.SetGameObjectsActive で複数のゲームオブジェクトのアクティブを一括で設定する

使用例

【Unity】Vector2 の配列やリストから指定した値に一番近い要素を取得する拡張メソッド

ソースコード

【Unity】ClipboardUtility でエディタ上でのクリップボードのイベントを検知する

使用例 参考サイト様