Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 单击菜单中的按钮时播放机移动_Android_User Interface_Button_Unity3d_Onclick - Fatal编程技术网

Android 单击菜单中的按钮时播放机移动

Android 单击菜单中的按钮时播放机移动,android,user-interface,button,unity3d,onclick,Android,User Interface,Button,Unity3d,Onclick,我的游戏是一个场景,所以我得到了这个点击播放菜单设置。但问题是,当我点击菜单中的一个按钮时,按钮被按下,但播放器也开始移动。我试图实现的是,如果我点击菜单按钮,玩家不会移动,但只要我点击屏幕上的其他地方,他就会开始移动 我的播放器控制器脚本设置: if (Input.GetMouseButtonDown(0)) { inGameMenu.SetActive(true); startMenu.SetActive(false); if(gro

我的游戏是一个场景,所以我得到了这个点击播放菜单设置。但问题是,当我点击菜单中的一个按钮时,按钮被按下,但播放器也开始移动。我试图实现的是,如果我点击菜单按钮,玩家不会移动,但只要我点击屏幕上的其他地方,他就会开始移动

我的播放器控制器脚本设置:

if (Input.GetMouseButtonDown(0))
    {
        inGameMenu.SetActive(true);
        startMenu.SetActive(false);

        if(grounded)
        {
            myRigidBody.velocity = new Vector2(angleOfJump, jumpForce);
        } 
    }

    if(Input.GetMouseButton(0))
    {
        if(jumpTimeCounter > 0)
        {
            myRigidBody.velocity = new Vector2(angleOfJump, jumpForce);
            jumpTimeCounter -= Time.deltaTime;
        }
    }

    if(Input.GetMouseButtonUp(0))
    {
        jumpTimeCounter = 0;
    }

我知道必须有一个简单的解决办法,但我就是找不到

使用状态机,并根据当前

enum GameStates
{
    Started,
    Playing,
    Ended
};

GameStates currentState = GameStates.Started;


void Update()
{
    if (Input.GetMouseButtonDown(0))
    {
        if(currentState == GameStates.Started)
        {
            inGameMenu.SetActive(true);
            startMenu.SetActive(false);
            currentState = GameStates.Playing;
        }
        else if(currentState == GameStates.Playing)
        {
            // handle gameplay click here.
        }
        // ... etc
    }
}

使用状态机,并根据当前状态处理单击

enum GameStates
{
    Started,
    Playing,
    Ended
};

GameStates currentState = GameStates.Started;


void Update()
{
    if (Input.GetMouseButtonDown(0))
    {
        if(currentState == GameStates.Started)
        {
            inGameMenu.SetActive(true);
            startMenu.SetActive(false);
            currentState = GameStates.Playing;
        }
        else if(currentState == GameStates.Playing)
        {
            // handle gameplay click here.
        }
        // ... etc
    }
}

您可以使用Umair M建议的状态机。这是轻松处理暂停菜单或类似内容(例如)的最佳解决方案。但另一个简单的解决方案是创建一个bool,并将其序列化为false,然后在按下按钮时将该bool设置为true,以允许角色移动

例如:

在播放器脚本中:

bool CharacterActive = false;

void Update()
{
    if(CharacterActive) // if the bool variable is active..
    {
        if(Input.MouseStuff :D) // if movement key pressed..
        {
            // ..Move the character
        }
    }
}

public void OnButtonClick()
{
    CharacterActive = true;
}

在Unity编辑器中,从OnClick()组件中的玩家游戏对象向按钮添加OnButtonClick()方法。在这里您可以看到一段视频:

您可以使用Umair M建议的状态机。这是轻松处理暂停菜单或类似内容的最佳解决方案(例如)。但另一个简单的解决方案是创建一个bool,并将其序列化为false,然后在按下按钮时将该bool设置为true,以允许角色移动

例如:

在播放器脚本中:

bool CharacterActive = false;

void Update()
{
    if(CharacterActive) // if the bool variable is active..
    {
        if(Input.MouseStuff :D) // if movement key pressed..
        {
            // ..Move the character
        }
    }
}

public void OnButtonClick()
{
    CharacterActive = true;
}

在Unity编辑器中,从OnClick()组件中的玩家游戏对象向按钮添加OnButtonClick()方法。在这里你可以看到一段视频:

据我所知,这并不是OP想要的。我想他希望玩家只有在没有按下按钮的情况下才会移动,他希望玩家在点击菜单对象时不会移动。所以请让OP对此发表意见。你好:)@IanH。你能解释一下为什么你否决了我的答案吗?我确实否决了,就我所理解的情况而言,你的答案并不完全符合要求。好吧,这与你是否喜欢无关,因为这不是你首先要问的问题。答案确实符合要求,如果你不能正确解释问题,那就是你的问题。无论如何,即使答案不能解决OP的问题,他也有权不接受答案,但如果你根据自己的想法对答案(作为第三人)投了反对票,那就不是很好的行为。据我所知,这并不是OP想要的。我想他希望玩家只有在没有按下按钮的情况下才会移动,他希望玩家在点击菜单对象时不会移动。所以请让OP对此发表意见。你好:)@IanH。你能解释一下为什么你否决了我的答案吗?我确实否决了,就我所理解的情况而言,你的答案并不完全符合要求。好吧,这与你是否喜欢无关,因为这不是你首先要问的问题。答案确实符合要求,如果你不能正确解释问题,那就是你的问题。无论如何,即使答案不能解决OP的问题,他也有权不接受答案,但如果你根据自己的想法对答案进行否决(作为第三人),这不是很好的行为。菜单是否统一?最简单的方法是在屏幕上设置一个透明按钮。但是,你应该在下面检查实际答案,因为它们提供了更好的解决方案。菜单是否为ugui?最简单的方法是使用一个透明按钮填充屏幕。不过,你应该检查下面的实际答案,因为它们提供了更好的解决方案。谢谢你尝试了它,但仍然没有按照我希望的方式工作。我正在尝试实现“触屏即玩”菜单,就像在游戏中的“之字形:)你可以创建一个时间变量(timePassed=time.deltatime)来处理从按下到开始移动之间的时间,另一个可以帮助你的工具是触发器:。希望这能帮到你:)谢谢,我试过了,但仍然不能按我希望的方式工作。我正在尝试实现“触屏即玩”菜单,就像在游戏中的“之字形:)你可以创建一个时间变量(timePassed=time.deltatime)来处理从按下到开始移动之间的时间,另一个可以帮助你的工具是触发器:。希望这能对您有所帮助:)