コガネブログ

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

【Unity】高速化された RectMask2D を使用できる「RectMask2DCulling」紹介

はじめに 「RectMask2DCulling」を Unity プロジェクトに導入することで 高速化された RectMask2D を使用できるようになります 使い方 「RectMask2D」の代わりに「RectMask2DCulling」を使用します

【Unity】UI が他の UI の範囲に入ったかどうかを検知できる「UI Culling for Unity」紹介

はじめに 「UI Culling for Unity」を Unity プロジェクトに導入することで UI が他の UI の範囲に入ったかどうかを検知できるようになります 使用例 使い方 UICullingBehaviour コンポーネントを使用して using Oddworm.Framework; using UnityEngine; publ…

【Unity】スワイプできる UI を簡単に実装できる「ScreenSwipe」紹介

はじめに 「ScreenSwipe」を Unity プロジェクトに導入することで スワイプできる UI を簡単に実装できるようになります 使用例 クイックスタート Hierarchy の「+ > UI > Screen Swipe」の 「Screen Swipe」と「Pagination」を押して このようにゲームオブ…

【Unity】IPointerClickHandler で左クリックのみを検知したい場合

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

【Unity】チュートリアルなどで特定のボタンのみハイライトして、それ以外のボタンを押せなくすることができる「GuardLayerImage」紹介

はじめに 「GuardLayerImage」を Unity プロジェクトに導入することで チュートリアルなどで特定のボタンのみハイライトして、 それ以外のボタンを押せなくすることができるようになります 使用例 クイックスタート Canvas の前面に表示される位置に空のゲー…

【Unity】キャンバス内のオブジェクトを四角形で可視化できる「Unity Canvas Visualizer」紹介

はじめに 「Unity Canvas Visualizer」を Unity プロジェクトに導入することで キャンバス内のオブジェクトを四角形で可視化できるようになります 使用例 クイックスタート Canvas オブジェクトに「Canvas Visualizer」をアタッチします

【Unity】UI で六角形タイル状のレイアウトを使用できる「HexagonalUI」紹介

はじめに 「HexagonalUI」を Unity プロジェクトに導入することで UI で六角形タイル状のレイアウトを使用できるようになります 使用例 クイックスタート HexLayoutGroup をアタッチすることで使用できます

【Unity】UI でアウトラインや後光を実装できる「UIOutline」紹介

はじめに 「UIOutline」を Unity プロジェクトに導入することで UI でアウトラインや後光を実装できるようになります 使用例 クイックスタート 「UI Outline」コンポーネントをゲームオブジェクトにアタッチして 各種パラメータを設定することで使用できます…

【Unity】Image 型に関係する汎用的な関数を管理するクラス「UniImageUtils」を GitHub に公開しました

リポジトリ 使用例 using Kogane; using UnityEngine; using UnityEngine.UI; public class Example : MonoBehaviour { public Image m_image; private void Awake() { // Inspector で「It looks like~」が表示されている場合 true Debug.Log( ImageUtils.I…

【Unity】UI の Image で Sliced と Filled を同時に使用できる「SlicedFilledImage.cs」紹介

ソースコード(引用)

【Unity】TextMesh Pro の SetText 関数で文字列を設定する場合、文字列が変化しない場合でも UI のリビルドが走る

検証環境 Unity 2019.3.10f1 TextMesh Pro 2.0.1 概要 TMP_Text.cs を見てみると public string text { get { return m_text; } set { if (m_text == value) return; m_text = old_text = value; m_inputSource = TextInputSources.String; m_haveProperties…

【Unity】ボタンが押されて縮小した時に、当たり判定のサイズも一緒に縮小する現象を避けるためのコンポーネント「UniUIColliderSizeAdjuster」を GitHub に公開しました

リポジトリ 使用例 using Kogane; using UnityEngine; using UnityEngine.EventSystems; public class Example : MonoBehaviour, IPointerDownHandler, IPointerUpHandler { private UIColliderSizeAdjuster m_adjuster; private void Awake() { m_adjuster …

【Unity】FancyScrollView の FancyScrollRect を使用した時に「Assertion failed」というエラーが出る場合

概要 public void UpdateContents( IList<ItemData> list ) { base.UpdateContents( list ); } FancyScrollRect を使用して上記のような関数を定義して実行したときに Assertion failed UnityEngine.Debug:Assert(Boolean) FancyScrollView.FancyScrollRect`2:UpdateCo</itemdata>…

【Unity】FancyScrollView で OnSelectionChanged に登録した関数を常に呼び出す方法

概要 protected override void Initialize() { base.Initialize(); m_scroller.OnValueChanged( UpdatePosition ); m_scroller.OnSelectionChanged( UpdateSelection ); } protected override void UpdatePosition( float position ) { base.UpdatePosition(…

【Unity】uGUI のオブジェクトを自作のメニューから呼び出すエディタ拡張

概要 using System.Linq; using UnityEditor; using UnityEditor.Presets; using UnityEngine; using UnityEngine.UI; public static class Example { [MenuItem( "GameObject/MyProject/Image", false, 9 )] private static void CreateImage( MenuCommand …

【Unity】uGUI の Slider の値をスクリプトから設定する時に onValueChanged を発生しない関数

概要 using UnityEngine; using UnityEngine.UI; public class Example : MonoBehaviour { public Slider m_slider; private void Awake() { m_slider.onValueChanged.AddListener( _ => Debug.Log( "ピカチュウ" ) ); // onValueChanged が呼び出される m_s…

【Unity】ContentSizeFitter の FitMode をデフォルトで Preferred Size にする Preset

概要 ContentSizeFitter の FitMode を Preferred Size にした状態で プリセットのメニューを開いて 「Save current to...」ボタンを押して適当なフォルダに保存して 保存した Preset を選択して「Add to ContentSizeFitter default」ボタンを押すと Content…

【Unity】親オブジェクトが子オブジェクトをすべて内包するように親オブジェクトの位置とサイズを調整するエディタ拡張「UniParentRectTransformFitter」を GitHub に公開しました

リポジトリ 使い方 Inspector で RectTransform の項目を右クリックして「Fit Children」を選択します Undo に対応しています 孫オブジェクトに対応しています Scale に対応しています

【Unity】画面をランダムにクリックして UI をテストできるスクリプト

ソースコード 使い方 ゲームオブジェクトに上記のスクリプトをアタッチすると 毎フレーム画面をランダムにクリックします DontDestroyOnLoad が適用されたゲームオブジェクトにアタッチすると そのゲームオブジェクトが破棄されるまで画面をランダムにクリッ…

【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 ダイアログで保存するフォルダとファイル名を…

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

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

【Unity】uGUI で円形のレイアウトを使用できる「UnityRadialLayoutGroup」紹介

はじめに 「UnityRadialLayoutGroup」を Uniy プロジェクトに導入することで uGUI で円形のレイアウトを使用できるようになります 使用例 使い方 HorizontalLayoutGroup や VerticalLayoutGroup と同様に RadialLayoutGroup を使用することで円形のレイアウ…

【Unity】string.Format や StringBuilder、TextMesh Pro の割り当てを削減できる「ZString」紹介

はじめに 「ZString」を Uniy プロジェクトに導入することで string.Format や StringBuilder、TextMesh Pro の割り当てを削減できるようになります string.Format 通常 using UnityEngine; public class Example : MonoBehaviour { private void Update() {…

【Unity】WebGL の InputField でコピー・ペーストできる「WebGLInput」紹介

はじめに 「WebGLInput」を Unity プロジェクトに導入することで WebGL の InputField でコピー・ペーストできるようになります 検証環境 Unity 2019.2.15f1 Chrome 79.0.3945.130 Firefox 72.0.2 上記の環境で正常に動作することを確認しています 使い方 In…

【Unity】uGUI のクリックのパフォーマンスを最適化する方法がまとめられたサイト様

概要 https://networm.me/2019/10/06/unity-ugui-eventsystem-optimization/ https://blog.csdn.net/cyf649669121/article/details/83661023 https://blog.csdn.net/cyf649669121/article/details/83785539 https://blog.csdn.net/cyf649669121/article/deta…

【Unity】uGUI のオブジェクトを整列できる「Align Tools」紹介

はじめに 「Align Tools」を Unity プロジェクトに導入することで uGUI のオブジェクトを整列できるようになります 使用例 使い方 Unity メニューの「Window > LiteFeel > Align Tools > Align Tools」を選択すると uGUI のオブジェクトを整列できるウィンド…

【Unity】uGUI のボタンが反応しない場合に考えられる原因

はじめに uGUI のボタンが反応しない場合に考えられる原因を書き残しておきます 1. Canvas に GraphicRaycaster が アタッチされていない そのボタンが所属している Canvas に 「GraphicRaycaster」がアタッチされていない可能性があります その場合は、Canv…