0

Hi as you can tell i am incredibly new to unity. I just want a sprite to change to a different image when the mouse enters or leaves the sprite. Example, when hovering over a play button, it changes to a slightly different coloured sprite. Thanks

Here is what i tried

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

public class MouseOver : MonoBehaviour
{


public Sprite sprite1; // Drag your first sprite here
public Sprite sprite2; // Drag your second sprite here

private SpriteRenderer spriteRenderer;

void Start()
{
    spriteRenderer = GetComponent<SpriteRenderer>(); 
    if (spriteRenderer.sprite == null) 
        spriteRenderer.sprite = sprite1;
}



void OnMouseEnter()
{

    ChangeSprite();

}


void OnMouseExit()
{

    ChangeSprite();
}


void ChangeSprite()
{
    if (spriteRenderer.sprite == sprite1) 
    {
        spriteRenderer.sprite = sprite2;
    }
    else
    {
        spriteRenderer.sprite = sprite1; 
    }
 } 
}

2 Answers2

0

Your sprite needs a collider attached to it in order for the OnMouseEnter() event to fire.

Sandro Figo
  • 183
  • 10
0

I would prefer to use UI Button with Image component. It has transition property where you can use different sprites on different states (normal, hover, pressed and disabled states).

Just use Button component and set transition mode to SpriteSwap:

Button Transition property should look like this:

As Default button object has image in a child component which is set to Target Graphic, you can set sprite1 as image source by default and use sprite2 as Highlighted Sprite.

This would work perfectly without using any code.

Hope this helps :)

Umair M
  • 10,298
  • 6
  • 42
  • 74