1
Unity3D具有一個屏幕類,其中的方向屬性允許您強制在代碼中定位,從而讓您擁有不同方向的不同場景(適用於迷你遊戲)。如何在Unity3D中強制每個場景的方向
設置這適用於Android的罰款,但在iOS上崩潰。什麼是修復?
Unity3D具有一個屏幕類,其中的方向屬性允許您強制在代碼中定位,從而讓您擁有不同方向的不同場景(適用於迷你遊戲)。如何在Unity3D中強制每個場景的方向
設置這適用於Android的罰款,但在iOS上崩潰。什麼是修復?
問題是在構建期間爲iOS創建的文件UnityViewControllerBaseiOS.mm有一個斷言,它無意中阻止了該屬性的使用。可以創建一個後生成類,在生成iOS構建文件後運行,這些文件可以在XCode中編譯之前更改生成的代碼。
只需創建一個名爲iOSScreenOrientationFix.cs的C#腳本並粘貼以下代碼 - 從this Unity3D forum post改編。請注意,該文件必須放置在名爲Editor的文件夾中,或放置在其中一個子文件夾中。
using UnityEngine;
using UnityEditor;
using UnityEditor.Callbacks;
using System.IO;
namespace Holovis
{
public class iOSScreenOrientationFix : MonoBehaviour
{
#if UNITY_CLOUD_BUILD
// This method is added in the Advanced Features Settings on UCB
// PostBuildProcessor.OnPostprocessBuildiOS
public static void OnPostprocessBuildiOS (string exportPath)
{
Debug.Log("OnPostprocessBuildiOS");
ProcessPostBuild(BuildTarget.iPhone,exportPath);
}
#endif
[PostProcessBuild]
public static void OnPostprocessBuild(BuildTarget buildTarget, string path)
{
#if !UNITY_CLOUD_BUILD
ProcessPostBuild(buildTarget, path);
#endif
}
private static void ProcessPostBuild(BuildTarget buildTarget, string path)
{
if (buildTarget == BuildTarget.iOS)
{
#if !UNITY_CLOUD_BUILD
Debug.Log("Patching iOS to allow setting orientation");
#endif
string filePath = Path.Combine(path, "Classes");
filePath = Path.Combine(filePath, "UI");
filePath = Path.Combine(filePath, "UnityViewControllerBaseiOS.mm");
Debug.Log("File Path for View Controller Class: " + filePath);
string classFile = File.ReadAllText(filePath);
string newClassFile = classFile.Replace("NSAssert(UnityShouldAutorotate()", "//NSAssert(UnityShouldAutorotate()");
File.WriteAllText(filePath, newClassFile);
}
}
}
}
您可以通過以下MonoBehaviour連接到一個遊戲對象將其設置在一個場景
using UnityEngine;
namespace Holovis
{
public class SetDeviceOrientation : MonoBehaviour
{
public ScreenOrientation orientation = ScreenOrientation.AutoRotation;
void Awake()
{
Screen.orientation = orientation;
}
}
}
注:在桌面上運行時,在Unity編輯設置Screen.orientation
沒有效果,或者使用Unity Remote進行測試時。
如果一切都失敗了,您總是可以將主相機旋轉90度。 – rutter
@rutter我不認爲這會對UI有好處:) –