/// <summary> /// check for screen orientation changes /// </summary> public void Update() { if (Application.platform == RuntimePlatform.Android) { if (SurfaceUtilities.HasSurfaceBeenRecreated()) { InitializeSurface(); } else { // if Unity reports that the orientation has changed, reset the member variable // - this will trigger a check in Java for a few frames... if (Screen.orientation != mScreenOrientation) { ResetUnityScreenOrientation(); } CheckOrientation(); if (mScreenWidth != Screen.width || mScreenHeight != Screen.height) { mScreenWidth = Screen.width; mScreenHeight = Screen.height; SurfaceUtilities.OnSurfaceChanged(mScreenWidth, mScreenHeight); } } mFramesSinceLastOrientationReset++; } }
private void InitializeSurface() { SurfaceUtilities.OnSurfaceCreated(); AndroidJavaClass javaUnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); mCurrentActivity = javaUnityPlayer.GetStatic <AndroidJavaObject>("currentActivity"); if (mCurrentActivity != null) { mJavaOrientationUtility = new AndroidJavaClass("com.qualcomm.QCARUnityPlayer.OrientationUtility"); } ResetUnityScreenOrientation(); CheckOrientation(); mScreenWidth = Screen.width; mScreenHeight = Screen.height; SurfaceUtilities.OnSurfaceChanged(mScreenWidth, mScreenHeight); }