コガネブログ

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

【Unity】Editor Default Resources は Assets フォルダ直下にしか配置できない

概要 エディター用スクリプトは、EditorGUIUtility.Load 関数を使用して要求に応じて読み込まれるアセットファイルを使用します。この関数は、Editor Default Resources と呼ばれるフォルダー内のアセットファイルを検索します。 Editor Default Resources …

【Unity】Unity 2020.2 新機能 - Vector3Int.forward と Vector3Int.back が追加された

概要 using UnityEngine; public class Example : MonoBehaviour { private void Update() { Debug.Log( Vector3Int.forward ); // (0, 0, 1) Debug.Log( Vector3Int.back ); // (0, 0, -1) } }

【Unity】Unity 2020.2 新機能 - Time クラスに double 型のプロパティが追加された

概要 using UnityEngine; public class Example : MonoBehaviour { private void Update() { Debug.Log( Time.timeAsDouble ); Debug.Log( Time.timeSinceLevelLoadAsDouble ); Debug.Log( Time.fixedTimeAsDouble ); Debug.Log( Time.unscaledTimeAsDouble …

【Unity】Unity 2020.2 新機能 - EditorWindow を閉じる時に変更を保存するか確認できるようになった

概要 using UnityEditor; using UnityEngine; public class Example : EditorWindow { [MenuItem( "Tools/Hoge" )] private static void Open() { var window = GetWindow<Example>(); window.saveChangesMessage = "変更があります。保存しますか?"; } private void</example>…

【Unity】Unity 2020.2 新機能 - プレハブモードの「Auto Save」のチェックボックスを非表示にできるようになった

概要 プレハブモードの時は Scene ビューに「Auto Save」のチェックボックスが表示されますが Project Settings の「Editor > Prefab Mode > Allow Auto Save」をオフにすることで 「Auto Save」のチェックボックスを非表示にして Auto Save を無効化できる…

【Unity】Unity 2020.2 新機能 - UnityWebRequest の isNetworkError、isHttpError が非推奨になった

概要 代わりに UnityWebRequest.result を使用します using System; using System.Collections; using UnityEngine; using UnityEngine.Networking; public class Example : MonoBehaviour { private IEnumerator Start() { var request = UnityWebRequest.G…

【Unity】シーンを保存した時にそのシーンが使用しているすべての SpriteAtlas の参照を自動で保持するコンポーネント「UniSpriteAtlasReferencer」を GitHub に公開しました

リポジトリ 使い方 シーンに存在するゲームオブジェクトに「SpriteAtlasReferencer」します これで、シーンを保存した時にそのシーンが使用しているすべての SpriteAtlas の参照が 「SpriteAtlasReferencer」に自動で保持されるようになります シーンをアセ…

【Unity】文字列の置換ルールを管理する構造体「UniStringReplaceRule」を GitHub に公開しました

リポジトリ 使用例 通常 using UnityEngine; public class Example : MonoBehaviour { private void Awake() { var name = "ピカチュウ"; var result = name.Replace( "ピカチュウ", "カイリュー" ); Debug.Log( result ); // カイリュー } } UniStringRepla…

【Unity】エディタの現在のプラットフォームが適切ではない場合にログを出力するエディタ拡張「UniPlatformChecker」を GitHub に公開しました

リポジトリ 使い方 Unity の Project Settings を開いて「Kogane > UniPlatformChecker」を選択して 「Build Target Groups」に適切なプラットフォームを設定します もしも Unity エディタのプラットフォームが設定したプラットフォームではない場合は Unity…

【Unity】エディタで使用されているスタイルシート(.uss)をエクスポートするエディタ拡張「UniStyleSheetExporter」を GitHub に公開しました

リポジトリ 実装環境 Unity 2020.2.0b2 使い方 Unity メニューの「Edit > UniStyleSheetExporter > Export」を選択すると エディタで使用されているスタイルシート(.uss)をエクスポートできます

【Unity】Release.loader.js:1 exception thrown: RuntimeError: float unrepresentable in integer range

概要 Release.loader.js:1 exception thrown: RuntimeError: float unrepresentable in integer range Unity 2020.1.17f1 で WebGL ビルドしたゲームで特定の操作をすると 上記の例外が発生する現象に遭遇した Unity プロジェクトの「ProjectSettings/Projec…

【Unity】received no data in response

概要 received no data in response UnityWebRequest でキャッシュからアセットバンドルを読み込もうとした時に 上記のエラーが発生して読み込みに失敗することがあった 複数回読み込み処理をリクエストしていると読み込みに成功することもあった 該当のアセ…

【Unity】スクリプトから OBB(APK 拡張ファイル)を有効化する(Split Application Binary をオンにする)方法

概要 PlayerSettings.Android.useAPKExpansionFiles = true;

【Unity】スクリプトから Android App Bundle を有効化する(Bundle App Bundle をオンにする)方法

概要 EditorUserBuildSettings.buildAppBundle = true;

【Unity】ビルドした APK 拡張ファイル(OBB)を端末にインストールする方法

はじめに 上記のサイト様に記載されている手順でインストールできます 備忘録として自分が試した手順も書き残しておきます インストールする方法 例えば Unity プロジェクトの Package Name が「com.kogane.obbtest」で ビルドした .apk と .obb が「game.ap…

【Unity】ビルドした Android App Bundle を端末にインストールする方法

概要 Unity のインストール先に存在する「bundletool-all-X.XX.X.jar」を使用する 【Unity のインストール先】\Editor\Data\PlaybackEngines\AndroidPlayer\Tools\bundletool-all-X.XX.X.jar 以下の手順で Android App Bundle を端末にインストールする java…

【Unity】EditorUtility.OpenFolderPanel の引数 folder にプロジェクト外のパスを指定したい場合は相対パスではなくフルパスを指定する

概要 // 相対パスの記述だと認識してくれない // var folder = Application.dataPath + "/../../Hoge"; // フルパスの記述だと認識してくれる var folder = Path.GetFullPath( Application.dataPath + "/../../Hoge" ); var targetDirectory = EditorUtility…

【Unity】ArgumentException: May only be called in OnPostProcessTexture

概要 ArgumentException: May only be called in OnPostProcessTexture .png の Inspector 表示時に上記のエラーが発生する状況に遭遇した Project ビューで .png を確認するとサムネイルが正常に表示されていなかった 画像編集ソフトや画像ビューアでは正常…

【Unity】Uncaught SyntaxError: Invalid or unexpected token

概要 Uncaught SyntaxError: Invalid or unexpected token Uncaught ReferenceError: unityFramework is not defined at HTMLScriptElement.r.onload (XXXX.loader.js:1) Unity 2020.1.17f1 で WebGL ビルドして、 それを「Web Server for Chrome」で起動し…

【Unity】関数の呼び出し元の情報を取得する方法

概要 using System.Runtime.CompilerServices; using UnityEngine; public sealed class Example : MonoBehaviour { private void Start() { Test( "ピカチュウ" ); } private void Test ( string message, [CallerMemberName] string memberName = "", [Cal…

【Unity】Windows のエクスプローラからファイルを Project ビューにドラッグするとファイル名の先頭が「_」になる不具合

概要 Unity 2020.1.16f1 で Windows のエクスプローラからファイルを Project ビューにドラッグしたらファイル名の先頭が「_」になる不具合に遭遇した 同バージョンでも Windows によってこの現象が発生する場合としない場合があった

【Unity】Failed tot start the unity package manager local server process

概要 Failed tot start the unity package manager local server process. Make sure the process [XXXX/UnityPackageManager.exe] is not blocked by Windows Defender or any other anti-virus configuration. Click on Retry to relaunch Unity and reope…

【Unity】IOException: Error 267

概要 var files = Directory.GetFiles( path, "*.*", SearchOption.AllDirectories ); Directory.GetFiles に指定するパスでフォルダではなくファイルのパスを指定したら IOException: Error 267 このエラーが出た

【Unity】Debug.Assert と Debug.LogAssertion は Development Build の時のみ動作する

概要 Debug.Assert と Debug.LogAssertion は Development Build の時のみ動作する Development Build ではない時にも動作させたい場合は BuildOptions.ForceEnableAssertions を使用する using System.Linq; using UnityEditor; public class Example { [Me…

【Unity】すべてのシーンに対して処理を行うクラス「UniSceneProcessor」を GitHub に公開しました

リポジトリ 使用例 すべてのシーンに対して処理を行う using Kogane; using UnityEditor; using UnityEngine; public static class Example { [MenuItem( "Tools/Hoge" )] private static void Hoge() { SceneProcessor.ProcessAllScenes ( scene => { // シ…

【Unity】すべてのシーンやプレハブに存在するすべてのゲームオブジェクトに対して処理を行うクラス「UniGameObjectProcessor」を GitHub に公開しました

リポジトリ 使用例 using Kogane; using UnityEditor; using UnityEngine; public static class Example { /// <summary> /// すべてのシーンに存在するゲームオブジェクトに BoxCollider をアタッチします /// </summary> [MenuItem( "Tools/Add BoxCollider to Scene" )] priv…

【Unity】文字列を他の型に変換する拡張メソッド「UniStringParseExtensionMethods」を GitHub に公開しました

リポジトリ 使用例 using Kogane; using UnityEngine; public class Example : MonoBehaviour { private void Awake() { // 文字列を以下の型に変換する拡張メソッド // sbyte, byte, char, short, ushort, int, uint, long, ulong // float, double, decima…

【Unity】シーン遷移の履歴を管理するクラス「UniSceneLoadHistory」を GitHub に公開しました

リポジトリ 使用例 using Kogane; using UnityEngine; using UnityEngine.SceneManagement; public class Example : MonoBehaviour { private SceneLoadHistory m_history; private void Awake() { // シーン遷移の履歴の保存最大件数 var historyCount = 5;…

【Unity】GameObject、Component 型の拡張メソッド「UniGameObjectComponentExtensionMethods」を GitHub に公開しました

リポジトリ GameObject using Kogane; using UnityEngine; public class Example : MonoBehaviour { private void Start() { // GetComponent します // コンポーネントがアタッチされていない場合は AddComponent してから取得します var rigidbody = gameO…

【Unity】エディタの UI の表示間隔を狭くするパッケージ「UniThemeDefaultControlMargin0」を GitHub に公開しました

リポジトリ 比較 導入前 導入後