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)来处理从按下到开始移动之间的时间,另一个可以帮助你的工具是触发器:。希望这能对您有所帮助:)