2

これは、解決策が見つからなかった後、自分で解決しなければならなかった問題です。

この問題は、ScrollRect のコンテンツから GameObject 要素を削除した後、ユーザーが再び移動を開始するまで、正規化された位置をクランプしないことでした。これにより、ScrollRect が最後の要素を表示し、親からの最後の要素を非アクティブ化したときに、空のスペースが表示される可能性があります。

  • ユーザーが ScrollRect コンテンツを操作するまで、正規化された位置の値は更新されませんでした。
  • 正規化された位置を手動で設定した後、要素を非アクティブ化した後、まだ更新されていない古い値を操作していたため、機能しませんでした (理由については上記を参照してください)。
4

1 に答える 1

8

私が見つけた最善の解決策は、

  1. ScrollRect のコンテンツで削除された子を検出した後、Canvas の更新を強制します。
  2. 次に、正規化された位置が正しく更新されているため、値をクランプします。

コード例:

        if (isRemoving) {
            Canvas.ForceUpdateCanvases();
            scrollRect.horizontalNormalizedPosition = Mathf.Clamp(scrollRect.horizontalNormalizedPosition, 0f, 1f);
        }
于 2016-03-24T10:58:44.437 に答える