Skip to content

tetr4lab/ScrollRect_test

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

title tags
Unity Scroll View (uGUI) で、動的に有効にしたスクロールバーが操作できない
Unity C# uGUI

課題

  • Unity 2022だと、ScrollRectで、インスペクタでチェックされていない方向(縦横)をスクリプトからtrueにすると、スクロールバーを操作してもコンテンツがスクロールしません。
    • ScrollBarVisibilityAuto Hide And Expand Viewportです。
  • スクロールホイールやコンテンツのドラッグによる操作は可能で、操作の結果はスクロールバーにも反映されます。
  • Unity 2021.3では、同じ方法で動的にスクロール方向の可否を切り替えても、スクロールバーによる操作が可能でした。

確認した環境

  • Unity 2022.1.0 ~ 2022.3.18f1

原因

  • インスペクタでスクロールバーの割り当てが行われていても、インスペクターで無効な向きのスクロールバーにはリスナーが設定されず、動的に向きを有効にしても再設定されません。

対処

  • スクロールバー・オブジェクトを変更するとリスナーが設定されることを利用して、スクロール方向の切り替え時にリスナーを有効化します。
    scroll.vertical = true;
    scroll.verticalScrollbar = scroll.verticalScrollbar;
    scroll.horizontal = true;
    scroll.horizontalScrollbar = scroll.horizontalScrollbar;
  • なお、スクロールバーのリスナーは、MonoBehaviourOnEnable時にも再設定されるようです。

実証プロジェクト

使い方

  • エディタ上で実行した時点では、スクロールは無効です。
  • ボタンを押すと、縦横にスクロール可能になります。
    • しかし、この時点では、スクロールバーを操作してもコンテンツ位置に反映されません。
  • 再度ボタンを押すと、スクロールバーで操作可能になります。

About

Unity 2022 uGUI ScrollRect, Dynamically change scroll direction

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages