#c# #unity3d
#c# #unity3d
Вопрос:
Я пытаюсь изменить цвет изображения при наведении на него курсора мыши. Он запускается PointerEnter
, когда я навожу на него курсор и PointerExit
когда моя мышь уходит.
Вместо изменения цвета только того изображения, над которым я нависаю, он изменяет цвет каждого изображения в сцене. Кто-нибудь может помочь?
Вот мой код:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class click : MonoBehaviour {
void Start(){
}
void Update(){
}
public void PointerEnter(){
gameObject.GetComponent<Image>().material.color=new Color(1,1,0);
}
public void PointerExit(){
gameObject.GetComponent<Image>().material.color=new Color(1,1,1);
}
}
Ответ №1:
Материал используется совместно для оптимизации, он тот же, который используется для всех изображений, использующих его.
Вам нужно изменить цвет изображения, просто удалите материал в ваших строках.
gameObject.GetComponent<Image>().color=new Color(1,1,0);
Компонент Button имеет настройки перехода, в которых вы можете устанавливать цвета для состояния, возможно, вам не нужен дополнительный код.
Ответ №2:
Unity имеет 2 предварительно запрограммированные функции, называемые OnMouseOver()
and OnMouseExit()
. Который вы можете использовать, чтобы увидеть, ввела ли мышь ваш Image
.
Вам нужно будет добавить этот фрагмент кода к каждому Image
, который вы хотите Color
изменить при наведении курсора мыши, и убедиться, что вы получаете .Color
компонент вместо .material.color
компонента.
Пример:
public class OnMouseOverExample : MonoBehaviour
{
void OnMouseOver() {
// Executes when you Hover over this GameObject with the Mouse
gameObject.GetComponent<Image>().color = new Color(1f, 1f, 0f);
}
void OnMouseExit() {
// Executes when you no longer Hover over this GameObject with the Mouse
gameObject.GetComponent<Image>().color = new Color(1f, 1f, 1f);
}
}
Если вы хотите изменить компоненты пользовательского Color
интерфейса, вы также можете использовать Button
компонент. Который уже имеет встроенную функциональность, вы можете использовать для подкрашивания Color
вашего изображения.