コガネブログ

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

【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 = new UIColliderSizeAdjuster( transform );
    }

    public void OnPointerDown( PointerEventData eventData )
    {
        UpdateScale( true );
    }

    public void OnPointerUp( PointerEventData eventData )
    {
        UpdateScale( false );

        Debug.Log( "ピカチュウ" );
    }

    private void UpdateScale( bool isDown )
    {
        var scale = isDown ? 0.8f : 1;
        transform.localScale = new Vector3( scale, scale, 1 );
        m_adjuster.OnDown( isDown, scale, 1.1f );
    }
}

Image (30)

  • ボタンを押した時にボタンが縮小してカーソルがボタンの範囲外になってしまっても
    カーソルを離した時に OnPointerUp 関数が正常に呼び出れるようになります