在Unity中,如何在一个场景中冻结屏幕,更改场景,然后在另一个场景中解冻它?冻结屏幕我只是意味着它在冻结时不会更新。屏幕上我只是这个意思:
我已经尝试设置Time.timeScale = 0,但这没有用。
事情是我在场景中有不同的屏幕方向:第一个是肖像,另一个是风景。这会导致第二个场景扭曲/破坏第一个场景中加载的加载屏幕。在第二个场景中初始化的内容需要横向方向,因此我无法在所有内容初始化后更改屏幕方向。
我只想在加载图像加载后冻结屏幕,然后在第二个场景初始化后解冻它。这可能吗?
这是我目前的代码,概括:
// Script for the first scene
class firstClass(){
IEnumerator ChangeScene(){
// Display loading screen in portrait orientation
loadingScreen.SetActive(true);
// Load the second scene
SceneManager.LoadSceneAsync("secondScene");
}
}
// Script for the second scene
class secondClass(){
Start(){
Screen.orientation = ScreenOrientation.LandscapeLeft; // twists the loading screen :(
Init(a lot of stuff) // Needs landscape orientation to be initialized properly
// Init done, hide loading screen
loadingScreen.SetActive(false);
}
}
这就是我希望它发挥作用的方式:
class firstClass(){
IEnumerator ChangeScene(){
// Display loading screen in portrait orientation
loadingScreen.SetActive(true);
FreezeScreen();
SceneManager.LoadSceneAsync("secondScene");
}
}
class secondClass(){
Start(){
Screen.orientation = ScreenOrientation.LandscapeLeft; // doesn't affect the loading screen because the screen is frozen!
Init(a lot of stuff);
UnfreezeScreen();
// Init done, hide loading screen
loadingScreen.SetActive(false);
}
}
答案 0 :(得分:0)
void freezeOrientation(bool freezeOrnt = true)
{
Screen.autorotateToLandscapeLeft = freezeOrnt;
Screen.autorotateToLandscapeRight = freezeOrnt;
Screen.autorotateToPortrait = freezeOrnt;
Screen.autorotateToPortraitUpsideDown = freezeOrnt;
}
冻结方向
freezeOrientation(true);
取消冻结方向
freezeOrientation(false);
答案 1 :(得分:0)
在需要修改方向的场景中,在^(.*?)(\d+) (may) (2016)$
或Start()
上的活动对象上使用以下行。选择与您的预期方向相关的任何行
Awake()
由于这些是逻辑方向,因此触摸坐标也会随着当前方向而改变。
您需要修改第二个类的开始,以便在初始化后禁用加载场景。
void Awake()
{
Screen.orientation = ScreenOrientation.LandscapeLeft;
//OR
Screen.orientation = ScreenOrientation.Portrait;
}