如何在Unity中等待屏幕方向完全改变后再切换场景

3
如何等待屏幕旋转完全完成后再执行下一个任务?
IEnumerator ChangeOrientation()
{
    Screen.orientation = ScreenOrientation.LandscapeLeft;

    // Fix background not completely rotate on unpacking story
    yield return Timing.WaitUntilTrue(() => Screen.orientation == ScreenOrientation.LandscapeLeft);

    bool unpack = storyData.sceneBundleName.Length > 0; //If we have loaded a scene bundle
    StoryManager.Instance.StartStory(this, unpack);
}
1个回答

4

我从论坛上了解到,使用OnRectTransformDimensionsChange()函数可以实现设备屏幕旋转事件的监听,但我并没有亲自尝试过。

这里是相关的简短文档。


是的,我听说过,但这是否意味着我需要在gameObject上添加RectTransform组件呢?因为我的只有正常的transform。 - Tengku Fathullah
1
看起来是这样。顺便说一下,您可以创建一个“实用程序”对象并将RectTransform附加到它上面。此时,将侦听器设置为此对象。我认为这值得一试,您同意吗? - Andrea
1
当然完全同意,刚才我使用了临时解决方法,只是放置了 WaitForSeconds(0.3f),至少没有图形故障。所以现在我会先坚持这个方法。有时间再试试其他的。感谢 @Andrea。 - Tengku Fathullah
2
@TengkuFathullah 我也考虑过等待,但是这个答案比等待 x 秒更可靠。有些设备可能需要一秒钟才能完成操作,否则你的游戏代码将失败。 - Programmer
@程序员 这正是我等待的,等待问题出现,然后采用更好的方法,我已经有了直觉,而你也说了同样的话。我猜我会使用这种新方法。 - Tengku Fathullah
如果你正在测试并等待一个设备出现问题,那是不现实的,你在浪费时间。有数百种Android设备存在,并且其中一些具有不同的行为。 - Programmer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接