设备方向结转
Device Orientation Carry Over
我正在使用 Unity 3D 创建一个简单的菜单。我无法获得 ancors,所以我使用了两个 Canvas 根据风景和肖像的不同布局。
这非常适合我。
但是。
我必须将设备正确设置为该方向才能正确注册。
To explain better: I've put Landscape values as default in Start()
and in Update()
I have the checkandchanger()
which checks the
orientation and changes it to the appropriate layout.
So now, if I have my device on Portrait and I change scenes, and if my
device isn't perfectly in that orientation (straight up) it loads the
Landscape.
所以,回到我的问题,是否可以将前一个场景的方向发送到下一个场景?
是的,是的。创建一个名为“OrientationManger”的空游戏对象。将一个简单的脚本附加到它,并确保在加载下一个场景时该脚本不会被破坏。此脚本将具有 public 功能,可 设置 当前方向或 读取 上一场景的最后方向。
然后您可以从场景 1 和场景 2 中引用这些值。
为了防止这个"OrientationManger"游戏对象和附加到它的脚本在加载[时销毁下一个场景,使用:
使用
void Awake() {
DontDestroyOnLoad(this.gameObject);
}
编辑:
这就是 OrientationManager 应该看起来的样子。您可以选择任何方法。
public class OrientationManger : MonoBehaviour
{
private OrientationType currentOrientation; ///////////////Method 1 (ENUM)
int orientationType = 1; ///////////////Method 2 (OR use Integer 1,2)
//Makes sure there is only once instance running
void Awake ()
{
// singleton
if (FindObjectsOfType (typeof(OrientationManger)).Length > 1) {
Debug.Log ("OrientationManger already exist");
DestroyImmediate (gameObject); //Destroy this gameobject because it already exist
} else {
DontDestroyOnLoad (this.gameObject); //Wont destroy when loading another level/scene
}
}
///////////////Method 1 Set (ENUM)
public void setOrientation (OrientationType orientType)
{
currentOrientation = orientType;
}
///////////////Method 1 Get (ENUM)
public OrientationType getOrientation ()
{
return currentOrientation;
}
///////////////Method 2 Set (OR use Integer 1,2)
public void setOrientation2 (int orientType)
{
if (orientType == 1) {
orientationType = orientType;
} else if (orientType == 2) {
orientationType = orientType;
}
}
///////////////Method 2 Get (OR use Integer 1,2)
public int getOrientation2 ()
{
if (orientationType == 1 || orientationType == 2) {
return orientationType;
} else {
return 0;
}
}
}
///////////////Method 1 (ENUM)
public enum OrientationType
{
UKNOWN,
Portrait,
Landscape
}
;
我正在使用 Unity 3D 创建一个简单的菜单。我无法获得 ancors,所以我使用了两个 Canvas 根据风景和肖像的不同布局。
这非常适合我。 但是。
我必须将设备正确设置为该方向才能正确注册。
To explain better: I've put Landscape values as default in
Start()
and inUpdate()
I have thecheckandchanger()
which checks the orientation and changes it to the appropriate layout.So now, if I have my device on Portrait and I change scenes, and if my device isn't perfectly in that orientation (straight up) it loads the Landscape.
所以,回到我的问题,是否可以将前一个场景的方向发送到下一个场景?
是的,是的。创建一个名为“OrientationManger”的空游戏对象。将一个简单的脚本附加到它,并确保在加载下一个场景时该脚本不会被破坏。此脚本将具有 public 功能,可 设置 当前方向或 读取 上一场景的最后方向。
然后您可以从场景 1 和场景 2 中引用这些值。
为了防止这个"OrientationManger"游戏对象和附加到它的脚本在加载[时销毁下一个场景,使用:
使用
void Awake() {
DontDestroyOnLoad(this.gameObject);
}
编辑: 这就是 OrientationManager 应该看起来的样子。您可以选择任何方法。
public class OrientationManger : MonoBehaviour
{
private OrientationType currentOrientation; ///////////////Method 1 (ENUM)
int orientationType = 1; ///////////////Method 2 (OR use Integer 1,2)
//Makes sure there is only once instance running
void Awake ()
{
// singleton
if (FindObjectsOfType (typeof(OrientationManger)).Length > 1) {
Debug.Log ("OrientationManger already exist");
DestroyImmediate (gameObject); //Destroy this gameobject because it already exist
} else {
DontDestroyOnLoad (this.gameObject); //Wont destroy when loading another level/scene
}
}
///////////////Method 1 Set (ENUM)
public void setOrientation (OrientationType orientType)
{
currentOrientation = orientType;
}
///////////////Method 1 Get (ENUM)
public OrientationType getOrientation ()
{
return currentOrientation;
}
///////////////Method 2 Set (OR use Integer 1,2)
public void setOrientation2 (int orientType)
{
if (orientType == 1) {
orientationType = orientType;
} else if (orientType == 2) {
orientationType = orientType;
}
}
///////////////Method 2 Get (OR use Integer 1,2)
public int getOrientation2 ()
{
if (orientationType == 1 || orientationType == 2) {
return orientationType;
} else {
return 0;
}
}
}
///////////////Method 1 (ENUM)
public enum OrientationType
{
UKNOWN,
Portrait,
Landscape
}
;