public GameObject[] objInteraction; //Referencia de todos los objetos, como la imagen, el audio, etc //Metodo a implementar dada la interfaz IInteractable public void LookOnMe() { /* Este metodo se va a mandar llamar en el EventTrigger del objeto, este metodo solo se manda llamar UNA VEZ * * Como no sabremos cuantas interacciones va a tener en el arreglo de "interactions", puede ser 1 o 5 o las que sean * recorremos el arreglo con un ciclo for y mandamos llamar el metodo de "ExecuteInteraction" */ for (int i = 0; i < interactions.Length; i++) { /* Cuando hacemos el recorrido, es importante saber que tipo de interaccion estamos revisando, puesto que hay interacciones * que van a requerir ejecutar su metodo en el Update, entonces accedemos al enum de cada interaccion y preguntamos que tipo de * interacción es, por ejemplo rotar, si es el caso asignamos la delegación a nuestra variable-metodo del tipo "ExecuteUpdate" */ if (interactions[i].currentInteraction == Interactivo.TypeInteraction.rotar) { //Nota: En el enum en vez de tener los diferentes tipos de interacción, podriamos poner algo como: ExecuteOnUpdate, NoUpdate, //para de esta forma solo tener dos tipos en el enum y asignar las delegaciones //asignamos la delegación a nuestra variable-metodo del tipo "ExecuteUpdate", notar que, todavía no le pasamos el parametro del //tipo GameObject, puesto que solo estamos asignando la delegación currentExecution = interactions[i].ExecuteInteraction; } else { //Si el tipo de interactivo no se va a ejecutar en el Update, solo lo mandamos llamar, hay que saber que objetos se van a requerir en el //update y cuales no interactions[i].ExecuteInteraction(objInteraction[1]); } } }
public void NoLookOnMe() { /* Este metodo solo se mana llamar UNA VEZ * * Cuando ya el jugador no esta observando al objeto, vamos a mandar llamar el metodo para detener la ejecución * de cada scriptable object que tenga el objeto, con un ciclo for */ for (int i = 0; i < interactions.Length; i++) { interactions[i].StopExecutionInteraction(); //Se manda llamar el metodo para detener la ejecución de cada scriptable } currentExecution = null; //Y el delegado lo volvemos nulo para que ya no se ejecute en el Update }