コガネブログ

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

【Unity】Library フォルダの削除に時間がかかる場合

概要 del /f /q /s Library > null rd /q /s Library コマンドプロンプトから上記のコマンドを実行すると早く消せるかも? 参考サイト様

【Xcode】xcodebuild: error: Unknown build action

概要 command not found xcodebuild: error: Unknown build action xcodebuild 時に上記のエラーが発生する状況に遭遇した xcodebuild を実行する .sh の改行コードは「CRLF」になっていることが原因だった .sh の改行コードを「LF」で保存したら正常に動作…

【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】Unity の再生を止めた時に各イベントが呼び出される順番

順番 EditorApplication.playModeStateChanged の PlayModeStateChange.ExitingPlayMode MonoBehaviour.OnApplicationQuit Application.quitting MonoBehaviour.OnDestroy EditorApplication.playModeStateChanged の PlayModeStateChange.EnteredEditMode …

【Unity】CS0169 と CS0649 の警告を無効化する方法

概要 Unity プロジェクトに「csc.rsp」という名前のファイルを作成して -nowarn:0169 -nowarn:0649 「csc.rsp」ファイルに上記の記述を入力して保存することで CS0169 と CS0649 の警告を無効化できます using UnityEngine; public class Example : MonoBeha…

【Unity】コンポーネントの実行順をスクリプトから指定できる「DefaultExecutionOrder」

概要 using UnityEngine; [DefaultExecutionOrder( -100 )] public class Example1 : MonoBehaviour { private void Awake() { Debug.Log( nameof( Example1 ) ); } } using UnityEngine; [DefaultExecutionOrder( -200 )] public class Example2 : MonoBeha…

【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 これらのフォルダ以下に存在するアセットは編集して保存できないようになります