В качестве ответа на ваш комментарий выше, я предлагаю вам иметь кнопку на заднем плане и кнопку паузы наверху.Затем замените ваш метод Update()
на событие OnClick (), как вы делали это раньше.
Ваша кнопка паузы будет ловить левый щелчок, а кнопка фона - нет.Обязательно отметьте Interactable в компоненте Button
.
Затем вы можете удалить компонент Image
кнопки фона, если вам это не нужно.
Что означает, что вы можете создать (или изменить) класс для своей кнопки паузы
using UnityEngine.EventSystems;
public class PauseButton : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
{
public bool IsMouseOver = false;
public void OnPointerEnter(PointerEventData eventData)
{
IsMouseOver = true;
}
public void OnPointerExit(PointerEventData eventData)
{
IsMouseOver = false;
}
// --
// Your OnClick method
// --
}
Примечание: использование eventSystems.
Теперь вы можете использовать это значение bool в коде, подобном тому, как отправляет вам amengelbrecht
.
Я скопирую и вставлю его код из его ответа и добавлю значение bool на основе предыдущего класса выше.
public class BackgroundButtonScript : MonoBehaviour
{
// Public objects
public Sprite[] sprites;
public PauseButton pauseButton;
//Private variables
private Image buttonImage;
private int spriteIndex;
private void Start()
{
buttonImage = GetComponent<Image>(); // Get the image component of your button
spriteIndex = 0; // Set the index to 0
buttonImage.sprite = sprites[spriteIndex]; // Set the image to the first image in your sprite array
}
private void Update()
{
if (Input.GetMouseButtonDown(0) && !pauseButton.IsMouseOver)
{
spriteIndex++; // Increment the index
if (spriteIndex > sprites.Length - 1) // Ensure that you stay within the array size
{
spriteIndex = 0;
}
buttonImage.sprite = sprites[spriteIndex]; // Set the image
}
}
}
Это позволит вам щелкнуть в любом месте экрана, кроме случаев, когда мышь находится над кнопкой паузы.В этом случае будет вызываться OnClick с кнопки паузы.
Будьте осторожны
Если ваша игра находится в режиме паузы и пользователь щелкает левой кнопкой мыши в любом месте, кроме кнопки паузы,В зависимости от того, как работает ваша пауза, будет вызван метод Update () BackgroundButtonScript, который может привести к if (Input.GetMouseButtonDown(0) && !pauseButton.IsMouseOver)
.