Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Vii 10 Unityscript
Vii 10 Unityscript
Vii 10 Unityscript
Puntos a tratar
Scripting con C#
Eventos de entrada
Patrones en Unity
Gestin de eventos
Invocacin con retardo
Corrutinas
Adaptacin a dispositivos mviles
Creacin de scripts
Se crean como assets de tipo script
Estructura de un script
La estructura bsica de un script C# de Unity es
public class EsferaScript : MonoBehaviour
{
void Start () {
Todos los scripts heredan
}
de MonoBehaviour
void Update () {
}
}
Delta time
Nos indica el tiempo transcurrido desde la iteracin anterior
Lo utilizaremos para actualizar la escena adecuadamente
posicion
=
posicion
+
velocidad
*
Time.deltaTime; Accedemos con
Time.deltaTime
void Start () {
GetComponent<Transform>().position = posicionInicial;
}
Polimorfismo en Unity
Si creamos una variable cuyo tipo corresponde a un componente,
podremos asignar a ella cualquier Game Object que incorpore
dicho componente
[AddComponentMenu("Controladores/Cubo")]
Buscar objetos
Los objetos tienen nombre y etiqueta
Propiedades name y tag
Destruccin de objetos
El objeto se destruye y se elimina de la escena
Destroy(gameObject);
Destroy(proyectil, 5);
Destruye transcurridos
los segundos indicados
Destroy(this);
if(Input.GetButton("Fire1")) {
// Disparar!
}
Teclado
Input.GetKey(KeyCode.LeftArrow)
Controlador de la escena
Cada estado se representa mediante una escena en Unity
Una prctica habitual consiste en tener un script controlador
El controlador se encarga de
Coordinar distintos elementos de la escena
Gestionar marcadores y otros datos del juego
Gestionar el estado dentro de la escena
Player
MonedaEncontrada()
Game
Controller
PublicarMonedas()
Marcador
player.onMonedaRecogida = IncrementaMonedas;
void Start () {
actualizaEscena = ActualizaEscenaPatrulla;
}
void Update () {
if(actualizaEscena != null) {
actualizaEscena();
}
}
void ActualizaEscenaPatrulla () {
ActualizaPosicionRuta();
if(LocalizaPlayer()) { actualizaEscena = ActualizaEscenaPersecucion;
}
void ActualizaEscenaPersecucion () {
PersiguePlayer();
if(!LocalizaPlayer()) { actualizaEscena = ActualizaEscenaPatrulla;
}
Sistema de eventos
Una variable de tipo evento nos permite tener varios delegados
til para enviar mensajes a todos los objetos interesados
Crea una estructura menos acoplada
Cualquier objeto puede registrarse como oyente del evento
Patrn singleton
Podemos implementar el patrn singleton con variables estticas
void Awake () {
if(manager == null) { Hace que el objeto
DontDestroyOnLoad(gameObject); se mantenga al
manager = this;
} else if(manager != this) {
cambiar de escena
Destroy(gameObject);
}
}
}
Corrutinas
Las corrutinas nos permiten ejecutar cdigo durante varios ciclos
Debemos indicar en qu momento esperamos al siguiente ciclo
IEnumerator DisparaProyectilCoroutine() {
while(true) {
DisparaProyectil(); Seguir
yield return new WaitForSeconds(2.0f); ejecutndose
} dentro de 2
}
segundos
StartCoroutine("DisparaProyectilCoroutine");
StopCoroutine("DisparaProyectilCoroutine");
Dispositivos mviles
Unity permite desplegar el juego en
plataformas mviles
if (Application.platform == RuntimePlatform.Android ||
Application.platform == RuntimePlatform.IPhonePlayer ||
Application.platform == RuntimePlatform.BB10Player ||
Application.platform == RuntimePlatform.WP8Player) {
// Activar controles tctiles
}
Controles en pantalla
Importamos el paquete Standard Assets (Mobile)
Aadimos el prefab Dual Joysticks a la escena
Se trata de objetos GUITexture vinculados a un script (tipo Joystick)
Definiremos una variable de entrada Joystick en el script de
nuestro personaje
Joystick moveJoystick;
Desplegar en mvil
Abrimos la pantalla Build Settings
File > Build Settings
Seleccionamos la plataforma y
pulsamos Switch Platform
Unity Remote
La aplicacin Unity Remote nos permite
probar en mviles va streaming de forma
cmoda
Podemos descargarla de forma gratuita en
cualquier plataforma
El mvil deber estar en la misma red que el
ordenador con Unity
Preguntas...?