「Unity/端末サイズ」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→3Dのcanvasをフィット) |
(→3Dのcanvasをフィット) |
||
行47: | 行47: | ||
} | } | ||
</pre> | </pre> | ||
− | == | + | ==CanvasScalerを使ったフィット== |
#CanvasのInspectorのCanvasScalerを"Constant Pixel Size "から"Scale With Screen Size"に変更して | #CanvasのInspectorのCanvasScalerを"Constant Pixel Size "から"Scale With Screen Size"に変更して | ||
#CanvasScalerのReferenceResolutionを1080x1920(CanvasのRectTransformの値と同じ)へ | #CanvasScalerのReferenceResolutionを1080x1920(CanvasのRectTransformの値と同じ)へ |
2022年4月19日 (火) 18:15時点における版
サンプル
CameraオブジェクトのProjectionをorthographicへ変更しておく。
void Awake() { TermSize.OrthographicSizeAuto(); }
TermSize.cs
public class TermSize { public static void OrthographicSizeAuto () { // 縦画面 iPhone6 float developAspect = 750.0f / 1334.0f; // 横画面 iPhone6 // float developAspect = 1334.0f / 750.0f; float deviceAspect = (float)Screen.width / (float)Screen.height; float scale = deviceAspect / developAspect; Camera mainCamera = Camera.main; float deviceSize = mainCamera.orthographicSize; float deviceScale = 1.0f / scale; if (scale > 1) { Debug.Log("scale変更不要"); return; } mainCamera.orthographicSize = deviceSize * deviceScale; } }
参考:http://www.project-unknown.jp/entry/2017/01/05/212837
ipad判定
public static bool IsIPad { get { return SystemInfo.deviceModel.Contains ("iPad"); } }
参考:http://westhillapps.blog.jp/archives/35736621.html
縦ipad判定
public static bool IsIPadDeviceAspect() { float deviceAspect = (float)Screen.width / (float)Screen.height; // 2048 / 2732 = 0.74963397 if (deviceAspect > 0.749f && deviceAspect <= 0.751f) { return true; } return false; }
CanvasScalerを使ったフィット
- CanvasのInspectorのCanvasScalerを"Constant Pixel Size "から"Scale With Screen Size"に変更して
- CanvasScalerのReferenceResolutionを1080x1920(CanvasのRectTransformの値と同じ)へ
padのときは、調整が必要なので、以下CanvasScalerを使ったautofitを使うとうまくはまる
TermSize.OrthographicSizeAutoCanvasScaler(GameObject.Find("/Canvas").GetComponent<CanvasScaler>()); public static void OrthographicSizeAutoCanvasScaler(CanvasScaler canvasScaler) { Vector2 developValue = new Vector2(1080f, 1920f); float developAspect = developValue.x / developValue.y; float deviceAspect = (float)Screen.width / (float)Screen.height; float scale = deviceAspect / developAspect; if (scale < 1) { canvasScaler.uiScaleMode = CanvasScaler.ScaleMode.ScaleWithScreenSize; canvasScaler.referenceResolution = developValue; return; } float width = developValue.y * (float)Screen.width / (float)Screen.height; canvasScaler.uiScaleMode = CanvasScaler.ScaleMode.ScaleWithScreenSize; canvasScaler.referenceResolution = new Vector2(width, developValue.y); }