コガネブログ

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

【Unity】LateUpdate で ScrollRect.horizontalNormalizedPosition を参照した時に位置が微妙ズレる場合

概要

private void LateUpdate()
{
    var x = Mathf.LerpUnclamped( m_minX, m_maxX, m_scrollRect.horizontalNormalizedPosition );
    // ...
}

LateUpdate で ScrollRect.horizontalNormalizedPosition を参照して
ゲームオブジェクトの X 座標を設定しようとしたら、
ScrollRect を動かした時に微妙に位置がズレる現象に遭遇した

private void Awake()
{
    m_scrollRect.onValueChanged.AddListener( _ => Setup() );
}

private void Setup()
{
    var x = Mathf.LerpUnclamped( m_minX, m_maxX, m_scrollRect.horizontalNormalizedPosition );
    // ...
}

LateUpdate ではなく ScrollRect.onValueChanged を使うようにしたら解決した