активация и деактивация сценариев на объекте из сценария этого объекта (проблемы начинающих) - PullRequest
0 голосов
/ 30 апреля 2018

У меня есть объект со скриптом, который перемещает его по пути. На том же объекте находится скрипт, который, если активирован, отправляет его обратно в начальную точку. Сценарий mover по умолчанию активен, а home по умолчанию неактивен. Я хочу, чтобы, если я нажимаю «2», mover деактивируется и home активируется, а если я нажимаю «1», сценарии возвращаются к тому, как они были. состояния 1 и 2 должны быть исключительными. Я создал скрипт для того же объекта следующим образом:

public class activator : MonoBehaviour
{

bool mover = new bool();
bool home = new bool();

void Start () 
    {
    mover = true;
    home = false;
    }

void Update () 
    {

    if (Input.GetButtonDown("1"))
        {
        mover = true;
        home = false;            
        }
    if (Input.GetButtonDown("2"))
        {
        mover = false;
        home = true;
        }

    if(mover == true)
        {
        GetComponent<router>().enabled = true;
        GetComponent<routeRepairs>().enabled = false;
        }
    else if(home == true)
        {
        GetComponent<router>().enabled = false;
        GetComponent<routeRepairs>().enabled = true;
        }
    }
}

обратите внимание на фактические сценарии, которые я пытаюсь активировать и деактивировать с объекта: router и routeRepairs. Когда я фактически запускаю игру в режиме воспроизведения, после нажатия кнопки ничего не происходит. Есть вопрос, что stackoverflow говорит мне, что это похоже, но приведенные решения ничего не делают для меня. Таким образом, любая помощь с тем, как получить эту работу будет принята с благодарностью! Заранее спасибо! еще одна вещь: я надеюсь добавить больше сценариев движения, которые должны быть активированы и деактивированы таким же образом, поэтому решения, которые применяются только к двум состояниям (т. е. перемещаются или возвращаются домой), не идеальны. вероятно, не важно, но мне пришло в голову, что это стоило квалификации ..?

1 Ответ

0 голосов
/ 30 апреля 2018

Входные данные действительно распознаются? Поместите отпечаток в поле ввода, если хотите узнать, действительно ли он получает данные. Если нет, возможно, ваш вход не настроен правильно. Или вы можете попробовать использовать KeyCode вместо:

if (Input.GetKeyDown(KeyCode.Alpha1))

Кроме того, вам не нужны дополнительные логические значения или дополнительные операторы if. Просто запустите сценарии, а затем напрямую включите / отключите их

router router;
routerRepairs routerRepairs;
void Start () 
{
    router = GetComponent<router>();
    routerRepairs = GetComponent<routerRepairs>();
}

void Update () 
{
    if (Input.GetKeyDown(KeyCde.Alpha1))
    {
         router.enabled = true;
         routerRepairs.enabled = false;           
    }

    if (Input.GetKeyDown(KeyCde.Alpha2))
    {
         router.enabled = false;
         routerRepairs.enabled = true;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...