Unity3d Pause Button не приостанавливает игру onClick () - PullRequest
0 голосов
/ 29 мая 2018

Я создал игру unity3d и хочу добавить пользовательский интерфейс.Я начал с кнопки паузы, но она не работает.Вот информация о кнопке: button info

Я создал скрипт uiManager для управления кнопкой, как показано на рисунке выше, и вот код:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class myUIManager : MonoBehaviour {


    // Use this for initialization
    void Start () {
    }

    // Update is called once per frame
    void Update () {

    }

    public void Pause() //Function to take care of Pause Button.. 
    {

        print("Entered Pause Func");
        if (Time.timeScale == 1 && paused == false) //1 means the time is normal so the game is running..
        {
            print("Enterer first if");
            Time.timeScale = 0; //Pause Game..
        }

        if (Time.timeScale == 0)
        {
            Time.timeScale = 1; //Resume Game..
        }
    }
}

Вот скриншот холста: enter image description here

Есть идеи?Я искал часы ..

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

если условие вашего первого оператора if равно true, тогда вы устанавливаете timeScale на 0, тогда условие второго if становится true, затем вы возвращаете его на 1
Вы должны просто изменить свой второй if на else if, чтобы при первом условии true ваша программа не проверяла второе.

 public void Pause() 
    {
        if (Time.timeScale == 1) 
        {
            Time.timeScale = 0;
        }
       else if (Time.timeScale == 0)
        {
            Time.timeScale = 1; //Resume Game..
        }
    }
0 голосов
/ 29 мая 2018

Я думаю, что ваша проблема в вашем Pause методе:

public void Pause() //Function to take care of Pause Button.. 
{

    print("Entered Pause Func");
    if (Time.timeScale == 1 && paused == false) //1 means the time is normal so the game is running..
    {
        print("Enterer first if");
        Time.timeScale = 0; //Pause Game..
    }

    if (Time.timeScale == 0)
    {
        Time.timeScale = 1; //Resume Game..
    }
}

Если вы введете первый оператор if, который вы установили Time.timeScale = 0, а затем сразу перейдете ко второму ifи установите его обратно в 1.

Попробуйте это - это returns s из метода Pause, как только он устанавливает Time.timeScale в 0.

public void Pause() //Function to take care of Pause Button.. 
{

    print("Entered Pause Func");
    if (Time.timeScale == 1 && paused == false) //1 means the time is normal so the game is running..
    {
        print("Enterer first if");
        Time.timeScale = 0; //Pause Game..
        return;
    }

    if (Time.timeScale == 0)
    {
        Time.timeScale = 1; //Resume Game..
    }
}

Если только двато, что вы хотите сделать в вашем методе Pause, это установить Time.timeScale в 0 или 1, вы можете даже упростить его до следующего:

public void Pause() //Function to take care of Pause Button.. 
{

    print("Entered Pause Func");
    if (Time.timeScale == 1 && paused == false) //1 means the time is normal so the game is running..
    {
        print("Enterer first if");
        Time.timeScale = 0; //Pause Game..
    }
    else
    {
        Time.timeScale = 1; //Resume Game..
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...