さけのさかなのブログ

同人ゲーム開発やってます。Unity使ったりする。

ScrollRectの罠!

 UnityUIのScrollRect.normalizedPositionの変な挙動について。確認したUnityのバージョンは5.3。

 なお、中身は

 return new Vector2(horizontalNormalizedPosition, verticalNormalizedPosition);

なだけなので、厳密にはhorizontalNormnalizedPosition, verticalNormalizedPositionの挙動の話。

ViewportとContentのどちらが大きいかで挙動が変わる

Viewportのほうが大きいとき

 値は0か1が返る。

Contentのほうが大きいとき

 値はゼロ未満や1より大きい値が返ってくることがある。

 (ElasticやUnrestricted設定で、範囲外にスクロールしたとき)

コード

https://bitbucket.org/Unity-Technologies/ui/src/3fbf7d2d4afc63474f486fca4b1a27ebdc885f52/UnityEngine.UI/UI/Core/ScrollRect.cs?at=5.2&fileviewer=file-view-default#ScrollRect.cs-492:494