1、思路
主要思路就是,如果是iphoneX手機(手機型號信息可以參見SystemInfo屬性),就將UI左右移動。
2、具體代碼
using UnityEngine;
using System.Collections;
public class iPhoneXAdapter : MonoBehaviour
{
public bool IsUseDebug = false;
public iPhoneXAdapterSetting[] settings;
private Vector3 initPosition;
#if UNITY_EDITOR || UNITY_IPHONE
void Start()
{
initPosition = this.transform.localPosition;
}
void Update()
{
if (UDeviceGen.IsPhoneSafeRegions|| IsUseDebug)
{
if (settings != null && settings.Length > 0)
{
Vector3 tempPos = Vector3.zero;
for (int i = 0; i < settings.Length; i++)
{
if (settings[i].orientation == iPhoneXAdapterSetting.Orientation.All
|| settings[i].orientation == iPhoneXAdapterSetting.Orientation.LandscapeLeft && Screen.orientation == ScreenOrientation.LandscapeLeft
|| settings[i].orientation == iPhoneXAdapterSetting.Orientation.LandscapeRight && Screen.orientation == ScreenOrientation.LandscapeRight
|| settings[i].orientation == iPhoneXAdapterSetting.Orientation.LandscapeLeft && Application.platform == RuntimePlatform.WindowsEditor
|| IsUseDebug
)
{
switch (settings[i].axis)
{
case iPhoneXAdapterSetting.Axis.x:
tempPos += new Vector3(settings[i].offset, 0, 0);
break;
case iPhoneXAdapterSetting.Axis.y:
tempPos += new Vector3(0, settings[i].offset, 0);
break;
}
}
}
this.transform.localPosition = initPosition + tempPos;
}
}
}
#endif
}
[System.Serializable]
public class iPhoneXAdapterSetting
{
public enum Orientation { All, LandscapeLeft, LandscapeRight }
public Orientation orientation = Orientation.All;
public enum Axis { x, y }
public Axis axis = Axis.x;
public float offset;
}
3、代碼使用示例
自動適配IPhoneX 右邊屏