コガネブログ

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

【Unity】Windows ビルドしたアプリにファイルをドラッグ&ドロップできる「UnityWindowsFileDrag&Drop」紹介

はじめに 「UnityWindowsFileDrag&Drop」を Uniy プロジェクトに導入することで Windows ビルドしたアプリにファイルをドラッグ&ドロップできるようになります 使用例 using B83.Win32; using System.Collections.Generic; using UnityEngine; using UnityEn…

【Unity】アセットをプロジェクトに追加する時に上書きできる「unity-overwriter」紹介

はじめに 「unity-overwriter」を Uniy プロジェクトに導入することで アセットをプロジェクトに追加する時に上書きできるようになります 使用例

【Unity】uGUI で多角形を描画できる「Unity UGUI UIPolygon」紹介

はじめに 「Unity UGUI UIPolygon」を Uniy プロジェクトに導入することで uGUI で多角形を描画できるようになります 使用例 使い方 シーンの Canvas 内に空のゲームオブジェクトを作成して 「UIPolygon」をアタッチすることで使用できます Sides:辺の数 Ve…

【Unity】雨がしたたる演出を実装できる「UnityRainDropShader」紹介

はじめに 「UnityRainDropShader」を Uniy プロジェクトに導入することで 雨がしたたる演出を実装できるようになります 使用例 使い方 Shader が「Custom/RainDrops」のマテリアルを Quad オブジェクトに割り当てることで使用できます

【Unity】Unity 2019.3 には高速にプレイモードを開始する実験機能が存在する

はじめに 上記の公式の記事によると、ドメインのリロードをスキップすることで 高速でプレイモードに入れるようになる実験的な機能が Unity 2019.3 には存在するとのことなので、触ってみました 概要 デフォルトでは、プレイモードに入るまでにこのくらい時…

【Unity】Unity 2019.1 や 2019.2 から RuntimeInitializeOnLoadMethod の引数に渡せる列挙型の種類が増えていた

はじめに using UnityEngine; public class Example : MonoBehaviour { [RuntimeInitializeOnLoadMethod( RuntimeInitializeLoadType.BeforeSceneLoad )] private static void Init() { Debug.Log( "ピカチュウ" ); } } ゲーム開始時に関数を呼び出してくれ…

【ツール】.exe からアイコンを抽出できる「@icon変換」紹介

はじめに 「@icon変換」を使用すると .exe からアイコンを抽出できます 検証環境 Windows 10 @icon変換 1.21 入手方法 http://www.towofu.net/soft/aicon.php 上記のページの 「ダウンロード」の項目から .zip もしくはインストーラの形式で入手できます 使…

【サクラエディタ】空白行を削除するマクロ

スクリプト

【C#】二次元配列を回転させる拡張メソッド

はじめに 上記サイト様が公開されているプログラムを参考に 二次元配列を回転させる拡張メソッドを作成しました ソースコード public static class ArrayExt { // 時計回りに 90 度回転 public static T[,] RotateClockwise<T>( this T[,] self ) { int rows = </t>…

【GIMP】GIMP の起動時間を早くする方法

検証環境 Windows 10 GIMP 2.8.22 方法 GIMP メニューの「編集 > 設定」を選択します 「フォルダー > フォント」を選択して C:\Program Files\GIMP 2\share\gimp\2.0\fonts を選択して ゴミ箱ボタンを押して削除して「OK」を押します 自分の環境では、これで…

【VSCode】リンクを開く時の確認ダイアログを無効化する方法

概要 Ctrl + クリックでリンクを選択した時に表示される 「Code で外部 Web サイトを開きますか?」というダイアログを無効化したい場合、 「信頼されているドメインの構成」ボタンを押して 「すべてのドメインを信頼する(リンク保護を無効にする)」を押す…

【Visual Studio】新規ソリューションを作成する時のデフォルトの保存場所を変更する方法

概要 Visual Studio メニューの「ツール > オプション」から 「プロジェクトおよびソリューション > 場所」を選択して 「プロジェクトの場所」を変更することで、 新規ソリューションを作成する時のデフォルトの保存場所を設定できます 参考サイト様

【Unity】ファーシェーダを使用できる「Unity Fur Shader」紹介

はじめに 「Unity Fur Shader」を Uniy プロジェクトに導入することで ファーシェーダを使用できるようになります 使用例 適用前 適用後 密度の変更 風向きの変更 リムカラーの変更 使い方 マテリアルの Shader を「Fur」カテゴリのいずれかに変更することで…

【Unity】Unity 2020.1.0a7 新機能 - FindObjectOfType で非アクティブなオブジェクトを検索できるようになった

概要 using UnityEngine; public class Example : MonoBehaviour { private void Start() { // 非アクティブなオブジェクトは検索しない var result1 = FindObjectOfType<BoxCollider>(); // 非アクティブなオブジェクトも検索する var result2 = FindObjectOfType<BoxCollider>( true </boxcollider></boxcollider>…

【Unity】Animator のステートが変化した時のイベントを Inspector で設定できる「Unity Animator Events」紹介

はじめに 「Unity Animator Events」を Unity プロジェクトに導入することで Animator のステートが変化した時のイベントを Inspector で設定できるようになります 使い方 Animator を持つゲームオブジェクトに「Animator Event」をアタッチします 「Add」ボ…

【Unity】Currently selected scripting backend (IL2CPP) is not installed

概要 PC ビルドしようとした時に、Build Settings ウィンドウに Currently selected scripting backend (IL2CPP) is not installed と表示されている場合、 Unity Hub の Installs タブから「Add Component」を選択して 「Window Build Support (IL2CPP)」を…

【Unity】線と線の当たり判定を実装できる「Unity-LineSegmentsIntersection」紹介

はじめに 「Unity-LineSegmentsIntersection」を Unity プロジェクトに導入することで 線と線の当たり判定を実装できるようになります 使用例 using LineSegmentsIntersection; using UnityEngine; public class Example : MonoBehaviour { private void Sta…

【Unity】GUIStyleで使用できる文字列の一覧がまとめられている Gist

概要 https://gist.github.com/MadLittleMods/ea3e7076f0f59a702ecb

【Unity】EditorGUIUtility.IconContent で使用できる 1000 種類以上のアイコンがまとめられている GitHub リポジトリ

概要 上記の GitHub リポジトリでは EditorGUIUtility.IconContent で使用できる 1000 種類以上のアイコンがすべてまとめられています 使用例 using UnityEditor; using UnityEngine; public sealed class Example : EditorWindow { [MenuItem( "Tools/Hoge"…

【Unity】Animator の Transition を 2D アニメーションが即座に切り替わるように変更するエディタ拡張

概要 using UnityEditor; using UnityEditor.Animations; public static class AnimatorStateTransitionContext { [MenuItem( "CONTEXT/AnimatorStateTransition/Reset Simple" )] private static void ResetSimple( MenuCommand command ) { var transition…

【Unity】Animator の Transition の Inspector のコンテキストメニューに項目を追加するエディタ拡張のサンプル

概要 using UnityEditor; using UnityEditor.Animations; public static class Example { [MenuItem( "CONTEXT/AnimatorStateTransition/Hoge" )] private static void Hoge( MenuCommand command ) { var transition = command.context as AnimatorStateTra…

【Unity】UIElements で Scene ビューにツールバーを追加するエディタ拡張のサンプル

ソースコード using UnityEditor; using UnityEngine; using UnityEngine.UIElements; [InitializeOnLoad] public static class Example { static Example() { foreach ( var sceneView in Resources.FindObjectsOfTypeAll<SceneView>() ) { var toolbar = new VisualEl</sceneview>…

【Unity】PC ビルドにおけるウィンドウの最小サイズを設定できる「Unity-Minimum-Window-Size」紹介

はじめに 「Unity-Minimum-Window-Size」を Unity プロジェクトに導入することで PC ビルドにおけるウィンドウの最小サイズを設定できるようになります 使い方 using UnityEngine; public class Example : MonoBehaviour { private void Awake() { // 最小サ…

【Unity】GetComponent と TryGetComponent の違い

GetComponent の場合 using UnityEngine; public class Example : MonoBehaviour { private void Update() { var result = GetComponent<Rigidbody>(); if ( result != null ) { } } } アタッチされていないコンポーネントを GetComponent すると Unity エディタ上での</rigidbody>…

【Unity】Text の Inspector に ContentSizeFitter をアタッチするボタンを追加するエディタ拡張

はじめに 上記の記事の手順を踏むことで Text の Inspector に ContentSizeFitter をアタッチするボタンを追加できます 概要 if ( GUILayout.Button( "Add ContentSizeFitter" ) ) { var text = target as Text; var gameObject = text.gameObject; if ( gam…

【Unity】HorizontalLayoutGroup や VerticalLayoutGroup の Inspector に ContentSizeFitter をアタッチするボタンを追加するエディタ拡張

はじめに 上記の記事の手順を踏むことで HorizontalLayoutGroup や VerticalLayoutGroup の Inspector に ContentSizeFitter をアタッチするボタンを追加できます 概要 if ( GUILayout.Button( "Add ContentSizeFitter" ) ) { var layoutGroup = target as H…

【Unity】ContentSizeFitter の Inspector に HorizontalFit と VerticalFit を同時に変更するボタンを追加するエディタ拡張

はじめに 上記の記事の手順を踏むことで ContentSizeFitter の Inspector に HorizontalFit と VerticalFit を同時に変更するボタンを追加できます ソースコード using UnityEngine; using UnityEngine.UI; namespace UnityEditor.UI { [CustomEditor(typeof…

【Unity】uGUI の Button や Text の Inspector をエディタ拡張する方法

はじめに uGUI の Button や Text の Inspector は通常方法でエディタ拡張することはできないですが、 https://bitbucket.org/Unity-Technologies/ui uGUI のソースコードはオープンソースとして上記 URL で公開されているので プロジェクトファイルをダウン…

【Unity】Tilemap の Inspector に Compress Bounds のボタンを追加するエディタ拡張

ソースコード using UnityEditor; using UnityEditor.SceneManagement; using UnityEngine; using UnityEngine.Tilemaps; [CustomEditor( typeof( Tilemap ) )] public sealed class TilemapEditor : Editor { public override void OnInspectorGUI() { base…

【Unity】Mathf.Lerp や Vector3.Lerp で Ease を使用できる「Interpolations」紹介

はじめに 「Interpolations」を Unity プロジェクトに導入することで Mathf.Lerp や Vector3.Lerp で Ease を使用できるようになります 使い方 通常 var r1 = Mathf.Lerp( 0, 1, 0.5 ); var a = new Vector3( 0, 0, 0 ); var b = new Vector3( 1, 1, 1 ); va…