在Unity UI处于活动状态时暂停动画

时间:2016-02-29 11:59:49

标签: user-interface unity3d unity5

我有两个模态,我正在设计用于Unity中的项目,一个用于快速教程,另一个用于有关项目的更多信息,我还在后台播放动画。

我希望动画在模态处于活动状态时暂停,并且在动画顶部,如果你看不到动画,为什么要播放?准确。

到目前为止,我的代码无效,我不确定原因。

using UnityEngine;
using System.Collections;

public class ModalPauseController : MonoBehaviour
{

public GameObject tutorialModal;
public ScrubberAnimationController nac;

public void TutorialModalIsOpen()
{
    if (tutorialModal.activeInHierarchy == true)
    {
        Debug.Log("The tutorial panel is active!!");
        nac.UserClickedPauseButton();
    }
}
}

nac.UserClickedPauseButton指的是暂停动画的另一个脚本。

到目前为止,每当我切换模态的活动状态时,无论是通过检查器,还是在游戏中,我的调试都没有反馈。

1 个答案:

答案 0 :(得分:4)

编写这样的代码非常棘手,因为如果你想到它

代码本身不会激活!!!

通常说你有一个小组" X"这是一个弹出窗口或类似的东西 - 来来去去的东西。

规则是你必须拥有"控制器"为那件事

在某些其他项目上,而不是自身!

以下是一个例子:

enter image description here

" megabomb"是一个打开和关闭的弹出式标志。在那里

enter image description here

然后它就关闭了。这是一个控制巨型开关的脚本。

enter image description here

注意有一个"包装"对于巨型项目。在UI中,"包装"很简单就是一个空面板。它是看不见的。请注意,包装 始终保持

该脚本包含在包装器上 - 就是它。

请注意,非常普遍的" megabomb" item本身有一个"包装器" - 灰色透明背景。因此,当弹出窗口出现时,后面的游戏全部变灰,你可以弹出它。不要忘记在这种情况下,灰色背景将标记为" megabomb"在这个例子中,实际的弹出绿色(或其他)面板将低于该面板。 (事实上​​,弹出式面板本身很可能会有很多部分 - 图像,按钮,边框等等。)不要试图使用"灰色背景"作为保存脚本的"包装器。你需要一个完全独立的包装器,而不是所有的东西。除了保存脚本之外什么都不做。

{顺便说一句,这是另一件让经验丰富的开发人员 - 他们是新人 - 团结起来的事情。通常情况下,你会有其他一些课程#34;运行弹出窗口,但是没有其他类"在Unity中 - 如果你愿意,一切都是单身人士,因为它是一个ECS系统,而不是普通的OO。你必须确实拥有 另一个游戏对象 (在示例中标有“#39;包装器”的那个)来控制有问题的游戏对象(标记为&的那个) #39;示例中的megabombs')。它必须始终处于活动状态。}

注意 - 如果您更喜欢"控制器脚本"实际上可以在任何其他地方(它不必在游戏对象上#34;持有"有问题的项目)。当然,首先我鼓励你使用系统将它作为一个"包装"如图所示,它具有许多优点。 (更不用说它最终可能是预制件等等)。开始时一定要这样做。

它只是"他们不提及的其中一个"关于Unity:你的场景中经常会有很多东西需要一个"包装"宾语。 (其他原因也是如此,例如定位,相对旋转等。)

正如我在评论中提到的那样。如果你正在制作一个弹出窗口,必须用Unity.UI完成(即点击"添加画布" - 永远记得设置为'缩放屏幕尺寸&# 39;,然后点击"添加面板",然后点击"添加文字")。