Как сделать область выбора кнопки меньше в Unity3D? - PullRequest
0 голосов
/ 24 января 2020

в Unity3D У меня есть объект-кнопка, у которого есть изображение, как у ребенка. Пока все хорошо.

Unity3D-GUI

Теперь я хотел бы сделать область выбора кнопки (хит-зону) меньше, чем размер дочернего изображения , Это возможно? Я знаю, что можно создать большую зону попадания, но не знаю, возможно ли это, когда вы хотите уменьшить ее.

Есть ли доступный скрипт, который делает зону попадания меньше дочернего изображения?

Этот скрипт прикреплен к моей кнопке, которая меняет изображение дочернего элемента (при наведении курсора), но зона попадания по-прежнему имеет тот же размер (который я хочу, чтобы он был меньше), чем дочернее изображение:

class BtnSwapImage : MonoBehaviour, IPointerExitHandler, IPointerEnterHandler
{
private Image image;
private Sprite imgPlayHover, imgPlay;
private Transform _obj;

void Start() {
    imgPlayHover = Resources.Load <Sprite>("GUI/gui_main_btnplayhover_720p");
    imgPlay = Resources.Load <Sprite>("GUI/gui_main_btnplay_720p");

    IterateChildren(this.transform);
}

void IterateChildren(Transform trans)
{
    // Debug.Log(trans.name); // Do whatever logic you want on child objects here
    if (trans.childCount == 0) return;

    foreach(Transform obj in trans)
    {
        if (obj.name == "Image") _obj = obj;
        IterateChildren(obj);
    }
}

public void OnPointerEnter(PointerEventData eventData)
{
    Debug.Log ("OnPointerEnter");
    this._obj.GetComponent<Image>().sprite = imgPlayHover;
}

public void OnPointerExit(PointerEventData eventData)
{
    Debug.Log ("OnPointerExit");
    this._obj.GetComponent<Image>().sprite = imgPlay;
}
}

1 Ответ

1 голос
/ 24 января 2020

Сценарий не требуется:

На текущих изображениях компоненты кнопки устанавливают RaycastTarget на false, поэтому они не рассматриваются как область взаимодействия.

Включите Raycast Target, если вы хотите, чтобы Unity считал изображение целью для радиопередачи.

Это как если бы вы отключили его коллайдер.

Затем просто добавьте новый Дочерний компонент изображения, который полностью прозрачен, и на нем активируйте RaycastTarget, так что это единственный компонент для этой кнопки, который теперь определяет прямоугольную область взаимодействия в соответствии с ее масштабами в прямоугольном преобразовании.

Этот интерактивный также может быть самой кнопкой, которая обычно уже имеет компонент Image.

...