Добавить функцию выделения цвета в SpriteRenderer - PullRequest
0 голосов
/ 28 августа 2018

У меня есть проект 2D Unity для мобильных телефонов Android, есть спрайт, в который я добавил скрипт кнопки Теперь я хочу использовать цветовой оттенок.

Изменить цвет, когда я нажимаю на него но цвет не меняется, и я не хочу делать это с помощью программирования Я перепробовал много вещей, но все еще не работает Я исправил это раньше с удачей, но теперь я не могу это исправить снова Кто-нибудь знает, что мне не хватает?

here is my properties

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

На основе снимков экрана в вашем комментарии вы смешиваете SpriteRenderer и систему пользовательского интерфейса (Image, RawImage, Button). Не делайте этого.

Прочитайте это , чтобы понять разницу между ними. Как только вы решите, какой из них использовать, вы можете сделать следующее ниже.

Если вы решили использовать пользовательский интерфейс для отображения Sprite, сделайте следующее:

Создайте новую кнопку, перейдя в GameObject -> UI ---> Button.


Если вы предпочитаете использовать SpriteRenderer:

Удалите все компоненты пользовательского интерфейса, такие как Image, RawImage, Button из GameObject, к которому прикреплен SpriteRenderer, а затем вручную создайте код выделения. Функция подсветки встроена только в компонент Button. Вы не можете использовать компонент Button с SpriteRenderer. Вы должны сделать свой собственный, если вы предпочитаете использовать SpriteRenderer.

Это легко. Используйте EventSystem . Измените цвет в OnPointerEnter при выделении и верните его цвет по умолчанию в OnPointerExit при выходе из указателя.

Вот простой скрипт для этого (присоединение к GameObject с компонентом SpriteRenderer):

public class SpriteDetector : MonoBehaviour, IPointerClickHandler, IPointerEnterHandler, IPointerExitHandler
{
    public Color normalColor = Color.white;
    public Color highlightedColor = Color.yellow;
    public Color pressedColor = Color.blue;

    SpriteRenderer sp;

    void Start()
    {
        sp = GetComponent<SpriteRenderer>();

        addPhysics2DRaycaster();
    }

    void addPhysics2DRaycaster()
    {
        Physics2DRaycaster physicsRaycaster = GameObject.FindObjectOfType<Physics2DRaycaster>();
        if (physicsRaycaster == null)
        {
            Camera.main.gameObject.AddComponent<Physics2DRaycaster>();
        }
    }

    public void OnPointerEnter(PointerEventData eventData)
    {
        sp.color = highlightedColor;
    }

    public void OnPointerExit(PointerEventData eventData)
    {
        sp.color = normalColor;
    }

    public void OnPointerClick(PointerEventData eventData)
    {
        sp.color = pressedColor;
        Debug.Log("Clicked: " + eventData.pointerCurrentRaycast.gameObject.name);
    }
}
0 голосов
/ 28 августа 2018

Как говорится в предупреждении, вам нужно указать рисунок, чтобы использовать цветовой оттенок. Попробуйте добавить сюда компонент Image с вашим спрайтом кнопки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...