この記事でのバージョン
Unity 2017.2.0f3
はじめに
以前、エディタを実行していない時にSceneView上でクリックした座標を取得する方法
をご紹介したのですが、
実はこの方法、そのままRetinaディスプレイでやるとズレる事が判明しました。
なので今回はこれの対処法の話です。
Retinaディスプレイ
そもそもRetinaディスプレイってなんぞやという所からですが、wikipediaによると以下の通り。
従来の倍の解像度、高画素密度のディスプレイを指す名称である。
ようはピクセルの密度が倍だから綺麗に見えるよ!ってな感じのものです。
この密度が倍というのが曲者で、実際に表示しているサイズとピクセル数が異なってくるため、
座標がズレてしまっていたわけです。
対処法
対処法は簡単で、密度が倍なのでその分、位置を調整するだけ。
//非Retina //mousePosition.y = SceneView.currentDrawingSceneView.camera.pixelHeight - mousePosition.y //Retina mousePosition.x *= 2; mousePosition.y = SceneView.currentDrawingSceneView.camera.pixelHeight - mousePosition.y * 2;
ただし、Retinaディスプレイかどうかを判別する方法が分からなかったため、
使用しているディスプレイに合わせて修正する必要があるのであしからず。