Onclick в функции обновления

#c# #unity3d

#c# #unity3d

Вопрос:

Есть проигрыватель, который должен перемещаться к целевому объекту при нажатии кнопки.

Теперь я использую просто onClick в моей кнопке на функции Shoot() ; и он запускается, когда targetMenu.help == 2 , но объект проходит один кадр в секунду, и мне нужно щелкнуть по нему несколько раз, чтобы это достигло цели.

С другой стороны, если я помещу Shoot(); в обновление, все пройдет гладко, но до того, как я нажму кнопку, потому что targetMenu.help == 2 уже.

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

public class moveTowards : MonoBehaviour
{
    float speed = 5.0f;
    public Transform target;

    public void Update()
    {

    }

    public void Shoot()
    {
        if (targetMenu.help == 2)
        {
            transform.LookAt(target);

            transform.position  = transform.forward * speed * Time.deltaTime;
            Debug.Log(targetMenu.help);
        }

        if (targetMenu.help == 4)
        {
            transform.LookAt(target);

            transform.position  = transform.forward * speed * Time.deltaTime;

            targetMenu.help = 5;

            Debug.Log(targetMenu.help);
        }
    }
}
  

Комментарии:

1. в чем ваш вопрос?

Ответ №1:

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

Фрагмент для условного обновления

 bool isButtonPressed = false;
public void Update()
{
    if(isButtonPressed)
       Shoot();
}

public void PressedButton()
{
     isButtonPressed = true;
}