このスクリプトは、スプライトの位置とスケールを保持して、
画面のアスペクト比や高さが変わっても同じ見た目を再現させることができます。
WebGLでビルドされたデモです。
ブラウザのウィンドウの高さを変更することで、
普通のスプライトは位置や大きさが元のものから変わってしまいますが、
このスクリプトを適用したスプライト(Adjusted Sprite)は、位置が変わりません。
https://kilimanjaro-a2.github.io/SpritePositionAdjuster/
UnityEditor上で、任意のアスペクト比でスプライトをシーンに置き、位置やスケールを設定します。
その後、SpritePositionAdjuster.csをスプライトレンダラーを持つゲームオブジェクトに対しアタッチします。
そしてシーンをスタートすると、今のゲームビューの高さがコンソールに表示されます。
Current screen height is: 726. If you want to preserve current scale and position of this sprites, set originalHeight property 726 and restart the scene to check whether it works correctly.
コンソールに表示された高さの値を、インスペクタからSpritePositionAdjusterのOriginalScreenHeightに対して設定します(今回の場合は726)。
以上で初期設定は終了です。
以降、ゲームビューのアスペクトや高さを変えても、
最初に設定したスプライトの位置やスケールが再現されます。
KeepsPositionUpdateをtrueにした場合、Updateで常にスクリーンのサイズが変わっていないか監視し、
変わっていた場合、即座にスプライトの位置・スケールを調整します。
falseの場合、スクリーンサイズのチェックは最初にシーンが開始されたときのみになるため、
trueの場合に比べてパフォーマンスが改善します。
デフォルトの値はtrueになっています。