Skip to content

SliderCellにおいて、セルが再利用された際に意図しない値が入力される問題 #23

@yakisabananoka

Description

@yakisabananoka

初めまして!
タイトルにある不具合を確認しましたので、issueを立てさせていただきました。

概要

  • SliderCellがスクロールで再利用された際に、再利用前のセルに設定されている値が再利用後のMinMaxに補正されてしまう

環境

  • Unity2020 3.40f1
  • v1.5.2

手順

  1. 画面に一度に表示される最大数以上のSliderCellを追加する
  2. 追加したSliderCellで画面が埋め尽くされている状態にする
  3. 2の状態から上などにスライドして、表示されていないSliderCellを表示する状態にして、セルが再利用される状態を作る
  4. 2の状態に戻し、再び表示されたセルを確認する

期待する結果

  • セルの値がスライド前と変わらず変更されずに表示されること

実際の動作

  • セルの値が再利用後の値で補正されてしまっている
2024-01-10.2.35.22.mov

原因

  • この箇所でListenerを除去する前にslider.minValueとslider.maxValueに代入してしまっていることで、再利用前の値が範囲外だった場合に補正が入り、slider.onValueChangedが発火してしまっている

修正案

  • 下記のように、Listenerが解除された後にslider.minValueとslider.maxValueに代入を行う
// Slider
            slider.interactable = model.Interactable;
            slider.onValueChanged.RemoveAllListeners();
            slider.minValue = model.MinValue;
            slider.maxValue = model.MaxValue;
            slider.SetValueWithoutNotify(value);

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions