Проблема, связанная с одновременным срабатыванием Input.GetMouseButtonDown() и Button.onClick.AddListener()
Есть скрипт:
public class CreateObjectScript : MonoBehaviour
{
public GameObject ObjectToCreate;
public GameObject SelectedGameObject;
public bool IsSelectedGameObjectHasObject;
Ray ray;
RaycastHit hit;
public Button CreateButton;
void Update()
{
ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hit))
{
var CollideGameObject = hit.transform.gameObject;
SelectedGameObject.transform.position = CollideGameObject.transform.position + new Vector3(0f,2f,0f);
}
CreateButton.onClick.AddListener(() =>
{
if (SelectedGameObject == null)
{
SelectedGameObject = Instantiate(ObjectToCreate, new Vector3(0, 2, 0), new Quaternion());
}
});
if (Input.GetMouseButton(0) && SelectedGameObject != null)
{
SelectedGameObject = null;
}
}
}
Его задача - по клику на кнопку создаеться новый обьект(помещаеться в SelectedGameObject) и с помощью мыши перемещаеться по уровню. При нажатии на левую кнопку мыши обьект перестаёт двигаться, а SelectedGameObject присваиваеться значение null. Если нажать на кнопку еще раз в то время как SelectedGameObject уже занят новый обьект не должен был создаватьсяю
Проблема в том что я нажимаю на кнопку и в то время того как SelectedGameObject уже следит за мышью, он просто игнорирует то, что SelectedGameObject уже занят, присваивает ему null и создает новый обьект. Как я понял проблема кроеться в одновременном срабатывание Input.GetMouseButtonDown() и Button.onClick.AddListener(). Как заставить работать их раздельно?