c# - Unity C# Checking bool 采用最后一个选项
问题描述
如果游戏对象处于活动状态(尝试执行暂停选项),我正在尝试做某事,所以如果菜单 1,它是暂停菜单,它是活动的,它需要一个名为 pause 的静态布尔并将其设置为 true ,如果菜单 1 被隐藏,则为假。
我也有菜单选项,如果你点击它,它就在这个初始菜单的上方。
我从隐藏菜单开始,然后按 scape。它有效,但是当我再次尝试隐藏它时,它不起作用。有什么帮助吗?
void Update () {
if(Input.GetKeyDown(KeyCode.Escape) && !menuoptions.activeSelf){
OpenMenu();
}
}
void OpenMenu(){
if (menu1.activeSelf){
menu1.SetActive(false);
PJController.pause = true;
Cursor.visible = true;
}
if (!menu1.activeSelf){
menu1.SetActive(true);
PJController.pause = false;
ScrollTransformMenu1.sizeDelta = new Vector2 ( -1f , ScrollTransformMenu1.sizeDelta.y );
Cursor.visible = false;
StartCoroutine ( ExpandRoutine ( ) );
}
}
//Just an animation for opening the menu.
public IEnumerator ExpandRoutine ( ) {
while ( ScrollTransformMenu1.sizeDelta.x < 544f ) {
ScrollTransformMenu1.sizeDelta = new Vector2 ( ScrollTransformMenu1.sizeDelta.x + speed * Time.deltaTime , ScrollTransformMenu1.sizeDelta.y);
yield return null;
}
ScrollTransformMenu1.sizeDelta = new Vector2 ( 544f , ScrollTransformMenu1.sizeDelta.y );
}
解决方案
想想你在这里做什么:
if (menu1.activeSelf){
menu1.SetActive(false);
// snip...
}
if (!menu1.activeSelf){
menu1.SetActive(true);
// snip
}
这两个都将始终执行。在第一个if
中,您将菜单设置为非活动状态。在第二个if
中,您正在检查菜单是否处于非活动状态,然后将其设置为活动状态。您打算使用 aelse
而不是 second的任何机会if
?
在调试器中设置一些断点并单步执行。
推荐阅读
- angular - JHipster - 在后端获取选定的语言
- r - 减淡和填充颜色后错误栏未对齐
- amazon-redshift - 如何获取所有值与唯一 ID 相同的行
- kubernetes - 与服务器 xyzw 的连接被拒绝 您是否指定了正确的主机或端口?
- java - Firebase onChildRemoved() 和 removeValue() 处理时间敏感操作的问题
- javascript - jQuery通过ID查找后代不起作用
- python - Find PI to the Nth Digit - in python - 这是为了得到一个简单的解决方案
- javascript - 将对象的 n 个图像附加到一个画布上
- gulp - 继承/扩展车把中的等价物
- python - Django 2.0 迁移错误:“django.core.exceptions.AppRegistryNotReady:尚未加载应用程序。”