我想要做的事实上非常简单,但不知怎的,我可以找到一种方法来做到这一点。我正在做的是为我的游戏制作主菜单。它非常简单,基本上就像你在游戏开始时拥有的所有其他选择屏幕一样,你可以选择选项,等级选择等。
现在,我想补充一点,我已经在Google Play中拥有2个应用,所以我不是一个完整的编程初学者,但我也不是专家。让我觉得如此愚蠢的是,这应该很容易做到,但我找不到办法去做。我想要背景和一切都是一样的,但是当你选择一些东西时,比如水平选择,我不想改变场景,我只是希望屏幕上的文字淡出,水平选择淡入
我要做的是给每个按钮(关卡选择,选项,更多游戏)一个具有fadeOut和FadeIn功能的脚本。单击一个按钮时,将为每个按钮调用fadeOut函数,并禁用每个按钮按钮,图像组件,并使用.crossFadeAlpha并将文本组件淡化为零。假设玩家按下选项,然后所有按钮淡出,然后如果玩家按下后退按钮,则屏幕上的所有按钮/文本再次淡出,原始按钮淡入并重新启用其文本,图像和按钮组件。
这对我来说似乎很乏味,而且我一直在搞乱,所以我想知道这个简单的问题是否有一个简单的解决方案。我知道这个问题有点愚蠢,但我无法弄明白,所以我需要帮助。感谢
答案 0 :(得分:1)
我对您的问题的理解:您想要一个干净而强大的淡出方式和整个屏幕UI并在其他屏幕UI中淡出?
我的建议:
这样的事情应该用于淡出/进入(未经测试的代码):
public IEnumerator FadeScreenTransition(float fadeTime, CanvasGroup screenFrom, CanvasGroup screenTo) {
float startTime = Time.unscaledTime;
while (Time.unscaledTime < startTime+fadeTime) {
float elapsed = Time.unscaledTime - startTime;
float alpha = 1 - elapsed/fadeTime;
screenFrom.alpha = alpha;
yield return null;
}
screenFrom.alpha = 0;
screenFrom.gameObject.SetActive(false);
screenTo.alpha = 0;
screenTo.gameObject.SetActive(true);
startTime = Time.unscaledTime;
while (Time.unscaledTime < startTime+fadeTime) {
float elapsed = Time.unscaledTime - startTime;
float alpha = 0 + elapsed/fadeTime;
screenTo.alpha = alpha;
yield return null;
}
screenTo.alpha = 1;
}