コガネブログ

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

【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…

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

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

【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】uGUI のテキストで文字が流れる演出を実装できる「UGUI_Extensions」紹介

はじめに 「UGUI_Extensions」を Unity プロジェクトに導入することで uGUI のテキストで文字が流れる演出を実装できるようになります 使用例 使い方 Text の代わりに「MarqueeText」を使用します

【Unity】uGUI で円を表示できる「CircleGraphic.cs」紹介

ソースコード 使用例 使い方 uGUI の空のゲームオブジェクトに「CircleGraphic」をアタッチします

【Unity】uGUI でグラデーションの四角形を表示できる「GradientGraphic.cs」紹介

ソースコード 使用例 使い方 uGUI の空のゲームオブジェクトに「GradientGraphic」をアタッチします