我有两个模态,我正在设计用于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
指的是暂停动画的另一个脚本。
到目前为止,每当我切换模态的活动状态时,无论是通过检查器,还是在游戏中,我的调试都没有反馈。
答案 0 :(得分:4)
编写这样的代码非常棘手,因为如果你想到它
通常说你有一个小组" X"这是一个弹出窗口或类似的东西 - 来来去去的东西。
规则是你必须拥有"控制器"为那件事
以下是一个例子:
" megabomb"是一个打开和关闭的弹出式标志。在那里
然后它就关闭了。这是一个控制巨型开关的脚本。
注意有一个"包装"对于巨型项目。在UI中,"包装"很简单就是一个空面板。它是看不见的。请注意,包装 始终保持 。
该脚本包含在包装器上 - 就是它。
请注意,非常普遍的" megabomb" item本身有一个"包装器" - 灰色透明背景。因此,当弹出窗口出现时,后面的游戏全部变灰,你可以弹出它。不要忘记在这种情况下,灰色背景将标记为" megabomb"在这个例子中,实际的弹出绿色(或其他)面板将低于该面板。 (事实上,弹出式面板本身很可能会有很多部分 - 图像,按钮,边框等等。)不要试图使用"灰色背景"作为保存脚本的"包装器。你需要一个完全独立的包装器,而不是所有的东西。除了保存脚本之外什么都不做。
{顺便说一句,这是另一件让经验丰富的开发人员 - 他们是新人 - 团结起来的事情。通常情况下,你会有其他一些课程#34;运行弹出窗口,但是没有其他类"在Unity中 - 如果你愿意,一切都是单身人士,因为它是一个ECS系统,而不是普通的OO。你必须确实拥有 另一个游戏对象 (在示例中标有“#39;包装器”的那个)来控制有问题的游戏对象(标记为&的那个) #39;示例中的megabombs')。它必须始终处于活动状态。}
注意 - 如果您更喜欢"控制器脚本"实际上可以在任何其他地方(它不必在游戏对象上#34;持有"有问题的项目)。当然,首先我鼓励你使用系统将它作为一个"包装"如图所示,它具有许多优点。 (更不用说它最终可能是预制件等等)。开始时一定要这样做。
它只是"他们不提及的其中一个"关于Unity:你的场景中经常会有很多东西需要一个"包装"宾语。 (其他原因也是如此,例如定位,相对旋转等。)
正如我在评论中提到的那样。如果你正在制作一个弹出窗口,必须用Unity.UI完成(即点击"添加画布" - 永远记得设置为'缩放屏幕尺寸&# 39;,然后点击"添加面板",然后点击"添加文字")。