コガネブログ

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

【Unity】RectTransform の「Some values driven by XXXX」の状態を取得する方法

概要 using System.Reflection; using UnityEditor; using UnityEngine; public static class Example { [MenuItem( "Tools/Hoge" )] private static void Hoge() { var rectTransform = ( RectTransform ) Selection.activeTransform; var type = typeof( R…

【Unity】F9 で Profiler の Record の開始・終了ができる

概要 F9 を押すと Profiler の Record の開始・終了ができる

【Unity】Profiler のグラフの色を変更できる「Color Blind Mode」

概要 通常の Profiler のグラフの色はこのような感じですが Profiler のタブを右クリックして「Color Blind Mode」を選択すると グラフの色を変更できます

【Unity】リリースノートの RSS

概要 リリースノートの RSS https://unity3d.com/unity/releases.xml LTS のリリースノートの RSS https://unity3d.com/unity/lts-releases.xml 参考サイト様

【Unity】Shift + H で選択中のゲームオブジェクト以外を Scene ビューで非表示にできる

概要 Shift + H を押すと選択中のゲームオブジェクト以外を Scene ビューで非表示にすることができます

【Unity】Script Execution Order の欄にはスクリプトをドラッグできる

概要 Script Execution Order の欄にスクリプトをドラッグすると そのスクリプトを Script Execution Order に追加できます

【Unity】Unity 2019.4 以前でスクリプトから Preset を適用する時にパラメータの除外を指定できる関数

ソースコード using System.Linq; using UnityEditor.Presets; using UnityEngine; public static class PresetUtils { public static void ApplyToWithExclusion ( Preset preset, Object target, params string[] excludedPropertyPaths ) { var selectedP…

【Unity】Profiler の項目に紐付いているオブジェクトを表示する方法

概要 Profiler の「No Details」を「Show Related Objects」に変更することで Profiler の項目に紐付いているオブジェクトを確認できるようになります

【Unity】Vector2 や Vector3 の等値演算子は 0.00001 までの誤差を許容している

概要 公式ドキュメントによると Vector2 や Vector3 の等値演算子は 0.00001 までの誤差を許容しているとのこと Vector2: https://docs.unity3d.com/ScriptReference/Vector2-operator_eq.html Vector3: https://docs.unity3d.com/ScriptReference/Vector3-o…

【Unity】ランタイムで Scenes In Build に登録されているすべてのシーンのパスを取得する方法

概要 public static IEnumerable<string> GetAllScenePathInBuildSettings() { for ( int i = 0; i < SceneManager.sceneCountInBuildSettings; i++ ) { yield return SceneUtility.GetScenePathByBuildIndex( i ); } } 参考サイト様</string>

【Unity】ゲーム実行中に Texture2D を Sprite に変換して使用する方法

ソースコード using UnityEngine; public static class Texture2DExt { public static Sprite ToSprite( this Texture2D self ) { var rect = new Rect( 0, 0, self.width, self.height ); var pivot = Vector2.one * 0.5f; var newSprite = Sprite.Create( …

【Unity】Package Manager で追加したパッケージの .csproj を生成する方法

概要 Unity メニューの「Edit > Preferences」から 「External Tools」の「Generate all .csproj files.」をオンにして ソリューションファイルを再生成する

【Unity】Image の Use Sprite Mesh をデフォルトでオンにする方法

概要 Image の Use Sprite Mesh をオンにした状態で 赤枠のアイコンを押して Select Preset ウィンドウで「Save current to...」ボタンを押して ダイアログが表示されたらプリセットを保存するフォルダと ファイル名を設定して「保存」を押して Project ビュ…

【Unity】Canvas Scaler のデフォルト値をプリセットで統一する

概要 Canvas Scaler の UI Scale Mode や Reference Resolution を設定した状態で 赤枠のアイコンを押して Select Preset ウィンドウで「Save current to...」ボタンを押して ダイアログが表示されたらプリセットを保存するフォルダと ファイル名を設定して…

【Unity】Canvas Renderer の Cull Transparent Mesh をデフォルトでオンにする方法

概要 Canvas Renderer の赤枠のアイコンを押して Select Preset ウィンドウで「Save current to...」ボタンを押して ダイアログが表示されたらプリセットを保存するフォルダと ファイル名を設定して「保存」を押して Project ビューで作成されたプリセットを…

【Unity】uGUI のオブジェクト作成時に Raycast Target をデフォルトでオフにする方法

概要 例えば uGUI の Image の Raycast Target をデフォルトでオフにしたい場合は Image コンポーネントの赤枠のアイコンを押して Select Preset ウィンドウで「Save current to...」ボタンを押して New Preset ダイアログで保存するフォルダとファイル名を…

【C#】Conditional 属性でシンボルが定義されている場合に関数を無効化する方法

概要 using UnityEngine; public class Example : MonoBehaviour { private void Update() { Log( "ピカチュウ" ); } #if DISABLE_DEBUG_LOG [System.Diagnostics.Conditional( "DUMMY" )] #endif private void Log( string message ) { Debug.Log( message …

【Unity】ログ出力にタグを付与できる独自クラス

スクリプト 使用例 using UnityEngine; public class Example : MonoBehaviour { private readonly CustomLogger m_logger = CustomLogger.Create( "タイトル" ); private void Awake() { m_logger.Log( "Log" ); m_logger.Log( "Log", gameObject ); m_logg…

【Unity】CustomSampler を using で使用できるようにするクラス

ソースコード 使用例 通常 using UnityEngine; using UnityEngine.Profiling; public class Example : MonoBehaviour { private void Update() { var sampler = CustomSampler.Create( "AAAAA" ); sampler.Begin(); // ... sampler.End(); } } CustomSampler…

【Unity】Unityプロ向けの情報がまとめられているサイト「Unity for Pro」

リンク

【Unity】AnimationCurve の設定範囲を 0 から 1 に制限できるエディタ拡張

ソースコード using UnityEngine; public sealed class Curve01Attribute : PropertyAttribute { } using UnityEditor; using UnityEngine; [CustomPropertyDrawer( typeof( Curve01Attribute ) )] public sealed class Curve01Drawer : PropertyDrawer { pu…

【Unity】IPointerClickHandler などで右クリックされたかどうかを確認する方法

概要 using UnityEngine; using UnityEngine.EventSystems; public class Example : MonoBehaviour, IPointerClickHandler { public void OnPointerClick( PointerEventData eventData ) { if ( eventData.button == PointerEventData.InputButton.Right ) {…

【Unity】プロジェクトのアップデート後にすべてのアセットをシリアライズし直す方法

概要 Unity のプロジェクトをアップデートした場合、 基本的にはすべてのアセットは古いバージョンの形式で保存されたままになります そして、アセットを変更して保存すると、 そのアセットのみが新しいバージョンの形式で保存されます そのため、Unity プロ…

【Unity】特定のフォルダ内のアセットを編集して保存できないようにするエディタ拡張

概要 例えば上記のスクリプトを Unity プロジェクトの Editor フォルダに追加すると Assets/Folder1 Assets/Folder2 これらのフォルダ以下に存在するアセットは編集して保存できないようになります

【Unity】特定のフォルダ内のアセットが他のフォルダに移動しないようにするエディタ拡張

概要 例えば上記のスクリプトを Unity プロジェクトの Editor フォルダに追加すると 「@Project」フォルダ内のアセットを「@Project」フォルダ外に移動したり、 「@Project」フォルダ外のアセットを「@Project」フォルダ内に移動したりできなくなります

【Unity】Array.Contains と HashSet.Contains の速度比較

検証用スクリプト using System.Collections.Generic; using System.Diagnostics; using System.Linq; using UnityEngine; using Debug = UnityEngine.Debug; public class Example : MonoBehaviour { private void Start() { var count = 10000; var value …

【Unity】HashSet を JsonUtility でシリアライズ・デシリアライズするサンプル

ソースコード using System; using System.Collections.Generic; using UnityEngine; [Serializable] public sealed class Example : ISerializationCallbackReceiver { [SerializeField] private int[] m_array = null; private HashSet<int> m_hashSet; public </int>…

【Unity】SceneManager.sceneLoaded が呼び出されるタイミング

概要 Awake OnEnable SceneManager.sceneLoaded Start

【Unity】ScriptableObject(.asset)を ProjectSettings フォルダに保存・読み込みしたい場合

概要 ScriptableObject(.asset)は ProjectSettings フォルダ以下に保存・読み込みができないが、 下記のスクリプトのように JSON 形式に変換することで保存・読み込みができる 参考サイト様

【Unity】Particle System の Inspector で未使用のモジュールを非表示にする方法

概要 Particle System の Inspector で「+」ボタンを押して 「Show All Modules」をオフにすると 未使用のモジュールは非表示にできます この状態で使用するモジュールを追加したい場合は 「+」ボタンから追加したいモジュールを選択します 参考ツイート様 W…