Как изменить переменную scripts из другого объекта? - PullRequest
0 голосов
/ 19 июня 2019

В моем проекте Unity у меня есть кнопка сжатия и шар. Когда я нажимаю кнопку сжатия, шар должен воспроизводить анимацию сжатия.

Я пытаюсь изменить переменную «shrink», чтобы анимация могла воспроизводиться.

Код кнопки сжатия:

   private ShrinkBall referenceScript;

   void Start()
   {
       referenceScript = ball.GetComponent<ShrinkBall>();
   }

   void OnMouseDown()
   {
       if (referenceScript.shrink == true)
       {
           referenceScript.shrink = true;
       } else
       {
           referenceScript.shrink = false;
       }
}

Сценарий мяча:

public bool shrink = false;
    private Animator shrinkAnim;

    void Start()
    {
        shrinkAnim = GetComponent<Animator>();
    }

    void Update()
    {
        if (shrink == false)
        {
            shrinkAnim.SetBool("shrink", false);
        } else
        {
            shrinkAnim.SetBool("shrink", true);
        }
    }

Когда я нажимаю кнопку сжатия, переменная «сжатие» остается ложной. Я знаю, что он обращается к нему, потому что первоначально он сказал мне, что это вне области видимости, поэтому я сделал его общедоступной переменной.

Таким образом, анимация никогда не воспроизводится, потому что сжатие не меняется. Есть идеи?

1 Ответ

1 голос
/ 19 июня 2019

Вы никогда не меняете значение shrink, но заставляете его сохранять то же значение, которое у него уже есть ...

Вы, скорее всего, хотели бы сделать

void OnMouseDown()
{
    referenceScript.shrink = !referenceScript.shrink;
}

ТогдаВы не должны использовать SetBool все время в Update, а только после того, как вы его измените.

Вы можете, например, использовать метод, подобный

public void ToggleShrink()
{
    shrink = !shrink;

    shrinkAnim.SetBool("shrink", shrink);
}

Тогда вы можете просто вызватьэто из первого скрипта вроде

private void OnMouseDown()
{
    referenceScript.ToggleShrink();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...