Jump to content
UnitySpain

Aceptamos donaciones vía Paypal.

UnitySpain.com es un servicio gratuito, pero mantener la Comunidad conlleva una serie de gastos.

Fondo Anual Unityspain: Donados 15,00€ de 150,00€

  • Servidor: Dominio.com y Hosting Web
  • Mantenimiento de los Foros
  • Contenido y Servicios Extras
  • Mantenimiento para Redes Sociales

Recommended Posts

Hola, que tal?, muy buenas. Hacia mucho que no venia por estos lares (años), pero ahora que me quede sin trabajo y que ando de novio, para hacer algo especial por nuestro aniversario, volvi a las andadas con unity.

Primero, esto me costo entenderlo ya que desde la version 3 de unity que no lo usaba (por dios, cambiaron tantas cosas...:7_sweat_smile:). Pero vamos al lio.

Aclaración: no soy experto, seguramente haya mas maneras de hacer esto mismo, y mas prolijo. Pero por ahora me doy por satisfecho.

Bien, vamos con el primero codigo (explicacion en el mismo):

#pragma strict
//Declaro las variables (En este codigo solo hay 3 funciones, PLAY, STOP y SIGUIENTE-este ultimo es automatico al darle stop-)
	public var sereproduce : boolean; //Para reproducir
	var objeto : GameObject; //para un raycast, en este objeto se encuentra un plano que reproduce el video
	var daleplay : Video.VideoPlayer; //Plano, este lo asigno en esta variable mediante el inspector
	var clips : Video.VideoClip[]; //Array de todos los clips de video que se van a reproducir en el plano
	var clips2 : Video.VideoClip; //Segunda variable, Video no permite "slide", no se que es pero sin esta no funciona
	var siguiente : int; //Subindice para nuesto array de clips

function Start () {
	sereproduce = false;
	clips = Resources.LoadAll.<Video.VideoClip>("Videos"); //Levanto toidos los videos que se encuentren en la carpeta "Assets/Resources/Videos"
	for(var i=; i < clips.length; i++){
		print(clips[i].name); //Bastante simple, para saber que levantó y asignó a nuestro array todos los videos
	}
	siguiente = ;
}

function Update () {
	if(siguiente >= clips.length){ //Nuestro subindice para el array
		siguiente = ;
	}
	if (Input.GetButtonDown("Usar")) {
		var hit : RaycastHit; 
		var ray = Camera.main.ScreenPointToRay(Input.mousePosition);
	}
	if (Physics.Raycast(ray,hit)) {
		if (hit.collider.name == objeto.name && sereproduce == false) { //Si golpea con un objeto con el mismo nombre que el objeto que asigne al gameobject Y si no se reproduce nada...
			clips2 = clips[siguiente]; //Aca asigno nuestro primer clip de video del array a nuestra segunda variable
			daleplay.clip = clips2; //Aca a nuesto VideoPlayer
			daleplay.Play(); //Comienza a reproducir
			print(daleplay.clip.name); //Por si las moscas, un poco de debug no viene mal
			sereproduce = true;
		}
		else if (hit.collider.name == objeto.name && sereproduce == true){
			daleplay.Stop();
			sereproduce = false; 
			siguiente ++;
		}
	}
}
//Se puede hacer con isPlaying, cambiando la variable "sereproduce", pero me daba algunos problemas, tal vez por mi codigo, no soy experto, pero bueno, asi quedo andando.

Bueno, no se asusten, el segundo es mas facil... Here we go again!

#pragma strict
//Creamos nuestras variables señores ///NOTA: esto esta muy bueno para adaptarlo a algun sistema de inventario de algun juego, aunque yo no llego a tanto
var texturas : Texture2D[]; //Un hermoso array de texturas 2D
var imagenes : GameObject; //Nuestro "plano-cubo-esfera" o lo que quieran, que vayan a asignarle texturas
var ingresarespera : boolean; //Nuesto limitador a la hora de hacer los cambios de textura automaticos
var subindice : int; //Como dice, subindice de nuestro array

function Start () {
	texturas = Resources.LoadAll.<Texture2D>("Fotos"); //Mismo que el de arriba, tomamos el array, y le asignamos todo lo que se encuentre en la carpeta FOTOS, que sea del tipo TEXTURA 2D
	for(var i=; i < texturas.length; i++){
		print(texturas[i].name);
	}
	ingresarespera = true; 
	subindice = ; 
	print(ingresarespera); 
	print(subindice); 
}

function Update () {
	if(ingresarespera == true){ 
		ingresarespera = false; 
		print(subindice);
		Espera();
	}
}

function Espera(){
	if(subindice < texturas.length){ 
		imagenes.GetComponent.<Renderer>().material.mainTexture = texturas[subindice]; //obtenemos el componente para renderizar, con su material original, le asignamos la nueva textura
		subindice ++; 
		yield WaitForSeconds (5); 
		ingresarespera = true; //Lo ponemos a True, para el siguiente conteo =D
	}
	else{ //Si no es menor el subindice... osea, si el subindice es igual o mayor que el largo de nuestro array (siempre asi, sino el OutOfRange de los huevos)
		subindice = ; //Ponemos el subindice a cero para repetir todo de nuevo
		yield WaitForSeconds (5); 
		ingresarespera = true; //Volvemos a repetir
	}
}

Tal vez a alguien le sirva, la guia y el manual de unity no dan a entender nada y fueron HORAS de intentar. En fin. Que esta bien y todo, pero si esto nisiquiera esta explicado en el scripting

manual de unity, que te dice "es la funcion inherente a esta otra funcion" y vas en circulos todo el rato. Ya veo en 8bit de tanto darle vueltas... Suerte y hasta la proxima! =D

 

EDIT: por un comentario de otro usuario cambie los comentarios del script, en todo caso, si asi esta mas entendible y "limpio" haganmelo saber. 

Edited by arjmaj

Share this post


Link to post
Share on other sites

Hola armaj,

yo he empezado a leer el código, pero me dificulta tanto comentario y se me hace demasiado pesado.

Creo que está bien comentar el código, pero hasta un límite, no hace falta comentar linea por línea, porque al final en vez de ayudar dificulta la tarea de seguirlo.

Por ejemplo:

yield WaitForSeconds (5); //Espero 5 segundines mas 

Es innecesario comentar esto, ya que se ve muy claro su función.

Muchas veces es mejor un nombre claro y descriptivo en las funciones y variables que un largo comentario explicando lo que hace.

Solo quería hacer una pequeña crítica constructiva, de un error que veo a menudo y que muchos hemos cometido alguna vez.

Gracias por el aporte,

Un saludo.

Share this post


Link to post
Share on other sites
hace 12 horas, OldGuy said:

Hola armaj,

yo he empezado a leer el código, pero me dificulta tanto comentario y se me hace demasiado pesado.

Creo que está bien comentar el código, pero hasta un límite, no hace falta comentar linea por línea, porque al final en vez de ayudar dificulta la tarea de seguirlo.

Por ejemplo:


yield WaitForSeconds (5); //Espero 5 segundines mas 

Es innecesario comentar esto, ya que se ve muy claro su función.

Muchas veces es mejor un nombre claro y descriptivo en las funciones y variables que un largo comentario explicando lo que hace.

Solo quería hacer una pequeña crítica constructiva, de un error que veo a menudo y que muchos hemos cometido alguna vez.

Gracias por el aporte,

Un saludo.

Graciela, ahora corrijo y quito todo lo que no sirva del medio =D

Share this post


Link to post
Share on other sites

×
×
  • Create New...