facebook twitter hatena line email

「Unity/端末サイズ」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(ページの作成:「 void Awake() { // 縦画面 iPhone6 float developAspect = 750.0f / 1334.0f; // 横画面 float developAspect = 1334.0f / 750.0f; float deviceAspect...」)
 
(AutoScreenライブラリ)
 
(同じ利用者による、間の18版が非表示)
行1: 行1:
 +
==サンプル==
 +
#CameraオブジェクトのProjectionをorthographicへ変更しておく。
 +
#CanvasのRenderModeをWorldSpaceに変更
 +
void Awake()
 +
{
 +
        TermSize.OrthographicSizeAuto();
 +
}
  
  void Awake() {
+
TermSize.cs
    // 縦画面 iPhone6
+
  public class TermSize {
    float developAspect = 750.0f / 1334.0f;
+
    public static void OrthographicSizeAuto () {
    // 横画面
+
        // 縦画面 iPhone6
    float developAspect = 1334.0f / 750.0f;
+
        float developAspect = 750.0f / 1334.0f;
    float deviceAspect = (float)Screen.width / (float)Screen.height;
+
        // 横画面 iPhone6
    float scale = deviceAspect / developAspect;
+
        // float developAspect = 1334.0f / 750.0f;
    Camera mainCamera = Camera.main;
+
        float deviceAspect = (float)Screen.width / (float)Screen.height;
    float deviceSize = mainCamera.orthographicSize;
+
        float scale = deviceAspect / developAspect;
    float deviceScale = 1.0f / scale;
+
        Camera mainCamera = Camera.main;
    mainCamera.orthographicSize = deviceSize * deviceScale;
+
        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
 
参考:http://www.project-unknown.jp/entry/2017/01/05/212837
 +
 +
==ipad判定==
 +
<pre>
 +
public static bool IsIPad {
 +
    get {
 +
        return SystemInfo.deviceModel.Contains ("iPad");
 +
    }
 +
}
 +
</pre>
 +
参考:http://westhillapps.blog.jp/archives/35736621.html
 +
===縦ipad判定===
 +
<pre>
 +
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;
 +
}
 +
</pre>
 +
==CanvasScalerを使った自動フィット==
 +
#CanvasのRenderModeをScreenSpace-Cameraに変更
 +
#CanvasのInspectorのCanvasScalerを"Constant Pixel Size "から"Scale With Screen Size"に変更して
 +
#CanvasScalerのReferenceResolutionを1080x1920(CanvasのRectTransformの値と同じ)へ
 +
 +
padのときは、調整が必要なので、以下CanvasScalerを使ったautofitを使うとうまくはまる
 +
<pre>
 +
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);
 +
}
 +
</pre>
 +
 +
==AutoScreenライブラリ==
 +
端末画面サイズ判定として、AutoScreenがある
 +
https://github.com/su10/AutoScreen-for-Unity2021

2024年4月4日 (木) 15:36時点における最新版

サンプル

  1. CameraオブジェクトのProjectionをorthographicへ変更しておく。
  2. CanvasのRenderModeをWorldSpaceに変更
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を使った自動フィット

  1. CanvasのRenderModeをScreenSpace-Cameraに変更
  2. CanvasのInspectorのCanvasScalerを"Constant Pixel Size "から"Scale With Screen Size"に変更して
  3. 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);
}

AutoScreenライブラリ

端末画面サイズ判定として、AutoScreenがある https://github.com/su10/AutoScreen-for-Unity2021