Unityはiphoneの劉海屏に適しています
まず、iOSデバイスのデバイスタイプを取得し、特定のモデルに基づいて前髪画面かどうかを判断します.例えば、デバイスタイプがiPhone 10である場合です.3またはiPhone 10.6またはiPhone 11.6、それでは劉海屏のものだと思います.
DeviceTypeを取得するにはobjective-cインタフェースを書く必要があります
注:Unityでobjective-cコードをxcodeプロジェクトにどのように打ち込むか、
参照:UnityとiOSのインタラクション(XUPorterの使用)
または、UnityのIOSエクスポートエンジニアリング構成ツールxcodeapiを参照してください.
UnityのC#で、インタフェースをカプセル化します.
呼び出し:
具体的な適合方法は、工事で使われているNGUIかuGUIかによって異なります
NGUIでは、UIWdigetのAnchorsを利用して、左右に44ピクセル、下に70ピクセル、上に54ピクセル、下に54ピクセル
UGUIの原理は同じで,これ以上述べない
劉海屏をよりよく識別する方法があれば、コメントエリアで議論に注意してください.
添付:
iOSデバイスDeviceTypeの表示:https://support.hockeyapp.net/kb/client-integration-ios-mac-os-x-tvos/ios-device-types
DEVICE TYPE
PRODUCT NAME
iPhone1,1
iPhone
iPhone1,2
iPhone 3G
iPhone2,1
iPhone 3GS
iPhone3,1
iPhone 4 (GSM)
iPhone3,3
iPhone 4 (CDMA)
iPhone4,1
iPhone 4S
iPhone5,1
iPhone 5 (A1428)
iPhone5,2
iPhone 5 (A1429)
iPhone5,3
iPhone 5c (A1456/A1532)
iPhone5,4
iPhone 5c (A1507/A1516/A1529)
iPhone6,1
iPhone 5s (A1433/A1453)
iPhone6,2
iPhone 5s (A1457/A1518/A1530)
iPhone7,1
iPhone 6 Plus
iPhone7,2
iPhone 6
iPhone8,1
iPhone 6s
iPhone8,2
iPhone 6s Plus
iPhone8,4
iPhone SE
iPhone9,1
iPhone 7 (A1660/A1779/A1780)
iPhone9,2
iPhone 7 Plus (A1661/A1785/A1786)
iPhone9,3
iPhone 7 (A1778)
iPhone9,4
iPhone 7 Plus (A1784)
iPhone10,1
iPhone 8 (A1863/A1906)
iPhone10,2
iPhone 8 Plus (A1864/A1898)
iPhone10,3
iPhone X (A1865/A1902)
iPhone10,4
iPhone 8 (A1905)
iPhone10,5
iPhone 8 Plus (A1897)
iPhone10,6
iPhone X (A1901)
iPad1,1
iPad
iPad2,1
iPad 2 (Wi-Fi)
iPad2,2
iPad 2 (GSM)
iPad2,3
iPad 2 (CDMA)
iPad2,4
iPad 2 (Wi-Fi, revised)
iPad2,5
iPad mini (Wi-Fi)
iPad2,6
iPad mini (A1454)
iPad2,7
iPad mini (A1455)
iPad3,1
iPad (3rd gen, Wi-Fi)
iPad3,2
iPad (3rd gen, Wi-Fi+LTE Verizon)
iPad3,3
iPad (3rd gen, Wi-Fi+LTE AT&T)
iPad3,4
iPad (4th gen, Wi-Fi)
iPad3,5
iPad (4th gen, A1459)
iPad3,6
iPad (4th gen, A1460)
iPad4,1
iPad Air (Wi-Fi)
iPad4,2
iPad Air (Wi-Fi+LTE)
iPad4,3
iPad Air (Rev)
iPad4,4
iPad mini 2 (Wi-Fi)
iPad4,5
iPad mini 2 (Wi-Fi+LTE)
iPad4,6
iPad mini 2 (Rev)
iPad4,7
iPad mini 3 (Wi-Fi)
iPad4,8
iPad mini 3 (A1600)
iPad4,9
iPad mini 3 (A1601)
iPad5,1
iPad mini 4 (Wi-Fi)
iPad5,2
iPad mini 4 (Wi-Fi+LTE)
iPad5,3
iPad Air 2 (Wi-Fi)
iPad5,4
iPad Air 2 (Wi-Fi+LTE)
iPad6,3
iPad Pro (9.7 inch) (Wi-Fi)
iPad6,4
iPad Pro (9.7 inch) (Wi-Fi+LTE)
iPad6,7
iPad Pro (12.9 inch, Wi-Fi)
iPad6,8
iPad Pro (12.9 inch, Wi-Fi+LTE)
iPad6,11
iPad 9.7-Inch 5th Gen (Wi-Fi Only)
iPad6,12
iPad 9.7-Inch 5th Gen (Wi-Fi/Cellular)
iPad7,1
iPad Pro (12.9 inch, A1670)
iPad7,2
iPad Pro (12.9 inch, A18219)
iPad7,3
iPad Pro (10.5 inch, A1701)
iPad7,4
iPad Pro (10.5 inch, A1709)
iPad7,5
iPad (6th gen, A1893)
iPad7,6
iPad (6th gen, A1954)
iPod1,1
iPod touch
iPod2,1
iPod touch (2nd gen)
iPod3,1
iPod touch (3rd gen)
iPod4,1
iPod touch (4th gen)
iPod5,1
iPod touch (5th gen)
iPod7,1
iPod touch (6th gen)
新しく出たiPhone 10 sのDeviceTypeはiPhone 11です.6
補足:
後でunityはSystemInfoで直接判断できることが分かった
DeviceTypeを取得するにはobjective-cインタフェースを書く必要があります
//IOSGameTools.mm
#include
#include
#include
#include
extend "C" const char* IOSGetDeviceType()
{
size_t size;
sysctlbyname("hw.machine", NULL, &size, NULL, 0);
if(size <= 0)
return NULL;
char *machine = (char*)malloc(size);
if(NULL == machine)
return NULL;
sysctlbyname("hw.machine", machine, &size, NULL, 0);
return machine;
}
注:Unityでobjective-cコードをxcodeプロジェクトにどのように打ち込むか、
参照:UnityとiOSのインタラクション(XUPorterの使用)
または、UnityのIOSエクスポートエンジニアリング構成ツールxcodeapiを参照してください.
UnityのC#で、インタフェースをカプセル化します.
//UnityIOSGameTools.cs
#if UNITY_IOS
using UnityEngine;
using System;
using System.Collections;
using System.Runtime.InteropServices;
class UnityIOSGameTools
{
[DllImport("__Internal")]
private static extern string IOSGetDeviceType();
private static string UnityIOSGetDeviceType()
{
return IOSGetDeviceType();
}
// iOS
public static bool IsIOSBangSreen()
{
var deviceType = UnityIOSGetDeviceType();
return "iPhone10.3" == deviceType || "iPhone10.6" == deviceType || "iPhone11.6" == deviceType;
}
}
#endif
呼び出し:
if(UnityIOSGameTools.IsIOSBangScreen())
{
//
}
具体的な適合方法は、工事で使われているNGUIかuGUIかによって異なります
NGUIでは、UIWdigetのAnchorsを利用して、左右に44ピクセル、下に70ピクセル、上に54ピクセル、下に54ピクセル
var w = gameObject.GetComponent();
w.leftAnchors.absolute += 44;
w.rightAnchors.absolute -= 44;
w.bottomAnchors.absolute += 70;
w.topAnchors.absolute -= 54;
UGUIの原理は同じで,これ以上述べない
劉海屏をよりよく識別する方法があれば、コメントエリアで議論に注意してください.
添付:
iOSデバイスDeviceTypeの表示:https://support.hockeyapp.net/kb/client-integration-ios-mac-os-x-tvos/ios-device-types
DEVICE TYPE
PRODUCT NAME
iPhone1,1
iPhone
iPhone1,2
iPhone 3G
iPhone2,1
iPhone 3GS
iPhone3,1
iPhone 4 (GSM)
iPhone3,3
iPhone 4 (CDMA)
iPhone4,1
iPhone 4S
iPhone5,1
iPhone 5 (A1428)
iPhone5,2
iPhone 5 (A1429)
iPhone5,3
iPhone 5c (A1456/A1532)
iPhone5,4
iPhone 5c (A1507/A1516/A1529)
iPhone6,1
iPhone 5s (A1433/A1453)
iPhone6,2
iPhone 5s (A1457/A1518/A1530)
iPhone7,1
iPhone 6 Plus
iPhone7,2
iPhone 6
iPhone8,1
iPhone 6s
iPhone8,2
iPhone 6s Plus
iPhone8,4
iPhone SE
iPhone9,1
iPhone 7 (A1660/A1779/A1780)
iPhone9,2
iPhone 7 Plus (A1661/A1785/A1786)
iPhone9,3
iPhone 7 (A1778)
iPhone9,4
iPhone 7 Plus (A1784)
iPhone10,1
iPhone 8 (A1863/A1906)
iPhone10,2
iPhone 8 Plus (A1864/A1898)
iPhone10,3
iPhone X (A1865/A1902)
iPhone10,4
iPhone 8 (A1905)
iPhone10,5
iPhone 8 Plus (A1897)
iPhone10,6
iPhone X (A1901)
iPad1,1
iPad
iPad2,1
iPad 2 (Wi-Fi)
iPad2,2
iPad 2 (GSM)
iPad2,3
iPad 2 (CDMA)
iPad2,4
iPad 2 (Wi-Fi, revised)
iPad2,5
iPad mini (Wi-Fi)
iPad2,6
iPad mini (A1454)
iPad2,7
iPad mini (A1455)
iPad3,1
iPad (3rd gen, Wi-Fi)
iPad3,2
iPad (3rd gen, Wi-Fi+LTE Verizon)
iPad3,3
iPad (3rd gen, Wi-Fi+LTE AT&T)
iPad3,4
iPad (4th gen, Wi-Fi)
iPad3,5
iPad (4th gen, A1459)
iPad3,6
iPad (4th gen, A1460)
iPad4,1
iPad Air (Wi-Fi)
iPad4,2
iPad Air (Wi-Fi+LTE)
iPad4,3
iPad Air (Rev)
iPad4,4
iPad mini 2 (Wi-Fi)
iPad4,5
iPad mini 2 (Wi-Fi+LTE)
iPad4,6
iPad mini 2 (Rev)
iPad4,7
iPad mini 3 (Wi-Fi)
iPad4,8
iPad mini 3 (A1600)
iPad4,9
iPad mini 3 (A1601)
iPad5,1
iPad mini 4 (Wi-Fi)
iPad5,2
iPad mini 4 (Wi-Fi+LTE)
iPad5,3
iPad Air 2 (Wi-Fi)
iPad5,4
iPad Air 2 (Wi-Fi+LTE)
iPad6,3
iPad Pro (9.7 inch) (Wi-Fi)
iPad6,4
iPad Pro (9.7 inch) (Wi-Fi+LTE)
iPad6,7
iPad Pro (12.9 inch, Wi-Fi)
iPad6,8
iPad Pro (12.9 inch, Wi-Fi+LTE)
iPad6,11
iPad 9.7-Inch 5th Gen (Wi-Fi Only)
iPad6,12
iPad 9.7-Inch 5th Gen (Wi-Fi/Cellular)
iPad7,1
iPad Pro (12.9 inch, A1670)
iPad7,2
iPad Pro (12.9 inch, A18219)
iPad7,3
iPad Pro (10.5 inch, A1701)
iPad7,4
iPad Pro (10.5 inch, A1709)
iPad7,5
iPad (6th gen, A1893)
iPad7,6
iPad (6th gen, A1954)
iPod1,1
iPod touch
iPod2,1
iPod touch (2nd gen)
iPod3,1
iPod touch (3rd gen)
iPod4,1
iPod touch (4th gen)
iPod5,1
iPod touch (5th gen)
iPod7,1
iPod touch (6th gen)
新しく出たiPhone 10 sのDeviceTypeはiPhone 11です.6
補足:
後でunityはSystemInfoで直接判断できることが分かった
using UnityEngine.SystemInfo;
if(SystemInfo.deviceModel.Contains("iPhone10,3") || SystemInfo.deviceModel.Contains("iPhone10,6"))
{
// iOS
var wr = topLeft.GetComponent();
wr.leftAnchor.absolute += 30;
}