コガネブログ

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

【Unity】uGUI の Toggle の isOn をスクリプトから設定する時に onValueChanged を発生しない拡張メソッド

ソースコード

using UnityEngine.UI;

public static class ToggleExt
{
    public static void SetIsOnWithoutCallback( this Toggle self, bool isOn )
    {
        var onValueChanged = self.onValueChanged;
        self.onValueChanged = new Toggle.ToggleEvent();
        self.isOn = isOn;
        self.onValueChanged = onValueChanged;
    }
}

使い方

var toggle = GetComponent<Toggle>();
toggle.isOn = true;                    // onValueChanged が発生する
toggle.SetIsOnWithoutCallback( true ); // onValueChanged が発生しない