Я использую код SetDownState()
, потому что мне нужно, чтобы игрок одновременно нажимал две кнопки одновременно. Проблема в том, что в любое время button
составляет SetDownState == true
, он продолжает обновляться.Как остановить обновление SetDownState() при выполнении условия
Что происходит, пока нажата кнопка Сценарии ниже будет работать. Но кнопка все еще работает. Таким образом, если условия меняются, это заканчивается тем, что игрок проигрывает, даже если они выиграли.
Это «Кнопка» Сценарий (получил это от образца активов):
namespace UnityStandardAssets.CrossPlatformInput
{
public class YayButtonTouch : MonoBehaviour
{
public bool yayButtonTouch = false;
public string Name;
public void SetDownState()
{
yayButtonTouch = true;
}
public void SetUpState()
{
yayButtonTouch = false;
}
}
}
Вот как работает код. В зависимости от состояния он меняет то, что делают кнопки. После того, как условие выполняется он запускает WinningScript()
или Losing Script()
Вы не можете видеть его здесь, но условие Win изменит CrowdTypes
void Update()
{
if (cm.crowdOptions == CrowdManager.CrowdTypes.None) {
if (yt.yayButtonTouch == true)
{
if (bt.booButtonTouch == true)
{
iyt.WinningScript();
}
}
if (cm.crowdOptions == CrowdManager.CrowdTypes.TeamA) {
if (sm.teamScored == ScoreManager.teamsScore.TeamAScore) {
if (yt.yayButtonTouch == true)
{
iyt.WinningScript();
}
if (bt.booButtonTouch == true)
{
iyt.LosingScript();
}
} else if (sm.teamScored != ScoreManager.teamsScore.TeamAScore) {
if (yt.yayButtonTouch == true)
{
iyt.LosingScript();
}
if (bt.booButtonTouch == true)
{
iyt.WinningScript();
}
}
}
if (cm.crowdOptions == CrowdManager.CrowdTypes.TeamB) {
if (sm.teamScored == ScoreManager.teamsScore.TeamBScore) {
if (yt.yayButtonTouch == true)
{
iyt.WinningScript();
}
if (bt.booButtonTouch == true)
{
iyt.LosingScript();
}
} else if (sm.teamScored != ScoreManager.teamsScore.TeamBScore) {
if (yt.yayButtonTouch == true)
{
iyt.LosingScript();
}
if (bt.booButtonTouch == true)
{
iyt.WinningScript();
}
}
}
Я надеюсь, что я объяснил это достаточно хорошо.
Примечание, не используйте «еще, если», когда-либо. Это никогда не решение! – Fattie
Как его изменить. Я попытался избавиться от else, если и он сломал код. –
Обратите внимание, что в середине вам нужно только «еще». в основном НИКОГДА НЕ ИСПОЛЬЗУЙТЕ «else if». используйте «отколовшийся» код с возвратом ... Я приведу пример. или, возможно, использовать переключатель. но не используйте else-if. просто найдите другой путь. я приведу пример для этого – Fattie