OnMouseEnter:
function OnMouseEnter () : void
Esta función es llamada cuando el cursor entra en un collider o un GUIElement.
Veámoslo con un ejemplo muy sencillo. Tecleamos:
function OnMouseOver(){
Debug.Log("El mouse está sobre el objeto " + gameObject.name);
}
Arrastramos el script al cubo. Pulsamos play y observaremos que cuando el cursor está sobre el cubo, se imprime la frase debajo de la ventana game.
Esta función no será llamada en objetos que pertenezcan a Ignore Raycast layer.
OnMouseEnter puede ser una corrutina, siempre que utilicemos una instrucción Yield en la función, y el evento será enviado a todos los scripts vinculados con el collider o GUIElement
OnMouseOver:
function OnMouseOver () : void
Esta función es llamada cada frame en la que el mouse permanezca sobre el Collider o GUIElement, a diferencia de onMouseEnter, que sólo se dispara cuando entra el mouse.
Como esta función se actualiza cada frame, podemos hacer cosas como la del ejemplo:
function OnMouseOver () {
renderer.material.color += Color(0.1, 0, 0) * Time.deltaTime;
}
Si pulsamos play y mantenemos el cursor sobre el cubo, lentamente éste se irá tornando de color rojizo, debido al paulatino aumento del componente R (red) de su RGB.
OnMouseOver puede ser, como OnMouseEnter, una corrutina, simplemente utilizando la declaración yield en la función
OnMouseExit:
function OnMouseExit () : void
Esta función es llamada cuando el ratón ya no esta sobre un GUIElement o un Collider.
Podemos completar con ella el script anterior:
function OnMouseOver () {
renderer.material.color += Color(0.1, 0, 0) * Time.deltaTime;
}
function OnMouseExit () {
renderer.material.color = Color.white;
}
Cuando se retira el mouse del cubo, éste retorna a su color blanco inicial.
Como las precedentes, la función no es llamada en objetos que tienen el Ignore Raycast Layer y puede formar parte de una coroutine.
OnMouseDown:
function OnMouseDown () : void
Es llamada cuando el usuario pulsa el botón del mouse sobre un GUIElement o Collider.
Por seguir con el ejemplo anterior, podríamos añadir al script:
function OnMouseOver () {
renderer.material.color += Color(0.1, 0, 0) * Time.deltaTime;
}
function OnMouseExit () {
renderer.material.color = Color.white;
}
function OnMouseDown () {
renderer.material.color = Color.blue;
}
Al presionar el botón del ratón, el cubo se torna de color azul.
A esta función le es de aplicación lo indicado para las precedentes en relación con Ignore Raycast y la posibilidad de ser una corrutina.
En el ejemplo de OnMouseEnter tienes puesta la función OnMouseOver.
ResponderEliminarEnhorabuena por el blog, magnífico trabajo!