コガネブログ

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

【Unity】エディタ拡張において Hierarchy に存在するすべてのシーンの情報を取得できる「EditorSceneManager.GetSceneManagerSetup」

概要 例えば Hierarchy にこのようにシーンが存在する場合に using System.Text; using UnityEditor; using UnityEditor.SceneManagement; using UnityEngine; public static class Example { [MenuItem( "Tools/Hoge" )] private static void Hoge() { var …

【Unity】Unity プロジェクトに含まれているすべてのシーンファイルのパスを取得するエディタ拡張のサンプル

方法1 using System.Linq; using UnityEditor; using UnityEngine; public static class Example { [MenuItem( "Tools/Hoge" )] private static void Hoge() { var list = AssetDatabase .FindAssets( "t:scene" ) .Select( AssetDatabase.GUIDToAssetPath )…

【Unity】Unity Test Runner がコマンドラインから実行できなかった場合に考えられる原因

概要 -quit を付与してしまっている可能性がある 正 Unity.exe -batchmode -runEditorTests 誤 Unity.exe -quit -batchmode -runEditorTests 参考サイト様

【Unity】横向きかつクリックやタップ可能なゲームで使用できるカスタマイズ可能なデバッグメニュー「UniDebugMenu」を GitHub に公開しました

はじめに 横向きかつクリックやタップ可能なゲームで使用できる カスタマイズ可能なデバッグメニュー「UniDebugMenu」を GitHub に公開しました 目次 はじめに 目次 機能 バージョン サンプル トップ画面 システム情報 システムコマンド ゲームオブジェクト…

【Unity】NotSupportedException: Encoding 932 data could not be found. Make sure you have correct international codeset assembly installed and enabled.

はじめに using System.Text; using UnityEngine; public class Example : MonoBehaviour { private void Start() { var encoding = Encoding.GetEncoding( "shift_jis" ); var count = encoding.GetByteCount( "ピカチュウ" ); Debug.Log( count ); } } 上…

【Unity】uGUI で Canvas Renderer の「Cull Transparent Mesh」をオンにすると透明なオブジェクトの描画をスキップできる

概要 例えば uGUI で透明な Image をシーンに配置した場合 画面には何も表示されないですが Overdraw を見てみると、うっすら赤くなっており 描画の処理は走ってしまっていることがわかります (透明な Image を10個重ねてみるとこのようにわかりやすくなり…

【Unity】ゲームオブジェクトにアタッチされているすべての MonoBehaviour の情報を JSON で出力する方法

概要 using System.Linq; using UnityEngine; public class Example : MonoBehaviour { private void Start() { var list = GetComponents<MonoBehaviour>() .Select( c => JsonUtility.ToJson( c, true ) ) ; var str = string.Join( "\n", list ); Debug.Log( str ); } } </monobehaviour>…

【Unity】uGUI の Toggle の isOn をスクリプトから設定する時に onValueChanged を発生しない拡張メソッド

ソースコード using UnityEngine.UI; public static class ToggleExt { public static void SetIsOnWithoutCallback( this Toggle self, bool isOn ) { var onValueChanged = self.onValueChanged; self.onValueChanged = new Toggle.ToggleEvent(); self.is…

【Unity】すべての子オブジェクトを親オブジェクトから切り離す「Transform.DetachChildren」

概要 using UnityEngine; public class Example : MonoBehaviour { private void Start() { transform.DetachChildren(); } } 「Transform.DetachChildren」を使用することで すべての子オブジェクトを 親オブジェクトから切り離すことができます 孫オブジェ…

【Unity】新規プロジェクトを作成する時に選択できるテンプレートを自作する方法

はじめに Unity で新規プロジェクトを作成する時に選択できるテンプレートは自作できます 検証環境 Windows 10 Unity 2018.3.7f1 Unity Hub 1.6.0 作成方法 【Unity のインストール先】\Editor\Data\Resources\PackageManager\ProjectTemplates 上記のフォル…

【Unity】Unity エディタから C# スクリプトを開く時に毎回 Visual Studio でプロジェクトファイルのアンロード・リロードが発生して時間がかかる時の対処方法

はじめに Unity プロジェクトを Unity 2018.3 にアップデートしたあたりから、 Unity エディタから C# スクリプトを開く時に、 毎回 Visual Studio でプロジェクトファイルの アンロード・リロードが始まるようになってしまい、 C# スクリプトを開くだけでも…

【Unity】便利なエディタ拡張がたくさん使用できる「MyBox」紹介

はじめに 「MyBox」を Unity プロジェクトに導入することで 便利なエディタ拡張がたくさん使用できるようになります 使用例 ConditionalField using UnityEngine; public class Example : MonoBehaviour { public bool m_enabled; [ConditionalField( "m_ena…

【Unity】Cut the Rope のような処理を Unity プロジェクトで再現したプロジェクト「Cut the Rope Replica」紹介

はじめに 「Cut the Rope Replica」は Cut the Rope のような処理を Unity プロジェクトで再現したプロジェクトです GIF 動画

【Unity】Hierarchy に存在するすべてのゲームオブジェクトを取得する方法

方法1 using System.Linq; using UnityEngine; ... var list = Resources .FindObjectsOfTypeAll<GameObject>() .Where( c => c.scene.isLoaded ) ; こちらの方法の場合、すべてのゲームオブジェクトを取得できますが、 ゲームオブジェクトの並びは順不同になります 方法</gameobject>…

【C#】指定されたバイト数で文字列を分割して返す拡張メソッド

ソースコード using System.Collections.Generic; using System.Text; public static class StringExt { /// <summary> /// 指定されたバイト数で文字列を分割して返します /// </summary> public static IList<string> SplitByMultiByte( this string self, int count ) { var result =</string>…

【Unity】Shift + Alt + C で Editor.log を開くエディタ拡張

ソースコード

【Unity】Scene ビューの左上にズーム率を表示できるエディタ拡張「SceneViewUIOverlay」紹介

概要 上記のスクリプトを Unity プロジェクトの「Editor」フォルダに導入することで Scene ビューの左上にズーム率を表示できようになります ズーム率をクリックすると 100% にリセットされます 参考ツイート Using #unity3d to develop 2D content or UI? H…

【Unity】IL2CPP ビルド時に有効になる #define ディレクティブ「ENABLE_IL2CPP」

概要 using UnityEngine; public class Example : MonoBehaviour { private void Awake() { #if ENABLE_IL2CPP Debug.Log( "ENABLE_IL2CPP" ); #endif } } 「ENABLE_IL2CPP」は IL2CPP ビルド時に有効になる #define ディレクティブです

【Unity】Unity 2019.2.0a6 新機能 シーン遷移にかかった時間の内訳を Editor.log で閲覧できるようになった

概要 Console ウィンドウを右クリックして 「Open Editor Log」を選択した時に表示される Editor.log で LightmapEditorSettings: switching bake backend from 1 to 0. Unloading 26 Unused Serialized files (Serialized files now loaded: 0) UnloadTime:…

【Unity】Fruit Ninja のような処理を Unity プロジェクトで再現したプロジェクト「Fruit Ninja in Unity」紹介

はじめに 「Fruit Ninja in Unity」は Fruit Ninja のような処理を Unity プロジェクトで再現したプロジェクトです GIF 動画

【Unity】Shader で 2つの MaterialPropertyDrawer が使用できる「ShaderInspector」紹介

はじめに 「ShaderInspector」を Unity プロジェクトに導入することで Shader で 2つの MaterialPropertyDrawer が使用できます 使用例 Disable Shader "Mya/TestShader" { Properties { _MainTex1 ("Texture1", 2D) = "white" {} _Color1 ("Color1" , Color…

【Unity】モバイルにおけるテクスチャの最大サイズ(2017年9月)

概要 2017年9月時点でほとんどのモバイル端末が 4096 x 4096 のテクスチャをサポートしているらしい iOS:iPhone 4S 以降、iPad 2 以降でサポートされている Android:98.4 % の端末でサポートされている

【Unity】アセットをお気に入りとして管理できる「bookmark-everything」紹介

はじめに 「bookmark-everything」を Unity プロジェクトに導入することで アセットをお気に入りとして管理できるようになります 使い方 Unity メニューの「Window>Bookmark Everything」を選択して 表示されたウィンドウにアセットをドラッグすることで ア…

【Unity】iOS で Architecture を Universal から ARM64 に変更すると Xcode のビルド時間がどれだけ削減できるか調べてみた

はじめに iOS で Architecture を Universal から ARM64 に変更すると Xcode のビルド時間がどれだけ削減できるか調べてみました 検証環境 Unity バージョン:2018.3.7f1 空の Unity プロジェクトで検証 検証結果 Architecture ビルド時間 タスク数 Universa…

【Unity】指定した SpriteAtlas をパックできる「SpriteAtlasUtility.PackAllAtlases」

概要 using UnityEditor; using UnityEditor.U2D; using UnityEngine.U2D; public static class Example { [MenuItem( "Tools/Hoge" )] private static void Hoge() { var path = "【SpriteAtlas のパス】"; var atlas = AssetDatabase.LoadAssetAtPath<SpriteAtlas>( pat</spriteatlas>…

【Unity】Unity プロジェクト内のすべての SpriteAtlas をパックできる「SpriteAtlasUtility.PackAllAtlases」

概要 using UnityEditor; using UnityEditor.U2D; public static class Example { [MenuItem( "Tools/Hoge" )] private static void Hoge() { SpriteAtlasUtility.PackAllAtlases( BuildTarget.Android ); } } SpriteAtlasUtility.PackAllAtlases を使用する…

【Unity】Android で Target Architectures を減らすとビルド時間がどれだけ削減できるか調べてみた

はじめに Android で Target Architectures を減らすと ビルド時間がどれだけ削減できるか調べてみました 検証環境 Unity バージョン:2018.3.7f1 Scripting Backend:IL2CPP Build System:Gradle 空の Unity プロジェクトで検証 検証結果 Architecture ビ…

【Unity】Android で Target Architectures を減らすとアプリ容量がどれだけ削減できるか調べてみた

はじめに Android で Target Architectures を減らすと アプリ容量がどれだけ削減できるか調べてみました 検証環境 Unity バージョン:2018.3.7f1 Scripting Backend:IL2CPP Build System:Gradle 空の Unity プロジェクトで検証 検証結果 Architecture 容…

【Unity】iOS Bundle ID has not been set up correctly

概要 iOS ビルド時に上記のエラーに遭遇した Player Settings の Bundle Identifier に半角スペースが混ざっていたのが原因だった

【Unity】iOS の Architecture を変更するエディタ拡張

概要 iOS の Player Settings に存在する Architecture は using UnityEditor; public static class Example { [MenuItem( "Tools/Hoge" )] public static void Hoge() { PlayerSettings.SetArchitecture( BuildTargetGroup.iOS, 0 ); } } PlayerSettings.Se…