コガネブログ

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

2019-03-01から1ヶ月間の記事一覧

【Unity】Unity Test Runner で EditMode 用のテストスクリプトを準備する方法

方法1 Unity プロジェクトの「Editor」フォルダを右クリックして 「Create > Testing C# Test Script」を選択すると EditMode 用のテストスクリプトを準備できる 方法2 「Test Runner」ウィンドウで「Create EditMode Test Assembly Folder」を選択してから …

【Unity】2D のシーンで Skybox Material が設定されていないかどうかテストできるコード

概要 2D のシーンで Skybox Material が設定されていないかどうかテストできます

【Unity】Animator Controller の Motion が null になっていないかどうかテストできるコード

概要 Animator Controller の中のいずれかのステートの Motion が null になっていないかどうかテストできます

【Unity】Audio Listener が複数存在しないかどうかテストできるコード

概要 Unity 標準のオーディオ機能を使用しているプロジェクトで Audio Listener が1つのシーンに複数存在しないかどうかテストできます

【Unity】iOS 用のプラグインの対象プラットフォームが適切かどうかテストできるコード

概要 「Plugins」フォルダ内の「iOS」フォルダに含まれているプラグインの 対象プラットフォームに Android が設定されていないかどうかテストできます 参考サイト様

【Unity】Android 用のプラグインの対象プラットフォームが適切かどうかテストできるコード

概要 「Plugins」フォルダ内の「Android」フォルダに含まれているプラグインの 対象プラットフォームに iOS が設定されていないかどうかテストできます 参考サイト様

【Unity】2D のシーンで Global Illumination が無効になっているかどうかテストできるコード

概要 2D のシーンで Global Illumination の機能が 無効になっているかどうかテストできます 関連記事

【Unity】モバイル用のシェーダがマテリアルに設定されているかどうかテストできるコード

概要 Unity 標準の軽量なモバイルシェーダに置き換えられるシェーダが 使用されているマテリアルが存在しないかどうかテストできます 参考サイト様

【Unity】加速度センサーが無効になっているかどうかテストできるコード

概要 加速度センサーを使用しないプロジェクトにおいて 加速度センサーが無効になっているかテストできます 関連記事

【Unity】「Unity AssetBundle 完全に理解した」資料などまとめ

イベントページ 動画 資料 お前はまだ本当のAssetBundleを知らない ごっこランドを支える技術 〜AssetBundle 編〜 誰もAddressableを語らないのなら…俺が語るしかないッ AssetBundleダウンロードサイズ表示対応 サーバ無しでAssetBundleを使う 複数プロジェ…

【Unity】Unity Test Runner で実行できる汎用的なテストを 20 個以上まとめた「UniCommonTestRunner」を GitHub に公開しました

はじめに Unity Test Runner で実行できる汎用的なテストを 20 個以上まとめた 「UniCommonTestRunner」を GitHub に公開しました 目次 はじめに 目次 バージョン 使い方 実行できるテストの種類 加速度センサーが無効になっているか Android 用のプラグイン…

【Unity】Inspector で並べ替え可能なリストを使用できる「Reorderable List」紹介

はじめに 「Reorderable List」を Unity プロジェクトに導入することで Inspector で並べ替え可能なリストを使用できるようになります 使用例 使い方 using Malee; using System; using UnityEngine; public class Example : MonoBehaviour { [Serializable]…

【Unity】ゲームオブジェクトを複製した時にスケール値に誤差が発生する現象が Unity 2018.3.3 で直った?

概要 Editor: Fix issue where duplicating GameObjects could slightly alter the Transform values (typically scale) due to floating point precision issues caused by temporarily reparenting as part of the duplication code. (912111) ゲームオブ…

【Unity】2018.3 で Missing References が検出できなくなった時の対処方法

はじめに using System.Linq; using UnityEditor; using UnityEngine; public static class Example { [MenuItem( "Tools/Hoge" )] private static void Hoge() { var go = Selection.activeGameObject; var components = go .GetComponents<Component>() .Where( c => </component>…

【Unity】Unity エディタを開発者モードにしてみる

はじめに 上記のサイト様でも紹介されていますが、 Unity メニューの「Help > About Unity」を選択して ウィンドウが表示されたら internal と入力することで 「Developer Mode(開発者モード)」が有効になり、 いくつか開発者モード専用の機能が使えるよう…

【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】新規プロジェクトを作成する時に選択できるテンプレートを自作する方法

2022/6/3 追記 Unity Hub 3 や Unity 2021 以降でプロジェクトテンプレートを自作する方法は 上記の記事にて紹介しています はじめに Unity で新規プロジェクトを作成する時に選択できるテンプレートは自作できます 検証環境 Windows 10 Unity 2018.3.7f1 Un…

【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 ) .Where( c => c.hideFlags == HideFlags.None ) ; こちらの方法の場合、すべてのゲームオブジェクトを取得できますが、 ゲ</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>…