2015-10-23 8 views
0

У меня есть спрайт, который действует как кнопка в главном меню моей игры. У этого есть коллайдер коробки, и я использую OnMouseDown() для регистрации кликов кнопки.Изменить спрайт на mouseover

Я хочу изменить справку, когда моя мышь перевернется через кнопку. Я знаю, что могу делать вещи, используя функцию OnMouseOver(), но как я могу переключаться между 2 спрайтами полностью?

ответ

2

Вам не нужно использовать 2 спрайтов и переключаться между ними. Просто используйте эффект следующим образом:

void OnMouseOver 
{ 
    transform.GetComponent<SpriteRenderer>().sprite.color = "your new color for clicking effect"; 

    transform.GetComponent<SpriteRenderer>().sprite.localScale -= new Vector3(0.1f, 0.1f, 0.1f); 
} 

и получить обратно весь этот процесс в OnMouseExit. или если вы все еще хотите изменить спрайт, вы можете его изменить, как

Sprite newSprite; 

void OnMouseOver 
{ 
    transform.GetComponent<SpriteRenderer>().sprite = newSprite; 
} 

и изменить его в OnMouseExit.

+1

Это хорошо работает. Однако, что, если у вас был синий спрайт, который вы создали, скажем, Photoshop? Будет ли 'sprite.color 'менять цвет спрайта? – Tom

+1

меняется, но, когда вы устанавливаете цвет в красный цвет, это становится синим + красным, я думаю. не стал цвет, который вы точно установили. – Cenkisabi

1

положить функции мыши на пустой родитель GameObject, и родитель его все спрайты вы хотите, то просто включить/отключить их с помощью родительского

1

Других вариантов:

  • Используйте Worldspace UI (тогда вы можете использовать встроенный переход spriteswap и другие кнопки: http://docs.unity3d.com/Manual/script-SelectableTransition.html)
  • Добавить публичную переменную Sprite и присвоить спрайту с помощью мыши, а затем в OnMouseOver() использовать это спрайт-изображение в вашем стиле спрайта. (И вернуться к исходному спрайта курсора мыши)
  • Может также использовать Mecanim анимацию, OnMouseOver() переключения на другую анимацию (которая имеет только 1 кадр)