LoginSignup
3
2

More than 5 years have passed since last update.

【Unity】イベント登録の方法覚書

Last updated at Posted at 2019-04-10

概要

イベントを外部から登録する方法をよく忘れるのでメモ。

イベントリスナをインスペクタから登録する方法

オブジェクトがクリックされた場合にリスナを実行するコードを例にする。

CurrentEventProvider.cs

using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.Events;

public class ReactionDetector : MonoBehaviour, IPointerClickHandler
{
    [SerializeField]
    private ClickEvent clickHandler;

    public void OnPointerClick(PointerEventData eventData)
    {
        this.clickHandler.Invoke(this.gameObject);
    }

    public void AddClickHandler(UnityAction<GameObject> _clickHandler)
    {
        this.clickHandler.AddListener(_clickHandler);
    }

    [System.Serializable]
    public class ClickEvent : UnityEvent<GameObject> { }
}

インスペクターは次のようになる。
WS000070.JPG

イベントをスクリプトから登録するコード

SliderのonValueChangedイベントにイベントリスナを登録する。
※OnValueChangedイベントは引数を取ることに注意。

using UnityEngine;
using UnityEngine.EventSystems;

public class HogeController : MonoBehaviour
{
    public Slider bgmSlider;

    void Start() => AddListener();

    private void AddListener() => bgmSlider.onValueChanged.AddListener((value) => OnChangeBgmVolume(value));

    public void OnChangeBgmVolume(float value) => { /* 処理 */ }
}
3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2