Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

225
Vistas
¿Cómo activar OnMouseOver/OnMouseExit en un script de prueba de Unity?

Creé un script para mi juego de Unity administrando el estado de desplazamiento del objeto del juego al que está adjunto el script

 public sealed class HoverStateController : MonoBehaviour { private void OnMouseOver() { UpdateEntityHoverState(true); } private void OnMouseExit() { UpdateEntityHoverState(false); } private void UpdateHoverState(bool hovered) { // ... modify the state ... } }

Sé que no debo intentar probar métodos privados porque no hay necesidad de hacerlo, puedo verificar el resultado del servicio público ( ¿Debo probar métodos privados o solo públicos? ).

La cuestión es que la lógica en UpdateHoverState se puede probar muy fácilmente. Así que podría

  • no probarlo, porque es privado
  • haga público el método y pruébelo, pero los modificadores de acceso deben ser lo más limitados posible, por lo que esto rompe una convención ( Modificadores de acceso: ¿cuál es el propósito? )
  • realizar un OnMouseOver y OnMouseExit activando algo

Preferiría el último, pero no sé si Unity ofrece una forma de activar esos métodos. ¿Hay alguna manera de crear un simulacro que los llame internamente?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

En primer lugar, se llama a OnMouseOver() en cada cuadro en el que probablemente desee usar OnMouseEnter() en su lugar.

El scripting de Unity no es puro OO siéntete libre de violar las leyes cuando lo creas necesario. Por ejemplo, cada mensaje de Unity puede ser public, protected, private etc., por lo que podría hacer público el modificador de acceso y activarlo usted mismo.

También puede usar la reflexión para llamar a métodos privados, ya que solo desea probar la lógica interna del método UpdateHoverState() , esto podría ser mejor. Sin embargo, la reflexión es vulnerable a los refactores (necesita el nombre del método en forma de cadena). Para acceder a métodos privados a través de un método de extensión genial usando la reflexión, vea esta respuesta .

Y también puede usar símbolos de preprocesador para hacer público un método al probarlo o para proporcionar información adicional sobre la clase. Preprocesadores de Unity

 #if TESTING // public wrapper method when testing public void UpdateHoverStateTestHelper(bool hovered) { UpdateHoverState(hovered); } #endif void UpdateHoverState(bool hovered) { // ... modify the state ... }
 #if TESTING || UNITY_EDITOR // Now we will know the method name even when it gets renamed (using refactoring tools) static readonly string UpdateHoverStateMethod = nameof(UpdateHoverState); #endif void UpdateHoverState(bool hovered) { // ... modify the state ... }
 #if TESTING || UNITY_EDITOR // nameof is accessed at compile time so the string can be const too const string UpdateHoverStateMethod = nameof(UpdateHoverState); #endif void UpdateHoverState(bool hovered) { // ... modify the state ... }

Lo bueno de esto es que cada vez que esté construyendo para su plataforma de destino, estos códigos se eliminarán (suponiendo que desactive el preprocesador de TESTING )

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda