-1-
ndice de contenido
Manual de Unity.................................................................................................................................15
Fuentes adicionales de informacin..........................................................................................15
Problemas conocidos.................................................................................................................15
Versiones del manual..........................................................................................................................16
Versiones anteriores de la documentacin de Unity 5:.............................................................16
Versiones anteriores de la documentacin de Unity 4:.............................................................16
Versiones anteriores de la documentacin de Unity 3:.............................................................17
Nuevo en 5.3.......................................................................................................................................18
Documentacin para las nuevas caractersticas en 5.3:............................................................18
Trabajando con Unity.........................................................................................................................20
Bases de Unity....................................................................................................................................22
Descargando e Instalando Unity.........................................................................................................23
Asistente de Descarga de Unity.....................................................................................................23
Instalando Unity sin el Asistente de Descarga...............................................................................24
Instalando Unity en Windows desde lnea de comandos..........................................................24
Instalacin del Editor de Unity.................................................................................................24
Desinstalador del Editor de Unity........................................................................................24
Instalacin del Web Player...................................................................................................25
Instalacin de Assets Estndar.............................................................................................25
Instalacin de Proyecto Ejemplo..........................................................................................25
Instalando Unity en OS X desde la lnea de comando..............................................................25
Instalacin del Editor de Unity.................................................................................................25
Instalacin del Web Player...................................................................................................25
Instalacin de Assets Estndar.............................................................................................25
Instalacin de Proyecto Ejemplo..........................................................................................25
Descarga Torrent............................................................................................................................26
Proyectos 2D o 3D..............................................................................................................................27
3D Completo.............................................................................................................................27
3D Ortogrfico..........................................................................................................................28
2D Completo.............................................................................................................................28
Gameplay 2D con grficas 3D..................................................................................................29
Gameplay 3D y grficas, con una cmara perspectiva.............................................................29
Otros estilos...............................................................................................................................30
Informacin til de proyectos 2D..................................................................................................30
Comenzando con Unity.............................................................................................................30
Visin general 2D......................................................................................................................30
Empezando.........................................................................................................................................31
Iniciando Unity por primera vez....................................................................................................31
Creando un Proyecto......................................................................................................................31
Abriendo un Proyecto....................................................................................................................34
Aprendiendo la Interfaz......................................................................................................................36
La ventana del Proyecto.................................................................................................................37
La Scene View (vista de escena)....................................................................................................38
La ventana de Jerarqua.................................................................................................................39
Flujo de trabajo de los Assets (Asset Workflow)................................................................................40
Objetos Primitivos..............................................................................................................................41
Cubo...............................................................................................................................................41
Esfera.............................................................................................................................................42
Cpsula...........................................................................................................................................42
Cilindro..........................................................................................................................................43
Plano..............................................................................................................................................43
Quad...............................................................................................................................................44
Importando Assets..............................................................................................................................45
Algunos tipos comunes de Asset...................................................................................................47
Archivos de Imagen..................................................................................................................47
Archivos de modelos 3D...........................................................................................................47
Meshes & Animaciones............................................................................................................47
Archivos de Audio....................................................................................................................48
Otros tipos de Asset...................................................................................................................48
Import Settings (Ajustes de Importacin)..........................................................................................50
Importando desde la Asset Store........................................................................................................52
Acceso a la Asset Store y Navegacin...............................................................................................52
Ubicacin del archivo Asset descargado........................................................................................54
Asset Packages (Paquetes de assets)..................................................................................................56
Import Package..............................................................................................................................56
Standard Asset Packages...........................................................................................................57
Custom Packages......................................................................................................................58
Export Package..............................................................................................................................59
Assets Estndar...................................................................................................................................60
Importando Assets Estndar...........................................................................................................60
Los Assets Estndar No se Actualizan Automticamente....................................................60
Las ventanas principales.....................................................................................................................62
La ventana Project..............................................................................................................................63
Buscando........................................................................................................................................65
Navegacin del Scene View...............................................................................................................68
Movimiento de Flecha(Arrow Movement)....................................................................................68
Enfocarse(Focusing)......................................................................................................................68
Moverse,Orbitar y Acercarse (Move,Orbit y Zoom).....................................................................68
Usando el Hand Tool.................................................................................................................68
Claves de Acceso Rpido Sin usar la Hand Tool......................................................................69
Modo Flythrough...........................................................................................................................69
Scene Gizmo..................................................................................................................................69
Posicionando GameObjects................................................................................................................72
Transladar(Translate), Rotar(Rotate), y Escalar(Scale).................................................................72
Palanca de Visualizacin de Gizmo(Gizmo Display Toggles)......................................................73
Snapping por Unidades..................................................................................................................74
Snapping de superficies.................................................................................................................74
Look-At Rotation...........................................................................................................................74
Vertex Snapping.............................................................................................................................74
Shading Mode...........................................................................................................................76
Miscellaneous............................................................................................................................76
Deferred....................................................................................................................................76
Global Illumination...................................................................................................................77
La Vista del Juego (Game View)........................................................................................................80
Modo de Juego ( Play Mode).........................................................................................................80
Barra de Control del Game View...................................................................................................80
La ventana de Jerarqua (Hierarchy)..................................................................................................83
Parentesco (Parenting)...................................................................................................................83
Ordenacin Alfanumrica..............................................................................................................84
Edicin Multi-Escena....................................................................................................................84
-3-
Usando el Inspector............................................................................................................................85
Inspecting Game Objects...............................................................................................................86
Inspecting Script Variables............................................................................................................87
Inspecting Assets............................................................................................................................88
Project Settings..............................................................................................................................91
Editando Propiedades(Properties)......................................................................................................92
Referencias(References)................................................................................................................92
Valores(Values)..............................................................................................................................93
Colores(Colors).........................................................................................................................93
Gradientes(Gradients)...............................................................................................................96
Curvas(Curves).........................................................................................................................97
Matrices(Arrays).......................................................................................................................97
Editando Varios Objetos a la Vez...................................................................................................98
Libreras Predefinidas.......................................................................................................................100
Cmo crear un preset de un color:...............................................................................................100
Opciones del Inspector.....................................................................................................................103
Bloquear(Lock)............................................................................................................................103
Modo Depurar/Normal(Debug/Normal Mode)...........................................................................103
La Barra de Herramientas.................................................................................................................105
Buscando..........................................................................................................................................106
Bsqueda de Escena.....................................................................................................................106
Bsqueda de Proyecto y Etiquetas...............................................................................................107
Otras Vistas.......................................................................................................................................108
Personalizando El Espacio de Trabajo.........................................................................................109
Teclas de Acceso Rpido de Unity...................................................................................................112
Creacin de Juego.............................................................................................................................115
Escena...............................................................................................................................................116
Guardando Escenas......................................................................................................................116
Abriendo Escenas.........................................................................................................................117
Edicin Multi-escena...................................................................................................................117
GameObjects.....................................................................................................................................118
Qu son los GameObjects?........................................................................................................118
GameObject......................................................................................................................................120
Detalles........................................................................................................................................121
Introduccin a los componentes.......................................................................................................122
El Transform Component.............................................................................................................122
Otros Components.......................................................................................................................122
Usando Components.........................................................................................................................124
Agregando Components..............................................................................................................124
Editando Components..................................................................................................................126
Los comandos del men de contexto del Component.................................................................129
Reset........................................................................................................................................129
Eliminar(Remove)...................................................................................................................129
Moverse Arriba/Abajo.............................................................................................................129
Copiar/Pegar............................................................................................................................129
Probando las Propiedades............................................................................................................130
Transform.........................................................................................................................................131
Propiedades..................................................................................................................................131
Creando Componentes......................................................................................................................132
Desactivando GameObjects..............................................................................................................133
-4-
Efectos de desactivar un parent GameObject..............................................................................133
Etiquetas(Tags).................................................................................................................................135
Applicando una Etiqueta(Tag).....................................................................................................136
Creando nuevas Etiquetas............................................................................................................136
Recomendaciones........................................................................................................................136
GameObjects Estticos.....................................................................................................................138
Ajustes Estticos..........................................................................................................................138
Prefabs..............................................................................................................................................139
Usando Prefabs............................................................................................................................139
Editando un Prefab desde sus Instancias.....................................................................................140
Guardando Su Trabajo......................................................................................................................141
Guardar cambios de la escena actual (Save Scene)..................................................................141
Guardar cambios a todo el proyecto (Save Project)......................................................................142
Toda la Project Settings (Configuracin del proyecto):......................................................142
Los Build Settings (Configuracin del build).....................................................................144
Cambios a los assets en la Project Window (ventana de proyecto)........................................144
Cambios que se escriben inmediatamente al disco (no necesitan ser guardados):......................145
Cambios a cualquier configuracin de importacin que requiera que el usuario pulse un botn
apply....................................................................................................................................145
Otros cambios que se guardan inmediatamente:..........................................................................145
Instanciando Prefabs en tiempo de ejecucin...................................................................................147
Escenarios Comunes....................................................................................................................147
Construyendo una pared..........................................................................................................148
Instanciando cohetes & explosiones.......................................................................................150
Sustituir un personaje con un mueco de trapo o una ruina...................................................151
Poniendo un montn de objetos en un patrn especfico........................................................153
Input..................................................................................................................................................156
Input Convencional de Juego...........................................................................................................157
Virtual Axes (Ejes Virtuales).......................................................................................................158
Agregando nuevos ejes de Input (Input Axes).............................................................................158
Usando Ejes de Input (Input Axes) desde los Scripts..................................................................160
Nombres de Botones....................................................................................................................160
Teclas...........................................................................................................................................160
Input de Dispositivo Mvil...............................................................................................................162
Pantalla Multi-Touch...............................................................................................................162
Simulacin de Mouse..............................................................................................................163
Acelermetro...........................................................................................................................163
Filtro de Paso Bajo(Low-Pass Filter)......................................................................................164
Quisiera la mayor precisin posible al leer el acelermetro. Qu debo hacer?.....................164
Teclado mvil...................................................................................................................................166
Elementos GUI............................................................................................................................166
Manejo del teclado manual..........................................................................................................166
Opciones de distribucin del teclado...........................................................................................166
Vista Preliminar de Texto.............................................................................................................166
Visibilidad y tamao del teclado..................................................................................................167
Input Seguro de Texto..................................................................................................................167
Teclado de Alerta.........................................................................................................................168
Transforms........................................................................................................................................170
Editando Transforms....................................................................................................................170
Parentesco....................................................................................................................................172
-5-
Limitaciones con Escalado No Uniforme....................................................................................173
La Importancia de la Escala.........................................................................................................173
Tips para Trabajar con Transforms..............................................................................................174
Agregando Aleatoriamente Elementos de Juego..............................................................................175
Escogiendo un elemento aleatorio de una matriz........................................................................175
Escogiendo Elementos con Diferentes Probabilidades................................................................175
Ponderando valores continuos aleatorios.....................................................................................177
Barajar una Lista..........................................................................................................................180
Escogiendo de un conjunto de elementos sin repeticin.............................................................180
Puntos Aleatorios en el Espacio...................................................................................................182
Rotation and Orientation in Unity....................................................................................................183
Summary......................................................................................................................................183
The Difference Between Euler Angles and Quaternions.............................................................183
Euler Angles............................................................................................................................183
Quaternions.............................................................................................................................183
Implications for Scripting............................................................................................................185
Creating and Manipulating Quaternions Directly...................................................................185
Implications for Animation..........................................................................................................186
Unitys Animation Window....................................................................................................186
External Animation Sources....................................................................................................187
Solucin de Problemas(TroubleShooting)........................................................................................188
Solucin de Problemas de la Plataforma..........................................................................................188
Geforce 7300GT en OSX 10.6.4..................................................................................................188
En Windows x64, Unity falla cuando mi script lanza un NullReferenceException....................188
Edicin de Scripts........................................................................................................................188
Hay una manera de quitar la pgina de inicio en MonoDevelop?..........................................188
Por qu mi script abre en MonoDevelop cuando yo tengo seleccionado Visual Studio como mi
editor de scripts?.....................................................................................................................188
Grficas........................................................................................................................................188
Velocidad de cuadros y/o artefactos visuales lentos...............................................................188
Sombras.......................................................................................................................................189
Algunos de mis objetos, no proyectan o reciben sombras......................................................189
Luces (Lights)...................................................................................................................................190
Rendering paths...........................................................................................................................193
Ms informacin..........................................................................................................................193
Cmaras............................................................................................................................................194
Consideraciones Multi-plataforma...................................................................................................195
Entrada.........................................................................................................................................195
Teclado y joypad.....................................................................................................................195
Toques y Clics.........................................................................................................................196
Acelermetro, brjula, giroscopio y GPS...............................................................................197
Memoria, almacenamiento y desempeo de CPU.......................................................................197
Reproduccin de pelculas......................................................................................................197
Requerimientos de almacenamiento.......................................................................................198
Gestin automtica de memoria..............................................................................................198
Potencia de la CPU.................................................................................................................198
Publicando Construcciones (Publishing Builds)..............................................................................200
Construyendo reproductores independientes (Building standalone players)...............................202
Dentro del proceso de construccin.............................................................................................202
Precarga........................................................................................................................................203
-6-
Est listo para construir juegos....................................................................................................203
Caractersticas del Editor..................................................................................................................204
Ajustes del Modo 2D y 3D...............................................................................................................205
Cambiar entre modos 3D y 2D....................................................................................................205
Diferencias entre modo 2D y el modo 3D...................................................................................205
En modo de Proyecto 2D:.......................................................................................................205
En modo de proyecto 3D:.......................................................................................................206
Preferencias......................................................................................................................................207
General.........................................................................................................................................207
Herramientas Externas.................................................................................................................208
Colores.........................................................................................................................................209
Teclas...........................................................................................................................................210
Cach GI......................................................................................................................................211
2D.................................................................................................................................................212
Servidor de Cach........................................................................................................................213
Build Settings...................................................................................................................................214
Escenas en el Build (construccin)..............................................................................................214
Lista de Plataforma......................................................................................................................215
Web Player (Reproductor Web)..............................................................................................215
PC, Mac & Linux Standalone.................................................................................................215
iOS..........................................................................................................................................216
Android...................................................................................................................................216
Tizen........................................................................................................................................216
WebGL (Pre-visualizacin).....................................................................................................216
Samsumg TV...........................................................................................................................217
Windows Store........................................................................................................................217
Windows Phone 8....................................................................................................................217
Otras plataformas....................................................................................................................217
Items genricos de los builds..................................................................................................217
Las Configuraciones de Administradores(Settings Managers)........................................................218
Audio Manager (Administrador de Audio)......................................................................................219
Propiedades..................................................................................................................................219
Detalles........................................................................................................................................220
Administrador de Input (Input Manager).........................................................................................223
Propiedades..................................................................................................................................223
Detalles........................................................................................................................................224
Administrador de Red (Network Manager)......................................................................................226
Propiedades..................................................................................................................................226
Detalles........................................................................................................................................226
Administrador de Fsica (Physics Manager)....................................................................................228
Propiedades..................................................................................................................................228
Detalles........................................................................................................................................229
Player Settings..................................................................................................................................232
Ajustes Generales........................................................................................................................232
Splash Screen....................................................................................................................................234
Personal Edition...........................................................................................................................234
Pro Edition...................................................................................................................................235
Graphics Settings..............................................................................................................................243
Built-in shader settings............................................................................................................243
Always-included Shaders........................................................................................................244
-7-
Shader stripping......................................................................................................................244
Shader preloading...................................................................................................................244
Vase tambin..............................................................................................................................244
Ajustes del Orden de Ejecucin de Scripts(Script Execution Order Settings).................................245
Etiquetas y Capas(Tags & Layers)...................................................................................................247
Detalles........................................................................................................................................247
Emulacin de Red.............................................................................................................................250
Detalles tcnicos..........................................................................................................................250
Integracin en Visual Studio C#.......................................................................................................252
Qu me aporta esta caracterstica?.............................................................................................252
Cul es la diferencia entre Express y Pro?.................................................................................252
Tengo Visual Studio Express, cmo lo uso?..............................................................................252
Tengo Visual Studio Profesional, cmo lo uso?.........................................................................252
Un par de cosas a tener en cuenta:...............................................................................................252
RenderDoc Integration.....................................................................................................................254
Loading RenderDoc.....................................................................................................................254
Capturing a frame with RenderDoc.............................................................................................254
Including shader debug information............................................................................................255
Alternative graphics debugging techniques.................................................................................256
Analiticas del Editor.........................................................................................................................257
Ejemplos de datos recolectados...................................................................................................257
Desactivando las Analticas del Editor........................................................................................257
Buscar Actualizaciones.....................................................................................................................259
La Frecuencia de la Comprobacin de la Actualizacin..............................................................260
Omitiendo Actualizaciones..........................................................................................................260
Desactivando la Comprobacin de Actualizacin.......................................................................260
IME en Unity....................................................................................................................................261
Qu es Input Method Editor (IME)?............................................................................................261
IME y Unity......................................................................................................................................261
iOS...............................................................................................................................................262
Android........................................................................................................................................262
Nombres de carpetas de especiales...................................................................................................263
Assets...........................................................................................................................................263
Editor...........................................................................................................................................263
Recursos predeterminados del Editor..........................................................................................263
Gizmos.........................................................................................................................................264
Plugins.........................................................................................................................................264
Resources.....................................................................................................................................264
Standard Assets............................................................................................................................264
StreamingAssets...........................................................................................................................265
WebPlayerTemplates....................................................................................................................265
Hidden Assets (Assets ocultos)....................................................................................................265
Exporting Packages..........................................................................................................................267
Exporting New Packages........................................................................................................267
Exporting Updated Packages..................................................................................................268
Control de Versiones.........................................................................................................................269
Integracin con control de versiones (solo Licencias de Equipo)....................................................270
Por qu debera usar control de versiones?................................................................................270
Configurando su control de versiones en Unity...........................................................................270
Usando Version Control...............................................................................................................271
-8-
Ventana del Version Control........................................................................................................272
Iconos...........................................................................................................................................273
Reversin automtica de los archivos no modificados enviados.................................................274
Modo Sin Conexin.....................................................................................................................274
Solucin de Problemas(Troubleshooting)....................................................................................274
Trabajando con el Asset Server....................................................................................................275
Trabajando con otros sistemas de control de versiones...............................................................275
Integracin Perforce.........................................................................................................................276
Configurando Perforce.................................................................................................................276
Trabajando sin conexin con Perforce.........................................................................................276
Solucin de Problemas(Troubleshooting)....................................................................................276
Reversin automtica de archivos no modificados en enviar(submit)........................................276
Integracin de Plastic SCM..............................................................................................................277
Configurando Plastic SCM..........................................................................................................277
Checking out archivos con Plastic SCM......................................................................................277
Resolviendo Conflictos y fusionando con Plastic SCM..............................................................277
Bloquear Archivos con Plastic SCM...........................................................................................278
Trabajando sin conexin con Plastic SCM..................................................................................278
Usando Sistemas de Control de Versiones Externos con Unity.......................................................280
Ejemplo: Crear un nuevo proyecto e importarlo a un repositorio de subversion........................280
Smart Merge.....................................................................................................................................282
Setting Up Smart Merging in Unity.............................................................................................282
Setting up UnityYAMLMerge for Use with Third Party Tools...................................................282
P4V..........................................................................................................................................283
Git............................................................................................................................................283
Mercurial.................................................................................................................................283
SVN.........................................................................................................................................283
TortoiseGit...............................................................................................................................284
PlasticSCM..............................................................................................................................284
SourceTree..............................................................................................................................284
Solucin de Problemas (Troubleshooting) del Editor......................................................................285
Versiones......................................................................................................................................285
Activacin....................................................................................................................................285
Fallo al Arranque.........................................................................................................................286
Fuentes....................................................................................................................................286
Proyecto o Instalacin Corrupta..............................................................................................287
Rendimiento y Fallas...................................................................................................................287
Perdida del Proyecto....................................................................................................................288
Re-instalacin..............................................................................................................................288
Desarrollo Avanzado.........................................................................................................................289
La ventana del Profiler (perfilador)..................................................................................................290
Ver tambin..................................................................................................................................290
Webplayer (Reproductor Web)....................................................................................................290
iOS...............................................................................................................................................291
Android........................................................................................................................................291
Ventana del Perfilador(Profiler window)..........................................................................................293
Adjuntando a Reproductores de Unity.........................................................................................293
Controles del Profiler...................................................................................................................294
Perfilamiento Profundo (Deep Profiling)................................................................................294
Mirar el Tiempo de Sincronizacin.........................................................................................295
-9-
Linea de Tiempo del Perfilador...................................................................................................295
rea de Uso del CPU(CPU Usage Area).........................................................................................297
Seleccionando Items Individuales...............................................................................................298
Physics Markers (Marcadores de fsica)......................................................................................299
Advertencias de Rendimiento......................................................................................................300
rea de Renderizacin(Rendering Area)..........................................................................................302
rea de Memoria(Memory Area).....................................................................................................303
Vista Simple(Simple View)..........................................................................................................303
Vista detallada(Detailed View)....................................................................................................304
rea de Audio(Audio Area)..............................................................................................................306
Perfilador de Fsica(Physics Profiler)...............................................................................................309
rea de Fsica (Physics Area)......................................................................................................309
rea GPU (GPU Area).....................................................................................................................310
Multi Scene Editing (Edicin de varias escenas).............................................................................311
En el Editor..................................................................................................................................311
The Scene Divider Menu For Loaded Scenes:...................................................................313
The Scene Divider Menu For Unloaded Scenes:...............................................................314
Baking Lightmaps with Multiple Scenes.....................................................................................314
Baking Navmesh data with Multiple Scenes...............................................................................314
Playmode.....................................................................................................................................315
Scene-specific settings.................................................................................................................315
Scripting.......................................................................................................................................315
Editor Scripting.......................................................................................................................315
Runtime Scripting...................................................................................................................316
Notes............................................................................................................................................316
Tips and Tricks.............................................................................................................................317
Problemas conocidos:..................................................................................................................317
Cargando recursos en tiempo de ejecucin......................................................................................318
Asset Bundles..............................................................................................................................318
Resource Folders (Carpetas de Recursos)...................................................................................318
Tenga en cuenta:......................................................................................................................319
Descarga de Recursos..................................................................................................................319
Plugins..............................................................................................................................................321
Inspector de Plugins.........................................................................................................................322
Ajustes Predeterminados....................................................................................................324
Device-specific settings...............................................................................................................324
Ajustes del Editor...............................................................................................................324
Ajustes Standalone.............................................................................................................325
Windows Store Apps..........................................................................................................325
iOS......................................................................................................................................325
iOS......................................................................................................................................325
Managed Plugins..............................................................................................................................326
Creando un DLL..........................................................................................................................326
Usando la DLL.............................................................................................................................327
Gua paso a paso para MonoDevelop y Visual Studio.................................................................327
Configurando el proyecto........................................................................................................327
Usando la DLL en Unity.........................................................................................................328
Preparando una sesin de depuracin para la DLL.................................................................329
Cdigo.....................................................................................................................................329
Plugins Nativos.................................................................................................................................330
- 10 -
Ejemplo........................................................................................................................................330
Creando un Plugin Nativo............................................................................................................331
Ms Informacin..........................................................................................................................331
Construyendo Plugins para Plataformas de Escritorio.....................................................................332
Construyendo un Plugin para Mac OS X.....................................................................................332
Construyendo un Plugin para windows.......................................................................................332
Construyendo un Plugin para Linux............................................................................................332
Libreras de 32 y 64 bits..............................................................................................................332
Windows y Linux....................................................................................................................333
Mac OS X................................................................................................................................333
Utilizando su plugin de C#..........................................................................................................333
Implementacin...........................................................................................................................333
Ejemplos......................................................................................................................................334
Plugins Ms Simple................................................................................................................334
Renderizando desde cdigo C++............................................................................................334
Interfaz de Plugin Nativo de Bajo Nivel..........................................................................................335
Interface Registry.........................................................................................................................335
Acceso al Dispositivo de Grficas...............................................................................................335
Callbacks del Plugin en el hilo renderizando...............................................................................336
Ejemplo........................................................................................................................................337
AssetBundles....................................................................................................................................338
Construyendo Asset Bundles............................................................................................................340
Exportando AssetBundles............................................................................................................341
Shader stripping......................................................................................................................343
Herramientas de Edicin del AssetBundle...................................................................................344
Obteniendo nombres de AssetBundles....................................................................................344
Decirme cuando un asset cambia AssetBundle.......................................................................344
Variantes de AssetBundle.............................................................................................................344
Consejos de Scripting..................................................................................................................345
API para marcar el asset a un AssetBundle.............................................................................345
Construyendo Asset Bundles............................................................................................................345
APIs para manipular los nombres de AssetBundle en la base de datos de assets...................346
BuildAssetBundleOptions.......................................................................................................346
BuildAssetBundleOptions.......................................................................................................346
Archivo Manifest....................................................................................................................346
Un solo archivo manifest........................................................................................................347
Un solo manifest AssetBundle................................................................................................347
El APIs para cargar AssetBundles ha cambiado.....................................................................347
Typetrees (TiposDerboles)...................................................................................................348
Compresin de Asset Bundles..........................................................................................................349
Formato LZMA.......................................................................................................................349
Formato LZ4...........................................................................................................................349
Formato sin comprimir............................................................................................................349
El almacenamiento en Cach de Bundles Comprimidos.............................................................349
Visin general del API de la carga (load) de AssetBundles.........................................................350
Compatibilidad.............................................................................................................................351
Estructura Interna de Asset Bundle..................................................................................................352
La estructura normal del AssetBundle....................................................................................352
Estructura de un AssetBundle de escena por streaming..........................................................352
Compresin de AssetBundles......................................................................................................352
- 11 -
Descargar AssetBundles...............................................................................................................354
Poniendo todo junto................................................................................................................355
Cargar AssetBundles en el Editor...........................................................................................356
Cargar y quitar objetos desde un AssetBundle............................................................................358
Cargar objetos desde un AssetBundle de forma asncrona..........................................................358
Llevar un Seguimiento de los AssetBundles cargados................................................................360
Almacenando y cargando datos binarios en un AssetBundle...........................................................363
Protegiendo contenido......................................................................................................................364
Incluyendo scripts en AssetBundles.................................................................................................367
AssetBundles PF (Preguntas Frecuentes).........................................................................................368
Cmo uso un AssetBundle?.......................................................................................................368
Cmo uso AssetBundles en el editor?........................................................................................369
Cmo puedo almacenar en cach los AssetBundles?..................................................................371
Los AssetBundles son multi-plataforma?....................................................................................371
Cmo son los assets en AssetBundles identificados?..................................................................372
Puedo yo re-utilizar mis AssetBundles en otro juego?................................................................372
Un AssetBundle construido ahora puede ser utilizable con versiones futuras de Unity?............373
Cmo puedo listar los objetos en un AssetBundle?.....................................................................373
Cmo los AssetBundles pueden referenciar otros assets en otros AssetBundles........................373
Reduciendo el Tamao del Archivo de la Construccin...................................................................374
Sugerencias para Reducir el Tamao de Construccin................................................................375
Texturas...................................................................................................................................375
Meshes y Animaciones............................................................................................................378
DLLs.......................................................................................................................................378
Reduciendo El tamao de la Librera Mvil .NET.................................................................379
Social API (API Social)....................................................................................................................381
Serializacin JSON...........................................................................................................................384
Su simple uso...............................................................................................................................384
Sobre-escribiendo objetos con JSON..........................................................................................385
Tipos Soportados.........................................................................................................................385
Rendimiento.................................................................................................................................385
Controlando el output de ToJson()...............................................................................................386
Utilizando FromJson() cuando el tipo no es conocido con tiempo..............................................386
El Streaming de Assets.....................................................................................................................387
ScriptableObject...............................................................................................................................389
Temas Avanzados del Editor.............................................................................................................391
Construir el Pipeline de un Reproductor..........................................................................................392
Atributo de PostProcessBuild......................................................................................................393
Argumentos de la lnea de comandos...............................................................................................394
Activando Unity Silenciosamente...............................................................................................394
Ejemplo de uso.............................................................................................................................396
Argumentos de lnea de comandos especiales para el Editor de Unity.......................................397
Argumentos de lnea de comandos para un Reproductor Standalone de Unity...........................397
Argumentos de lnea de comandos para Windows Store.............................................................398
Opciones......................................................................................................................................399
Detras de Escenas.............................................................................................................................400
Qu sucede cuando Unity importa un Asset?..............................................................................400
1. Un ID nico es asignado.....................................................................................................400
2. Un archivo .meta es creado.................................................................................................400
3. El asset fuente es procesado................................................................................................401
- 12 -
A veces hay mltiplos assets creados desde una importacin.................................................402
Los ajustes de importacin pueden alterar el procesamiento del asset...................................402
AssetDatabase...................................................................................................................................404
Importar un Asset.........................................................................................................................404
Cargar un Asset............................................................................................................................404
Operaciones de Archivo usando AssetDatabase..........................................................................405
Utilizar AssetDatabase.Refresh...................................................................................................406
Archivos de escena basados en texto................................................................................................407
Descripcin del formato...................................................................................................................408
Un ejemplo de un archivo de Escena YAML...................................................................................410
YAML Class ID Reference (Referencia del ID de la clase YAML).................................................415
Clases ordenadas por nmero de ID............................................................................................415
Clases Ordenadas Alfabticamente..............................................................................................422
Cache Server (Server de Cache) (Licencia de Equipo)....................................................................430
Como configurar la Cach del Servidor (usuario).......................................................................431
Como configurar la Cach del Servidor (usuario).......................................................................431
Instalando el Cache Server como un servicio..............................................................................433
Configuracin del Cache Server..................................................................................................433
Requerimientos para la maquina alojando el Cache Server........................................................434
Cache Server FAQ (Preguntas Frecuentes)..................................................................................434
Ser que el tamao de la base de datos de mi Cache Server puede crecer indefinidamente a
medida que ms y ms recursos son importados y almacenados?..........................................434
El cache server funciona solamente con el asset server?........................................................434
Qu cambios van a causar que el archivo importado sea re-generado?..................................434
Cmo trabajo con Asset dependencies?..................................................................................435
Hay algunos problemas cuando se trabaje con materiales?....................................................435
Hay algunos tipos de assets que no sern puestos en cache por el servidor?..........................436
Modificando Assets Fuentes a travs del Scripting..........................................................................437
Instanciacin Automtica.............................................................................................................437
Modificacin Directa...................................................................................................................437
NOTA IMPORTANTE............................................................................................................437
Miembros de Clase Aplicables....................................................................................................438
Asignacin Directa......................................................................................................................438
Assets que no son instanciados automticamente........................................................................438
Notas de iOS y Android...............................................................................................................438
Extendiendo el Editor.......................................................................................................................440
Ventanas del Editor...........................................................................................................................441
Derivada de la Ventana del Editor...........................................................................................441
Mostrando la ventana..............................................................................................................442
Implementando el GUI de Su Ventana....................................................................................443
Property Drawers..............................................................................................................................445
Personalizar el GUI de miembros de script utilizando Atributos de Propiedad(Property
Attributes)....................................................................................................................................445
Personalizar el GUI de una clase Serializable.............................................................................445
Personalizar el GUI de miembros de script utilizando Atributos de Propiedad(Property
Attributes)....................................................................................................................................449
Editores Personalizados....................................................................................................................452
Haciendo un Editor Personalizado..........................................................................................453
Adiciones al Scene View.........................................................................................................456
Corriendo Cdigo Script del Editor en la Ejecucin........................................................................458
- 13 -
Licencias y Activacin.....................................................................................................................460
Activacin en linea...........................................................................................................................461
Activacin fuera de linea/ Manual....................................................................................................464
Manejando su Licencia de Unity......................................................................................................471
Mi mquina ya no es accesible:..............................................................................................471
Mi mquina todava est accesible:.........................................................................................471
Preguntas frecuentes de activacin...................................................................................................473
Guas de Actualizacin.....................................................................................................................476
Usando la Actualizacin Automtica del API..................................................................................477
Por qu mi cdigo necesita ser actualizado?..............................................................................477
The automatic updater.................................................................................................................477
Solucin de Problemas.................................................................................................................480
Limitaciones.................................................................................................................................481
Actualizarse a Unity 5.3...................................................................................................................482
Global Illumination (GI - Iluminacin Global)...........................................................................482
Shuriken.......................................................................................................................................482
Edicin Multi Escena (Multi Scene Editing)...............................................................................483
Assets Shader Pre-compilados.....................................................................................................484
Soporte OpenGL 4.x en desktop..................................................................................................484
AssetBundles...............................................................................................................................485
GetComponent(s)InChildren.......................................................................................................485
UI/default shaders ( Shaders UI/Predeterminados).....................................................................485
Luces Point y Spot que emiten sombras......................................................................................485
Matemtica de Quaternions.........................................................................................................486
JointDriveMode flags..................................................................................................................486
Legacy Light Animation..............................................................................................................486
Editor Extensions.........................................................................................................................487
Camera Depth Texture shader variable........................................................................................487
Actualizndose a Unity 5.2...............................................................................................................488
Global Illumination......................................................................................................................488
Shaders.........................................................................................................................................488
Reflection Probes.........................................................................................................................489
Shuriken.......................................................................................................................................490
UI (Interfaz de Usuario)...............................................................................................................491
Multiplayer...................................................................................................................................491
Actualizando a Unity 5.0..................................................................................................................493
AI (Inteligencia artificial) en Unity 5.0.......................................................................................494
Script Ejemplo para Rebake....................................................................................................494
Animacin en Unity 5.0...............................................................................................................496
API de Creacin de Asset........................................................................................................496
Audio en Unity 5.0.......................................................................................................................497
AudioClips (Clips de Audio)...................................................................................................497
Formato...................................................................................................................................497
Precargando y cargando datos de audio en el fondo...............................................................497
Multi-edicin...........................................................................................................................498
Force to Mono (Pasar a Mono)...............................................................................................498
GetData/SetData (ObtenerDatos/ConfigurarDatos)................................................................498
Comportamiento de pausa del AudioSource...........................................................................498
Audio Mixer (Mezclador de Audio)........................................................................................498
AudioSettings (Configuraciones de Audio)............................................................................499
- 14 -
Datos Baked en Unity 5.0............................................................................................................501
Plugins en Unity 5.0.........................................................................................................................502
Plugins Nativos en el Editor....................................................................................................502
Plugins de Audio Nativos........................................................................................................502
Fsica en Unity 5.0.......................................................................................................................504
Panorama general las actualizaciones.....................................................................................504
Cambios que probablemente afectan los proyectos:...............................................................504
La fuerza Adaptive ahora es apagada por defecto..............................................................504
Las Colisiones Suaves de Esferas son quitadas de ambos los terrenos y meshes..............504
Los Springs exponen mayores amplitudes con PhysX3.....................................................504
La configuracin del Material de Terreno de Fsica ha cambiado.....................................504
El Shape Casting y sweeping ha cambiado:.......................................................................505
Eventos del Compound Collider:.......................................................................................505
Los Triggers deben ser convexos:......................................................................................505
Los cuerpos dinmicos deben ser convexos:......................................................................505
Ragdoll joints (Articulaciones Ragdoll):............................................................................505
Las restricciones del Rigidbodys son aplicados en espacio local.....................................506
WheelCollider....................................................................................................................506
Cloth...................................................................................................................................507
Shaders en Unity 5.0.........................................................................................................................508
Los Shaders ya no aplican un multiplicador de 2x de intensidad de luz.................................508
El aumento de counts (cuentas) del interpolator y de instruccin para algunos surface shaders
.................................................................................................................................................508
La Non-uniform mesh scale (escala no-uniforme mesh) debe ser tenida en cuenta en los
shaders.....................................................................................................................................508
El manejo de Fog (niebla) fue cambiado................................................................................509
El canal Alpha de los Surface Shaders ha cambiado...............................................................509
El Sorting ( clasificacin) por indice de material ha sido quitado..........................................509
Fixed function TexGen (la funcin fija TexGen), texture matrices (matrices de textura) y
algunos SetTexture combiner modes (modos del combinador SetTexture) fueron quitados..509
Mezclar partes del fixed function shader y shaders progamables ya no es permitido............510
El compilador D3D9 shade fue cambiado de Cg 2.2 a HLSL................................................510
Las variables del shader unity_Scale han sido quitadas......................................................510
Passes de Shadows, Depth Textures y ShadowCollector........................................................511
Otras notas de actualizacin para Unity 5.0.....................................................................................512
Bloqueando / Ocultando el Cursor...................................................................................................512
Linux............................................................................................................................................512
Windows Phone 8........................................................................................................................512
Windows Store Apps....................................................................................................................513
Otros cambios del script API no pueden ser actualizados automticamente...............................513
Cambios en el Unity Package (Paquete de Unity).......................................................................513
Gua de Actualizacin de Unity 3.5 a 4.0.........................................................................................515
Estado Activo del GameObject....................................................................................................515
El comportamiento viejo:........................................................................................................515
El nuevo comportamiento:......................................................................................................515
Ejemplo:..................................................................................................................................516
El nuevo estado activo en el editor.........................................................................................516
Cmo esto afecta a proyectos existentes:................................................................................517
Cambios al pipeline de procesamiento de assets.........................................................................517
Ejemplo de una referencia siendo perdida ya que no son persistentes todava.......................518
- 15 -
Ejemplo de una referencia a unos assets previamente importados siento descartados...........518
Opcin de Lectura/Escritura del Mesh........................................................................................519
Optimizacin de Mesh.................................................................................................................519
Input Mvil..................................................................................................................................519
Actualizando a Unity 3.5..................................................................................................................521
- 16 -
Manual de Unity
El Unity Editor le permite a usted crear juegos 2D y 3D, apps y experiencias. El Manual
de Unity le ayuda a usted a aprender a cmo utilizar el Editor de Unity y sus servicios
asociados. Usted puede leer el Manual desde el inicio hasta el final o utilizarlo como
una referencia.
Para la documentacin acerca de las nuevas caractersticas introducidas en 5.3,
ver qu hay de nuevo en 5.3
Para informacin acerca de cmo actualizar sus proyectos de Unity de versiones
anteriores, ver la Gua de actualizacin.
Fuentes adicionales de informacin
Para guas adicionales, por favor ver:
Unity Answers o Unity Forums; aqu usted puede preguntar y buscar sus dudas.
La Unity Knowledge Base; una coleccin de respuestas a preguntas hechas a los
equipos de Soporte de Unity.
Tutorials; guas paso por paso en video y escritas para utilizar el Editor de Unity.
Unity Ads Knowledge Base; una gua para incluir ads (publicidad) en su juego.
Documentacin Everyplay; una gua para la plataforma de replay de juegos mviles
Everyplay.
Ayuda de la Asset Store; ayuda acerca del compartimiento de contenido en la Asset
Store.
Problemas conocidos
Hay una caracterstica que no est funcionando como usted espera que lo haga?
Puede que sea un Known Issue (problema conocido). Por favor revise el Issue
Tracker en issuetracker.unity3d.com.
- 17 -
Versiones del manual
A medida que continuamente mejoramos Unity, nuevas caractersticas son agregadas,
mejoradas - y a veces algunas caractersticas viejas son quitadas. Con cada
lanzamiento, el Manual y la Referencia de Script cambia para reflejar esto, y usted
entonces debera asegurarse de que est utilizando la versin correcta del manual
para que coincida con la versin de Unity que est utilizando.
Algunos usuarios va a necesitar utilizar versiones previas de Unity. Este podra ser el
caso para usted si est manteniendo un proyecto de legado, o si usted se ha
encerrado a una versin en particular de Unity durante un desarrollo de largo plazo
de un proyecto.
- 18 -
Versin 4.5: docs.unity3d.com/450
- 19 -
Nuevo en 5.3
Cada nuevo lanzamiento de Unity tiene ms caractersticas, mejoras a caractersticas
existentes, cambios, y arreglos. Esta pgina es una gua rpida a algunas de las nuevas
caractersticas principales o actualizaciones en el manual. Para una lista completa, ver
los Unity 5.3 release notes.
Nuevos 2D Joints, Buoyancy Effector & Sprite Creator: Nuevos tipos de joints
(articulaciones) han sido agregados, adems de un Buoyancy Effector que le permite a
usted simular volumen liquido, y un Sprite Creator, dndole a usted un marcador de
posicin de estilo primitivo" para utilizar cuando trabaje en 2D.
OpenGL Core Support: OpenGL Core es el OpenGL equivalente a DirectX 11, y abre
las mismas caractersticas avanzadas de shader en plataformas OpenGL que DirectX
11 ofrece.
Euler Curve Animation Import: Por defecto, las curvas de rotacin son re-
muestradas como quaternions durante importacin, sin embargo, a veces esto puede
ser no deseable y causa diferencias de su animacin original. Usted puede escoger
mantener sus curvas de rotacin como valores Euler.
Compresin LZ4 de Asset Bundle: Una nueva opcin de compresin para asset
bundles que permite una descompresin parcial de solamente la porcin requerida
del bundle. Esto evita tiempos de espera que sucedan anteriormente de tener que
descomprimir el bundle completo.
Sprite Flipping: Voltear sprites en los planos X o Y al marcar una casilla, en vez de la
necesidad de utilizar escalas del transform negativas.
- 20 -
informacin.
Soporte Multi-Display
Permite que uno de los clientes del juego se vuelva el nuevo anfitrin, si la conexin
existente al anfitrin existente se pierde.
Mejoras en Speedtree
Serializacin JSON
- 21 -
Trabajando con Unity
Esta seccin sirve como una introduccin completa al software de Unity.
Flujo de trabajo de Assets Cmo hacer que assets de una variedad de distintas
fuentes lleguen a Unity, incluyendo grficos, arte y sonido de programas externos,
archivos Package de otros desarrolladores, y assets ya hechos de nuestra Asset Store
y los assets estndar incluidos con Unity.
Las ventanas principales Una mirada ms profunda en cada una de las ventanas
principales que usted utilizar cada da en Unity, incluyendo accesos directos y teclas
de acceso rpido.
Creando Gameplay Cmo iniciar hacer escenas, Game Objects, Componentes, leer
input y agregar gameplay o interactividad a su proyecto.
- 22 -
herramientas externas, y extender el editor en s.
Temas Avanzados del Editor Tome el control completo del editor, entrese de cmo
funciona debajo del capote y aprenda a programar y personalizar el pipeline de assets
en el Editor en s.
- 23 -
Bases de Unity
Esta seccin es clave para empezar a utilizar Unity. Se explicar la interfaz de Unity, los
elementos del men, el uso de assets, la creacin de escenas, y la publicacin de lo
construido.
Cuando haya terminado de leer esta seccin, entender cmo funciona Unity, cmo
usarlo de manera efectiva, y los pasos para poner un juego bsico junto.
- 24 -
Descargando e Instalando Unity
Usted puede descargar e instalar el editor de Unity del sitio web de
Unity; unity3d.com/download.
Asistente de
Descarga de Unity - Deje los valores por defecto si no est seguro de qu elegir
- 25 -
Instalando Unity sin el Asistente de Descarga
Si lo prefiere, puede descargar e instalar todos los componentes por separado, sin
utilizar el Asistente de Descarga. Los componente son programas ejecutables y
paquetes instaladores normales, con lo que puede que le resulte ms sencillo,
especialmente si es un nuevo usuario de Unity, emplear el Asistente de Descarga.
Algunos usuarios, como aquellos que desean automatizar el despliegue de Unity en
una organizacin, pueden preferir una instalacin desde lnea de comando.
/S
/D=PATH
Ejemplo:
UnitySetup64.exe /S /D=E:\Development\Unity
Tenga en cuenta que aunque el proceso termine de inmediato, se tarda unos pocos
segundos antes de que los archivos hayan sido eliminados. La razn de esto es que el
desinstalador se copia en una ubicacin temporal con el fin de poder eliminarse a s
mismo. Tambin asegrese que el directorio de trabajo no est dentro de la ubicacin
- 26 -
de la instalacin de Unity, ya que no se podr eliminar la carpeta en dicho caso.
- 27 -
Instalacin de Proyecto Ejemplo
Instala a la carpeta /Users/Shared/Unity/Standard-Assets en el volumen
especificado:
sudo installer [-dumplog] -package Examples.pkg -target /
Descarga Torrent
Si usted prefiere descargar Unity va un cliente BitTorrent, usted puede obtener un
link Torrent de descarga de nuestra download archive page. No toda las versiones
tienen una descarga torrent. Si una versin est disponible de ser descargado como
un torrent, la opcin estar presente en el men desplegable downloads.
- 28 -
Proyectos 2D o 3D
Unity est igualmente equipado para crear juegos 2D y 3D. Pero, cul es la
diferencia? Cuando crea un nuevo proyecto en Unity, usted tiene la opcin de
empezar en modo 2D o 3D. Probablemente usted ya sabe qu quiere crear, pero
puede haber algunos delicados puntos que pueden afectar qu modo usar.
3D Completo
- 29 -
3D Ortogrfico
A veces los juegos utilizan geometra 3D, pero utilizan una cmara ortogrfica en vez
de una perspectiva. Esto es una tcnica comn utilizada en juegos que le dan a usted
una vista panormica de la accin, y a veces se llama 2.5D. Si usted est haciendo un
juego as, usted debera tambin utilizar el editor en modo 3D, ya que aunque no haya
una perspectiva, usted va a comenzar a trabajar con modelos 3D y assets. Usted va a
necesitar cambiar su [cmara(CamerasOverview) y vista de escena a ortogrfico sin
embargo. (escenas de arriba de Synty Studios y BITGEM)
2D Completo
Muchos juegos 3D utilizan grficas planas, a veces llamadas sprites, las cuales no
tienen geometra en tres dimensiones en absoluto. Estas son dibujadas a la pantalla
como imgenes planas, y la cmara del juego no tiene perspectiva. Para este tipo de
juego, usted debera iniciar el editor en modo 2D.
- 30 -
Gameplay 2D con grficas 3D
Este es otro estilo popular de un juego 2D, utilizando grficos 2D pero con una cmara
de perspectiva para obtener un efecto de scroll parallax. Esta es un estilo de escena
de teatro de cartn, dnde todos los grficos son planos, pero arreglados en
- 31 -
diferentes distancias de la cmara. En este caso, es bien probable que el
modo 2D encajar con su desarrollo. Sin embargo, usted querr cambiar el modo de
proyeccin de la cmara de su juego a Perspective y el modo del scene
view a 3D. (escena de arriba de One Point Six Studio)
Otros estilos
Usted podr tener planes para un proyecto que encaje con las descripciones de
arriba, o podra tener algo completamente diferente o nico en mente! Cualquier que
sea sus planes, ojal que lo de arriba le pueda dar una idea en qu modo comenzar el
editor, y recuerde que usted puede cambiar de modos en cualquier momento.
Usted puede leer ms acerca de cmo cambiar entre los modos 2D y 3D y encontrar
en ms detalle cmo los modos difieren aqu: Ajustes del modo 2D y 3D.
Creando escenas
Creando Gameplay
Visin general 2D
Gameplay en 2D
- 32 -
Empezando
Para comenzar, puede hacer clic en New project lo que le llevar a la vista Crear
Proyecto de la Pantalla de Inicio. Para averiguar ms, vea la seccin sobre esto
en Creando un Proyecto. Alternativamente, si ya tiene un proyecto Unity en su
ordenador, puede abrirlo desde esta pantalla. Vea Abrir un Proyecto para averiguar
ms.
Creando un Proyecto
Cada vez que inicie el editor de Unity. la Pantalla de Inicio se mostrar. Desde ah,
puede seleccionar NEW en la esquina superior derecha para cambiar a la vista Crear
Proyecto.
- 33 -
En la esquina superior derecha de la Pantalla de Inicio, seleccione Nuevo para abrir la
vista Crear Proyecto
- 34 -
La vista Crear Proyecto de la Pantalla de Inicio
1.El nombre por defecto para New Unity Project pero puede cambiarlo siempre que
quiera. Escriba el nombre con el que quiere llamar a su proyecto en el campo Project
name.
2.La localizacin por defecto para su carpeta personal en su ordenador, pero puede
cambiarla. BIEN POR (a) Escriba aqu dnde quiere almacenar su proyecto en su
ordenador en el campo Location. O (b) Haga clic en los tres puntos azules . Esto
mostrar el Finder de su ordenador (Mac OS X) o el Explorador de Archivos (Windows).
5.Hay una opcin para seleccionar Asset packages para incluir en su proyecto. Los
paquetes de Assets son contenido pre-elaborado, como imgenes, estilos, efectos de
- 35 -
iluminacin y y controles de personaje en juego, entre otras tiles herramientas de
creacin del juego y contenidos. Los paquetes de assets ofrecidos aqu son gratuitos,
empaquetados con Unity, y puede usarlos para comenzar con su proyecto. BIEN
PUEDE: si no quiere importar esos assets empaquetados, o no est seguro,
simplemente ignore esta opcin; puede aadir estos assets y muchos otros
posteriormente va el editor de Unity. O: Si no quiere importar esos assets
empaquetados ahora, seleccione Asset packages_ para mostrar la lista de assets
disponible, marque los que desee, y haga clic en Done__.
Abriendo un Proyecto
Cuando usted inicie el editor de Unity, se muestra y abre la vista del Project de la
pantalla de inicio. De aqu usted puede escoger el proyecto que usted desea abrir.
Para mostrar la vista de Abrir Proyecto de la Pantalla de Inicio cuando ya est en el
editor de Unity, seleccione Open Project desde el men File.
- 36 -
- 37 -
Aprendiendo la Interfaz
Tome su tiempo parar mirar la interfaz del editor y vulvase familiar con esta. La
ventana principal del editor se compone de ventanas con pestaas que pueden se re-
arregladas, agrupadas o des-adjuntadas y minimizadas.
Esto significa que el aspecto del editor puede ser diferente de un proyecto al otro, y
de un desarrollador al siguiente, dependiendo en la preferencia personal y qu tipo
de trabajo est haciendo.
- 38 -
La ventana del Proyecto
The Project Window (ventana del proyecto) muestra sus assets de librera que estn
disponibles para ser usados. Cuando usted importe sus assets a su proyecto, estos
aparecen aqu. Averigue ms acerca de la ventana Project (proyecto).
- 39 -
La Scene View (vista de escena)
La Scene View le permite a usted una navegacin visual y editar su escena. La scene
view puede mostrar una perspectiva 2D o 3D dependiendo en el tipo de proyecto en
el que est trabajando. Averigue ms acerca de la Scene View y la Game View.
- 40 -
La ventana de Jerarqua
- 41 -
Flujo de trabajo de los Assets (Asset
Workflow)
Estos pasos le darn a usted una visin general acerca de los principios bsicos de
trabajar con assets en Unity.
Un asset es una representacin de cualquier item que puede ser utilizado en su juego
o proyecto. Un asset podra venir de un archivo creado afuera de Unity, tal como un
modelo 3D, un archivo de audio, una imagen, o cualquiera de los otros tipos de
archivos que Unity soporta. Tambin hay otros tipos de asset que pueden ser creados
dentro de Unity, tal como un Animator Controller, un Audio Mixer o una Render
Texture.
- 42 -
Objetos Primitivos
Unity puede trabajar con modelos 3D de cualquier forma que puedan ser creados con
un software de modelado. Sin embargo, hay un nmero de tipos de objetos primitivos
que pueden ser creados directamente dentro de Unity,
principalmente Cube, Sphere, Capsule, Cylinder, Plane and Quad. Estos objetos son
tiles de vez en cuando en su propio derecho (un plano es utilizado comnmente
como una superficie de suelo plana, por ejemplo) pero estos tambin ofrecen una
manera rpida de crear marcadores de posicin y prototipos para propsitos de
pruebas. Cualquiera de las primitivas pueden agregarse a la escena utilizando el item
apropiado en el men GameObject > 3D Object.
Cubo
Este es un cubo simple con lados de una unidad de largo, texturizado para que la
imagen se repita en cada una de las seis caras. Como es, un cubo no es un objeto muy
comn en la mayora de los juegos pero una vez es escalado, es muy til para
paredes, postes, cajas, pasos, y otros items similares. Tambin es un objeto que sirve
como marcador de posicin para programadores para utilizar durante el desarrollo
cuando un modelo finalizado todava no est disponible. Por ejemplo, el cuerpo de
carro puede ser burdamente modelado utilizando una caja alargada con las
dimensiones correctas. Aunque esto no es til para el juego terminado, es bueno
como una representacin simple del objeto para probar el cdigo de control del carro.
Ya que los bordes de un cubo son de una sola unidad de grandes, usted puede revisar
- 43 -
las proporciones de un mesh importado a la escena agregando un cubo cerca de este
y comprando tamaos.
Esfera
Esta es una esfera de un dimetro de una unidad (ie, un radio de 0.5 unidad - media
unidad), texturizada para que la imagen entera se envuelva alrededor una vez con la
parte de arriba y abajo pellizcado-aplastado en los polos. Las esferas son
obviamente muy tiles para representar pelotas, planetas y proyectiles pero una
esfera semi-transparente puede tambin hacer un bonito dispositivo GUI para
representar el radio de un efecto.
Cpsula
Una cpsula es un cilndrico con unas tapas hemisfricas al final. El objeto es una
unidad en dimetro y dos unidades de alto (El cuerpo es una unidad y dos tapas son
- 44 -
media unidad cada una). Es texturizada para que la imagen se envuelva exactamente
una vez, pellizcada-apretada en el pice de cada hemisferio. En particular, la fsica de
un objeto redondo es a veces mejor que aquellos de una caja para ciertas tareas.
Cilindro
Este es un cilindro simple que es dos unidades de alto y una unidad de dimetro,
texturizado para que la imagen se envuelva una vez alrededor de la forma del tubo
del cuerpo pero tambin aparece separadamente en dos planos, con terminaciones
circulares. Los cilindros son muy tiles para crear postes, varillas y llantas pero usted
debera tener en cuenta que la forma del collider es de verdad una cpsula (no hay un
collider cilindro primitivo en Unity). Usted debera crear un mesh de la forma
apropiada en el programa de modelado y adjuntar un mesh collider si usted necesita
un collider cilndrico preciso para propsitos de fsica.
- 45 -
Plano
Este es un cuadrado plano con bordes con diez unidades de largo orientado en el
plano XZ del espacio de coordenada local. Es texturizado para que la imagen completa
aparezca exactamente una vez dentro del cuadrado. Un plano es til para la mayora
de tipos de superficies planas, como lo son los pisos y las paredes. Un superficie
tambin se necesita a veces para mostrar imagenes o pelculas en GUI y efectos
especiales. Aunque un plano puedeser utilizado para cosas como esto, la primitiva
simple quad es a veces un ajuste ms natural para la tarea.
Quad
- 46 -
Importando Assets
Los Assets creados afuera de Unity deben ser trados a Unity al tener el archivo ya sea
guardado directamente a la carpeta Assets de su proyecto, o copiado a esa carpeta.
Para muchos formatos comunes, usted puede guardar su archivo fuente
directamente a la carpeta Assets de su proyecto y Unity ser capaz de leerlo. Unity va
a notar cuando usted ha guardado nuevos cambios al archivo y va a re-importarlo si
es necesario.
Cuando usted cree un proyecto de Unity, usted est creando una carpeta - llamada
por su proyecto - que contiene las siguientes sub-carpetas:
La carpeta Assets es dnde usted debera guardar o copiar los archivos que usted
quiere utilizar en su proyecto.
- 47 -
La Project Window muestra assets que han sido importados a su proyecto
Los items que usted ve en la Project Window representan (en la mayora de casos)
archivos actuales en su computador, y si usted los borra dentro de Unity, usted est
borrndolos de su computador tambin.
Usted se dar cuenta en la imagen de arriba que archivos .meta listados en el sistema
de archivos, pero no son visibles en la Project Window de Unity. Unity crea estos
- 48 -
archivos .meta para cada asset y carpeta, pero esto estn ocultos por defecto, por lo
que nos podra ver en su Finder/Explorer tampoco.
Archivos de modelos 3D
Si usted guarda sus archivos 3D de la mayora del software de paquetes 3D en su
formato nativo (ej, .max, .blend, .mb, .ma) a su carpeta de Assets, estos sern
importados al llamar de vuelta a su plugin(*) de exportacin de paquetes 3D FBX. De
manera alternativa usted puede exporta como FBX de su app 3D a su proyecto de
Unity. Lea ms acerca de importar archivos 3D de su app 3D.
- 49 -
Su archivo mesh no necesita tener una animacin para ser importada. Si usted utiliza
animaciones, usted tiene la decisin de importar todas las animaciones de un solo
archivo, o importarlas en archivos separados, cada una con una animacin. Para ms
informacin acerca de importar animaciones, por favor ver importando animaciones.
Archivos de Audio
Si usted tiene archivos de audio sin comprimir a su carpeta de Assets, estos sern
importados de acuerdo a los ajustes de compresin especificados. Lea ms acerca de
la importacin de archivos de audio.
Ver tambin:
Asset Packages
Importing Meshes
Formatos 3D
Animation Import
Sprite Editor
Sprite Packer
- 50 -
Procedural Materials
Audio Files
Tracker Modules
- 51 -
Import Settings (Ajustes de Importacin)
Cada tipo de asset que Unity soporta tiene un conjunto de Import Settings (ajustes de
importacin), que afectan cmo el asset aparece o se comporta. Para ver los import
settings de un asset, seleccione el asset en el Project View. Los import settings para
este asset van a aparecer en el Inspector. Las opciones que son mostradas van a
variar dependiendo en el tipo de asset que fue seleccionado.
Por ejemplo los import settings para una imagen le va a permitirle a usted escoger si
es importada como una textura, un 2D sprite, o un normal map. Los import settings
de un archivo FBX le permite a usted ajustar la escala, generar normales, o
coordenadas de lightmap, y separar y cortar clips de animacin definidos en el
archivo.
Haciendo click en un asset de imagen en la ventana del Proyecto muestra los import
settings para ese asset en el Inspector
Para otros tipos de asset, los import settings se vern diferente. Los diferentes tipos
de ajustes que usted ver se relacionan al tipo de asset seleccionado. Aqu hay un
ejemplo de un asset de Audio, con sus import settings (ajustes de importacin)
mostradas en el inspector.
- 52 -
Un asset de audio seleccionado en la ventana del Proyecto muestra los import
settings del audio para ese asset en el Inspector
- 53 -
Importando desde la Asset Store
El Asset Store de Unity es el hogar de una creciente biblioteca de assets comerciales y
gratuitos creados por Unity Technologies y miembros de la comunidad. Hay una gran
cantidad de assets disponibles, desde texturas, modelos y animaciones hasta
ejemplos de proyectos completos, tutoriales y extensiones del editor. Estos assets son
accesibles desde una interfaz simple dentro del Editor Unity y son descargados e
importados directamente en sus proyectos.
- 54 -
Pgina principal del Asset Store.
La tienda provee una interfaz tipo browser que le permite a uno navegar ya sea por
bsqueda de texto libre o explorando los paquetes y categoras. A la izquierda de la
barra de herramientas principal estn los botones familiares de browsing para
navegar a travs de la historia de los objetos vistos:-
A la derecha de estos, estn unos botones para mirar el Download Manager y para ver
el contenido actual de su carrito de compra.
El Download Manager le permite a uno ver los paquetes que uno ya ha comprado y
- 55 -
tambin buscar e instalar cualquier actualizacin. Adicionalmente, los paquetes
estndar suministrados con Unity se pueden ver, y agregar al proyecto con la misma
interfaz.
Gestor de descargas.
en el Mac y en
C:\Users\accountName\AppData\Roaming\Unity\Asset Store
- 56 -
Asset Packages (Paquetes de assets)
Los packages de Unity son una manera til de compartir y re-utilizar proyectos al igual
que colecciones de assets; Los Standard Assets de Unity e items en la Asset Store de
Unity son proporcionados en packages (paquetes), por ejemplo. Los Packages son una
coleccin de archivos y datos de proyectos de Unity, o elementos de proyectos, los
cuales son comprimidos y almacenados en un solo archivo, similar a archivos Zip. Al
igual que archivos Zip, un package (paquete) mantiene su estructura original de
directorios cuando es desempacado, al igual que los meta-datos acerca de los assets
(al igual que ajustes de importacin y vnculos a otros assets).
Export Package
Import Package
Usted puede importar Standard Asset Packages,los cuales son colecciones de assets
pre-hechos y proporcionados con Unity, y Custom Packages, los cuales son hechos
por personas utilizando Unity.
Escoja Assets > Import Package > para importar ambos tipos de package (paquete).
- 57 -
Fig 1: Asset>Import Package men
2.Escoja Assets > Import Package > ms el nombre del package (paquete) que usted
quiere importar, y la caja de dialogo Import Unity Packagese muestra, con todos los
items en el package (paquete) pre-marcados, listos para instalar. (Ver Fig 2: New install
Import Unity Package Dialog Box.)
- 58 -
Fig 2: New install Import Unity Package dialog box
Custom Packages
Usted puede importar custom packages (paquetes personalizados) que han sido
exportados desde sus propios proyectos o desde proyectos hechos por otros usuarios
de Unity.
2.Escoja Assets > Import Package > Custom Package para traer el Explorador de
Archivos (Windows) o el Finder (Mac).
3.Seleccione el package (paquete) que usted quiere del Explorador o Finder, y la caja
de dialogo Import Unity Package se muestra, con todos los items en el package
(paquete) pre-marcados, listos para instalar. (Ver Fig 4: New install Import Unity Package
dialog box.)
- 59 -
4.Seleccione Import y Unity coloca el contenido del package (paquete) a la
carpeta Assets, la cual usted puede acceder desde su Project View.
Export Package
Utilice Export Package para exportar su propio Custom Package.
2.Escoja Assets > Export Package del men para traer la caja de dialogo Exporting
Package. (Ver Fig 6: Exporting Package dialog box.)
3.En la caja de dialogo, seleccione los assets que usted quiere incluir en el package
(paquete) haciendo click en las cajas para que estn marcadas.
- 60 -
5.Haga click en Export para traer un Explorador de Archivos (Windows) o Fi
- 61 -
Assets Estndar
Unity es descargado con mltiples Standard Assets. Estos son una coleccin de
assets que son utilizados bastante por la mayora de los clientes de Unity. Estos son:
2D, Cmaras, Personajes, CrossPlatformInput, Efectos, Entorno, ParticleSystems,
Prototyping, Utilidad, Vehculos.
- 62 -
RECOMENDACIN: Una nueva versin de los Standard Asset podran comportarse
diferente a su instalacin existente (por razones de rendimiento o calidad, por
ejemplo). Una nueva versin podra hacer que su proyecto se vea o se comporte
diferente y usted tendra que necesitar re-ajustar sus parmetros. Revise el contenido
del package y las notas de lanzamiento (release) de Unity antes de que usted decida
re-instalar.
- 63 -
Las ventanas principales
Esta seccin proporciona un tour detalla de la mayora ventanas del editor, y cmo
hacer un uso completo de ellas.
- 64 -
La ventana Project
En esta vista, puede acceder y gestionar los assets que pertenezcan a su proyecto.
El panel izquierdo del navegador muestra la estructura de carpetas del proyecto como
una lista de jerarqua. Cuando una carpeta es seleccionada de una lista haciendo click,
su contenido va a ser mostrado en el panel a la derecha. Usted puede hacer click en el
tringulo pequeo para expandir o colapsar la carpeta, mostrando cualquier carpetas
anidadas que contenga. Mantenga presionado Alt mientras usted hace click para
expandir o colapsar cualquier carpetas anidas recursivamente.
- 65 -
Los assets individuales son mostrados en el panel de la mano derecha como iconos
que indican su tipo( script, material, sub-carpeta, etc). Los iconos pueden ser
redimensionados usando el deslizador que est en la parte inferior del planel; sern
remplazados por una vista de una lista de jerarqua si el deslizador es movido hacia el
extremo izquierdo. El espacio a la izquierda del deslizador muestra el elemento
actualmente seleccionado, incluyendo una ruta completa al elemento si se est
realizando una bsqueda.
Justo encima del panel est una ruta de navegacin que muestra la ruta a la carpeta
que actualmente se est viendo. Los elementos separados de la ruta pueden ser
oprimidos(haciendo click) para una navegacin fcil alrededor de la jerarqua de la
carpeta. Cuando se busque, esta barra cambia para mostrar el rea que se est
buscando( la Carpeta raz de Assets, la Carpeta Seleccionada o el Asset Store) junto
con una cuenta de assets gratuitos y pagos disponibles en la tienda, separados por
una barra. Hay una opcin en seccin General de la ventana de preferencias de Unity
para desactivar la visualizacin de la cuenta de hits del Asset Store si no son
requeridos.
La ventana del men proporciona la opcin de cambiar a una versin de una columna
de la vista del proyecto, esencialmente solo la estructura de la lista jerarquizada sin la
vista de iconos. El cono de bloqueo alado del men le permite congelar el contenido
- 66 -
actual del view( ie, que dejen de ser cambiados por acontecimientos en otras partes)
de una manera similar al bloqueo del inspector.
Buscando
El navegador dispone de una funcin de bsqueda muy potente que especialmente
es til en el momento de ubicar assets en grandes o proyectos desconocidos. La
bsqueda bsica va a filtrar assets de acuerdo al tipo de texto en el cuadro de
bsqueda.
- 67 -
Continuando a la derecha, el siguiente botn filtra assets de acuerdo a su
etiqueta( Label) ( las etiquetas de un asset se pueden establecer en Inspector). Dado
que el nmero de etiquetas puede ser potencialmente muy grande, el men de
etiquetas tiene su propia caja de filtro mini-bsqueda.
- 68 -
Usando el Scene View
- 69 -
Navegacin del Scene View
El Scene View tiene un conjunto de controles de navegacin que le ayuda moverse
alrededor rpidamente y efectivamente
Enfocarse(Focusing)
Si usted selecciona un GameObject en la jerarquia, entonces mueva el mouse sobre la
scene view y presione F, la vista se movera para centrarse en el objeto. Esta
caracteristicas es referida como Frame Selected debajo del menu Edit. Sin
embargo, si usted quisiera bloquear la vista al objeto incluso cuando el objeto se esta
moviendo presione Shift+F, esta caracteristica se refiere como Lock View to
Selected debajo del menu Edit.
- 70 -
Orbit: Deje oprimido Alt y haga click y arrastre para orbitar la
cmara alrededor del actual punto de pivote. Esta opcin no est disponible en modo
2D ya que la vista es ortogrfica.
Action
Moverse
*Orbitar(Orbit)
Zoom
* No disponible en modo 2D.
Modo Flythrough
El modo Flythrough le permite navegar el Scene View volando en primera persona
similar a cmo se navega en muchos juegos.
Ahora puede mover la vista usando el mouse, y usar las teclas WASD para mover
izquierda/derecha adelante/atrs y las teclas Q y E para mover arriba y abajo.
- 71 -
Scene Gizmo
En la esquina superior derecha del Scene View est el Scene Gizmo. Esto muestra la
orientacin de la cmara del Scene View, y le permite modificar rpidamente el ngulo
de visin.
Usted puede hacer click en cualquiera de los brazos de los ejes conicos para snap la
Camara de la Scene View al eje que representa (eg vista de encima, vista lateral
izquierdo, vista frontal, etc.)
Usted tambien puede toggle la proyeccion de la scene view entre los modos
perspective y orthographic (ortografico) (a veces llamado isometric) al hacer click en
el cubo en el centro del Scene Gizmo, o el texo debajo de este. La vista orthographic
no tiene perspectiva, y es util combinarlo con uno de los brazos de los ejes conicos
para obtener una elevacion frontal o lateral, o una vista plana.
- 72 -
La misma escena vista en una vista de encima y frontal, en modo orthographic
Si usted lograr llevar su scene view a un estado raro (al revs, o un ngulo que
simplemente encuentra confuso!) usted puede siempre usar shift-click en el cubo al
centro del Scene Gizmo para lograr una vista de perspectiva con un ngulo que est
mirando la escena del lado y un poco desde arriba.
- 73 -
Posicionando GameObjects
Cuando construya sus juegos, usted va a poner muchos objetos diferentes en el
mundo de su juego.
En el centro del gizmo Translate (trasladar), hay tres pequeos cuadrados que pueden
ser utilizados para arrastrar el objeto dentro de un solo plano (i.e. los dos ejes pueden
moverse a la vez mientras que el tercero se mantiene quieto). Si usted tiene un mouse
de tres botones, usted puede hacer click en el botn del medio y arrastrar para
ajustar los ejes que fueron movidos recientemente (la flecha para este eje va a
cambiar a amarilla). Si usted mantiene shift presionado mientras hace click y arrastra
en el centro del Gizmo de Translate, el centro del gizmo cambia a ser un cuadrado
plano, indicando que usted puede mover el objeto alrededor del plano relativo a la
manera en que la cmara de la Scene View est mirando.
- 74 -
Con la herramienta de rotacin seleccionada, usted puede cambiar la rotacin del
objeto haciendo click y arrastrando los ejes del gizmo de la esfera metlica que
aparece alrededor de l. Al igual que con la herramienta de traslacin, el ltimo eje
que fue cambiado ser coloreado amarillo y puede ajustarse ms haciendo click en el
botn del medio del mouse y arrastrando. Piense en los crculos rojos, verdes y azules
como hacer una rotacin alrededor de los ejes rojo, verdes y azules que aparecen en
el modo de traslacin. (Rojo es el eje-x, verde es el eje-y, y azul es el eje-z.) Finalmente,
el crculo ms externo puede ser utilizado para girar el objeto alrededor del eje-z de la
scene view. Usted puede pensar de esto como girar alrededor del espacio de pantalla.
Tenga en cuenta que en modo 2D, el eje Z no puede ser cambiado en la escena
usando los gizmos. No obstante, es til para ciertas tcnicas de scripting usar el eje Z
para otros motivos; usted todava puede establecer el eje Z del Inspector en aquellos
casos.
Para la Posicin:
Para la Rotacin:
- 75 -
Global sujetar el Gizmo a la orientacin espacial del mundo.
Usted puede cambiar la distancia de la unidad que est siendo usada en unit
snapping usando el men Edit->Snap Settings
Snapping de superficies
Mientras arrastrar en el centro usando la herramienta de traslacin(Translate Tool),
usted puede mantener oprimido Shift y Control (Command en Mac) para snap el
objeto en la interseccin de cualquier Collider. Esto crea un posicionamiento preciso
de objetos increblemente rpidos.
Look-At Rotation
Mientras use la herramienta de rotacin(Rotate Tool), usted puede mantener
oprimido Shift y Control (Command en Mac) para rotar el objeto hacia un punto en
la superficie de cualquier Collider. Esto hace que la orientacin de los objetos
respecto a los otros sea simple.
Vertex Snapping
Puede ensamblar sus mundos ms fcilmente con una funcin llamada Vertex
Snapping. Esta funcin es una herramienta muy simple pero poderosa en Unity. Le
permite coger cualquier vrtice de un mesh dado y con su mouse colocar el vrtice en
la misma posicin de cualquier mesh que escoja.
Con esto, usted puede ensamblar sus mundos muy rpido. Por ejemplo, puede
alinear tramos de carretera precisamente en un juego de carreras, o posicionar
- 76 -
artculos power up en los vrtices de un mesh.
Seleccione el mesh que quiera manipular y asegrese que la Transform Tool est
activa.
Mueva su cursor encima del vrtice de su mesh que quiera usar como punto de
pivote.
Sostenga oprimido el botn izquierdo una vez su cursor est encima del vrtice
deseado y arrastre su mesh junto a cualquier otro vrtice en otro mesh.
Suelte el botn del mouse y la tecla V cuando est feliz con los resultados.
- 77 -
Barra de Control del Scene View
La barra de control del Scene View le permite escoger las varias opciones que hay
para ver la escena y tambin controlar si la iluminacin o el audio estn habilitados.
Estos controles solo afectan el scene view durante el desarrollo y no tienen efecto en
el juego construido.
Shading Mode
Textured: mostrar las superficies con sus texturas visibles.
Textured Wire: muestra los meshes con textura y con un modo de lineas de
dibujo(wireframe) superpuesto.
Miscellaneous
Shadow Cascades: show directional light shadow cascades.
Render Paths: muestra el rendering path para cada objeto utilizando un cdigo de
color: Verde indica deferred lighting, amarillo indica forward rendering y rojo
indica vertex lit.
Mipmaps: muestra tamaos de textura ideales usando un cdigo de color: rojo indica
que la textura es ms grande de lo necesario (en la distancia actual y resolucin); el
azul indica que la textura puede ser ms grande. Naturalmente, los tamaos de
textura ideales dependen en la resolucin en la que el juego va a correr y qu tan
cerca la cmara puede llegar a unas superficies en particular.
- 78 -
Deferred
These modes let you view each of the elements of the G-buffer
(Albedo, Specular, Smoothness and Normal) in isolation. See the page on Deferred
Shading for further details.
Global Illumination
The following modes are available to help visualise aspects of the Global
Illumination system: UV
Charts, Systems, Albedo, Emissive, Irradiance, Directionality and Baked. These
modes are described with examples on the GI Visualisations page.
A la derecha del men del render mode estn tres botones que cambian ciertas
opciones del scene view encendidas o apagadas:-
2D: switches between 2D and 3D view for the scene. In 2D mode the camera is
oriented looking towards positive z, with the x axis pointing right and the y axis
pointing up. Lighting: vuelve la iluminacin del scene view(luces, sombreado del objeto,
etc) prendida o apagada. Audio: prende los efectos del audio del scen view prendidos
o apagados.
El botn de efectos en s mismo acta como un switch que activa o desactiva todos
los efectos a la vez.
Men de Gizmos
Los Gizmos son grficos agregados a la escena(ya sea por Unity en s mismo o por sus
propios scripts) que ayudan con la visualizacin e identificacin de elementos en el
mundo del juego. Por ejemplo, usted puede aadir iconos para ayudar identificar sus
objetos de juego y usar grficas simples de alambre para mostrar de otra manera los
- 79 -
caminos invisibles y los elementos de posicionamiento. Mirar la pgina de Script
Reference para la funcin de OnDrawGizmos para ms informacin sobre
implementar gizmos personalizados en sus scripts.
Debajo de estas opciones hay una tabla de nombres de component con columnas
de Icon y Gizmo a la derecha. La lista es subdividida en scripts de usuario y
components integrados, y tambin mantendr una seccin de elementos
recientemente cambiados mientras hace modificaciones.
La columna de Icon le permite a usted seleccionar el icono del gizmo mostrado para
unos tipos particulares de componentes. Para components integrados, las nicas
opciones son en no tener un icono (tal como los Colliders, en dnde un gizmo con
estructura de alambre es mostrado) o simplemente en cambiar el icono estndar a
prendido y apagado ( tal como las Cmaras, Luces y fuentes de Audio, entre otros).
Para scripts de usuario, haciendo click en la columna del icono va a traer un men
- 80 -
para seleccionar el icono deseado:
- 81 -
La Vista del Juego (Game View)
Use los botones en la Barra de Herramientas para controlar el Editor Play Mode y ver
cmo se jugar el juego publicado. Mientras en Play mode, cualquier cambio que
haga ser temporal, y se va reset cuando se salga de Play mode. El UI del Editor se va
a escurecer para avisarle de esto.
Botn: Funcin:
Display Oprima esto para escoger de una lista de
- 82 -
Botn: Funcin:
cmaras si tiene varias cmaras en la escena.
usted puede asignar Displays a las cmaras en
el mdulo Camera, debajo del
desplegable Target Display. Este es
configurado a Display 1 por defecto.
Selecciona valores diferentes para probar
cmo su juego se ver en monitores con
Aspect
diferentes relaciones de aspecto. Este es
configurado a Free Aspect por defecto.
Esto le permite a usted acercarse y examinar
reas de la pantalla del juego con ms detalla,
o se puede alejar para ver la pantalla completa
dnde la resolucin de la pantalla sea mayor
Scale slider que el tamao de la ventana de la vista del
juego. usted tambin puede utilizar la scroll
wheel (rueda de desplazamiento) y el botn de
la mitad del mouse para hacer esto mientras el
juego est parado o pausado.
Habilite esto para que la vista del juego se
maximice a 100% de su ventana del Editor
Maximize on Play para una pre-visualizacin de pantalla
completa cuando ingrese al Play Mode (modo
de juego).
Habilite esto para mute cualquier audio dentro
Mute audio
del juego cuando ingrese al modo de juego.
Oprima esto para toggle (activar/desactivar) la
ventana superpuesta de Statistics
Stats (estadsticas), que contienen estadsticas de
renderizado del audio y grficas de su juego
mientras usted est en el modo de juego.
Oprima esto para toggle (activar/desactivar) la
visibilidad de Gizmos. Para solamente ver
ciertos tipos de Gizmo durante el modo de
Gizmos
juego, oprima la flecha desplegable alado de la
palabra Gizmos y solamente revise las
casillas de los tipos de Gizmo que quiere ver.
- 83 -
Men emergente de Gizmos
Junto al nombre de cada componente estn los ajustes para el icono y los gizmos
asociado a l. El ajuste del Icono revela otro men emergente que le permite a uno
escoger entre una seleccin de iconos predefinidos o un icono personalizado definido
por una textura.
- 84 -
El ajuste Gizmo le permite a uno desactivar selectivamente el dibujo de Gizmo para
unos componentes especficos.
El ajuste 3D Gizmos encima del men se refiere a los iconos Gizmo. Con el ajuste
activado, los iconos mostrarn la perspectiva de la cmara (ie, iconos para objetos
ms cerca van a estar ms grande de aquellos objetos distantes), de lo contrario,
sern el mismo tamao, independientemente de la distancia. El deslizador alado de
casilla de verificacin, le permitir variar el tamao de los iconos, lo que puede ser til
para reducir el desorden cuando hayan muchos gizmos visibles.
- 85 -
La ventana de Jerarqua (Hierarchy)
Parentesco (Parenting)
Unity usa un concepto llamado Parenting. Para hacer que cualquier GameObject sea
el hijo de otro, arrastre el hijo deseado al padre deseado en la jerarqua. Un hijo va a
- 86 -
heredar el movimiento y rotacin de su padre. Puede utilizar la flecha despegable del
padre de un objeto para mostrar o esconder el hijo segn sea necesario. Haciendo
Alt+clic en la flecha desplegable del padre se mostrarn u ocultarn todos los
GameObjects descendientes del padre, adems de los hijos inmediatos.
Ordenacin Alfanumrica
El orden de los Gameobjects en la ventana Hierarchy puede ser cambiado a una
ordenacin alfanumrica. Este modo puede activarse usando el men Edit-
>Preferences (Windows) o Unity->Preferences (Mac) que lanza la ventana de
preferencia de Unity. La opcin Enable Alpha Numeric Sorting (Activar Ordenacin
Alfanumrica) puede marcarse. Una vez se haga esto, el orden de los GameObjects en
la jerarqua puede volverse en un orden alfanumrico. Un nuevo icono aparecer en
el lado superior derecho de la ventana Hierarchy. Un men desplegable aparecer
- 87 -
para permitir elegir una ordenacin Alfabtica o de acuerdo al Transform.
Edicin Multi-Escena
Es posible tener ms de una escena abierta en la Jerarqua al mismo tiempo. Para
saber ms de esto, ver la pgina Edicin Multi Escena.
- 88 -
Usando el Inspector
- 89 -
Inspecting Game Objects
- 90 -
Inspecting Script Variables
- 91 -
por defecto en su scripts fcilmente sin modificar el cdigo.
Inspecting Assets
When an Asset is selected in your Project Window, the Inspector will show you the
settings related to how that asset is imported and used at runtime. Each type of asset
will have a different arrangement of settings. Below are some examples of the
inspector showing the import settings for other asset types:
- 92 -
Inspector showing the import settings
for an FBX file containing 3D models
- 93 -
Inspector showing the import
- 94 -
import settings for a Material Asset
Project Settings
When you select any of the Project Settings categories (found under: Editor -> Project
Settings), those settings will be displayed in the inspector. Find out more about these
on the Settings Managers page.
- 95 -
Editando Propiedades(Properties)
Las Properties son ajustes y opciones para components que pueden ser editados en
el Inspector.
Las Properties pueden ser en general categorizadas como references (vnculos para
otros objetos y assets) o values (nmeros, cajas de verificacin, colores, etc).
Referencias(References)
Las References pueden ser asignadas por arrastrar y soltar un objeto o asset del tipo
apropiado a la propiedad en el Inspector. Por ejemplo, el Mesh Filter component
necesita ser referenciado a un asset de un Mesh en algn lugar del proyecto. Cuando
el component es inicialmente creado, la reference es sin asignar.
Tambin puede usar el Object Picker para seleccionar un objeto para una propiedad
de referencia(reference). Si hace click en el icono de un crculo pequeo a la derecha
de la propiedad en el Inspector, usted vera una ventana como esta:
- 96 -
El Object Picker le permite buscar y seleccionar objetos dentro de la escena o los
assets del proyecto (el panel de informacin en la parte inferior de la ventana puede
ser subida o bajada como se desea). Escogiendo un objeto en la propiedad de
referencia es simplemente una cuestin de hacer doble click en el picker.
Valores(Values)
La mayora de los values son editados usando cajas familiares de texto, casillas de
verificacin y mens, dependiendo de su tipo (como una conveniencia, valores
numricos tambin pueden ser movidos arriba o abajo arrastrando el mouse sobre la
propiedad del nombre de la etiqueta(name label)). No obstante, hay algunos valores
de tipos ms complejos que tienen sus editores especficos. Estos son descritos aqu
abajo.
Colores(Colors)
Las propiedades de color van a abrir el Color Picker cuando es clikeado.
- 97 -
The Color Picker window
- 98 -
The HDR Color Picker window (displayed when
clicking the emission color property in the standard shader or if you use the
- 99 -
ColorUsageAttribute on a Color in your script) The
Color Picker window
Unity usa so propio color picker pero en Mac OS X usted puede escoger usar el system
picker de las Preferences (menu: Unity > Preferences y luego Use OS X Color
Picker del General panel).
Gradientes(Gradients)
En los grficos y la animacin, a menudo es til poder mezclar un color gradualmente
en otro, sobre el espacio o tiempo. Un gradient es una representacin visual de una
progresin de color, que simplemente muestra los colores principales ( que son
llamados stops y todas las sombras intermedias entre ellos:
- 100 -
Las flechas que apuntan hacia arriba a lo largo de la parte inferior de la barra de
gradiente, denota los stops. Usted puede seleccionar un stop haciendo click en l; su
valor ser mostrado en la caja de color(Color box) que abrir el picker de color
estndar cuando sea clickeado. Un nuevo stop puede ser creado haciendo click justo
abajo la barra de gradiente. La posicin de cualquiera de los stops puede ser
cambiada simplemente haciendo click y arrastrando, y un stop puede ser eliminado
con ctrl/cmd + delete.
Las fechas que apuntan hacia abajo arriba de la barra de gradiente tambin son stops
pero corresponden al alpha(transparencia) del gradiente en ese punto. Por defecto,
hay dos stops establecidos a 100% alpha (ie, completamente opaco), pero, un nmero
cualquier de stops puede ser aadidos y editados en la misma manera que los stops
de color(colour stops).
Curvas(Curves)
Una Curve es un grfico de lineas que muestra la respuesta (en el eje Y) al valor
variable de una entrada (en el eje X).
Curve editor
Las Curves son usadas en una variedad diferente de contextos dentro de Unity,
especialmente en animacin, y tienen un nmero distinto de opciones y
herramientas. Estas son explicadas en la pgina Editing Curves del manual.
Matrices(Arrays)
Cuando un script expone un array como una variable pblica, el Inspector va a
- 101 -
mostrar un editor de valor que le permite editar ambos el tamao del array y los
valores, o referencias, dentro de l.
Cuando disminuya la propiedad del Tamao, los valores alfinal del array sern
eliminados. Cuando aumente el tamao, el ltimo valor actual ser copiado a todos
los nuevos elementos agregados. Esto puede ser til cuando se ajuste un array cuyos
valores son la mayora los mismos - usted puede establecer el primer elemento y
luego cambiar el tamao para copiarlo a todos los otros elementos.
En dnde los valores de propiedad son los mismos para todos los objetos
seleccionados, el valor ser mostrado pero de otra manera, ser mostrado como un
carcter de guin. Solo components que sean comunes a todos los objetos sern
- 102 -
visibles en el Inspector. Si cualquier objeto seleccionado tiene components que no
estn presentes en otros objetos, el Inspector va a mostrar un mensaje que diga que
algunos components estn ocultos. El men de contexto para una propiedad (abierto
al hacer click derecho en su etiqueta de nombre) tambin tiene opciones que le
permite establecer su valor de cualquiera de los components seleccionados.
- 103 -
Libreras Predefinidas
Las Libreras Predefinidas contienen datos creados por el usuario y persisten entre
sesiones. Estn integradas en el Color Picker, Gradient Editor y Curve Editors.
Un preset es e.g un color, gradiente o una curva de animacin que est guardada por
el usuario.
Las libreras predefinidas contienen datos personales o datos del proyecto. Estas
pueden ser guardadas en una carpeta preferencial del usuario o en una carpeta
Editor en la carpeta de Assets. Las libreras predefinidas pueden ser agregadas a un
control de revisin para facilitar la difusin entre usuarios en un proyecto y ser
agregadas a paquetes del Asset Store.
- 104 -
hacer click en Background Color.
6.Puede cambiar el view mode entre List Mode(Modo lista) y Grid Mode(modo de
rejillas) en el men de contexto (el icono con las tres lineas)
9.En el Create New Library popup puede seleccionar si desea crear una librera
predefinida en la carpeta de Preferencias o la carpeta del Proyecto
12.Los Presets pueden ser eliminados al espichar Alt + Botn izquierda del mouse o
haciendo click derecho en el men
13.Los Presets pueden ser renombrados desde el men del botn derecho (tenga en
cuenta que los nombres solo son mostrados en List Mode)
- 105 -
Seleccionando una librera predefinida en el explorador del proyecto se va a mostrar
sus contenidos en el inspector. A partir de este punto, puede hacer click en Edit..
para modificar.
Note: The description above shows the standard Unity Color Picker. There is an option
in Preferences which allows you to use the OS X Color picker instead.
- 106 -
Opciones del Inspector
El modo de Inspector Lock y de Inspector Debug son dos opciones tiles que pueden
ayudar en su flujo de trabajo.
Bloquear(Lock)
Normalmente, el Inspector muestra detalles del objeto actualmente seleccionado,
pero, algunas veces es til tener un objeto en el inspector mientras se trabaja con
otros. Para habilitar esto, el Inspector tiene un Lock mode que usted puede activar con
el icono de un pequeo candado que est arriba a la derecha de la ventana del
Inspector.
- 107 -
Normalmente, el inspector muestra un editor personalizado para un asset o
component si alguno est disponible, pero, algunas veces es til ver las propiedades
directamente. El Modo Debug muestra solo las propiedades en vez un editor
personalizado y para los scripts, tambin muestra variables privadas (aunque sus
valores no puedan ser editados como aquellos de las variables pblicas).
- 108 -
La Barra de Herramientas
Opci
ones
del
Insp
ector
- 109 -
Buscando
Cuando se trabaje con grandes escenas complejas, puede ser til buscar objetos
especficos. Usando la funcin Search en Unity, usted puede filtrar el objeto, o grupo
de objetos que usted quiera ver. Puede buscar assets por sus nombre, por el tipo de
Component, y en algunos casos por Etiquetas de asset (ver abajo). Usted puede
especificar el modo de bsqueda seleccionando el men desplegable de bsqueda.
Bsqueda de Escena
Ambos el Scene View y la view de Jerarqua tienen un cuadro de bsqueda que le
permite filtra objetos por sus nombres. Desde que las dos vistas son bsicamente
diferentes representaciones del mismo conjunto de objetos, cualquier consulta de
bsqueda que se escriba ser duplicada en ambos cuadros de bsqueda y aplicado a
ambas vistas en el mismo tiempo. Tenga en cuenta que ambas vistas cambian poco
cuando una bsqueda est activa: el Scene View va a mostrar objetos filtrados en gris
y la view de la Jerarqua va a perder la informacin jerrquica y simplemente va a
mostrar objetos listados por nombre:
- 110 -
cuadro le permite a uno escoger si filtrar los objetos por nombre, por tipo o por
ambos a la vez.
- 111 -
See Inspector manual page for more informatation.
- 112 -
Otras Vistas
Las Views descritas en esta pgina cubren lo esencial de la interfaz de Unity. Las otras
Views en Unity estn descritas en otras partes, en pginas separadas:
El Profiler puede ser usado para investigar y encontrar los problemas que disminuyen
el rendimiento de su juego.
El Lightmapping View puede ser utilizado para gestionar los lightmaps utilizando el
mapeo de luz integrado en Unity.
El Occlusion Culling View puede ser usado para gestionar el Occlusion Culling para un
mejor rendimiento.
- 113 -
Personalizando El Espacio de Trabajo
Puede personalizar su Layout de Views haciendo click y arrastrando la ficha de
cualquier View a una de las ubicaciones. Dejando caer una ficha en Tab Area de una
ventana que ya existente, va a agregar la ficha alado de cualquier ficha que ya exista.
Alternativamente, dejando caer una ficha en cualquier Dock Zone va a aadir el View
en una nueva ventana.
Views can be
docked to the sides or bottom of any existing window
Las fichas tambin pueden ser separadas de la Ventana Principal del Editor y
organizadas en sus propias ventanas flotantes del Editor. Las ventanas flotantes
pueden contener arreglos de Views y Fichas al igual que la Ventana Principal del
Editor.
- 114 -
Floating Editor Windows are the same as the Main Editor Window, except there is no
Toolbar
Cuando haya creado un diseo del Editor de Ventanas, puede guardarlo y recuperarlo
en cualquier momento. Esto se hace expandiendo el despegable del diseo(Layout)
( encontrado en la barra de herramientas) y escogiendo Save Layout. Pngale un
nombre a su diseo y gurdelo, puede recuperarlo simplemente escogindolo en el
despegable de los diseos(Layout).
- 115 -
A completely custom Layout
En cualquier momento, puede hacer click derecho en la ficha de cualquier View para
mirar opciones adicionales como maximizar o agregar una nueva ficha en la misma
ventana.
- 116 -
Teclas de Acceso Rpido de Unity
Esta pgina da una visin general de las teclas de acceso rpido de Unity por defecto.
Tambin puede descargar un PDF de la tabla para Windows y MacOSX. Dnde un
comando tiene CTRL/CMD como parte de la pulsacin de la tecla, esto indica que la
tecla de Control debe ser usada en Windows y la tecla de Command en MacOSX
Herramientas
Tecla Comando
Q Pan (Desplazar)
W Mover
E Rotar
R Escalar
T Rect Tool (Herramienta Rect)
Z Palanca de Modo Pivote
X Palanca de Giro de Pivote
V Vertex Snap
CTRL/CMD+LMB Snap
GameObject
CTRL/CMD+SHIFT+N Nuevo game object vaco
ALT+SHIFT+N Nuevo hijo vaco a game object seleccionado
CTRL/CMD+ALT+F Mover para mirar
CTRL/CMD+SHIFT+F Alinear con la mira
Bloquea la cmara de la scene view al
SHIFT+F o double-F
GameObject seleccionado
Ventana
CTRL/CMD+1 Escena
CTRL/CMD+2 Juego
CTRL/CMD+3 Inspector
CTRL/CMD+4 Jerarqua
- 117 -
CTRL/CMD+5 Proyecto
CTRL/CMD+6 Animacin
CTRL/CMD+7 Profiler
CTRL/CMD+9 Asset store
CTRL/CMD+0 Control de Versiones
CTRL/CMD+SHIFT+C Consola
Edicin
CTRL/CMD+Z Deshacer
CTRL+Y (Windows solamente) Rehacer
CMD+SHIFT+Z (Mac solamente) Rehacer
CTRL/CMD+X Cortar
CTRL/CMD+C Copiar
CTRL/CMD+V Pegar
SHIFT+Del Duplicar
SHIFT+Del Borrar
F Seleccin de marco(central)
CTRL/CMD+F Encontrar
CTRL/CMD+A Seleccionar todo
CTRL/CMD+P Reproducir
CTRL/CMD+SHIFT+P Pausar
CTRL/CMD+ALT+P Paso
Seleccin
CTRL/CMD+SHIFT+1 Cargar Selection 1
CTRL/CMD+SHIFT+2 Cargar Selection 2
CTRL/CMD+SHIFT+3 Cargar Selection 3
CTRL/CMD+SHIFT+4 Cargar Selection 4
CTRL/CMD+SHIFT+5 Cargar Selection 5
CTRL/CMD+SHIFT+6 Cargar Selection 6
CTRL/CMD+SHIFT+7 Cargar Selection 7
- 118 -
CTRL/CMD+SHIFT+8 Cargar Selection 8
CTRL/CMD+SHIFT+9 Cargar Selection 9
CTRL/CMD+ALT+1 Guardar Selection 1
CTRL/CMD+ALT+2 Guardar Selection 2
CTRL/CMD+ALT+3 Guardar Selection 3
CTRL/CMD+ALT+4 Guardar Selection 4
CTRL/CMD+ALT+5 Guardar Selection 5
CTRL/CMD+ALT+6 Guardar Selection 6
CTRL/CMD+ALT+7 Guardar Selection 7
CTRL/CMD+ALT+8 Guardar Selection 8
CTRL/CMD+ALT+9 Guardar Selection 9
Assets
CTRL/CMD+R Refrescar
- 119 -
Creacin de Juego
Esta seccin va a explicar los conceptos bsicos que se necesitara para crear una
experiencia de juego nica, increble, y divertida. La mayora de estos conceptos
requieren que escriba Scripts. Para una visin generar de crear y trabajar con scripts,
lea la pgina Scripting
- 120 -
Escena
Las escenas contienen los objetos de su juego. Pueden ser usadas para crear un
men principal, niveles individuales, y cualquier otra cosa. Piense en cada archivo de
escena, como un nivel nico. En cada escena, usted va a colocar su ambiente,
obstculos, y decoraciones, el diseo esencial y la construccin de su juego en
pedazos.
Una nueva escena vaca, con los objetos 3D predeterminados - una cmara y una
directional light.
Cuando usted cree un nuevo proyecto de Unity, su scene view le va a mostrar una
nueva escena. Esta es una escena untitled (sin titulo) y unsaved ( sin guardar). La
escena estar vaca al menos por objetos predeterminados - ya sea una cmara
ortogrfica, o una cmara perspectiva y una directional light, dependiendo si comenz
el proyecto en modo 2D o 3D.
Guardando Escenas
Para guardar la escena en la cual usted est actualmente trabajando, escoja File >
Save Scene desde el men, o presione Ctrl/Cmd + S.
- 121 -
Algunos
assets de escena, guardados y visibles en el project view
Abriendo Escenas
Para abrir una escena, con el fin de comenzar o continuar trabajando dentro de esa
escena, haga doble click en el asset de la escena en la ventana del proyecto.
Edicin Multi-escena.
Es posible tener mltiples escenas abiertas para edicin a la vez. Para ms
informacin acerca de esto, ver Edicin Multi-escena.
- 122 -
GameObjects
El GameObject es el tipo de objeto ms importante en Unity. Es bien importante
entender qu es un GameObject, y cmo puede ser usado.
Cuatro diferentes Game Objects, un personaje animado, una luz, un rbol y una
fuente de audio
Esta seccin explica cmo GameObjects, Components, y Scripts encajan, y cmo crear
y utilizarlos.
- 123 -
GameObject
Los GameObjects son objetos fundamentales en Unity que representan personajes,
props, y el escenario. Estos no logran nada por s mismos pero funcionan como
contenedoras para Components, que implementan la verdadera funcionalidad. Por
ejemplo, un objeto Light es creado al adjuntar un componente Light a un
GameObject.
A solid cube object has a Mesh Filter and Mesh Renderer component, to draw the
surface of the cube, and a Box Collider component to represent the objects solid
volume in terms of physics.
- 124 -
Un simple GameObject con
varios componentes
Detalles
Un GameObject siempre tiene el componente Transform adjunto (para representar la
posicin y orientacin) y no es posible quitar esto. Los otros componentes que le dan
al objeto su funcionalidad pueden ser agregados del men Component del editor o
desde un script. Tambin hay muchos objetos tiles pre-construidos (figuras
primitivas, cmaras, etc) disponibles en el men GameObject > 3D Object ,
ver Primitive Objects.
Ya que los GameObjects son una parte importante de Unity, hay una seccin
de GameObjects en el manual con detalles extensivos acerca de ellos. Usted puede
encontrar ms acerca de controlar los Gameobjects desde scripts en la pgina de
referencia de scripting del GameObject.
- 125 -
Introduccin a los componentes
Como se describi anteriormente en GameObjects, un GameObject contiene
Components. Nosotros exploraremos esta relacin discutiendo un GameObject y su
ms comn Component el Transform Component. Con cualquier escena de Unity
abierta, cree un nuevo GameObject(usando Shift-Control-N en Windows o Shift-
Command-N en Mac), seleccionelo y eche un vistazo al Inspector.
Note que un GameObject vaco todava contiene un Nombre, un Tag, y un Layer. Cada
GameObject tambin contiene un Transform Component.
El Transform Component
Es imposible crear un GameObject en Unity sin un Transform Component. El
Transform Component es uno de los ms importantes Components, ya que todas las
propiedades Transform del GameObject estn habilitadas por sus usos en este
Component. Define la posicin, rotacin, y escala del GameObject en el mundo/Scene
View del juego. Si un GameObject no tuviera un Transform Component, sera nada
ms que alguna informacin en la memoria del computador. Efectivamente no
existira en el mundo.
Otros Components
El Transform Component es critico para todos los GameObjects, entonces cada
GameObject tiene uno. Pero, los GameObjects pueden tener otros Components
tambin.
- 126 -
La cmara principal, agregada a cada
escena por defecto
Mirando la Cmara Principal del GameObject, se puede ver que contiene una
coleccin diferente de Components. Especialmente, un Camera Component,
a GUILayer, un Flare Layer, y un Audio Listener. Todos estos Components
proporcionan funciones adicionales al GameObject. Sin estas, no habra nada
representando los grficos del juego para la persona que est jugando! Rigidbodies,
Colliders, Particles, y Audio son todos diferentes Components (o combinaciones de
Components) que pueden ser agregados a cualquier GameObject.
- 127 -
Usando Components
Los Components son las tuercas y tornillos de los objetos y comportamientos de un
juego. Son las piezas funcionales de cada GameObject. Si todava no entiende la
relacin entre Components y GameObjects, lea la pgina de GameObjects antes de
seguir adelante.
Recuerde que siempre puede utilizar el Inspector para ver qu Components son
adjuntados al GameObject seleccionado. A medida que los Components son
agregados y quitados, el Inspector va a siempre mostrar cules estn actualmente
adjuntos. Usted va a utilizar el Inspector para cambiar todas las propiedades de
cualquier Component (incluyendo scripts).
Agregando Components
Usted puede agregar Components al GameObject seleccionado a travs del men de
Components. Nosotros vamos a intentar esto aadiendo un Rigidbody a un
GameObject vaco que creamos. Seleccinelo y escoja Component->Physics-
>Rigidbody del men. Cuando lo haga, va a ver las propiedades del Rigidbody
aparecer en el Inspector. Si oprime Play mientras que el GameObject vaco est
seleccionado, podr tener una pequea sorpresa. Intntelo y note cmo el Rigidbody
le ha agregado funcionalidad al GameObject que estaba vaco. (La posicin Y del
- 128 -
GameObject comienza a disminuir. Esto es porqu el motor de fsica de Unity est
causando que el GameObject se caiga gracias a la gravedad.)
Otra opcin es usar el Component Browser, que puede ser activado con el
botn Add Component en el inspector del objeto.
El Component Browser
- 129 -
Puede adjuntar cualquier nmero o combinacin de Components a un solo
GameObject. Algunos Components trabajan mejor en combinacin con otros. Por
ejemplo, el Rigidbody trabaja con cualquier Collider. El Rigidbody controla el
Transform a travs del motor de fsica NVIDIA PhysX, y el Collider permite que el
Rigidbody se choque e interacte con otros Colliders.
Si quiere saber ms acerca del uso de un component en particular, puede leer sobre
cualquiera de ellos en la pgina relevante de referencia del Component. Tambin
puede acceder la pgina de referencia de un Component en Unity haciendo click en el
pequeo ? en el encabezado del Component en el Inspector.
Editando Components
Uno de los grandes aspectos de los Components son la flexibilidad. Cuando se
adjunta un Component a un GameObject, hay diferentes valores oProperties en el
Component que pueden ser ajustadas en el editor mientras se construye un juego, o
por scripts cuando est corriendo el juego. Hay dos tipos de propiedades
( Properties): Values y References.
- 130 -
Este componente contiene una sola propiedad de Reference (referencia), y siete
propiedades de valor. Un Audio Clip es la propiedad de referencia. Cuando esta
Audio Source empieza a reproducirse, intentar reproducir el archivo audio que est
referenciado en la propiedad Audio Clip. Si ninguna referencia se hace, un error va a
ocurrir ya que no hay audio para reproducir. Usted debe referenciar el archivo dentro
del Inspector. Esto es fcil como arrastrar un archivo de audio del Project View a la
- 131 -
propiedad Reference o utilizando el Object Selector (selector de objetos).
- 132 -
Las propiedades restantes en el Audio Clip son todas propiedades con valor. Estas
pueden ser ajustadas directamente desde el Inspector. Las propiedades de valor del
Audio Clip son todas palancas, valores numricos, campos desplegables, pero las
propiedades con valor tambin pueden ser strings de texto, colores, curvas, y otros
tipos. Puede leer ms acerca de estos y sobre editar propiedades de valor en la
pgina acerca de editing value properties](EditingValueProperties.html).
Reset
Este comando restablece los valores que tenan las propiedades del component antes
de la ms reciente sesin de edicin.
Eliminar(Remove)
Un comando Remove Component est disponible para casos en dnde ya no se
necesite el component adjunto al GameObject. Observe que hay algunas
combinaciones de components que dependen de cada uno (eg, Hinge Joint solo
funciona cuando un Rigidbody tambin est adjunto); ver un mensaje de advertencia
si trata de eliminar components que otros dependan.
Moverse Arriba/Abajo
Los Image Effects components cada uno aplica a un efecto visual a la vista
renderizada, pero el orden en el que los efectos son aplicados es importante. El men
de contexto tiene Move Up and Move Down
- 133 -
Copiar/Pegar
El comando Copy Component almacena el tipo y los ajustes actuales de la propiedad
de un Component. Estos luego pueden ser pegados a otro component del mismo tipo
con Paste Component Values. Tambin, puede crear un nuevo component con los
valores copiados en un objeto usando Paste Component As New.
- 134 -
Transform
El componente Transform determina la Position, Rotation, y Scale de cada objeto
en la escena. Cada GameObject tiene un Transform.
Propiedades
Propiedad: Funcin:
Posicin del Transform en coordenadas X, Y,
Position
Z.
Rotacin del Transform alrededor de los ejes
Rotation
X, Y, Z, medido en grados.
Scale (Escala) del Transform a lo largo de los
ejes X, Y y Z. Un valor de 1 es el tamao
Scale
original (el tamao con el cual el objeto fue
importado).
Los valores de posicin, rotacin, y escala de un Transform son medidos
relativamente al padre del Transform. Si el Transform no tiene padre, las propiedades
son medidas en el espacio del mundo.
- 135 -
Creando Componentes
Cuando usted cree un script y lo adjunte a un GameObject, el script aparece en el
inspector del GameObject al igual que un Componente. Esto se debe a que los scripts
se vuelve Componentes cuando son guardados - un script es simplemente un tipo
especifico de Componente. En trminos tcnicos, un script compila como un tipo de
Componente, y es tratado como cualquier otro componente por el motor de Unity.
Entonces bsicamente, un script es un componente que usted est creando usted
mismo. Usted definir sus miembros que sern expuestos en el Inspector, y se
ejecutar cualquier funcionalidad que usted ha escrito.
- 136 -
Desactivando GameObjects
Un GameObject puede ser temporalmente eliminado de una escena marcndolo
como inactivo. Esto puede ser hecho usando la propiedad activeSelf del script o con la
casilla de activacin en el Inspector
- 137 -
for (var child: Transform in g.transform) {
DeactivateChildren(child.gameObject, a);
}
}
// C#
void DeactivateChildren(GameObject g, bool a) {
g.activeSelf = a;
- 138 -
Etiquetas(Tags)
Un Tag es una palabra que vncula a uno o ms GameObjects. Por ejemplo, usted
podr definir etiquetas como Player y Enemy para personajes controlados por el
jugador y personajes no controlados por el jugador respectivamente; una etiqueta
Collectable puede ser definida para elementos que el jugador puede recoger en
la Scene; y as. Claramente, las etiquetas estn destinadas para identificar
GameObjects para propsitos de scripting. Podemos utilizarlas para escribir cdigo de
scripts para encontrar un GameObject por buscar un objeto que contenga nuestra
etiqueta deseada. Esto se logra usando la funcin GameObject.FindWithTag().
Por ejemplo:
// Instantiates respawnPrefab at the location
// of the game object with tag "Respawn"
//JS
//C#
using UnityEngine;
using System.Collections;
Instantiate(respawnPrefab, respawn.transform.position,
respawn.transform.rotation) as GameObject;
}
}
Esto nos ahorra tener que manualmente agregar nuestros GameObjects a las
propiedades expuestas de un script usando la funcin de arrastrar y soltar un
ahorro de tiempo til si el mismo cdigo del script es usado en un nmero de
GameObjects. Otro ejemplo es un TriggerCollider script de control que le permite a
uno mirar si un jugador est interactuando con un enemigo, a diferencia de, digamos,
un prop aleatorio o un elemento coleccionable. Las etiquetas hacen de este tipo de
pruebas fcil.
- 139 -
Applicando una Etiqueta(Tag)
El Inspector va a mostrar la etiqueta(Tag) y Layer->Layers drop-down menus justo
abajo del nombre de cualquier GameObject. Para aplicar una etiqueta a un
GameObject, simplemente abra el despegable de etiquetas y escoja la etiqueta que
requiera:
Las capas(Layers) aparecen similares a las etiquetas(Tags), pero son usadas para
definir cmo Unity debe representar los GameObjects en la escena. Mire la pgina
de Layers para ms informacin.
Recomendaciones
Un GameObject solo puede tener una etiqueta asignada a l.
Untagged
Respawn
Finish
EditorOnly
MainCamera
- 140 -
Player
y GameController.
Puede utilizar cualquier palabra que quiera como una etiqueta. (Puede utilizar incluso
frases cortas, pero puede que necesite agrandar el Inspector para ver el nombre
completo de la etiqueta.)
- 141 -
GameObjects Estticos
Muchas optimizaciones necesitan saber si un objeto puede moverse durante el juego.
Informacin acerca de un objeto Static (ie,que no se mueve) puede a menudo ser
precomputed en el editor en el conocimiento de que no vaya a ser invalidado por un
cambio en la posicin del objeto. Por ejemplo, la representacin (rendering) puede ser
optimizada por la combinacin de varios objetos estticos a un solo, objeto grande
conocido como un batch.
Ajustes Estticos
El Everything y Nothing activa o desactiva el estado esttico de forma simultnea para
todos los sistemas que hacen uso de ella. Estos sistemas son:
Reflection Probe: captura una vista esfrica de sus alrededores en todas las
direcciones.
Ver las pginas acerca de estos temas para ms detalles en cmo los ajustes estticos
afecta el rendimiento.
- 142 -
Prefabs
Es conveniente construir un GameObject en la escena aadiendo components y
ajustando sus propiedades al valor apropiado. Esto puede crear problemas, sin
embargo, cuando se tiene un objeto como un NPC, prop o pieza de escenario que sea
reutilizado en la escena varias veces. Simplemente copiando el objeto sin duda
producir duplicados, pero, estarn editados independientemente. Generalmente,
usted quiere que todas las instancias de un objeto en particular tengan las mismas
propiedades, para cuando se edite un objeto en la escena, usted preferir no tener
que hacer la misma edicin repetidamente a todas las copias.
Usando Prefabs
Usted puede crear un prefab seleccionando Asset > Create Prefab y luego
arrastrando un objeto de la escena al prefab asset vaco que aparezca. Si usted
luego arrastra un GameObject diferente al prefab, se le preguntar si usted quiere
remplazar su gameobject actual con el nuevo. Simplemente arrastrando el prefab
asset de la vista del proyecto a el scene view se va a crear instancias del prefab.
Objetos creados como instancias de prefab van a ser mostrados en la vista de
Jerarqua en texto azul (objetos normales son mostrados en texto negro).
- 143 -
introducir variaciones para hacerlas ms realistas. Para que quede claro, cuando una
propiedad ha sido anulada, es mostrada en el inspector con el nombre de su etiqueta
en negrilla. (Cuando se aade un componente completamente nuevo de una instancia
de un prefab, todas sus propiedades van a ser mostradas en negrilla.)
Usted tambin puede crear instancias de prefabs en el tiempo de ejecucin desde sus
scripts. Vea la pgina del manual acerca de Instantiating Prefabs para ms detalles.
El bton Select selecciona el prefab asset a partir del cual se gener la instancia. Esto
le permite editar el prefab principal y por lo tanto cambiar todas las instancias. Sin
embargo, tambin puede guardar valores anulados de una instancia de nuevo al
prefab original usando el botn Apply (valores de la posicin y rotacin del Transform
son excluidos por razones obvias). Esto efectivamente le permite editar todas las
instancias va cualquier instancia nica, y es una manera muy rpida y conveniente
para hacer cambios globales. Si usted experimenta con propiedades anuladas, pero
decide quedarse con los valores predeterminados, puede utilizar el botn Revert para
realinear la instancia con su prefab.
- 144 -
Guardando Su Trabajo
Unity almacena muchos tipos diferentes de informacin sobre su proyecto, y algunos
de ellos se almacenan de forma diferente al resto. Esto significa que cundo su trabajo
ser guardado depender de qu tipos de cambios est haciendo.
- 145 -
Guardar cambios a todo el proyecto (Save
Project)
Algunos de los cambios que pueden realizarse en Unity no son especficos de escenas,
sino que son de todo el proyecto. Estas configuraciones pueden guardarse de manera
independiente de los cambios de escena seleccionando Save Project desde el men
File.
Usar Save Project no guarda los cambios de la escena, slo los del proyecto. Puede
querer, por ejemplo, guardar su proyecto pero no los cambios de su escena si ha
usado una escena temporal para hacer algunos cambios a un prefab.
Los cambios a todo el proyecto que son guardados al hacer Save Project incluyen:
- 146 -
El men
Project Settings (Configuracin de Proyecto)
- 147 -
Network: se guarda como NetworkManager.asset
La
Configuracin del Build se guarda al hacer Save Project
- 148 -
siguientes:
Parmetros materiales
Prefabs
La creacin de nuevos assets, p.e: materiales nuevos o prefabs (Pero no los cambios
subsecuentes a esos assets)
- 149 -
Datos de navegacin horneados (baked) (se guardan al completar el proceso de
horneado (bake))
Cambios en el orden de ejecucin del script (despus de pulsar apply, este dato se
guarda en cada archivo .meta del script)
Prefa
bs
- 150 -
Instanciando Prefabs en tiempo de ejecucin
En este punto usted ya debe entender el concepto de Prefabs en un nivel
fundamental. Estos son una coleccin de GameObjects & Componentspredefinidos
que son re-utilizables a lo largo del juego. Si no sabe qu es un Prefab, le
recomendamos leer la pgina de Prefabs para una introduccin ms bsica.
Los Prefabs son muy tiles en el momento en que usted quiera instanciar
GameObjects complejos en tiempo de ejecucin. La alternativa para instanciar un
Prefab es crear un GameObject desde cero usando cdigo. Instanciar prefabs tiene
muchas ventajas frente al mtodo alternativo.
Puede instanciar un Prefab desde una linea de cdigo, con una funcionalidad
completa. En cambio, para crear GameObjects equivalentes desde cdigo toma un
promedio de cinco lineas de cdigo, pero probablemente ms.
Escenarios Comunes
Para ilustrar la fortaleza de los Prefabs, tomemos en consideracin algunas
situaciones bsicas en dnde pueden ser tiles.
- 151 -
Construyendo una pared
Esta explicacin ilustra las ventajas de usar un Prefab vs crear objetos desde el cdigo.
// C#
public class Instantiation : MonoBehaviour {
void Start() {
for (int y = 0; y < 5; y++) {
for (int x = 0; x < 5; x++) {
GameObject cube =
GameObject.CreatePrimitive(PrimitiveType.Cube);
cube.AddComponent<Rigidbody>();
cube.transform.position = new Vector3(x, y, 0);
}
}
}
}
Para usar el script de arriba, sencillamente guardamos el script y lo arrastramos a un
GameObject vaco.
Si usted ejecuta este cdigo, va a ver como una pared completa ladrillo se crea
cuando se ingresa al Play mode (modo de juego). Hay dos lineas relevantes a la
funcionalidad de cada ladrillo individual: la linea de CreatePrimitive , y la linea
de AddComponent . No es malo ahorita, pero, cada uno de los ladrillo no tiene
textura. Cada accin adicional que queramos realizarle al ladrillo, como cambiar de
textura, de friccin , o de Rigidbody mass, es en una linea extra.
Si usted crea un Prefab y realiza todas las configuraciones antes, usted solo entonces
usa una linea de cdigo para crear y configurara cada ladrillo. Esto lo libera del
mantenimiento y del cambio de mucho cdigo cuando decida que quiere hacer
cambios. Con un Prefab, usted solo hace los cambios y juega. No hay una
modificacin del cdigo necesario.
Si est utilizando un Prefab para cada ladrillo individual, este es el cdigo que necesita
- 152 -
para crear la pared.
// JavaScript
// C#
public Transform brick;
void Start() {
for (int y = 0; y < 5; y++) {
for (int x = 0; x < 5; x++) {
Instantiate(brick, new Vector3(x, y, 0), Quaternion.identity);
}
}
}
Esto no solo es muy organizado, pero tambin re-utilizable. No hay nada que diga que
estamos instanciando un cubo o que debe tener un rigidbody. Todo esto est definido
en el Prefab y se puede crear de forma rpida en el Editor.
Ahora solo necesitamos crear el Prefab, que se puede hacer en el Editor. He aqu
cmo:
5.Arrastre el cubo que creo en la Hierarchy al Prefab del Ladrillo en el Project View
6.Con el Prefab creado, usted puede con seguridad borrar el Cubo de la Jerarqua
(Delete en Windows, Command-Backspace en Mac)
- 153 -
Este es un patrn de flujo de trabajo que puede ser utilizado las veces que se quiera
en Unity. En el principio usted podr preguntarse por qu esto es mejor, ya que el
script creando el cubo usando cdigo es solo dos lineas ms largo.
Pero ya que est utilizando un Prefab, usted puede ajustar el Prefab en segundos.
Quiere cambiar la masa de todas esas instancias? Ajuste el RigidBody en el Prefab una
sola vez. Quiere usar un Material para todas las instancias? Arrastre el Material al
Prefab una sola vez. Quiere cambiar la friccin? Use un Physic Material diferente en
el collider del Prefab. Quiere agregar un Particle System a todas esas cajas? Agregue
un hijo al Prefab solo una vez.
A parte de ser ms fcil de usar, usted puede actualizar el prefab ms tarde. Entonces
si est construyendo un cohete, inmediatamente no tiene que agregar un camino de
partculas a l. Usted puede hacer eso ms tarde. Tan pronto como agregue el camino
como un GameObject hijo al Prefab, todos los cohetes instanciados tendrn caminos
de partcula. Y ltimamente, usted puede ajustar rpidamente las propiedades del
prefab de su cohete en el Inspector, haciendo ms fcil afinar su juego.
- 154 -
var rocket : Rigidbody;
var speed = 10.0;
function FireRocket () {
var rocketClone : Rigidbody = Instantiate(rocket, transform.position,
transform.rotation);
rocketClone.velocity = transform.forward * speed;
// You can also acccess other components / scripts of the clone
rocketClone.GetComponent.<MyRocketScript>().DoSomething();
}
// C#
void FireRocket () {
Rigidbody rocketClone = (Rigidbody) Instantiate(rocket, transform.position,
transform.rotation);
rocketClone.velocity = transform.forward * speed;
- 155 -
completamente diferentes, generar un prefab conteniendo el objeto roto en muchos
pedazos para simular un enemigo destrozado, o simplemente instanciar un prefab
que contiene la versin del personaje.
Cualquiera de estas opciones pueden ser logradas con una sola llamada
a Instantiate(), solamente tiene que adjuntarlo en el prefab correcto y est hecho!
La parte importante que recordar es que los restos que usted Instantiate() pueden
ser hechos por objetos completamente distintos al original. Por ejemplo, si usted
tiene un avin, va a modelar dos versiones. Una en la que el avin consista de un solo
GameObject con Mesh Renderer y scripts para la fsica de avin. Manteniendo el
modelo en un solo GameObject, su juego va a correr ms rpido ya que va a poder
hacer el modelo con menos tringulos, y como tiene menos objetos, va a
representarse ms rpido que usando partes pequeas. Ademas, mientras su avin
est felizmente volando por ah, no hay razn para tenerlo en partes separadas.
5.Agregue Box Colliders a todas las partes seleccionando todas las partes y
escogiendo Component->Physics->Box Collider
7.Ahora tiene un avin con mltiple partes explotadas, que caen al piso por fsica y
van a dejar un camino de partcula(Particle Trail) gracias al Particle System adjunto.
Oprima el botn de jugar (reproducir/play) para obtener una vista previa de cmo
reacciona su modelo y hacer cualquier ajuste necesario.
9.Arrastre el GameObject raz que contiene todas las partes del avin al Prefab.
- 156 -
var wreck : GameObject;
// Kill ourselves
Destroy(gameObject);
// C#
// Kill ourselves
Destroy(gameObject);
}
- 157 -
valores de un script es a la vez lento, poco intuitivo y no vale la pena la molestia.
Entonces use mejor Instantiate() con un Prefab! Nosotros pensamos que usted
tendr idea del por qu los Prefab son tan tiles en estos escenarios. He aqu el
cdigo necesario para estos escenarios:
// JavaScript
function Start () {
for (var i = 0; i < numberOfObjects; i++) {
var angle = i * Mathf.PI * 2 / numberOfObjects;
var pos = Vector3 (Mathf.Cos(angle), 0, Mathf.Sin(angle)) * radius;
Instantiate(prefab, pos, Quaternion.identity);
}
}
// C#
// Instantiates a prefab in a circle
void Start() {
for (int i = 0; i < numberOfObjects; i++) {
float angle = i * Mathf.PI * 2 / numberOfObjects;
Vector3 pos = new Vector3(Mathf.Cos(angle), 0, Mathf.Sin(angle)) *
radius;
Instantiate(prefab, pos, Quaternion.identity);
}
}
// JavaScript
function Start () {
for (var y = 0; y < gridY; y++) {
for (var x=0;x<gridX;x++) {
var pos = Vector3 (x, 0, y) * spacing;
Instantiate(prefab, pos, Quaternion.identity);
}
- 158 -
}
}
// C#
void Start() {
for (int y = 0; y < gridY; y++) {
for (int x = 0; x < gridX; x++) {
Vector3 pos = new Vector3(x, 0, y) * spacing;
Instantiate(prefab, pos, Quaternion.identity);
}
}
}
- 159 -
Input
Unity soporta dispositivos de entrada convencionales usados en juegos (teclado,
joypad, etc) pero tambin pantallas tctiles y la capacidad de deteccin de
movimiento de dispositivos mviles. En esta seccin se cubren estos tipos de entrada.
- 160 -
Input Convencional de Juego
Unity soporta teclado, joystick y gamepad input.
Se pueden crear botones y ejes virtuales en el Input Manager, y los usuarios finales
pueden configurar su input de teclado en un dialogo de configuracin bonito en la
pantalla.
Usted puede configurar joysticks, gamepads, teclado, y mouse, luego acceder a todos
con una interfaz simple de scripting. Tpicamente usted utiliza los ejes y botones para
- 161 -
pretender que es un control de consola. Alternativamente, se puede acceder a las
teclas en el teclado.
Cada proyecto tiene el siguiente eje input por defecto cuando es creado:
Fire1, Fire2, Fire3 estn asignadas a las teclas Control, Option (Alt), y Command,
respectivamente.
- 162 -
Usted asigna cada eje con dos botones en un joystick, mouse, o teclas del teclado.
Propiedad: Funcin:
El nombre del string usado para revisar este
Name
eje desde un script.
Nombre de valor positivo mostrado en la
Descriptive Name pestaa input del dialogo Configuration para
construcciones standalone.
Descriptive Negative Name Nombre del valor negativo mostrado en la
pestaa Input del dialogo Configuration para
- 163 -
Propiedad: Funcin:
construcciones standalone.
El botn usado para empujar el eje en la
Negative Button
direccin negativa.
El botn usado para empujar el eje en la
Positive Button
direccin positiva.
El botn alternativo usado para empujar el eje
Alt Negative Button
en la direccin negativa.
El botn alternativo usado para empujar el eje
Alt Positive Button
en la direccin positiva.
Velocidad en unidades por segundo que el eje
Gravity cae hacia el neutro cuando no hay botones
oprimidos.
Tamao de la zona muerta anloga. Todos los
Dead valores de dispositivos anlogos dentro de este
rango resultan el mapa a neutral.
Velocidad en unidades por segundo que el eje
Sensitivity va a moverse hacia el valor de destino. Esto es
solo para dispositivos digitales.
Si habilitado, el valor del eje se restablecer a
Snap cero cuando se oprima un botn de la
direccin opuesto.
Si est habilitado, los Botones
Invert Negativos proporcionan un valor positivo y
vice-versa.
Type El tipo de inputs que controlar este eje.
El eje de un dispositivo conectado que
Axis
controlar este eje.
Joy Num El Joystick conectado que controlar este eje.
Use estos ajustes para ajustar con precisin el aspecto del input. Todos estn
documentados con tooltips en el Editor tambin.
- 164 -
ltimo cuadro. Esto significa que puede ser mayor que 1 o menor que 1 cuando el
usuario mueve el mouse rpidamente.
Es posible crear ejes mltiples con el mismo nombre. Cuando obtenga el input del eje,
el eje con el mayor valor absoluto va a ser devuelto. Esto hace que sea posible asignar
ms de un dispositivo input al nombre de un eje. Por ejemplo, cree un eje para un
input de teclado y un eje para un input de joystick con el mismo nombre. Si el usuario
est usando el joystick, el input vendr del joystick, de otra manera el input vendr del
teclado. De esta forma, usted no tendr que considerar de dnde el input viene
cuando escriba scripts.
Nombres de Botones
Para mapear una tecla a un eje, usted necesita ingresar el nombre de la tecla en la
propiedad Positive Button o Negative Button en el Inspector.
Teclas
Los nombres de la tecla siguen esta convencin:
Teclas normales: a, b, c
Teclas numricas: 1, 2, 3,
Teclas de modificacin: Derecha shift, Izquierda shift, Derecha ctrl, Izquierda ctrl,
Derecha alt, Izquierda alt, Derecha cmd, Izquierda cmd
Botones del Joystick (desde cualquier joystick): joystick botn 0, joystick botn 1,
joystick botn 2,
Teclas especial: backspace, tab, return, escape, space, delete, enter, insert,
home, end, page up, page down
Los nombres utilizados para identificar las teclas son los mismo de la interfaz del
- 165 -
scripting y el Inspector.
value = Input.GetKey ("a");
Un eje tiene un valor entre 1 y 1. La posicin neutral es 0. Tenga en cuenta que las
teclas tambin son accesibles utilizando el parmetro enum KeyCode.
- 166 -
Input de Dispositivo Mvil
En dispositivos mviles, la clase Input ofrece acceso al input de la pantalla tctil,
acelermetro y geogrfico/ubicacin.
Pantalla Multi-Touch
Los dispositivos iPhone y iPod Touch son capaces de rastrear hasta cinco dedos
tocando la pantalla al mismo tiempo. Puede recuperar el estado de cada dedo
tocando la pantalla durante el ltimo cuadro accediendo a la matriz de
propiedad Input.touches.
Propiedad: Funcin:
fingerId El nico ndice para un toque.
position La posicin en la pantalla del tacto.
El cambio de la posicin en la pantalla desde
deltaPosition
el ltimo cuadro.
El tiempo que ha pasado desde el ltimo
deltaTime
cambio de estado.
La pantalla del Iphone/Ipad es capaz de
distinguir tactos rpidos del dedo hechos por
el usuario. Este contador le va a permitir saber
tapCount qu tantas veces el usuario a tocado la pantalla
sin mover un dedo a los lados. Los
dispositivos Android no tienen un nmero
contable de tactos, este campo siempre es 1.
Describe lo que se llama phase (fase) o el
estado del toque. Le puede ayudar a
phase
determinar si el toque acaba de empezar, si el
usuario movi el dedo o si levanto el dedo.
La fase puede ser una de las siguientes:
- 167 -
Began Un dedo acaba de tocar la pantalla.
Moved Un dedo se movi en la pantalla.
Un dedo est tocando la pantalla pero no se ha
Stationary
movido desde el ltimo cuadro.
Un dedo fue alzado desde la pantalla. Esta es
Ended
la fase final de un toque.
El sistema ha cancelado el rastreo para el
toque, como cuando (por ejemplo) el usuario
Canceled pone el dispositivo a su cara o ms de cinco
toques pasan simultneamente. Esta es la fase
final del toque.
A continuacin se muestra un script de ejemplo que disparar un rayo cuando el
usuario golpee la pantalla:
var particle : GameObject;
function Update () {
for (var touch : Touch in Input.touches) {
if (touch.phase == TouchPhase.Began) {
// Construct a ray from the current touch coordinates
var ray = Camera.main.ScreenPointToRay (touch.position);
if (Physics.Raycast (ray)) {
// Create a particle if hit
Instantiate (particle, transform.position, transform.rotation);
}
}
}
}
Simulacin de Mouse
Encima del soporte nativo tctil Unity iOS/Android proporciona una simulacin de
mouse. Usted puede utilizar una funcionalidad de mouse desde la clase
estndar Input. Tenga en cuenta que dispositivos iOS/Android estn diseados para
soportar mltiples toques de dedos. Utilizar la funcionalidad mouse, solo va a
soportar un solo toque de dedo. Tambin, el toque de dedo en dispositivos mviles se
puede mover de una rea a otra sin un movimiento entre ellos. La simulacin de
mouse en dispositivos mviles va a proporcionar movimiento, por lo que es muy
diferente comparado a un input tctil. La recomendacin es utilizar la simulacin
mouse durante un desarrollo temprano pero utilizar input tctil tan pronto como sea
posible.
- 168 -
Acelermetro
A medida que el dispositivo mvil se mueva, un acelermetro integrado reporta una
aceleracin lineal. cambios a lo largo de los tres principales ejes en un espacio
tridimensional. Aceleracin a lo largo de cada eje es reportado directamente por el
hardware como valores de una fuerza gravitacional(G-force values). Un valor de 1.0
representa una carga de aproximadamente +1g a lo largo del eje determinado
mientras un valor de 1.0 representa 1g. Si mantiene el dispositivo en posicin
vertical (con el botn de inicio en el fondo) al frente de usted, el eje X es positivo a lo
largo de la derecha, el eje Y es positivo directamente arriba, y el eje Z es apuntando
positivamente hacia usted.
// Move object
transform.Translate (dir * speed);
}
- 169 -
var AccelerometerUpdateInterval : float = 1.0 / 60.0;
var LowPassKernelWidthInSeconds : float = 1.0;
Usted puede acceder a todas las mediciones realizadas por el acelermetro durante el
cuadro. El siguiente cdigo ilustrar un simple promedio de todos los eventos del
acelermetro recolectados dentro el ltimo cuadro:
var period : float = 0.0;
var acc : Vector3 = Vector3.zero;
for (var evnt : iPhoneAccelerationEvent in iPhoneInput.accelerationEvents) {
acc += evnt.acceleration * evnt.deltaTime;
period += evnt.deltaTime;
}
if (period > 0)
acc *= 1.0/period;
return acc;
- 170 -
Teclado mvil
En la mayora de los casos, Unity manejar input de teclado automticamente para
elementos GUI pero tambin es fcil mostrar el teclado en demanda desde un script.
Elementos GUI
El teclado aparecer automticamente cuando un usuario golpee en elementos GUI
editables. Actualmente, GUI.TextField, GUI.TextArea y GUI.PasswordField va a mostrar
el teclado; vea la documentacin GUI class para ms detalles.
Property: Function:
Letras. Pueden ser cambiadas al teclado con
TouchScreenKeyboardType.Default
nmeros y puntuacin.
Letras. Pueden ser cambiadas al teclado con
TouchScreenKeyboardType.ASCIICapable
nmeros y puntuacin.
TouchScreenKeyboardType.NumbersAndP Nmeros y puntuacin. Pueden ser cambiadas
unctuation al teclado con letras.
Letras con barras y botones .com .Pueden ser
TouchScreenKeyboardType.URL cambiadas a teclado con nmeros y
puntuacin.
TouchScreenKeyboardType.NumberPad Solo nmeros de 0 a 9.
Teclado usado para introducir nmeros de
TouchScreenKeyboardType.PhonePad
telfono.
TouchScreenKeyboardType.NamePhonePa Letras. Pueden ser cambiadas al teclado de
d telfono.
Letras con signo @. Pueden ser cambiadas a
TouchScreenKeyboardType.EmailAddress
teclado con nmeros y puntuacin.
- 171 -
Vista Preliminar de Texto
Por defecto, una caja de edicin va a ser creada y colocada encima del teclado
despus de que aparezca. Esto funciona como una vista preliminar del texto que el
usuario est escribiendo, entonces el texto es siempre visible para el usuario. No
obstante, puede deshabilitar la vista preliminar del texto
seleccionando TouchScreenKeyboard.hideInput a true. Tenga en cuenta que esto
funciona solo para ciertos tipos de teclado y modos de input. Por ejemplo, esto no va
a servir para los teclados de telfono e input de texto de varias lineas. En esos casos,
la caja de edicin siempre va aparecer. TouchScreenKeyboard.hideInput es una
variable global y va afectar todos los teclados.
Property: Function:
Devuelve true si el teclado es completamente
visible visible en la pantalla y puede ser usada para
introducir caracteres.
Devuelve la posicin y dimensiones del
area
teclado.
Devuelve true si el teclado est activado. Esta
propiedad no es una propiedad esttica. Usted
active
debe tener una instancia de teclado para usar
esta propiedad.
Tenga en cuenta que TouchScreenKeyboard.area va a devolver un Rect con una
posicin y tamao establecido en 0 hasta que el teclado sea completamente visible en
la pantalla. Usted no debe consultar este valor inmediatamente despus
de TouchScreenKeyboard.Open(). La secuencia de eventos de teclado es la siguiente:
- 172 -
Input Seguro de Texto
Es posible configurar el teclado para esconder smbolos cuando se est escribiendo.
Esto es til cuando los usuarios son requeridos en anotar informacin sensible (tal
como contraseas). Para abrir manualmente el teclado con input seguro de texto
activado, use el siguiente cdigo:
TouchScreenKeyboard.Open("", TouchScreenKeyboardType.Default, false, false,
true);
Teclado de Alerta
Para mostrar el teclado con un fondo semi-transparente en vez del opaco clsico,
llamar TouchScreenKeyboard.Open() como sigue :
TouchScreenKeyboard.Open("", TouchScreenKeyboardType.Default, false, false,
true, true);
Classic keyboard
- 173 -
Alert keyboard
- 174 -
Transforms
El Transform es usado para almacenar la posicin, rotacin, escala y el estado de
parenting de un GameObject y por lo tanto es importante. Un GameObject siempre va
a tener adjunto un Transform component - no es posible quitar un Transform o crear
un GameObject sin uno.
Editando Transforms
Transforms son manipulados en espacio 3D en el eje X, Y, y Z o en espacio 2D en solo
X y Y. En Unity, estos ejes son representados por los colores rojo, verde, y azul
respectivamente.
Un transform mostrando la
codificacin de color de los ejes
Las herramientas pueden ser usadas en cualquier objeto en la escena. Cuando haga
click en un objeto, usted va a ver la herramienta gizmo aparecer dentro de l. La
apariencia del gizmo depende en qu herramienta es seleccionada.
- 175 -
Transform
gizmo
Cuando haga click y arrastre en uno de los tres ejes de gizmo, usted ver que sus
colores cambiarn a amarillo. A medida que arrastre el mouse, usted vera el objeto
trasladarse(translate), rotar(rotate), o escalar(scale) a lo largo del eje seleccionado.
Cuando suelte el botn del mouse, el eje se mantiene seleccionado. Si usted
posteriormente arrastra con el botn del medio del mouse, el ltimo eje seleccionado
va a ser usado sin importar la posicin del mouse.
Tambin hay una opcin adicional en el modo Translate para bloquear el movimiento
a un plano en particular (ie, permite arrastrar dos de los ejes mientras se mantiene el
tercero sin cambios). Los tres cuadrados pequeos coloridos alrededor del centro del
Translate gizmo activa el bloqueo para cada plano; los colores corresponden al eje
que va a ser bloqueado cuando el cuadrado sea clickeado (eg, azul bloque el eje Z).
- 176 -
Parentesco
Parenting es uno de los conceptos ms importantes que entender cuando se usa
Unity. Cuando un GameObject es un Parent de otro GameObject, el
GameObject Child va a moverse,rotar, y escalar exactamente como su padre(parent)
lo haga. Usted puede pensar de parenting como la relacin entre sus brazos y su
cuerpo; cuando su cuerpo se mueva, sus brazos tambin se mueven junto con l.
Objetos hijo(Child) pueden tener otros hijos(children) de s mismo y as. Entonces sus
manos pueden ser pensadas como children de sus brazos y luego cada mano tiene
varios dedos, etc. Cualquier objeto puede tener mltiplos hijos(children), pero solo un
padre(parent). Estos mltiplos niveles de relaciones padre-hijo forman
una jerarquaTransform. El objeto en la parte superior de la jerarqua (ie, el nico
objeto en la jerarqua que no tiene un parent) es conocido como el root.
Tenga en cuenta que los valores del Transform en el Inspector para cualquier
GameObject hijo(Child) son mostrados relativamente a los valores del Transform del
padre(Parent). Estos valores son referidos como local coordinates.. Devolviendo a la
analoga del cuerpo y los brazos, la posicin de su cuerpo puede moverse cuando
camine, pero sus brazos se van a mantener adjuntos en la misma posicin relativa.
Para la construccin de una escena, es usualmente suficiente trabajar con
- 177 -
coordenadas locales para objetos hijo, pero en la experiencia de juego, a menudo es
til encontrar su posicin exacta en el espacio universal o global coordinates. El
Scripting API para el Transform Component tiene propiedades separadas para
posiciones locales y globales, rotacin y escala y tambin le permite a usted convertir
cualquier punto entre coordenadas locales y globales.
Por razones de rendimiento, un objeto hijo de un padre con una escala no uniforme,
no va a tener su escala automticamente actualizada cuando rote. Como un
resultado, la forma del hijo puede parecer cambiar abruptamente cuando la escala
eventualmente es actualizada, digamos si el objeto hijo es separado del padre.
La Importancia de la Escala
La escala del Transform determina las diferencias entre el tamao de un mesh en su
aplicacin de modelado y el tamao de ese mesh en Unity. El tamao del mesh en
Unity (y por lo tanto la escala del Transform) es muy importante, especialmente
durante la simulacin de fsica. Por defecto, el motor de fsica asume que una unidad
del espacio del mundo corresponde a un metro. Si un objeto es muy grande, puede
- 178 -
parecer que cayera en cmara lenta; la simulacin es actualmente correcta ya que
efectivamente, usted est viendo un objeto muy grande caer una gran distancia.
Los Particle Systems no son afectados por la Scale del Transform. Para escalar un
Particle System, usted tiene que modificar las propiedades en el emisor del sistema
de partculas, Animator y Renderer.
Usted puede cambiar los colores de los ejes del Trasnform (y otros elementos UI)
desde las preferencias (Menu: Unity > Preferences y luego seleccionar el panel
de Colors & keys).
Cambiar la Scale (escala) afecta la posicin de los transforms hijo. Por ejemplo
escalar el padre a (0,0,0) va a posicionar todos los hijos en (0,0,0) relativos al padre.
- 179 -
- 180 -
Agregando Aleatoriamente Elementos de
Juego
Los elementos o valores aleatoriamente escogidos son importantes en muchos
juegos. Esta seccin le muestra a usted cmo usar las funciones aleatorias integradas
en Unity para implementar algunas mecnicas comunes de juego.
Puede visualizar estos diferentes resultados como una tira de papel dividido en
secciones, cada una de las cuales ocupa una fraccin de la longitud total de la tira. La
fraccin ocupada es igual a la probabilidad que tiene eso de ser escogido. Hacer la
eleccin es equivalente a elegir un punto al azar a lo largo de la longitud de la tira
(digamos lanzando un dardo) y luego ver en qu seccin est.
- 181 -
En el script, la tira de papel es en realidad una matriz de floats que contienen las
diferentes probabilidades de los artculos en orden. El punto aleatorio se obtiene
multiplicando Random.value por el total de todos los floats en la matriz (no tienen por
qu sumar 1; la cosa importante es el tamao relativo de los diferentes valores). Para
encontrar en cul elemento de la matriz est el punto, en primer lugar, revisar para
ver si es menor que el valor en el primer elemento. Si es as, entonces el primer
elemento es el seleccionado. De lo contrario, resta el valor del primer elemento del
valor del punto, y lo compara con el segundo elemento y as sucesivamente hasta que
se encuentre el elemento correcto. En cdigo, esto se vera algo como lo siguiente:-
//JS
return probs.Length - 1;
}
//C#
float total = 0;
- 182 -
if (randomPoint < probs[i]) {
return i;
}
else {
randomPoint -= probs[i];
}
}
return probs.Length - 1;
}
//C#
- 183 -
ser escogidos, mientras que partes ms pendientes tienen una probabilidad menor
de ser escogidas.
Una curva
lineal no pondera valores en absoluto; la coordenada horizontal es igual a la
coordenada vertical para cada punto en la curva.
- 184 -
Esta curva es
menos profunda al principio, y luego ms empinado al final, por lo que tiene una
mayor probabilidad de valores ms bajos y una probabilidad reducida de valores
mayores. Usted puede ver que la altura de la curva en la linea dnde x=0.5 es acerca
de 0.25, lo cual significa que tiene una probabilidad mayor a la mitad de obtener un
valor entre 0 y 0.25.
- 185 -
Esta curva es
menos profunda al principio y al final, haciendo que los valores cercanos a los
extremos sea ms comn, y en la mitad pendiente lo cual hara esos valores muy
raros. Tenga en cuenta que con esta curva, los valores de altura han aumentado para
arriba: el final de la curva est en 1, y la parte superior de la curva est en 10, lo cual
significa que los valores producidos por la curva estarn en el rango de 110, en vez
de 01 como las curvas anteriores.
Tenga en cuenta que estas curvas no son curvas distribuidas con probabilidad como
las que usted encontrara en una gua de teora de probabilidad, pero son ms como
curvas de probabilidad inversamente acumulativas.
Al definir una variable AnimationCurve pblica en uno de sus scripts, usted ser capaz
de ver y editar la curva a travs de la ventana del Inspector visualmente, en vez de
necesitar calcular valores.
- 186 -
normalmente para que no salgan en una secuencia predecible. Usted puede barajar
los elementos de una matriz, visitando cada elemento e intercambindolos con otro
elemento situado en un ndice al azar de la matriz:-
//JS
//C#
//JS
- 187 -
function ChooseSet(numRequired: int) {
var result = new Transform[numRequired];
if (numToChoose == 0)
break;
}
}
return result;
}
//C#
Transform[] spawnPoints;
if (numToChoose == 0) {
break;
}
}
}
return result;
}
Tenga en cuenta que aunque la seleccin es al azar, los elementos en el conjunto
elegido estarn en el mismo orden que tenan en la matriz original. Si los elementos
se van a utilizar de uno en uno en secuencia entonces el orden puede hacer que en
parte sean predecibles, por lo que puede ser necesario barajar la matriz antes de su
uso.
- 188 -
component de un Vector3 a un valor devuelto por un Random.value:-
var randVec = Vector3(Random.value, Random.value, Random.value);
Cuando el volumen es una esfera (ie, cuando usted quiere un punto aleatorio dentro
un radio dado de un punto de origen), usted puede utilizar Random.insideUnitSphere
multiplicado por el radio deseado:-
var randWithinRadius = Random.insideUnitSphere * radius;
- 189 -
Rotation and Orientation in Unity
Summary
Rotations in 3D applications are usually represented in one of two ways,
Quaternions or Euler angles. Each has its own uses and drawbacks. Unity uses
Quaternions internally, but shows values of the equivalent Euler angles in the
inspector to make it easy for you to edit.
Benefit: Euler angles have an intuitive human readable format, consisting of three
angles.
Benefit: Euler angles can represent the rotation from one orientation to another
through a turn of more than 180 degrees
Limitation: Euler angles suffer from Gimbal Lock. When applying the three rotations
in turn, it is possible for the first or second rotation to result in the third axis pointing
in the same direction as one of the previous axes. This means a degree of freedom
has been lost, because the third rotation value cannot be applied around a unique
axis.
Quaternions
Quaternions can be used to represent the orientation or rotation of an object. This
representation internally consists of four numbers (referenced in Unity as x, y, z & w)
however these numbers dont represent angles or axes and you never normally need
to access them directly. Unless you are particularly interested in delving into
the mathematics of Quaternions, you only really need to know that a Quaternion
represents a rotation in 3D space and you will never normally need to know or modify
the x, y & z properties.
In the same way that a Vector can represent either a position or a direction (where the
- 190 -
direction is measured from the origin), a Quaternion can represent either an
orientation or a rotation - where the rotation is measured from the rotational origin
or Identity. It because the rotation is measured in this way - from one orientation to
another - that a quaternion cant represent a rotation beyond 180 degrees.
In Unity all Game Object rotations are stored internally as Quaternions, because the
benefits outweigh the limitations.
In the Transform Inspector however, we display the rotation using Euler angles,
because this is more easily understood and edited. New values entered into the
inspector for the rotation of a Game Object are converted under the hood into a new
Quaternion rotation value for the object.
The
rotation of a Game Object is displayed and edited as Euler angles in the inspector, but
is stored internally as a Quaternion
- 191 -
to X: 0, Y: 5, Z: 0 (or thereabouts). This is because the rotation was converted to a
Quaternion which does not have the concept of A full 360-degree rotation plus 5
degrees, and instead has simply been set to be oriented in the same way as the result
of the rotation.
Creating:
Quaternion.LookRotation
Quaternion.AngleAxis
Quaternion.FromToRotation
Manipulating:
Quaternion.Slerp
Quaternion.Inverse
Quaternion.RotateTowards
However sometimes its desirable to use Euler angles in your scripts. In this case its
important to note that you must keep your angles in variables, and only use them
to apply them as Euler angles to your rotation. While its possible to retrieve Euler
angles from a quaternion, if you retrieve, modify and re-apply, problems will arise.
Here are some examples of mistakes commonly made using a hypothetical example
of trying to rotate an object around the X axis at 10 degrees per second. This is what
- 192 -
you should avoid:
// rotation scripting mistake #1
// the mistake here is that we are modifying the x value of a quaternion
// this value does not represent an angle, and will not produce desired
results
void Update () {
}
// rotation scripting mistake #2
// the mistake here is that we are reading, modifying then writing the Euler
// values from a quaternion. Because these values calculated from a
Quaternion,
// each new rotation may return very different Euler angles, which may
suffer from gimbal lock.
void Update () {
}
And here is an example of using Euler angles in script correctly:
// rotation scripting with Euler angles correctly.
// here we store our Euler angle in a class variable, and only use it to
// apply it as a Euler angle, but we never rely on reading the Euler back.
float x;
void Update () {
x += Time.deltaTime * 10;
transform.rotation = Quaternion.Euler(x,0,0);
These rotations values can frequently exceed range expressable by quaternions. For
example, if an object should rotate 720 degrees in-place, this could be represented by
Euler angles X: 0, Y: 720, Z:0. But this is simply not representable by a Quaternion
value.
- 193 -
how the rotation should be interpolated - using Quaternion or Euler interpolation. By
specifying Euler interpolation you are telling Unity that you want the full range of
motion specified by the angles. With Quaternion rotation however, you are saying you
simply want the rotation to end at a particular orientation, and Unity will use
Quaternion interpolation and rotate across the shortest distance to get there.
See Using Animation Curves for more information on this.
For example, imagine two keyframes, 6 frames apart, with values for X as 0 on the first
keyframe and 270 on the second keyframe. Without resampling, a quaternion
interpolation between these two keyframes would rotate 90 degrees in the opposite
direction, because that is the shortest way to get from the first orientation to the
second orientation. However by resampling and adding a keyframe on every frame,
there are now only 45 degrees between keyframes so the rotation will work correctly.
There are still some situations where - even with resampling - the quaternion
representation of the imported animation may not match the original closely enough,
For this reason, in Unity 5.3 and onwards there is the option to turn off animation
resampling, so that you can instead use the original Euler animation keyframes at
runtime. For more information, see Animation Import of Euler Curve Rotations.
- 194 -
Solucin de Problemas(TroubleShooting)
Esta seccin se ocupa de los problemas ms comunes que pueden surgir cuando se
use Unity. Cada plataforma es tratada en separado aqu abajo.
Edicin de Scripts
Hay una manera de quitar la pgina de inicio en MonoDevelop?
S. En las preferencias de MonoDevelop, vaya a la seccin Visual Style, y desmarque la
opcin Load welcome page on startup.
Grficas
Velocidad de cuadros y/o artefactos visuales lentos
Esto puede ocurrir si los controladores de la tarjeta de vdeo no estn a la fecha.
Asegrese de tener los ltimos controladores oficiales de su vendedor de tarjeta.
- 195 -
Sombras
Las sombras tambin requieren cierto soporte de hardware de grficos. Mirar la
pgina Shadows para detalles.
Las sombras en Android y iOS tienen estas limitaciones : las sombras suaves no estn
disponibles, y en forward rendering path una sola luz direccional puede proyectar
sombras. No hay lmite para el nmero de luces proyectando sombras, en la ruta de
renderizacin diferida.
Solo objetow opacos proyectan y reciben sombras. Esto significa que objetos
utilizando el Transparent integrado o Particle Shaders no van a proyectar sombras. En
la mayora de casos, es posible usar sombreados Transparent Cutout para objetos
como cercas, vegetacin, etc. Si utiliza Shaders escritos personalizados, estos deben
ser pixel-lit y usar el Geometry render queue. Objetos usando sombreado VertexLit no
pueden recibir sombras pero puede proyectarlas.
Solo Pixel lights proyecta sombras. Si usted quiere asegurarse de que una luz siempre
proyecte sombras sin importar cuntas otras luces haya en la escena, entonces usted
puede establecerla en el modo renderizado Force Pixel (mirar la pgina de
referencia Light ).
- 196 -
Luces (Lights)
Las Lights son una parte esencial de cada escena. Mientras meshes y texturas definen
la forma y la apariencia de una escena, las luces(lights) definen el color y nimo de su
entorno en 3D. Seguramente trabajar con ms de una luz en cada escena. Hacerlas
trabajar juntas requiere un poco de prctica, pero los resultados pueden ser bastante
sorprendente.
Las luces(lights) pueden ser agregadas a su escena desde el men del GameObject-
>Create Other. Una vez una luz haya sido agregada, usted puede manipularla como
cualquier otro GameObject. Adicionalmente, puede agregar un Light Component a
cualquier GameObject seleccionado usando Component->Rendering->Light.
- 197 -
Propiedades del Light
Component en el Inspector
- 198 -
Luces oscuras medievales
- 199 -
Luces de noche de miedo
Rendering paths
Unity soporta diferentes Rendering Paths. Estos caminos afectan principalmente las
Luces y las Sombras, entonces escoger el rendering path correcto, dependiendo los
requerimientos de su juego, puede hacer que el rendimiento de su proyecto mejore.
Para ms informacin a cerca de rendering paths puede visitar Rendering paths
section.
Ms informacin
Para ms informacin acerca de cmo las luces funcionan ver la pgina Visin general
de Lighting (iluminacin). Para ms informacin acerca del uso del componente Light,
revise la Referencia de Lighting (iluminacin).
- 200 -
Cmaras
As como las cmaras son usadas en pelculas para mostrar la historia a la audiencia,
las Cmaras en Unity son utilizadas para mostrar el mundo del juego al jugador.
Siempre debers tener al menos una cmara en una escena, pero puedes tener mas
de una. Mltiples cmaras pueden servirte para tener una pantalla-compartida para
dos jugadores o para crear efectos especficos. Puedes animar cmaras, o controlarlas
con fsica. Prcticamente cualquier cosa que puedas imaginar es posible con cmaras,
y puedes utilizar cmaras tpicas o nicas que se ajusten a el estilo de tu juego.
- 201 -
Consideraciones Multi-plataforma
Muchas de las APIs de Unity y estructuras de proyecto son idnticas para todas las
plataformas soportadas, y en algunos casos un proyecto puede simplemente ser
reconstruido para ejecutarse en diferentes dispositivos. Sin embargo, las diferencias
fundamentales en el hardware y en mtodos de despliegue hacen que algunas partes
del proyecto no puedan ser portadas entre plataformas sin haber hecho cambios. A
continuacin se encuentran detalles de algunos problemas comunes de plataforma
cruzada, y sugerencias para solucionarlos.
Entrada
El ejemplo ms obvio del comportamiento distinto entre plataformas es en los
mtodos de entrada ofrecidos por el hardware.
Teclado y joypad
La funcin Input.GetAxis es muy conveniente en plataformas de escritorio como una
forma de consolidar la entrada desde el teclado y el joypad. Sin embargo, esta funcin
no tiene sentido para las plataformas mviles que se basan en la entrada por medio
de la pantalla tctil. Igualmente, la entrada de teclado estndar de escritorio no porta
bien en mviles para otras cosas que no sean texto escrito. Vale la pena agregar una
capa de abstraccin al cdigo que maneja la entrada, si consideras en el futuro portar
el juego a otras plataformas. A modo de un ejemplo simple, si estuvieras haciendo un
juego de conducir entonces podras crear tu propia clase de entrada y envolver los
llamados de API de Unity usando tus propias funciones:-
// Returns values in the range -1.0 .. +1.0 (== left .. right).
function Steering() {
return Input.GetAxis("Horizontal");
}
- 202 -
currentGear++;
else if (Input.GetKeyDown("l"))
currentGear--;
return currentGear;
}
Una ventaja de envolver los llamados de API en una clase como esta es que todos
ellos estn concentrados en un solo archivo fuente, y en consecuencia, ser fcil su
localizacin y reemplazo. Sin embargo, lo ms impontante es que debes disear tus
funciones de entrada de acuerdo al significado lgico de las entradas en tu juego. Esto
ser de ayuda para aislar del resto del cdigo del juego el mtodo especfico de
entrada usado con una plataforma en particular. Por ejemplo, la funcin Gears de
arriba podra ser modificada para que la entrada real provenga de toques en la
pantalla de un dispositivo mvil. Si se usa un integer para representar la indumentaria
escogida, esto funcionar bien en todas las plataformas; pero si se mezcla con el resto
del cdigo los llamados de API especficos a la plataforma, esto causar problemas.
Puedes ver conveniente el utilizar compilacin dependiente de la plataforma para
combinar las diferentes implementaciones de las funciones de entrada en el mismo
archivo fuente, para evitar intercambios manuales.
Toques y Clics
Las funciones Input.GetMouseButtonXXX estn diseadas para que tengan una
interpretacin razonablemente obvia en dispositivos mviles aunque no haya un
mouse como tal. Un simple toque en la pantalla ser reportado como un clic con el
botn izquierdo del mouse, y la propiedad Input.mousePosition devuelve la posicin
del toque mientras el dedo est tocando la pantalla. Esto significa que los juegos que
tengan interaccin simple de mouse usualmente pueden trabajar transparentemente
entre las plataformas de escritorio y mvil. Naturalmente, no obstante, con frecuencia
la conversin es mucho menos sencilla que esto. Un juego de escritorio puede hacer
uso de ms de un botn del mouse, y un juego para mviles puede detectar mltiples
toques en la pantalla al mismo tiempo.
Al igual que con los llamados de API, el problema puede ser manejado de forma
parcial representando la entrada con valores lgicos que son luego usados por el
resto del cdigo del juego. Por ejemplo, un gesto de pellizco para dar zoom en un
mvil podra ser reemplazado por un botn/atajo de + y - en la version de escritorio;
la funcin de entrada podra simplemente devolver un valor float que especifique el
factor de zoom. Igualmente, podra ser posible usar un tap con dos dedos en mviles
- 203 -
para reemplazar el clic con el botn derecho del mouse. Sin embargo, si las
propiedades del dispositivo de entrada son una parte integral del juego, entonces no
puede ser posible remodelarlos en una plataforma diferente. Esto puede significar
que el juego no puede ser portado a todas ellas, o que la entrada y/o la mecnica de
juego necesiten ser modificadas ampliamente.
Reproduccin de pelculas
Hoy en da, los dispositivos mviles son altamente dependientes del soporte de
- 204 -
hardware para permitir la reproduccin de pelculas. El resultado es que estas
opciones de reproduccin son limitadas e indudablemente no ofrecen la flexibilidad
que el asset MovieTexture tiene en plataformas de escritorio. Las pelculas pueden ser
reproducidas en pantalla completa en mviles, pero no hay enfoque alguno sobre
usarlos para texturizar objetos dentro del juego (as que no es posible mostrar una
pelcula en una pantalla de TV dentro del juego, por ejemplo). En trminos de
portabilidad, est bien usar pelculas para introducciones, vdeos con escenas de la
historia (cutscenes), instrucciones y otras presentaciones sencillas. Sin embargo, si las
pelculas necesitan ser visibles dentro del escenario de juego entonces debes
considerar si las opciones de reproduccin en mviles sern lo adecuado.
Requerimientos de almacenamiento
El video, el audio e incluso las texturas pueden usar una gran cantidad de
almacenamiento y podras necesitar tener esto en mente si quieres portar tu juego. El
espacio de almacenamiento (el cual con frecuencia tambin corresponde al tiempo de
descarga) no es usualmente un problema en mquinas de escritorio, pero este no es
el caso con los mviles. Adems, las tiendas de aplicaciones mviles imponen un
lmite sobre el tamao mximo de un producto enviado. Puede requerir algo de
planeacin para abordar estos asuntos durante el desarrollo de tu juego. Por ejemplo,
podras necesitar el proporcionar versiones simplificadas de los assets para mviles a
fin de ahorrar espacio. Otra posibilidad es que el juego pueda necesitar ser diseado
para que los assets grandes puedan ser descargados bajo demanda en lugar de ser
parte de la descarga inicial de la aplicacin.
- 205 -
Potencia de la CPU
Un juego que se ejecute bien en una mquina de escritorio podra sufrir de una baja
velocidad de cuadros en un mvil, debido a que el CPU de un mvil tiene que lidiar
con la complejidad del juego. Por tanto, se puede necesitar el poner atencin extra a
escribir un cdigo ms eficiente cuando un proyecto es portado a una plataforma
mvil. Un nmero de pasos simples para mejorar la eficiencia son explicados en esta
pgina del manual.
- 206 -
Publicando Construcciones (Publishing
Builds)
En cualquier momento mientras est creando su juego, usted podra querer ver qu
aspecto tendr cuando se construya y se ejecute fuera del editor de modo
independiente (standalone) o con un reproductor web. Esta seccin va a explicar
cmo acceder a las Build Settings y cmo crear distintas construcciones de sus
juegos.
- 207 -
La
ventana de los Build Settings
En este punto, observe que cada una de sus escenas tienen un valor de indice
- 208 -
diferente. Scene 0 es la primera escena que va a cargarse cuando se construya el
juego. Cuando quiera cargar una escena nueva, use Application.LoadLevel() dentro de
sus scripts.
Si quiere eliminar una escena de la lista, haga click para subrayar la escena y
oprima Command-Delete. La escena va a desaparecerse de la lista y no va a ser
incluida en la construccin.
Cuando est listo de publicar lo que ha construido, seleccione una Platform y est
seguro que el logo de Unity est alado de la plataforma; si no est entonces haga click
en el botn Switch Platform para dejar que Unity sepa para qu plataforma quiere
construirla. Finalmente oprima el botn Build. Ah va a poder seleccionar el nombre y
la ubicacin del juego usando un dialogo estndar para guardar. Cuando haga click
en Save, Unity construir su juego pronto. Es as de sencillo. Si est inseguro de
dnde guardar su juego construido, considere guardarlo en la carpeta raz de su
proyecto. No puede guardar la construccin en la carpeta de Assets.
- 209 -
los recursos.
Cuando un nuevo nivel cargue, todos los objetos del nivel anterior son destruidos.
Para prevenir esto, use DontDestroyOnLoad() en cualquier objeto que no quiera que
sea destruido. Esto es comnmente usado para mantener msica reproduciendo
mientras se cargue un nivel, o para game controller scripts que hacen que se
mantenga el estado del juego y el progreso.
Para ms informacin sobre cmo crear un juego de la mejor manera que tenga
escenas mltiples, para instanciar un men princiapl, una ventana del puntaje
mximo, y niveles del juego, revisar nuestros Tutorials.
Precarga
Construcciones publicadas automaticamente precargan todos los assets en una
escena cuando la escena carga. La excepcin a esta regla es Scene 0. Esto es porqu la
primera escena es usualmente un spashscreen, que uno quiere mostrar lo ms rpido
posible.
- 210 -
Para asegurarse que todo su contenido haya sido precargado, puede crear una
escena vaca que llame Application.LoadLevel(1). En las build settings haga que el
indice de esta escena sea 0. Todos los niveles posteriores sern precargados.
Para aprender ms sobre crear assets de artes, mirar la Assets Workflow del manual.
- 211 -
Caractersticas del Editor
Esta seccin detalla algunas de las caractersticas bsicas del Editor, las cuales usted
encontrar tiles en la mayora de proyectos - desde escoger preferencias, integrando
un sistema de control de versiones, hasta preparar su proyecto para una
construccin.
- 212 -
Ajustes del Modo 2D y 3D
Cuando se crea un nuevo proyecto, se puede especificar si el Editor de Unity se inicia
en modo 2D o 3D. Sin embargo, tambin se tiene la opcin de cambiar el editor entre
modo 2D y 3D en cualquier momento. Usted puede leer ms acerca de las diferencias
entre proyectos 2D y 3D aqu. Esta pgina proporciona informacin acerca de cmo
cambiar modos, y qu exactamente cambia dentro del editor cuando lo haga.
Los game objects por defecto no tienen una luz direccional en tiempo real.
- 213 -
La cmara est configurada como Orthographic. (En modo 3D est en Perspective.)
En la ventana de Lighting:
Los game objects por defecto tienen una directional light, en tiempo real.
La posicin por defecto de la cmara est en 0,1,10. (En modo 2D est 0,0,10.)
En la ventana de Lighting:
- 214 -
Preferencias
Unity provee un nmero de paneles de preferencia para permitirle personalizar el
comportamiento del editor.
General
- 215 -
del Proyecto (Project Browser)?
Debera verificar Unity qu assets guardar
Verify Saving Assets
individualmente al cerrarse?
Qu esquema de colores debera utilizar
Unity para su editor? Los usuarios
Editor Skin profesionales tienen la opcin de gris oscuro,
adems de la de color gris claro que hay por
defecto.
Esta opcin habilita un nuevo botn en la
esquina superior derecha de la
ventana Hierarchy, permitiendo alternar entre
Enable Alpha Numeric Sorting
la ordenacin de Transformada (que es el
comportamiento por defecto) y la ordenacin
Alfanumrica.
Herramientas Externas
- 216 -
Boo (.booproj) projects to the generated
solution (.sln) file? Enabled by default for
MonoDevelop and disabled by default for
Visual Studio.
Debera Unity permitir el control de la
Editor Attaching
depuracin desde un editor de script externo?
Qu aplicacin debera usar Unity para abrir
Image Application
archivos de imagen?
Qu aplicacin debera usar Unity para
Revision Control Diff/Merge resolver diferencias de archivo con el asset
server?
Colores
Este panel le permite escoger entre colores que Unity utiliza cuando se muestran
varios elementos de la interfaz del usuario.
- 217 -
Teclas
Este panel le permite establecer las teclas que activan los varios comandos en Unity.
- 218 -
Cach GI
- 219 -
2D
- 220 -
Servidor de Cach
- 221 -
Build Settings
La ventana de Build Settings le permite a usted escoger su plataforma de destino,
ajustar los ajustes para su construccin y empezar el proceso de construccin. Para
acceder la ventana de los Build Settings, escoja Build Settings del men File. Una vez
usted haya especificado sus build settings, usted puede hacer click en Build para
crear su construccin, o click el botn Build and Run para crear y correr su
construccin en la plataforma especificada.
Ven
tana de los Build Settings
- 222 -
Escenas en el Build (construccin)
Esta parte de la ventana le muestra a usted escenas de su proyecto que sern
incluidas en su construccin. Si ninguna escena es mostrada entonces usted puede
utilizar el botn Add Current para agregar la escena actual a la construccin, o usted
puede arrastrar los assets de escena a esta ventana de la ventana project. Usted
tambin puede des-marcar escenas en esta lista para excluirlas del build
(construccin) sin quitarlas de la lista. Si una escena nunca se necesita en la
construccin usted puede quitarla de la lista de escenas al presionar la tecla delete.
Las escenas que son marcadas y agregadas al las Scenes en la lista del Build
(construccin) sern incluidas en la construccin. La lista de escenas ser utilizada
para controlar el orden de carga de las escenas. Usted puede ajustar el orden de las
escenas al arrastrarlas para arriba o abajo.
Lista de Plataforma
La rea Platform (plataforma) debajo Scenes (escenas) en la rea del Build lista todas
las plataformas que estn disponibles a su versin de Unity. Algunas plataformas
pueden estar en gris para indicar que no son parte de su versin o lo invita a usted a
descargar las opciones de construccin de la plataforma especfica. SI usted cambia la
plataforma de destino, usted necesita presionar el botn Switch Platform para
aplicar su cambio. El cambio puede tomar algo de tiempo ya que sus assets puedan
que necesiten ser re-importados en formatos que coincidan con su plataforma
destino. Para indicar la plataforma actualmente seleccionada, hay un icono de Unity a
la derecha del nombre de la plataforma.
- 223 -
Opcin Propsito
El WebPlayer no har ninguna conexin a una
Offline Deployment
red
iOS
Opcin Propsito
Run in Xcode as (Corra en Xcode como)
Release Versin de lanzamiento
Debug Versin de prueba
Referencia a las libreras de Unity en vez de
Symlink Unity libraries copiarlas al proyecto de XCode. (Reduce el
tamao del proyecto de XCode.)
Android
Opcin Propsito
Texture Compression (Compresin de Textura)
Dont override
DXT Tegra)
PVRTC (PowerVR)
ATC (Adreno)
ETC (Predeterminado)
- 224 -
Opcin Propsito
ETC2 (GLES 3.0)
ASTC
Google Android Project
Tizen
Los Build Settings para Tizen utiliza los ajustes genricos mostrados luego en esta
pgina.
WebGL (Pre-visualizacin)
Opcin Propsito
Activo cuando Development Build sea
Optimization Level
seleccionado
Slow (Construcciones rpidas)
Fast
Fastest (construcciones muy lentas)
Samsumg TV
Los Build Settings para Samsung TV utiliza ajustes genricos mostrados luego en esta
pgina.
Windows Store
Opcin Propsito
TBD TBD
Windows Phone 8
Opcin Propsito
TBD TBD
Otras plataformas
Plataformas de consola y dispositivos que requieren una licencia de Unity sern
documentados en la seccin de Platform Specific (Especficas de plataforma) de la
gua de usuario.
- 225 -
Items genricos de los builds
Opcin Propsito
Le permite al desarrollador probar y trabajar
Development Build
cmo la build est construyndose.
Cuando la opcin Development Build sea
Autoconnect Profiler (Profiler Auto- seleccionada, esto le permite al profiler
conectado) (perfilador) en estar conectado a la
construccin.
Cuando la opcin Development Build sea
Script Debugging (Depuracin Script) seleccionada, el cdigo script puede ser
depurado. No es disponible en WebGL.
- 226 -
Las Configuraciones de
Administradores(Settings Managers)
Los Settings Managers de Unity estn disponibles desde el men Edit > Project
Settings. Los ajustes afectan aspectos generales de la funcionalidad de Unity, tal como
las Grficas, Fsica y los detalles del reproductor publicado. Los varios administradores
estn descritos en detalle en esta seccin.
- 227 -
Audio Manager (Administrador de Audio)
El Audio Manager le permite ajustar el volumen mximo de todos los sonidos
reproducindose en la escena. Para verlo escoja Edit > Project Settings > Audio.
Propiedades
Propiedad: Funcin:
El volumen de todos los
Volume
sonidos reproducindose.
Ajusta la atenuacin global
del factor rolloff a fuentes
rolloff basadas
logaritmicamente.
(mire Audio Source). Mayor
Rolloff Scale el valor, ms rpido el
volumen se atenuar,
inversamente menor el valor,
ms lento se atena (un valor
de 1 va a simular el mundo
verdadero).
Qu tan escuchable es el
efecto Doppler. Cuando es
cero, est apagado. 1 significa
Doppler Factor
que debe ser bastante
escuchable para objetos en
movimiento rpido.
Default Speaker Mode Define qu modo de alta voz
debe ser el predeterminado
para su proyecto. El valor
predeterminado es 2 para
- 228 -
Propiedad: Funcin:
configuraciones de altavoces
estreo
(mirar AudioSpeakerMode en
las referencias scripting API
para una lista de modos).
El Output sample rate (La
tasa de muestreo del output).
Si es configurado a 0, la tasa
de muestreo del sistema ser
usado. Tambin tenga en
Sample Rate
cuenta que esto solo sirve
como una referencia ya que
ciertas plataformas permiten
cambias esto, como IOS o
Android.
El tamao del bfer DSP se
DSP Buffer Size puede ajustar para optimizar
la latencia o rendimiento
Tamao de bfer
Default
predeterminado
Renunciar al rendimiento en
Best Latency
favor de la latencia.
Balance entre latencia y
Good Latency
rendimiento
Renunciar latencia en favor
Best Performance
del rendimiento
El nmero de voces virtuales
que el sistema de audio
maneja. Este valor debera
siempre ser mayor que el
Virtual Voice Count
nmero de voces
reproducidas por el juego. Si
no, unas advertencias sern
mostradas en la consola.
Nmero de las voces reales
que pueden ser reproducidas
Real Voice Count al mismo tiempo. Cada frame
las voces ms fuertes sern
escogidas.
Disable Audio Desactivar el sistema de
audio en construcciones
independientes. Tenga en
cuenta que esto tambin
- 229 -
Propiedad: Funcin:
afecta el audio de
MovieTextures. En el editor
del sistema de audio est
todava en marcha y apoyar
previsualizar clips de audio,
empero AudioSorce.
Llamados de
reproduccin(Play calls)y
playOnAwake no se
manejarn con el fin de
simular el comportamiento de
la construccin
independiente.
Detalles
Si usted quiere usar el Efecto Doppler establezca Doppler Factor a 1. Luego ajuste
ambos Speed of Sound y Doppler Factor hasta que usted est satisfecho. El Modo de
Altavoz se puede cambiar en tiempo de ejecucin de su aplicacin a travs del
scripting. Mirar Audio Settings.
- 230 -
Ajustes del Editor
The Editor Settings let you choose options that affect the way you work with the
editor.
Propiedades
Propiedad: Funcin:
Unity Remote
Para qu dispositivo es (Android, iOS o
Device
ninguno).
The type of image compression used when
transmitting the game screen to the device.
Compression JPEG typically gives higher compression and
performance while PNG gives a more accurate
representation of the game display.
Selects whether the device should show the
game display at normal resolution (for
Resolution
graphical accuracy) or downsized (for
performance).
Version Control
- 231 -
Propiedad: Funcin:
The version control system that should be
used. Different options are available for
Mode
different systems as described in this
section of the manual.
WWW Security Emulation
Para las pruebas webplayer, el editor puede
Host URL pretender que el juego es un webplayer
alojado en esta direccin URL.
Asset Serialization
Para asistir con fusiones de version control,
Unity puede almacenar archivos de escena en
un formato textual ( mire las pginas textual
scene format para ms detalles). Si no se
Mode llevan a cabo fusiones Unity puede almacenar
escenas en un espacio de formato binario ms
eficiente o permitir que tanto el texto como
archivos de escenas binarios existan al mismo
tiempo.
Default Behavior Mode
Chooses between 2D or 3D editor mode.
Mode
See 2D or 3D Projects for more information.
Sprite Packer
This chooses whether the Sprite Packer is
Mode always enabled, enabled for builds only or
completely disabled.
- 232 -
Administrador de Input (Input Manager)
El Input Manager es dnde usted define todos los diferentes ejes de input(entrada) y
acciones de juego para su proyecto.
El administrador de input
Propiedades
Propiedad: Funcin:
Axes (Ejes) Contiene todos los ejes de input definidos para
el proyecto actual: Size es el nmero de
diferentes ejes de input en este
proyecto, Element 0, 1, son los ejes
- 233 -
Propiedad: Funcin:
particulares para modificar.
El string que se refiere al eje en el inicio del
Name
juego y a travs del scripting.
Una definicin detallada la funcin Positive
Descriptive Name
Button que es mostrada en el inicio del juego.
Descriptive Negative Name Una definicin detallada de la
funcin Negative Button que es mostrada en
el inicio del juego.
El botn que va a mandar un valor negativo al
Negative Button
eje.
El botn que va a mandar un valor positivo al
Positive Button
eje.
El botn secundario que va a mandar un valor
Alt Negative Button
negativo al eje.
El botn secundario que va a mandar un valor
Alt Positive Button
positivo al eje.
Gravity Qu tan rpido el input se centrar.
nicamente usado cuando el Type es key /
mouse button.
Dead Cualquier valor positivo o negativo que sean
menor que este nmero van a ser registrados
como cero. til para joysticks.
Para input de teclado, un valor mayor va a
resultar en una respuesta ms rpida. Un valor
Sensitivity
menor va a ser ms suave. Para Mouse delta el
valor va a escalar el actual mouse delta.
Si habilitado, el valor del eje va a se
inmediatamente reseteado a cero despus de
Snap
recibir inputs opuestos. nicamente usado
cuando el Type es key / mouse button.
Invert Si habilitado, los botones positivos van a
mandar valores negativos a los ejes, y vice
versa.
Use Key / Mouse Button para cualquier tipo
de botones, movimientos de Mouse para
mouse delta y ruedas de
Type desplazamiento, Joystick Axis para ejes
anlogos de joystick y Window
Movement para cuando el usuario sacuda la
ventana.
- 234 -
Propiedad: Funcin:
Eje de Input del dispositivo (joystick, mouse,
Axis
gamepad, etc.)
Qu joystick debera ser utilizado. Por defecto
esto est configurado para tomar la entrada de
Joy Num todos los joysticks. Esto es utilizado
nicamente para ejes de entrada y no para
botones.
Detalles
Todos los ejes que usted configure en el Administrador de Input sirven para dos
propsitos:
Todos los ejes definidos sern presentados al jugador en el inicio del juego, dnde
vern su nombre, descripcin detallada, y botones predeterminados. Desde aqu,
ellos tendrn la opcin de cambiar cualquiera de los botones definidos en los ejes.
Por lo tanto, es mejor escribir sus scripts haciendo uso de ejes en vez de botones
individuales, ya que el jugador querr personalizar los botones de su juego.
- 235 -
La
ventana de input del inicio del juego es mostrado cuando su juego es ejecutado
- 236 -
Administrador de Red (Network Manager)
(This class is part of the old networking system and is deprecated.
See NetworkManager for the new networking system).
Propiedades
Propiedad: Funcin:
El nivel de mensajes que son impresos a la
Debug Level
consola.
Off Solo errores sern impresos
Informational Se imprimirn eventos de red significativos
Full Se imprimirn todos los eventos de red
Nmero de veces por segundo que los datos se
Sendrate
envan a travs de la red
Detalles
Ajustar el nivel de depuracin puede ser de gran ayuda en la afinar o depurar los
comportamientos de red de su juego. Primero, ajustndolo a Full va a permitirle ver
cada accin de red que sean realizadas. Esto le dar un sentido general de la
frecuencia con la que se est utilizando la comunicacin de red y la cantidad de ancho
de banda que est utilizando como un resultado.
Cuando lo ajuste a Informational, usted ver los principales eventos, pero no toda
actividad individual. La asignacin nica de Network IDs y buffering llamadas RPC van
a ser registradas aqu.
- 237 -
Cuando est Off, solo los errores de red van a ser impresos a la consola.
- 238 -
Administrador de Fsica (Physics Manager)
El Physics Manager le permite a usted proporcionar ajustes globales para las fsicas
de 3D (men: Edit > Project Settings > Physics). Tambin hay un administrador
correspondiente para fsicas de 2D, descrito aqu.
Propiedades
Propiedad: Funcin:
La cantidad de gravedad aplicada a todos
los Rigidbodies. Usualmente la gravedad solo
acta en el eje Y (Abajo es negativo). La
gravedad es unidades mundo por segundo al
Gravity
cuadrado. Nota: El aumento de la gravedad
puede requerir el aumento del Solver
Iteration Count para mantener contactos
estables.
El Physics Material por defecto que va a ser
Default Material usados si ninguno ha sido asignado a
un Collider individual.
- 239 -
Propiedad: Funcin:
Dos objetos en colisin con una velocidad
relativa por debajo de este valor no rebotarn.
Bounce Threshold Este valor tambin reduce la oscilacin por lo
que no se recomienda establecerlo en una
valor muy bajo.
El umbral de energa cintica de masa
normalizada mejor al cual un Rididbody no-
kinematic puede irse a dormir. Los
Sleep Threshold
Rigidbodies cuya energa cintica dividida por
su masa es menor a este umbral sern
candidatos para dormir.
Especfica la distancia la cual el sistema de
deteccin de colisiones utiliza para generar
contactos de colisin. El valor debe ser
positivo y si es configurado cercano a cero
Default Contact Offset puede causar jitter (problemas/fluctuaciones).
Predeterminado: 0.01. Solamente los Colliders
cuya distancia es menor que la suma de sus
valores offset de contacto generarn contactos
de colisin.
Determina la precisin con la que se resuelvan
las articulaciones y los contactos. Por lo
Solver Iteration Count
general, un valor de 7 funciona muy bien para
casi todas las situaciones.
Si habilitado, cualquier Raycast, SphereCast,
SphereTest, etc. que tenga una interseccin
con un Collider marcado como Trigger va a
Queries Hit Triggers devolver un hit (golpe). Si es des-habilitado,
estas intersecciones no van a devolver un hit
(golpe). Hay raycasts individuales que pueden
anular este comportamiento.
La adaptive force afecta la manera que las
fuerzas son transmitidas a travs de un montn
o pila de objetos con el propsito de entregar
Enable Adaptive Force un comportamiento ms real. Esta opcin
habilita o des-activa la adaptive force. Note
que de Unity 5.0, esto esta desactivado por
defecto.
Define cmo el sistema de deteccin de layer-
Enable Adaptive Force
based collision va a comportarse.
Detalles
Los ajustes del physics manager (administrador de fsicas) define limites en la
precisin de la simulacin de fsica. Generalmente hablando, una simulacin ms
- 240 -
precisa requiere ms sobre-carga de procesamiento, por lo que estos ajustes ofrecen
una manera de intercambiar precisin contra rendimiento. Ver la seccin de fsica del
manual para informacin adicional.
- 241 -
Administrador de Fsica en 2D(Physics 2D Manager)
Propiedades
Propiedad: Funcin:
La cantidad de gravedad aplicada a todos los
objetos Rigidbody2D . Generalmente, la
Gravity
gravedad es solamente establecida en la
direccin negativa del eje Y.
Default Material Los Physics Material 2D predeterminados que
- 242 -
Propiedad: Funcin:
sern usados si ninguno ha sido asignado a un
collider individual.
El nmero de iteraciones hechas por el motor
de fsica para resolver efectos de velocidad.
Velocity Iterations
Nmeros mayores resultan en una fsica ms
precisa pero por el precio de tiempo de CPU.
El nmero de iteraciones hechas por el motor
de fsica para resolver cambios de posicin.
Position Iterations
Nmeros mayores resultan en una fsica ms
precisa pero por el precio de tiempo de CPU.
Collisions with a relative velocity lower than
this value will be treated as inelastic collisions
Velocity Threshold
(ie, the colliding objects will not bounce off
each other).
The maximum linear position correction used
Max Linear Correction when solving constraints (range, 0.0001 to
1000000). This helps to prevent overshoot.
The maximum angular correction used when
Max Angular Correction solving constraints (range, 0.0001 to
1000000). This helps to prevent overshoot.
The maximum linear speed of a rigidbody
Max Translation Speed
object during any physics update.
The maximum linear speed of a rigidbody
Max Rotation Speed
object during any physics update.
The minimum contact penetration radius
Min Penetration For Penalty allowed before any separation impulse force is
applied.
Scale factor that determines how fast collision
Baumgarte Scale
overlaps are resolved.
Scale factor that determines how fast time-of-
Baumgarte Time of Impact Scale
impact overlaps are resolved.
The time (in seconds) that must pass after a
Time to Sleep
rigidbody stops moving before it goes to sleep.
The linear speed below which a rigidbody will
Linear Sleep Tolerance
go to sleep after the time to sleep elapses.
The rotational speed below which a rigidbody
Angular Sleep Tolerance will go to sleep after the time to sleep
elapses.
Queries Hit Triggers Si habilitado, cualquier Raycast que
interseccione con un Collider marcado como
- 243 -
Propiedad: Funcin:
Trigger va a devolver un golpe(hit). Si
deshabilitado, estas intersecciones no van a
devolver un golper(hit).
Will any physics queries (Linecasts, Raycasts,
Queries Start In Colliders etc) that start inside a collider detect the
collider they start in? Check the box for yes.
Whether or not to stop reporting collision
Change Stops Callbacks callbacks immediately if any of the objects
involved in the collision are deleted or moved.
Define cmo el sistema de deteccin layer-
Layer Collision Matrix
based collision se va a comportar.
Detalles
The settings of the physics manager define limits on the accuracy of the physical
simulation. Generally speaking, a more accurate simulation requires more processing
overhead, so these settings offer a way to trade off accuracy against performance. See
the Physics section of the manual for further information.
- 244 -
Player Settings
Los Player Settings (men: Edit > Project Settings > Player)le permite a usted
configurar varias opciones para el juego final construido por Unity. Hay unos pocos
ajustes que son los mismo sin importar el objetivo de construccin pero la mayora
son especficos de plataforma y estn divididos en las siguientes secciones:
Los ajustes generales estn cubiertos abajo. Ajustes especficos a una plataforma
pueden encontrarse de manera separada en seccin propia de la plataforma en el
manual.
Ajustes Generales
- 245 -
Propiedad: Funcin:
Cross-Platform Properties
El nombre de su empresa. Esto es usado para
Company Name
ubicar el archivo de preferencias.
El nombre que va aparecer en la barra del
men cuando su juego est corriendo y es
Product Name
usado para ubicar el archivo de preferencias
tambin.
El icono predeterminado que la aplicacin va a
Default Icon tener en cualquier plataforma. Usted puede
anular esto para plataformas especficas.
El cursor por defecto que la aplicacin tendr
Default Cursor
en todas las plataformas compatibles.
Cursor hotspot en pxeles desde la parte
Cursor Hotspot
superior izquierda del cursor predeterminado.
- 246 -
Splash Screen
Unitys buit-in splash screen is uniform across all platforms.
Personal Edition
The Personal Edition of Unity will display the white version of the Splash Screen and it
is marked as Personal Edition.
- 247 -
Pro Edition
The Pro Edition of Unity allows you to select between white and black versions of the
Unity Splash Screen and allows you to turn it off.
- 248 -
- 249 -
- 250 -
- 251 -
- 252 -
- 253 -
- 254 -
- 255 -
Graphics Settings
The graphics settings shown here are mostly useful for customizing and optimizing
graphics-related settings across the project.
The default value is to use built-in Unity functionality for this, but you can supply your
own compatible shader if you want deep customization of deferred rendering.
You can also specify No Support if you know you arent using deferred shading or
lighting respectively, and save some space in the built game data files.
======================================================================
======================================================================
================ |Setting: |Description: | |:|:| |Built-in shader (Default
value)| Use Unitys built-in shaders to do the calculation. | |Custom shader| Use
- 256 -
your own compatible shader to do the calculation. This enables you to do deep
customization of deferred rendering. | |No Support| Disable this calculation. Use
this setting if you are not using deferred shading or lighting. This will save some space
in the built game data files. |
Always-included Shaders
Specify a list of Shaders that will always be stored along with the project, even if
nothing in your scenes actually uses them. It is important to add shaders used by
streamed AssetBundles to this list to ensure they can be accessed.
Shader stripping
By default, Unity looks at your scenes and lightmapping settings to figure out which
Fog and Lightmapping modes are used; and skips corresponding shader variants. This
saves game build data size, and improves loading times.
However, if youre building asset bundles or will be changing Fog modes from a script
at runtime, you might want to manually specify used modes here.
Setting:
Automatic(Default value)
Manual
Shader preloading
Specify a list of shader variant collection assets to preload while loading the game.
See Optimizing Shader Load Time page for details.
Vase tambin
Optimizando el rendimiento de los grficos.
Referencia a Shaders.
- 257 -
Ajustes del Orden de Ejecucin de
Scripts(Script Execution Order Settings)
Por defecto, las funciones Awake, OnEnable y Update de diferentes scripts son
llamadas en el orden en el que los scripts son cargados (que es arbitrario). Sin
embargo, es posible modificar este orden usando los ajustes Script Execution Order.
Los nmeros mostrados por cada script son los valores del orden en el que estn los
scripts. Cuando un script es arrastrado a una nueva posicin, el nmero del script es
automticamente cambiado en consecuencia. Cuando un nmero es cambiado, ya
sea manualmente o automticamente, el archivo meta es cambiado por ese script.
Por esta razn, es mejor si un nmero pequeo de nmeros es cambiado cuando el
orden es cambiado. Este es el porqu, cuando se puede, solo el script que es
arrastrado tiene su nmero cambiando, en vez de asignar nuevos nmeros para
- 258 -
todos los scripts.
- 259 -
Etiquetas y Capas(Tags & Layers)
El Tags and Layers Manager le permite establecer Layers, Tags y Sorting Layers. Para
ver el administrador, seleccione Edit > Project Settings > Tags and Layers.
Detalles
Los Tags son valores marcados que pueden ser usados para identificar objetos en su
proyecto ( mire this page para ms detalles). Nuevas etiquetas(tags) pueden ser
agregadas escribiendo en el elemento vaco en la parte inferior de la lista de
etiquetas, o aumentando el valor de Tamao. Disminuir el tamao va a quitar
etiquetas desde el final de la lista.
Los Sorting Layers son usados en conjunto con las grficas de sprites en el sistema
- 260 -
2D. El sorting se refiere al orden de superposicin de los diferentes sprites. Usted
puede agregar y quitar sorting layers usando los botones +/- en la parte inferior
izquierda de la lista y cambiar su orden, arrastrando la manija de la izquierda de cada
elemento de la capa.
Los Layers son usados a lo largo de Unity como una manera de crear un grupo de
objetos que comparten caractersticas particulares. (Mire this page para ms detalles).
Las capas(layers) son usados principalmente para restringir operaciones como
raycasting o renderning para que estas solo sean aplicadas al grupo de objetos que
sean relevantes. En el administrador, las primeras ocho capas son predeterminadas
usadas por Unity y no son editables. No obstante, las capas de 8 a 31 pueden ser
dadas nombres personalizados simplemente escribiendo en la caja de texto
apropiada. Tenga en cuenta que en diferencia a las etiquetas(tags), el nmero de
capas no puede aumentar.
- 261 -
El Administrador de Tiempo(Time Manager)
The Time Manager (menu: Edit > Project Settings > Time) lets you set a number of
properties that control timing within your game.
Propiedades
Propiedad: Funcin:
Un intervalo de imgenes por segundo
independiente que dicta cundo los eventos de
Fixed Timestep
calculacin de fsica y FixedUpdate()son
hechos.
Un intervalo de imgenes por segundo
independiente que limita el peor de los casos,
cuando las imgenes por segundo es baja.
###Mximo Timestep Permitido
Eventos de calculacin de fsica
y FixedUpdate() no se realizarn por un
tiempo ms largo de lo especificado.
La velocidad con la cual progresa el tiempo.
Cambie este valor para simular efectos de
velocidad de bala. Un valor de 1 significa
Time Scale
tiempo real. Un valor de .5 significa la mitad
de velocidad; un valor de 2 es el doble de
velocidad.
Detalles
The Time Manager lets you set properties globally but it is often useful to set them
from a script during gameplay (for example, setting Time Scale to zero is a useful way
to pause the game). See the page on Time and Framerate Management for full details
of how time can be managed in Unity.
- 262 -
Emulacin de Red
Como parte del conjunto de caractersticas de red de Unity, usted puede escoger
emular velocidades lentas de conexin a internet para probar su experiencia de juego
a usuarios en reas con bajo ancho de banda.
- 263 -
Detalles tcnicos
La emulacin de Red retrasa el envi de paquetes en el trafico de red para las clases
de Red(Network) y NetworkView. El ping es inflado artificialmente para todas las
opciones, el valor de la inflacin aumenta a medida que la velocidad de la conexin de
emulada se vuelva ms lenta. En el ajuste Dial-Up, packet dropping y varianza es
tambin introducida para simular la peor posible conexin de siempre. La Emulacin
va a persistir as sea que est sirviendo como el rol de Servidor o Cliente.
- 264 -
Integracin en Visual Studio C#
Encuentre el nuevo archivo .sln creado en su proyecto Unity (una carpeta encima de
su carpeta de Assets)
Ahora puede editar todos sus archivos script, y devolverse a Unity para usarlos.
- 265 -
Un par de cosas a tener en cuenta:
Aunque Visual Studio cuente con su propio compilador de C #, y se puede utilizar
para comprobar si tiene errores en sus scripts de C #, Unity sigue utilizando su propio
compilador de C # para compilar sus scripts. Usar el compilador de Visual Studio es
muy til, ya que significa que usted no tiene que devolverse a Unity todo el tiempo
para ver si tiene algn error o no.
Unity no re-genera los archivos del proyecto de Visual Studio despus de una
actualizacin al AssetServer, o una actualizacin SVN. Usted puede preguntarle a
Unity manualmente en re-generar los archivos del proyecto de Visual Studio a travs
del men: Assets->Sync MonoDevelop Project
- 266 -
RenderDoc Integration
The Editor supports integrated launching and capture of the RenderDoc graphics
debugger, for detailed frame introspection and debugging.
The integration is only supported for RenderDoc versions 0.26 or later, so if an earlier
version is currently installed it is required that you update to at least version 0.26.
Note: While the integration is only available in the Editor, it is quite possible to use
RenderDoc as normal with no extra setup in standalone player builds.
Note: Frames can only be captured if Unity is running on a platform and API that
RenderDoc supports - at time of writing that means Windows only, and either DirectX
11 or OpenGL Core profile. If another API is in use, the RenderDoc integration will be
temporarily disabled until a supported API is enabled.
Loading RenderDoc
If a RenderDoc installation is detected, then at any time after loading the Editor you
can right click on the tab for the Game View or Scene View and click the Load
RenderDoc option. This will reload the graphics device so you must save any changes,
but afterwards RenderDoc will be ready to capture without having to restart the editor
or build a standalone player.
Note: You can also launch the Editor via RenderDoc as normal, or pass the -load-
renderdoc command line option to load RenderDoc from startup.
- 267 -
Capturing a frame with RenderDoc
Pressing this button will trigger a capture of the next frame of rendering for the view.
If the RenderDoc tool UI has not been opened, a new instance will be launched to
show the capture, and if it is already running the newest capture will automatically
appear there. From there you can open the capture and debug using the tool.
- 268 -
shader, include #pragma enable_d3d11_debug_symbols in your shaders
CGPROGRAM block.
- 269 -
Analiticas del Editor
El editor de Unity est configurado para enviar datos de uso annimo de regreso a
Unity. Esta informacin se usa para a ayudar a mejorar las caractersticas del editor.
Los anlisis se recogen usando Google Analytics. Unity hace llamadas a una URI
alojada por Google. La parte URN de la URI coniene detalles que describen qu
eventos o caractersticas del editor se han usado.
Elementos del men que han sido utilizados. Si algunos elementos del men son
usados rara vez o no del todo, en el futuro podramos simplificar el sistema de mens.
- 270 -
Editor analytics en
el panel de preferencias.
- 271 -
Buscar Actualizaciones
Unity comprueba si hay actualizaciones disponibles. Esta comprobacin ocurre ya sea
cuando Unity comienza, o cuando usted escoge el elemento del men Help->Check
for Updates. La comprobacin de actualizacin enva el nmero de revisin de Unity
actual (el nmero de cinco dgitos que aparece entre parntesis tras el nombre de la
versin en el About del cuadro de dilogo de Unity) al servidor de actualizacin en
dnde es comparado con la versin ms actual lanzada. Si hay una versin ms
reciente de Unity disponible, el siguiente cuadro de dilogo se muestra:
Window
displayed when there is a newer version of Unity available for download.
Window
displayed when Unity is updated to the latest version.
Haga click en el botn Download new version para acceder a la pgina web donde
descargar la nueva versin.
- 272 -
La Frecuencia de la Comprobacin de la Actualizacin
La respuesta del servidor tambin contiene un intervalo de tiempo que sugiere
cuando la siguiente comprobacin de la actualizacin se debe hacer. La respuesta del
servidor tambin contiene un intervalo de tiempo que sugiere cuando la siguiente
comprobacin de la actualizacin se debe hacer. Esto permite que la comprobacin
de la actualizacin se realize con menos frecuencia cuando Unity no espera que las
actualizaciones se hagan disponibles.
Omitiendo Actualizaciones
Si est en mitad de un proyecto, probablemente no desee actualizar a una nueva
versin de Unity. Marcando el botn Skip this versin en el cuadro de dilogo de
actualizaciones del Editor de Unity evitar que Unity le informe sobre esta
actualizacin.
- 273 -
IME en Unity
IME y Unity
Unity proporciona soporte IME, que significa que usted puede escribir caracteres que
no sean ASCII en todas sus interfaces grficas. Este Input Method es completamente
integrado en el motor entonces usted no tiene que hacer nada para activarlo. Para
poder probarlo, simplemente cambie su lenguaje de teclado a un lenguaje no-ASCII
- 274 -
(e.g. Japons) y empiece a escribir su interfaz.
Nota: IME en Unity no est soportado por reproductores web de mac en este
momento.
iOS
Esta caracterstica todava no est soportada en dispositivos iOS.
Android
Esta caracterstica todava no est soportada en dispositivos Android.
- 275 -
Nombres de carpetas de especiales
Para la mayora de veces, usted puede escoger cualquier nombre que quiera para las
carpetas que usted crea para organizar su proyecto. Sin embargo, hay un nmero de
nombres de carpeta que Unity va a interpretar como una instruccin que el contenido
de la carpeta debe ser tratado de una manera especial. Por ejemplo, los scripts del
editor deben colocarse en una carpeta llamada Editor con el fin de que funcionen
bien. La lista completa de los nombres especiales de carpeta utilizados por Unity se
da abajo.
Assets
La carpeta Assets es la carpeta principal que contiene los assets que pueden ser
utilizados por un proyecto de Unity. El contenido de la vista del proyecto (Project view)
corresponden directamente a los contenidos de la carpeta Assets. La mayora de
funciones API asume que todo est ubicado en la carpeta Assets por lo que no
requieren que sean mencionados explcitamente. Sin embargo, algunas
funciones s necesitan tener la carpeta Assets incluida como parte del nombre de una
ruta (eg, ciertas funciones en la clase AssetDatabase).
Editor
Todos los scripts que son colocados en una carpeta llamada Editor (o una sub-carpeta
dentro de esta) sern tratados como scripts del editor en vez de scripts de tiempo de
ejecucin. Tales scripts estn diseados para agregarle funcionalidad a Unity en s
durante el desarrollo y no estn disponibles en el juego final en tiempo de ejecucin.
Ms de una carpeta Editor se puede utilizar en un proyecto a la vez pero tenga en
cuenta que la ubicacin exacta de una carpeta Editor afecta el tiempo en el cual lo
scripts sern compilados relativo a otros scripts. Ver la pgina acerca de Carpetas
Especiales y Orden de Compilacin de Scripts para una descripcin completa de
esto. Tenga en cuenta: Unity no permitir que los componentes derivados de
MonoBehaviour sean asignados a GameObjects si los scripts estn en la carpeta del
Editor.
- 276 -
funcin EditorGUIUtility.Load. Esta funcin buscar los archivos assets en una carpeta
llamada Editor Default Resources que debera ser colocada directamente dentro de
la carpeta Assets.
Gizmos
Los Gizmos de Unity le permiten a usted agregar grficas a la scene view (vista de
escena) para ayudarlo a visualizar detalles de diseo que por el contrario seran
invisibles. La funcin Gizmos.DrawIcon coloca un icono en la escena para que
funcione como un marcador para un objeto especial o posicin. El archivo de imagen
utilizado para dibujar este icono debe ser colocado en una carpeta
llamada Gizmos con el fin de que sea ubicado por la funcin DrawIcon.
Plugins
Unity le permite a usted agregar Plugins a un proyecto para extender las
caractersticas disponibles a Unity. Los Plugins son DLLs nativos que son escritos
tpicamente en C/C++. Pueden acceder cdigo de libreras de terceros, llamados al
sistema y otras cosas que no son proporcionadas por Unity. Los plugins deben ser
colocados en una carpeta llamada Plugins para que sean detectados por Unity y,
como la carpeta del Editor, esto afecta el orden en el que los scripts son compilados.
Ver carpetas especiales y orden de compilacin de scripts por detalles, y Plugin
Inspector para informacin acerca del control del plugin en la plataforma.
Resources
Por lo general, usted crea instancias de assets en la escena que son utilizadas en el
gameplay pero Unity tambin le permite a usted cargar assets en demande desde un
script. Usted hace esto colocando assets en una carpeta llamada Resources o una
sub-carpeta (usted en realidad puede tener cualquier nmero de carpetas Resources
y colocarlas dnde sea en el proyecto). Estos assets se pueden cargar utilizando la
funcin Resources.Load.
Standard Assets
Cuando usted importe un paquete de standard asset (men: Assets > Import
Package) los assets son colocados en una carpeta llamada Standard Assets. Al igual
que contener los assets, estas carpetas tambin tienen un efecto en el orden de
- 277 -
compilacin scripts; ver la pgina acerca de carpetas especiales y orden de
compilacin scripts por detalles adicionales.
StreamingAssets
La mayora de assets del juego son incorporados directamente al reproductor
construido pero hay algunos casos dnde usted quiere que el asset est disponible
como un archivo separado en su formato original. Por ejemplo, reproducir un video
en iOS, usted debe acceder el archivo del video desde el filesystem (sistema de
archivos) en vez de utilizarlo como una MovieTexture. Si usted coloca un archivo en
una carpeta llamada StreamingAssets, este ser copiado sin cambiar a la maquina
objetivo dnde estar disponible de una carpeta especfica. Ver la pgina acerca
de Streaming Assets para detalles adicionales.
WebPlayerTemplates
Para construcciones del webplayer, Unity le permite a usted proporcionar una pgina
de alojamiento personalizada para entregar el reproductor. La pgina anfitriona es
proporcionada en la forma de un template que puede incorpora informacin
especifica del proyecto como su nombre. Estos templates (planillas) deben ser
colocados en una carpeta llamada WebPlayerTemplates para que estn disponibles
a Unity; ver la pgina acerca de utilizar Web Player templates para detalles
adicionales. Tambin vale la pena tener en cuenta que cualquier script colocado en la
carpeta WebPlayerTemplates ser ignorado por el compilador. Colocar los archivos
scripts puede ser una manera til temporal de pararlos en ser compilados, digamos si
contienen cdigo incompleto que evitar que el juego corra.
- 278 -
Esto es utilizado para prevenir que se importen archivos especiales y temporales
creados por el sistema operativo u otras aplicaciones.
- 279 -
Exporting Packages
A medida que construyes tu juego, Unity almacena muchos metadatos de tus assets
(configuraciones de importacin, enlaces a otros assets, etc.) Si quieres tomar tus
assets para usarlos en un proyecto diferente, hay una forma especfica de hacerlo. A
continuacin se muestra cmo mover fcilmente assets entre proyectos, de modo
que sea conservada toda esta informacin:
See Asset Packages for detailed information on using packages, including importing
and exporting.
3.In the dialog box, select the assets you want to include in the package by clicking on
the boxes so they are checked.
4.Leave the include dependencies box checked to auto-select any assets used by the
ones you have selected.
5.Click on Export to bring up File Explorer (Windows) or Finder (Mac) and choose
where you want to store your package file.
HINT: When exporting a package Unity can export all dependencies as well. So, for
example, if you select a Scene and export a package with all dependencies, then all
models, textures and other assets that appear in the scene will be exported as well.
This can be a quick way of exporting a bunch of assets without manually locating
them all.
- 280 -
Fig 1: Exporting Package dialog box
Select the asset files you want in your package (select both the unchanged ones and
the new ones).
NOTE: You can re-name an updated package and Unity will recognise it as an update,
so you can use incremental naming, for example: MyAssetPackageVer1,
MyAssetPackageVer2.
HINT: It is not good practise to remove files from packages and then replace them
with the same name: Unity will recognise them as different and possibly conflicting
files and so display a warning symbol when they are imported. If you have removed a
file and then decide to replace it, it is better to give it a different, but related name to
the original.
- 281 -
Control de Versiones
Usted puede utilizar Unity en conjunto con la mayora de herramientas de control de
versiones, incluyendo Perforce y PlasticSCM. Esta seccin da detalles acerca de las
herramientas y las opciones disponibles y cmo trabajar con ellas.
TutorialesRespuestas de
- 282 -
Integracin con control de versiones (solo
Licencias de Equipo)
Unity soporta la integracin con los controladores de versiones Perforce y Plastic SCM,
consulte estas pginas para informacin especfica sobre la eleccin de control de
versiones.
- 283 -
control de versiones que elija.
6.Deje Automatic add marcado si quiere que sus archivos sean automticamente
agregados al control de versiones cuando se agregan al proyecto (o a la carpeta en el
disco). De lo contrario tendr que aadir archivos nuevos manualmente.
8.Las opciones Asset Serialization, Default Behaviour Mode y Sprite Packer pueden ser
editadas para adaptarse a las preferencias de su equipo y su opcin de version
control.
9.Haga click en connect y verifique que Connected es mostrado encima del botn de
connect despus de un pequeo rato.
10.Use su cliente estndar (e.g. p4v) para asegurarse de que todos loas archivos en las
carpetas de Assets y ProjectSettings (incluyendo archivos terminando con .meta) son
agregados.
- 284 -
Version Control
Permite que se hagan
Check Out S S
cambios al archivo
Compara las
diferencias entre los
Diff against head S S
archivos a nivel local
y en el encabezado
Obtiene los ltimos
Get Latest cambios y el archivo S No*
de actualizacin
Previene que otros
Lock usuarios hagan S No**
cambios al archivo
Agrega localmente
Mark Add pero no a version S S
control
Para resolver
conflictos en un
Resolve Conflicts archivo que ha sido S No***
cambiado por
mltiplos usuarios
Descarta los cambios
Revert realizados a archivos S S
abiertos cambiados
Descarta los cambios
Revert Unchanged realizados a archivos S S
abiertos sin modificar
Somete el estado
Submit actual del archivo a S S
version control
Suelta lock y permite
Unlock que se hagan cambios S No**
por cualquiera
* Para obtener los ltimos cambios y actualizar el archivo usando Plastic SCM, usted
necesita usar la ventana de version control.
** Bloquear y desbloquear usando Plastic SCM requiere que usted edite un archivo
bloqueado especfico de Plastic SCM externamente, mire la pgina para ms
informacin
*** Los conflictos son mostrados dentro el men de version control pero resueltos en
- 285 -
el GUI de Plastic SCM.
- 286 -
La pestaa Outgoing lista todos los cambios locales que estn pendientes de una
confirmacin en el version control, mientras que la pestaa Incoming lista todos los
cambios que necesitan ser sacados del version control.
Haciendo click derecho en los assets o en changelists en esta ventana hace que usted
realice operaciones en estos. Para mover assets entre changelists simplemente
arrastre los assets desde una changelist al encabezado del changelist de destino.
Iconos
Los siguientes iconos son mostrados en el editor de Unity para visualizar el estatus
del version control para archivos/assets:
- 287 -
Ha habido un conflicto
Necesita ser resuelto
fusionando este archivo
El archivo ha sido eliminado Una eliminacin pendiente en
por usted version control
El archivo ha sido eliminado Una eliminacin pendiente en
por otro usuario version control
El archivo an no est bajo
n/a
version control
El archivo est bloqueado por No puede ser modificado por
usted otros usuarios
El archivo est bloqueado por No puede ser modificado por
otro usuario usted
Otro usuario ha checked in Use Apply Incoming
una nueva versin de este Changes para obtener la
archivo ltima versin
Cosas para tener en cuenta:
Ciertos version controls o va a permitirle editar assets hasta que estn marcados
como Checked out ( al menos de que tenga marcado Work offline).
En Plastic SCM, los assets automticamente generados como los lightmaps son
automticamente agregados/checked out.
- 288 -
Modo Sin Conexin
Unity apoya trabajar en modo fuera de linea, e.g, para continuar trabajando sin una
conexin de red con el repositorio de su versin de control.
Seleccione Work offline desde los ajustes del version control, si quiere ser capaz de
trabajar desconectado del version control.
Solucin de Problemas(Troubleshooting)
Si Unity por alguna razn no puede confirmar los cambios a su cliente de version
control, e.g. si el servidor est cado o problemas de licencia, los cambios se guardan
en un conjunto de cambios(changeset) por separado.
- 289 -
Integracin Perforce
Para ms informacin acerca de Perforce, puede visitar la website.
Configurando Perforce
Dirjase a perforce documentation si encuentra cualquier problema con el proceso de
configuracin en version control page.
Solucin de Problemas(Troubleshooting)
Si por alguna razn Unity no puede realizar sus cambios a Perforce, e.g. si el servidor
est cado, problemas de licencia etc., sus cambios van a ser almacenados en un
changeset separado. Si la consola no lista cualquier informacin acerca del problema,
usted puede usar el cliente P4V de Perforce para presentar este changeset para ver el
mensaje de error exacto.
- 290 -
Integracin de Plastic SCM
Para ms informacin acerca de Plastic SCM usted puede visitar la website.
Si los cambios entrantes entran en conflicto con los cambios locales, entonces un
icono de signo de interrogacin va a aparecer en los archivos en conflicto en la
ventana de cambios entrantes. He aqu una gua rpida en resolver conflictos y
fusionar con Plastic SCM.
En la ventana de Version Control haga click en el botn Apply all incoming changes,
esto automticamente lo llevar al cliente GUI de Plastic SCM.
Dentro de la ventana del cliente, usted va a ser capaz de hacer click en Explain
merge, para un entendimiento ms visual de los cambios. Ahora haga click en
Process all merges y otra ventana va a ser mostrada.
Aqu usted va a ser mostrado los conflictos individuales y tener la opcin de escoger
qu cambios quiere mantener o descartar.
- 291 -
Una vez haya solucionado los conflictos haga click en guardar y salir, esto har que la
operacin de fusin se haya completado.
Usted ahora tiene que empujar los cambios como normal a travs de la ventana de
version control de Unity.
La primer cosa que tiene que hacer es crear un archivo lock.conf y asegurarse que
est ubicado dentro del directorio del servidor. Usted puede encontrar el directorio
del servido desde ../PlasticSCM/server.
Usted va querer reiniciar su servidor en este punto, usted puede hacer esto abriendo
una ventana de una linea de terminal/command y ubicando el directorio del servido.
Una vez en el directorio, puede reiniciar el servidor escribiendo:
./plasticsd restart
Ahora vaya devuelta a Unity y check out un archivo que usted espera que se bloquee,
luego vaya devuelta a la linea del terminal/command y escriba:
cm listlocks
Si los pasos han sido seguidos correctamente, la ventana de la linea de
terminal/command debera ahora mostrar una lista de archivos bloqueados. Tambin
puede probar si esto ha funcionando intentando check out el mismo archivo usando
un usuario diferente, un error aparecer en la consola de Unity diciendo que el
archivo est ya checked out por otro usuario.
Para ms informacin usted puede visitar Plastic SCM lock file documentation.
- 292 -
check the Distributed Version Control Guide.
- 293 -
Usando Sistemas de Control de Versiones
Externos con Unity
Unity ofrece un producto agregado Asset Server para una integracin fcil de las
versiones de sus proyectos, y tambin puede utilizar Perforce y PlasticSCM como
herramientas externas ( mire Version Control Integration para ms detalles). Si usted
por alguna razn no puede utilizar estos sistemas, es posible almacenar su proyecto
en cualquier otro sistema de control de versiones, tal como Subversion o Bazaar. Esto
requiere algunas configuraciones manuales iniciales de su proyecto.
- 294 -
en svn://my.svn.server.com/MyUnityProject. Entonces siga estos pasos para
crear la importacin inicial en el sistema:
3.Slgase de Unity (esto asegura que todos los archivos estn guardados).
7.Abra el proyecto checked out con Unity lanzndolo mientras mantiene oprimido las
teclas Option o el Alt izquierdo. Abrir el proyecto va a recrear el
directorio Library en el paso 4 de arriba.
- 295 -
Smart Merge
Unity incorporates a tool called UnityYAMLMerge that can merge scene and prefab
files in a semantically correct way. The tool can be accessed from the command line
and is also available to third party version control software.
Off: use only the default merge tool set in the preferences with no smart merging.
Premerge: enable smart merging, accept clean merges. Unclean merges will create
premerged versions of base, theirs and mine versions of the file. Then, use these with
the default merge tool.
Ask: enable smart merging but when a conflict occurs, show a dialog to let the user
resolve it (this is the default setting).
or
- 296 -
extensions. The most common tools are already listed by default in mergespecfile.txt
but you can edit this file to add new tools or change options.
You can run UnityYAMLMerge as a standalone tool from the command line (you can
see full usage instructions by running it without any arguments). Set-up instructions
for common version control systems are given below.
P4V
Vaya a Preferences > Merge.
Click Save.
Git
Agregue el siguiente texto a su archivo .git o .gitconfig
[merge]
tool = unityyamlmerge
[mergetool "unityyamlmerge"]
trustExitCode = false
cmd = '<path to UnityYAMLMerge>' merge -p "$BASE" "$REMOTE" "$LOCAL"
"$MERGED"
Mercurial
Agregue el siguiente texto a su archivo .hgrc:
[merge-patterns]
**.unity = unityyamlmerge
**.prefab = unityyamlmerge
[merge-tools]
unityyamlmerge.executable = <path to UnityYAMLMerge>
unityyamlmerge.args = merge -p --force $base $other $local $output
unityyamlmerge.checkprompt = True
unityyamlmerge.premerge = False
unityyamlmerge.binary = False
- 297 -
SVN
Agregue lo siguiente a su archivo ~/.subversion/config:
[helpers]
merge-tool-cmd = <path to UnityYAMLMerge>
TortoiseGit
Vaya a Preferences > Diff Viewer > Merge Tool y haga click en el botn Advanced.
PlasticSCM
Vaya a Preferences > Merge Tools y haga click en el botn Add.
Ingrese el comando:
<path to UnityYAMLMerge> merge -p @basefile @sourcefile
@destinationfile @output
Luego, siga el mismo procedimiento para agregar una extensin .prefab.
SourceTree
Vaya a Tools > Options > Diff.
- 298 -
Solucin de Problemas (Troubleshooting) del
Editor
La siguiente seccin explica cmo solucionar problemas(troubleshoot) y evitar
problemas con el editor de Unity. En general, asegrese que su computador cumpla
con todos los system requirements, est actualizado a la fecha, y que usted tenga el
permiso requerido de usuario en su sistema. Tambin haga copias de seguridad
regularmente para proteger sus proyectos.
Versiones
Usted puede instalar diferentes versiones del editor en diferentes carpetas. No
obstante, asegrese de que haga copias de seguridad de sus proyectos ya que estos
pueden ser actualizados por una versin nueva, y no podr abrirlos en una versin
vieja de Unity. Mire la pgina del manual sobre instalando Unity para ms detalles.
Las licencias de complementos son vlidas solamente para versiones de Unity que
compartan el nmero mayor igual, por ejemplo 3.x y 4.x. Si usted actualiza a una
versin menor de Unity, por ejemplo 4.0 a 4.1, los complementos sern mantenidos.
Activacin
Activacin por Internet es el mtodo preferido para generar su licencia de Unity. Pero
si est teniendo problemas, siga estos pasos:
4.Escoja una ubicacin conocida para guardar, por ejemplo, la carpeta de descargas.
- 299 -
8.Haga click en Download License y guarde el archivo.
Fallo al Arranque
Si Unity falla cuando empieza, entonces primero asegrese que su computador
cumpla con los mnimos system requirements. Tambin actualicese a los ltimos
controladores grficos y de sonido.
En Windows:
MacOS:
Fuentes
Fuentes corruptas pueden hacer que Unity falle, usted puede encontrar archivos
- 300 -
daados siguiendo estos pasos:
En Windows:
3.Revise la columna de Size (tamao) por fuentes con tamao 0, que indica un
archivo con problema.
En MacOS:
3.Abra el men File y escoja Validate Fonts, las fuentes con problemas sern
mostradas como invlidas.
5.El sistema puede tener recursos restringidos, por ejemplo corriendo en una
maquina virtual. Use el Task Manager para encontrar procesos consumiendo bastante
memoria.
En el evento de una instalacin corrupta, usted puede que tenga que reinstalar Unity -
vea las instrucciones abajo.
- 301 -
operativo.
Rendimiento y Fallas
Si el editor corre lentamente o falla, particularmente en construcciones, esto puede
ser causado por todos los recursos del sistema disponibles siendo consumidos. Cierre
todas las otras aplicaciones cuando construya el proyecto. Limpie el sistema usando
sus utilidades, y consulte el Task Manager (Windows) o Activity Monitor (MacOS) para
buscar si hay processos usando hartos recursos, por ejemplo memoria. Algunas veces
el software de proteccin de virus puede disminuir o hasta bloquear el sistema de
archivos con su proceso de escaneo.
Re-instalacin
Siga estos paso para reinstalar el editor:
3.Windows:
5.MacOS:
6./Library/Application Support/Unity/
7.Reinicie el computador.
- 302 -
9.Reinstale Unity.
- 303 -
Desarrollo Avanzado
Esta seccin cubre las tcnicas de desarrollo ms avanzadas, la cual ser til para
desarrolladores y equipos quines estn cmodos con lo bsico de desarrollar en
Unity.
Los temas en esta seccin le dan un control ms poderoso sobre trabajar con escena,
manejar assets, y la racionalizacin de su proyecto.
- 304 -
La ventana del Profiler (perfilador)
El Profiler de Unity le ayuda a usted optimizar su juego. Este le reporte qu tanto
tiempo se est gastando en varias reas de su juego. Por ejemplo, puede reportar el
porcentaje de tiempo gastado en renderizando, animandol o en la lgica de su juego.
Usted puede jugar su juego en el Editor con el Profiling prendido, y ste va a grabar
los datos de rendimiento. La ventana del Profiler luego muestra los datos en una linea
de tiempo, para que usted pueda ver los frames o reas que que toman ms tiempo
que otras. Al hacer click en cualquier parte de la linea de tiempo, la seccin inferior de
la ventana del Profiler va a mostrar informacin detallada para el frame seleccionado.
Tenga en cuenta que profiling tiene que instrumentar su cdigo. Esta instrumentacin
tiene un impacto pequeo en el rendimiento de su juego. Tpicamente, esta
sobrecarga es lo suficiente pequea para no afectar la framerate (velocidad de
frames) del juego. Cuando utilice el profiling es tpico considerar solo las relaciones (o
porcentaje) del tiempo gastado en ciertas reas, Tambin, para mejorar el enfoque de
rendimiento de esas partes del juego que consumen la mayora de tiempo. Compere
los resultados de profiling antes y despus de cambios en el cdigo y determine las
mejoras que usted mide. Algunos cambios que usted hace para mejorar el
rendimiento podran tener un efecto negativo en el frame rate (velocidad de frames);
consecuencia inesperadas de optimizacin de cdigo debera esperarse.
Los detalles acerca de la ventana del Profiler son descritos en la siguiente pgina.
Ver tambin
La pgina Optimizing Graphics Performance.
- 305 -
webplayer (reproductor web) para abrir el men de la seccin del release channel.
iOS
Un profiling remoto puede ser activado en dispositivos iOS siguiendo estos pasos:
1.Conecte su dispositivo iOS a su red WiFI (Red WiFi local/adhoc es utilizada por el
profiler para enviar datos de profiling del dispositivo al Editor de Unity)
Si usted est usando un firewall, usted necesita asegurarse que los puertos 54998 a
55511 estn abiertos en las reglas de salida del firewall - estos son los puertos
utilizados por Unity para un profiling remoto.
Android
El profiling remoto puede ser activado en dispositivos Android a travs de dos
diferentes caminos : WiFi o ADB.
- 306 -
Development Build y Autoconnect Profiler en el dialogo de los build settings
(ajustes de construccin) de Unity, y presione Build & Run en el Editor de Unity.
Si usted est usando un firewall, usted necesita asegurarse que los puertos 54998 a
55511 estn abiertos en las reglas de salida del firewall - estos son los puertos
utilizados por Unity para un profiling remoto.
- 307 -
Ventana del Perfilador(Profiler window)
- 308 -
Adjuntando a Reproductores de Unity
Para perfilar(profile) su juego corriendo en otro dispositivo o un reproductor
corriendo en otro computador, es posible conectar el editor a ese otro reproductor. El
despegable Active Profiler va a mostrar todos los jugadores corriendo en la red local.
Estos jugadores son identificados por el tipo de reproductor y el nombre del anfitrin
corriendo el reproductor iPhonePlayer (Toms iPhone). Para poderse conectar a un
reproductor, el reproductor debe ser ejecutado con la casilla de
verificacin Development Build encontrada en el dilogo Build Settings . Desde aqu
es tambin posible hacer tick a la casilla de verificacin para hacer que el Editor y el
Reproductor Autoconnect (auto-conecten) en el inicio.
- 309 -
Controles del Profiler
Tenga en cuenta que Deep Profiling incurre una gran sobrecarga y usa mucha
memoria, y como un resultado su juego va a correr significantemente ms lento
mientras est perfilando(profiling). Si usted est usando un cdigo script complejo, el
Deep Profiling puede que no sea para nada posible. Deep Profiling debera trabajar lo
suficientemente rpido para juegos pequeos con un scripting simple. Si usted
encuentra que Deep Profiling su juego entero causa la velocidad de frames caer lo
suficiente para que su juego apenas corra, usted debera considerar no usar este
acercamiento, y ms bien utilizar el acercamiento descrito abajo. Usted puede
encontrar Deep Profiling ms til mientras usted est diseando su juego y
decidiendo cmo es la mejor manera de implementar las caractersticas claves. Tenga
en cuenta que para juegos grandes Deep Profiling puede causar que Unity se quede
sin memoria y por esta razn deep profiling puede no ser posible.
- 310 -
sobrecarga en vez de usar Deep Profiling. Use estas funciones de
scripting Profiler.BeginSample y Profiler.EndSample para habilitar y deshabilitar el
perfilamiento alrededor de secciones de cdigo.
La linea de tiempo consiste en varias reas: El uso del CPU, Rendering y Memory.
Estas reas pueden ser quitadas al hacer click en el botn de cerrar en el panel, y re-
agregadas nuevamente usando el despegable Add Area en la barra de los controles del
perfilador.
- 311 -
- 312 -
rea de Uso del CPU(CPU Usage Area)
El rea de Uso del CPU muestra dnde el tiempo es gastado en su juego. Cuando es
seleccionado, el panel inferior muestra informacin jerrquica de tiempo para el
frame seleccionado.
La manera en que el grfico del CPU es apilado puede ser reordenado simplemente
arrastrando las etiquetas del grfico arriba y abajo.
- 313 -
selecciona.
La seccin Others del perfilador del CPU graba el total de todas las reas que no caen
en Renderer, Scripts, Physics, Garbage Collection o VSync. Esto incluye Animacin, AI,
Audio, Particles, Networking, Loading y PLayerLoop.
- 314 -
Physics Markers (Marcadores de fsica)
La descripcin a continuacin proporciona una breve resea de lo que cada de los
varios marcadores de alto nivel de fsica del profiler (high level physics profiler)
significa:
- 315 -
relacionadas a Cloth y sus skinned meshes son hechos.
Advertencias de Rendimiento
Hay algunos problemas de rendimiento comunes que el profiler es posible de
detectar y advertirle sobre ello. Estas advertencias aparecen en la columna warning
del panel inferior, cuando vea el CPU Usage.
Una advertencia del profiler indicando que static colliders han sido movidos.
- 316 -
Animation.Clone [Triggers RebuildInternalState]
- 317 -
rea de Renderizacin(Rendering Area)
- 318 -
rea de Memoria(Memory Area)
Hay dos modos en los cuales usted puede inspeccionar el uso de memoria de su
aplicacin. Esto es seleccionado en el despegable en la parte superior del panel
inferior.
Unity reserva grupos de memoria para unas asignaciones con el fin de evitar pedirle al
OS por la memoria con demasiada frecuencia. Esto se muestra como una cantidad
reservada y cunto se usa. Las reas cubiertas por esto son:
Mono El tamao de la pila (heap) completa y el tamao de la pila (heap) utilizada por
Managed Code - en esta memoria se realiza recoleccin de basura.
Profiler La memoria usada para la profilerdate Los nmeros que se muestran no van
- 319 -
a mostrar la misma cantidad que el Task Manager o el Activity Monitor, porque hay
algunos usos que no tienen seguimiento por el perfilador de memoria. Esto incluye
memoria usada por algunos controladores y memoria usada por cdigo ejecutable.
Las estadsticas de memoria son mostradas para algunos de los tipos de asset/object
ms comunes e incluyen el conteo y la memoria usada (memoria principal y de video)
Textures
Meshes
Materials
Animations
Audio
Object Count es el nmero total de Objetos que se crean. Si este nmero crece a
travs del tiempo entonces esto significa que su juego est creando algunos objetos
que nunca se destruyen.
- 320 -
Esto mostrar el uso de memoria del asset individual y game object. Tambin
mostrar una razn para un objeto de estar en memoria. La razn puede ser una de
las siguientes:
- 321 -
rea de Audio(Audio Area)
In the Profiler window there is a pane called Audio. The pane monitors significant
performance meters about the audio system, such as total load and voice counts.
When you highlight the pane, the lower part of the window changes into a detailed
view about various parts of the audio system not covered by the graphs.
El uso de CPU se puede ver en la parte inferior. Monitorear esto para ver si el audio en
s est tomando mucho CPU.
Additionally, by clicking the Channels / Groups / Channels and groups buttons detailed
per-frame logging of sound events can be obtained and scrubbed, just like the
renderer and memory graphs. The rows in the frame log reveal information about
which audio sources played which clips, the volume at which these were played, the
distance to the listener, relative playback time etc. Clicking on one of these rows
highlights the associated audio source and clip in the project browser and hierarchy.
- 322 -
Channel view. When clicking a row first the AudioClip asset is highlighted, then the
AudioSource in the hierarchy that played it.
- 323 -
Channels and groups view. Here the AudioSource that played the sound in the
selected row is highlighted.
- 324 -
Perfilador de Fsica(Physics Profiler)
- 325 -
rea GPU (GPU Area)
Por favor tenga en cuanta que en Mac, el perfilado GPU est solo disponible bajo OSX
10.9 Mavericks y versiones posteriores.
- 326 -
Multi Scene Editing (Edicin de varias
escenas)
El Multi Scene Editing le permite a usted tener mltiples escenas abiertas en el editor
simultneamente, y hace que sea ms fcil el manejo de escenas en tiempo de
ejecucin.
En el Editor
Para abrir una nueva escena y agregarla a la lista actual de escenas en la jerarqua,
puede seleccionar Open Scene Additive en el men de contexto para un asset de
escena, o arrastre una o ms escenas desde la ventana del Proyecto a la ventana de
Jerarqua.
Open Scene Additive will add the selected scene asset to the current scenes shown in
- 327 -
the hierarchy
When you have multiple scenes open in the editor, each scenes contents are
displayed separately in the hierarchy window. Each scenes contents appears below a
scene divider bar which shows the scenes name and its save state.
While present in the hierarchy, scenes can be loaded or unloaded to reveal or hide
the gameobjects contained within each scene. This is different
to adding and removing them from the hierarchy window.
The scene dividers can be collapsed in the hierarchy to the scenes contents which
may help you to navigate your hierarchy if you have lots of scenes loaded.
When working on multiple scenes, each scene that is modified will need its changes
saved, so it is possible to have multiple unsaved scenes open at the same time.
Scenes with unsaved changes will have an asterisk shown next to the name in the
scene divider bar.
- 328 -
An asterisk in the scene divider indicating this scene
has unsaved changes
Each Scene can be saved separately via the context menu in the divider bar. Selecting
Save Scene from the file menu or pressing Ctrl/Cmd + S will save changes to all open
scenes.
- 329 -
Proyecto.
Proporciona un sub-men permitindole crear
GameObjects en la escena seleccionada. El
GameObject men refleja los items disponibles para crear
en el men GameObject principal de Unity.
(Mostrado abajo)
The input to the lighting calculations is the static geometry and lights from all scenes.
Therefore shadows and GI light bounces will work across all scenes. However, the
- 330 -
lightmaps and realtime GI data are separated out into data that is loaded / unloaded
separately for each scene. The lightmaps and realtime GI data atlases are split
between scenes. This means lightmaps between scenes are never shared and they
can be unloaded safely when unloading a scene. Lightprobe data is currently always
shared and all lightprobes for all scenes baked together are loaded at the same time.
Alternatively, you can automate building lightmaps for multiple scenes by using
the Lightmapping.BakeMultipleScenes function in an editor script.
Alternatively, you can automate building navmesh data for multiple scenes by using
the NavMeshBuilder.BuildNavMeshForMultipleScenes function in an editor script.
Playmode
In Playmode, whith multiple scenes in the Hierarchy, an additional scene will show up
called DontDestroyOnLoad.
Prior to Unity 5.3, any objects you would instantiate in Playmode marked as
DontDestroyOnLoad would still show up in the hierarchy. These objects are not
considered part of any scene but for Unity to still show the objects, and for you to
inspect them, these objects are now shown as part of the special DontDestroyOnLoad
scene.
You do not have access to the DontDestroyOnLoad scene and it is not available at
runtime.
Scene-specific settings
A number of settings are specific to each scene. These are:
- 331 -
NavMesh settings
The way it works is that each scene will manage its own settings and only settings
associated with that scene will be saved to the scene file.
If you have multiple scenes open, the settings that are used for rendering and
navmesh are the ones from the active scene. This means that if you want to change
the settings of a scene, you must either open only one scene and change the settings,
or make the scene in question the active scene and change the settings.
When you switch active scene in the editor or at runtime, all the settings from the new
scene will be applied and replace all previous settings.
Scripting
Editor Scripting
For editor scripting we provide a Scene struct and EditorSceneManager API and
a SceneSetup utility class.
The Scene struct is available both in the editor and at runtime and contains a handful
of read-only properties relating to the scene itself, such as its name and asset path.
The SceneSetup class is a small utility class for storing information about a scene
currently in the hierarchy.
The Undo and PrefabUtility classes have been extended to support multiple scenes.
You can now instantiate a prefab in a given scene using
[PrefabUtility.InstantiatePrefab], and you can move objects to the root of a scene in an
un-doable manner using (Undo.MoveGameObjectToScene)
[ScriptRef:Undo.MoveGameObjectToScene]
Runtime Scripting
For scripting at Runtime, the functions to work with multiple scenes such
- 332 -
as LoadScene and UnloadScene are found on the SceneManager class.
Notes
In the File menu Save Scene As will only save the active scene. Save Scene will save all
modified scenes, including prompting you to name the Untitled scene if it exists.
New scenes can be created using the Create menu in the project window. New scenes
will contain the default setup of Game Objects.
To avoid having to set up your hierarchy every time you restart unity or to make it
easy to store different setups you can
use EditorSceneManager.GetSceneManagerSetup to get a list of SceneSetup objects
which describes the current setup. You can then serialize these into a ScriptableObject
or something else along with any other information you might want to store about
your scene setup. To restore the hierarchy simply recreate the list of SceneSetups and
use EditorSceneManager.RestoreSceneManagerSetup.
- 333 -
At runtime to get the list of loaded scenes simply get sceneCount and iterate over the
scenes using GetSceneAt.
You can get the scene a GameObject belongs to through GameObject.scene and you
can move a GameObject to the root of a scene
using SceneManager.MoveGameObjectToScene.
Problemas conocidos:
Cross-scene references are not supported but also not prevented.
Occlusion culling data from Umbra can still not be loaded additively.
- 334 -
Cargando recursos en tiempo de ejecucin
En algunas situaciones, es til hacer que un asset sea disponible a un proyecto sin
necesidad de cargarlo como parte de una escena. Por ejemplo, puede haber un
personaje u otros objetos que aparezcan en cualquier escena del juego pero que
sern utilizadas infrecuentemente (esto podra ser una caracterstica secreta, un
mensaje de error o una alerta de un puntaje mximo, digamos). Adicionalmente,
usted podra incluso querer cargar los assets de un archivo separado o URL para
reducir el tiempo de descarga inicial o permitir el intercambio de contenido de juegos.
Unity soporta Resource Folders en el proyecto para permitir que el contenido sea
suministrado en el archivo principal del juego, pero no ser cargado hasta que sea
solicitado. Usted puede tambin crear Asset Bundles. Estos son archivos
completamente separados de un archivo del juego principal que contiene assets en
ser accedidos por el juego en demanda de un archivo o URL.
Asset Bundles
Un Asset Bundle es una coleccin externa de assets. Usted puede tener muchos Asset
Bundles y por lo tanto tener diferentes colecciones externas de assets. Estos archivos
existen afuera del reproductor de Unity construido, usualmente sentando en un
servidor web para que los usuarios finales sean accedidos de manera dinmica.
Para colocar cualquier cosa en una Resource Folder (Carpeta de recursos), usted
puede simplemente crear una nueva carpeta dentro del Project View, y nombrar la
carpeta Resources. Usted puede tener mltiples Resource Folders organizadas
- 335 -
diferentemente en su proyecto. Cuando sea que usted quiera cargar un asset de una
de estas carpetas, usted puede llamar Resources.Load().
Tenga en cuenta:
Todos los assets encontrados en las carpetas Resources y sus dependencias son
almacenados en un archivo llamado resources.assets. Si un asset ya est en uso por
otro nivel es almacenado en el archivo .sharedAssets para ese nivel. Los ajustes de
los Edit -> PlayerSettings First Streamed Leveldeterminan el nivel al cual
los resources.assets sern coleccionados e incluidos en la construccin.
Si un nivel anterior al First streamed Level est incluyendo un asset en una carpeta
Resource, el asset ser almacenado en los assets para ese nivel. si es incluidos
despus, el nivel va a referenciar el asset del archivo resources.assets.
Solamente los assets que estn almacenados en la Resources folder pueden ser
accedidos a travs de Resources.Load(). Sin embargo, hay ms assets que podran
terminar en el archivo resources.assets ya que son dependencias. (Por ejemplo un
Material en la carpeta Resources podra referenciar una Textura afuera de la carpeta
Resources)
Descarga de Recursos
Usted puede descargar recursos de un AssetBundle al llamar AssetBundle.Unload(). Si
usted pasa true para el parmetro unloadAllLoadedObjects, ambos el objeto
mantenido internamente por el AssetBundle y los cargados del AssetBundle
utilizando AssetBundle.LoadAsset()](../ScriptReference/AssetBundle.LoadAsset.html)
ser destruido y la memoria utilizado por el bundle ser soltada.
A veces usted puede preferir cargar un AssetBundle, instanciar los objetos deseados y
soltar la memoria utilizada por el bundle mientras mantiene los objetos alrededor. El
beneficio es que usted libra memoria para otras tareas, por ejemplo, cargar otro
AssetBundle. En este escenario usted podra pasar false como el parmetro. Despus
de que el bundle es destruido usted no ser capaz de cargar los objetos de este no
- 336 -
ms.
- 337 -
Plugins
En Unity, usted normalmente utiliza scripts para crear funcionalidad pero usted puede
tambin incluir cdigo creado afuera de Unity en forma de un Plugin. Hay dos tipos
de plugins que usted puede utilizar en Unity: Managed plugins y Native plugins.
Los Managed plugins son assemblies .NET manejadas creadas con herramientas como
Visual Studio o MonoDevelop. Estos contienen solo cdigo .NET que significa que no
tienen acceso a cualquier caractersticas que no son soportadas por las libreras .NET.
Sin embargo, el cdigo (managed) manejado es accesible a las herramientas .NET
estndar que Unity utiliza para compilar scripts. Por lo tanto hay poca diferencia en el
uso entre cdigo plugin managed (manejado) y cdigo script de Unity, excepto por el
hecho que los plugins son compilados afuera de Unity y entonces la fuente puede que
no est disponible.
Los Native plugins son libreras de cdigo nativo especifico a plataformas. Pueden
acceder a caractersticas como llamados OS y libreras de cdigo de terceros que por
el contrario no estn disponible en Unity. Sin embargo, estas libreras no son
accesibles a las herramientas de Unity en la manera que las libreras managed
(manejadas) lo son. Por ejemplo, si a usted se le olvida agregar un archivo plugin
managed (manejado) al proyecto, usted obtendr mensajes de error de compilacin
estndares. Si usted hace lo mismo con el plugin nativo, usted solamente ver un
reporte de error cuando intente ejecutar el proyecto.
Esta seccin explica cmo crear plugins y utilizarlos en sus proyectos de Unity.
- 338 -
Inspector de Plugins
The Plugin Inspector is used to select and manage target platforms for the plugins in
your project. Simply select a plugin file to view its Inspector.
Under Select platforms for plugin, choose which platforms will use the plugin by
checking the appropriate boxes. If you select Any Platform, the plugin will apply to all
platforms, including the Unity editor.
The current list of file extensions that are treated as plugins and display the Plugin
Inspector in the Unity Editor is found
- 339 -
in PluginImporter::CanLoadPathNameFile(). The following file extensions
identify files that are treated as plugins:
.dll
.winmd
.so
.jar
.aar
.xex
.def
.suprx
.prx
.sprx
.rpl
.cpp
.cc
.c
.h
.jslib
.jspre
.bc
.a
.m
.mm
.swift
.xib
Certain folders are treated as a single bundle plugin. No additional plugins are
detected within such folders. The following extensions identify folders that are treated
- 340 -
as bundle plugins:
.framework
.bundle
.plugin
Ajustes Predeterminados
Para hacer una transicin ms fcil de versiones anteriores de Unity, Unity intentar
configurar ajustes de plugin predeterminados, dependiendo en la carpeta dnde los
plugins estn ubicados.
- 341 -
Folder ####Ajustes Predeterminados
con Tizen.
Plugin ser solamente compatible con
Assets/Plugins/Xbox360
Xbox360.
Plugin ser compatible solamente con
Assets/Plugins/PSVita
Playstation Vita.
Plugin ser solamente compatible con
Assets/Plugins/PS4
Playstation 4.
Plugin ser solamente compatible con
Assets/Plugins/SamsungTV
Samsung Tv.
Device-specific settings
Ajustes del Editor
Opciones en la pestaa
editor
Por ejemplo, si usted selecciona CPU X86, el plugin ser utilizado en el 32 bit Editor,
pero no ser utilizado en 64 bit Editor.
Ajustes Standalone
Ver Stand Alone Player Settings.
windowsstore-plugins.html
windowsstore-plugins.html
iOS
When building for Android, folders found with a parent path matching
exactly Assets/Plugins/Android/ are treated as an Android Library plugin folder. They
- 342 -
are then treated in the same way as folders with the special extensions .plugin,
.bundle and .framework.
iOS
- 343 -
Managed Plugins
Usualmente, los scripts se mantienen en un proyecto como los archivos fuente y son
compilados por Unity cuando la fuente cambia. Sin embargo, tambin es posible
compilar un script a una dynamically linked library** (DLL) utilizando un compilador
externo. El DLL resultante puede luego ser agregado al proyecto y las clases que
contiene pueden ser adjuntadas a los objetos como los scripts normales.
Por lo general es ms fcil trabajar con scripts que DLLs en Unity. No obstante, usted
podra tener acceso a cdigo Mono de terceros que es suministrado en forma de un
DLL. Cuando desarrolle su propio cdigo, usted podra utilizar compiladores no
soportados por Unity (F#, por ejemplo) al compilar el cdigo a un DLL y agregndolo a
su proyecto de Unity. Tambin, usted podra querer suministrar cdigo de Unity sin la
fuente (para un producto de la Asset Store, digamos) y un DLL es una manera fcil de
hacer esto.
Creando un DLL
Para crear un DLL, usted primero necesitara un compilador adecuado. No todos los
compiladores que producen cdigo .NET son garantizados a que funcionen con Unity,
por lo que puede ser sabio probar el compilador con algo de cdigo disponible antes
de hacer trabajo significante con este. si el DLL contiene ningn cdigo que depende
en el API de Unity, entonces usted podra simplemente compilarlo a un DLL utilizando
las opciones apropiadas de compilacin. Si usted no quiere utilizar el API de Unity
entonces usted necesitar que los DLLs propios de Unity estn disponibles al
compilador. En Mac, estos estn contenido en el bundle de aplicacin (usted puede
ver la estructura interna del bundle al utilizar el comando Show Package Contents del
men contextual; haga click derecho o ctrl- click en la aplicacin de Unity):-
- 344 -
mcs -r:/Applications/Unity/Unity.app/Contents/Frameworks/Managed/UnityEngine.dll
-target:library ClassesForDLL.cs
Usando la DLL
Una vez compilado, el archivo DLL puede ser simplemente arrastrado al proyecto de
Unity como cualquier otro asset. El asset DLL tiene un triangulo que se dobla que
puede ser utilizado para revelar las clases separadas dentro de la librera. Las clases
que deriven de MonoBehaviour pueden ser arrastradas a los Game Objects como
cualquier script ordinario. Las clases No-MonoBehaviour pueden ser utilizadas
directamente desde otro scripts de una manera usual.
Configurando el proyecto
Primero, abra MonoDevelop o Visual Studio y cree un nuevo proyecto. En
MonoDevelop, usted puede hacer esto al seleccionar File > New > Solutiony luego
escoger C# > Library. En Visual Studio, usted debera seleccionar File > New >
Project y luego escoger Visual C# > Class Library.
Luego, usted debera agregar referencias a los DLLs de Unity. En Monodevelop, usted
debera abrir el men contextual para References en el explorador de Solution y luego
escoger Edit References. Despus, escoja la opcin .Net Assembly tab > File System
> select file. En Visual Studio, abra el men contextual para References en el
- 345 -
explorador Solution y escoja Add Reference. Luego, escoja la opcin Browse >
Browse > select file.
En este punto, usted tendr la opcin de seleccionar el archivo DLL requerido. En Mac
OSX, el archivo puede encontrarse en
Applications/Unity.app/Contents/Frameworks/Managed/UnityEngine.dll
Program Files\Unity\Editor\Data\Managed\UnityEngine.dll
Para este ejemplo, re-nombre la clase a MyUtilities en el explorador Solution y
remplace su cdigo con el siguiente:
using System;
using UnityEngine;
namespace DLLTest {
public int c;
void Start () {
MyUtilities utils = new MyUtilities();
utils.AddValues(2, 3);
print("2 + 3 = " + utils.c);
}
void Update () {
print(MyUtilities.GenerateRandom(0, 100));
- 346 -
}
}
Cuando usted adjunte este script a un objeto en la escena y presione Play, usted ver
el output del cdigo del DLL en la ventana de la Consola.
Con esta configuracin completada, usted puede depurar el cdigo que utiliza DLL en
Unity en la manera usual. Ver la seccin Scripting Tools para ms informacin acerca
de la depuracin. y los dos DLLs son llamados UnityEngine.dll y UnityEditor.dll.
mientras los nombres de los DLLs son los mismos para Mac OS. Aqu, la opcin -
r especifica una ruta a la librera en ser incluida en la construccin, en este caso, la
librera UnityEngine. La opcin -target especifica qu tipo de construccin es
requerida; la palabra library (librera) es utilizada para seleccionar una construccin
DLL. Finalmente el nombre del archivo fuente en compilar es ClassesForDLL.cs (se
asume que este archivo est en la carpeta actual de trabajo, pero usted podra
especificar el archivo utilizando una ruta completa si es necesario). Asumiendo que
todo va bien, el archivo DLL resultante va a aparecer cortamente en la misma carpeta
que el archivo fuente. mientras en Windows, la ruta es
Cdigo
en la linea de comandos, pasar project folder\bin\Debug\DLLTest.pdb como
un parmetro. Luego, copie el archivo convertido project
folder\bin\Debug\DLLTest.dll.mdb a Assets/Plugins.
- 347 -
Plugins Nativos
Unity tiene un soporte extensivo para Plugins nativos, los cuales son libreras de
cdigo nativo escrito en C, C++, Objective-C, etc. Los plugins le permiten a su cdigo
del juego (escrigo en Javascript o C#) para llamar funciones de estas libreras. Esta
caracterstica le permite a Unity integrarse con libreras middleware o cdigo de juego
C/C++ existente.
Para poder utilizar un plugin nativo usted primero necesita escribir funciones en un
lenguaje basado en C para acceder a cualquiera de las caractersticas que usted
necesite y compilarlas a una librera. En Unity, usted tambin va a necesitar crear un
script C# que llama las funciones en un cdigo en la librera nativa.
Ejemplo
Una librera simple nativa con una sola funcin podra tener cdigo fuente que se ve
as:
float FooPluginFunction () { return 5.0F; }
Parra acceder este cdigo dentro de Unity, usted puede utilizar cdigo como el
siguiente:
using UnityEngine;
using System.Runtime.InteropServices;
#else
- 348 -
// Other platforms load plugins dynamically, so pass the name
// of the plugin's dynamic library.
[DllImport ("PluginName")]
#endif
void Awake () {
// Calls the FooPluginFunction inside the plugin
// And prints 5 to the console
print (FooPluginFunction ());
}
}
Tenga en cuenta que cuando utilice Javascript usted va a necesitar utilizar la siguiente
sintaxis, dnde el DLLNAME es el nombre del plugin que usted ha escrito, o
__Internal si usted est escribiendo cdigo nativo vinculado estaticamente.
@DllImport (DLLName)
static private function FooPluginFunction () : float {};
Ms Informacin
Interface del Plugin Nativo - esto se necesita si usted quiere hacer algo de renderizado
con su plugin.
- 349 -
Construyendo Plugins para Plataformas de
Escritorio
Esta pgina describe los Plugins de Cdigo Nativo para las plataformas de escritorio
(Windows/Mac OS X/Linux). Tenga en cuenta que los plugins estn intencionalmente
desactivados en los reproductores web por razones de seguridad.
Si usted est utilizando C++ (.cpp) u Objective-C (.mm) para implementar el plugin
entonces usted necesita asegurar que las funciones estn declaradas con un vinculo
en C para evitar name mangling issues.
extern "C" {
float FooPluginFunction ();
}
Libreras de 32 y 64 bits
El problema de necesitar plugins de 32-bit y/o 64-bit se maneja diferente
- 350 -
dependiendo en la plataforma.
Windows y Linux
En windows y Linux, los plugins pueden ser manejados manualmente (e.g, antes de
construir un reproductor 64-bit, copie la librera de 64-bit a la
carpeta Assets/Plugins, y antes de construir un reproductor 32-bit, copie la librera
32-bit a la carpeta Assets/Plugins) o usted puede colocar una versin 32-bit del
plugin en la versin Assets/Plugins/x86 y de 64-bit del plugin
en Assets/Plugins/x86_64. Por defecto, el editor va a mirar en el sub-directorio
architecture-specific primero, y si ese directorio no existe, va a copiar los plugins de la
carpeta raz Assets/Plugins mas bien.
Mac OS X
Para Mac OS X, usted debera construir su plugin como binario universal que contiene
ambas las arquitecturas 32-bit y 64-bit.
Utilizando su plugin de C#
Una vez construido, el bundle debera ser colocado en la carpeta Assets->Plugins (o el
sub-directorio apropiado de architecture-specific) en el proyecto de Unity. Unity va a
luego lo va a encontrar por nombre cuando usted defina una funcin como esta en
script C# :-
[DllImport ("PluginName")]
private static extern float FooPluginFunction ();
Por favor tenga en cuenta que el PluginName no debera incluir el prefijo de la librera
o la extensin del archivo. Por ejemplo, el nombre actual del archivo plugin sera
PluginName.dll en Windows y libPluginName.so en Linux. Por favor tenga en cuenta
que cuando usted cambia el cdigo en el Plugin usted va necesitar re-compilar las
scripts en su proyecto, o de lo contrario el plugin no tendr el ltimo cdigo
compilado.
- 351 -
Implementacin
Para plugins multiplataformas, usted debe incluir los archivos .bundle (para Mac), .dll
(para Windows), y .so (para Lixun) en la carpeta Plugins. No se requiere ms trabajo
por su lado - Unity automticamente coge el plugin correcto para la plataforma
destino y la incluye con el reproductor.
Ejemplos
Plugins Ms Simple
Este proyecto plugin implementa solo algunas operaciones bsicas (imprima un
nmero, imprima un string, agregue dos floats, agregue dos int). Este ejemplo puede
ayudarlo si este es su primer plugin en Unity. El proyecto se puede encontrar aqu e
incluye los archivos de proyecto de Windows, Mac, y Linux
- 352 -
Interfaz de Plugin Nativo de Bajo Nivel
Adicionalmente a la interfaz bsica de script, los Native Code Plugins en Unity pueden
recibir callbacks cuando ciertos eventos ocurre. Esto en su mayora es utilizado para
implementar un renderizado de bajo nivel en su plugin y le permite funcionar con el
renderizado multi-hilo (multithread) de Unity.
Headers defining interfaces exposed by Unity are provided with the editor.
Interface Registry
A plugin should export UnityPluginLoad and UnityPluginUnload to handle main
Unity events. See IUnityInterface.h for the correct
signatures. IUnityInterfaces is provided to the plugin to access further Unity APIs.
#include "IUnityInterface.h"
#include "IUnityGraphics.h"
// Unity plugin load event
extern "C" void UNITY_INTERFACE_EXPORT UNITY_INTERFACE_API
UnityPluginLoad(IUnityInterfaces* unityInterfaces)
{
IUnityGraphics* graphics = unityInterfaces->Get<IUnityGraphics>();
}
s_Graphics->RegisterDeviceEventCallback(OnGraphicsDeviceEvent);
- 353 -
// Run OnGraphicsDeviceEvent(initialize) manually on plugin load
// to not miss the event in case the graphics device is already
initialized
OnGraphicsDeviceEvent(kUnityGfxDeviceEventInitialize);
}
- 354 -
llamado del hilo que renderiza. Por ejemplo, si usted llama GL.IssuePluginEvent de la
funcin de la cmara OnPostRender, usted puede obtener un callback del plugin
inmediatamente despus de que la cmara ha finalizado de renderizar.
Ejemplo
Un ejemplo de un plugin de renderizado de bajo nivel puede ser descargado aqu.
Este muestra dos cosas:
Renderiza un tringulo girando desde cdigo C++ despus de que todo el renderizado
regular se ha hecho.
Windows (Visual Studio 2008) y Mac OS X (Xcode 3.2) y utiliza Direct3D 9, Direct3D 11 o
OpenGL dependiendo en la plataforma. Cdigo de la pieza de Direct3D 9 tambin
demuestra cmo manejar dispositivos perdidos.
- 355 -
Windows Store Apps (ver RenderingPlugin\WSAVisualStudio2012 para ms
informacin)
- 356 -
AssetBundles
Los AssetBundles son archivos que puedes exportar desde Unity, y que contienen
assets de tu preferencia. Estos archivos utilizan un formato de compresin propio y
pueden ser descargados por demanda por su aplicacin. Esto le permite a usted
stream el contenido, como lo son modelos, texturas, audio clips o escenas completas,
de manera separado desde la escena que sern utilizados.
Los AssetBundles han sido diseados para simplificar la descarga del contenido a su
aplicacin. Los AssetBundles pueden contener cualquier tipo de asset reconocido por
Unity, segn lo determine la extensin en el nombre de archivo. Si quieres incluir
archivos con datos binarios personalizados, deben tener la extensin .bytes. Unity
importar estos archivos como TextAssets.
- 357 -
1. Descargando los AssetBundles en tiempo de ejecucin desde tu aplicacin. Esto
se realiza usando scripts dentro de una escena de Unity, y los AssetBundles son
cargados bajo demanda desde el servidor. Ms informacin sobre esto en Descargar
AssetBundles.
- 358 -
Construyendo Asset Bundles
Para comenzar a crear un Asset Bundle, usted primero necesita seleccionar un asset
desde la carpeta del proyecto que a usted le gustara incluir en un bundle. Al final de
la ventana del inspector para ese asset, hay un men Asset Bundle. Al hacer click se va
a revelar los nombres de cualquier asset bundles actualmente definidos, adems de
la opcin de definir un nuevo bundle:
Creacin AssetBundle
- 359 -
Then, to add further assets to this bundle, use the menu at the bottom of the
Inspector window to select an asset in the Project window and assign it to the named
bundle.
Creacin de
AssetBundle
Si usted crea AssetBundles que no tienen assets asignados a estos, entonces la opcin
"Remove Unused Names) puede ser utilizada. Esto va a borrar el AssetBundle vaco.
Exportando AssetBundles
Los AssetBundles son exportados del editor utilizando cdigo script. El siguiente script
exporta AssetBundles:
using UnityEditor;
- 360 -
{
[MenuItem ("Assets/Build AssetBundles")]
static void BuildAllAssetBundles ()
{
BuildPipeline.BuildAssetBundles ("Assets/AssetBundles",
BuildAssetBundleOptions.None, BuildTarget.StandaloneOSXUniversal);
}
}
Este script crea un item de men al final del men Assets. Cuando usted selecciona
este item del men para llamar la funcin y construir los AssetBundles, usted ver un
dialogo de construccin con una barra de progreso. La
funcin BuildPipeline.BuildAssetBundles crea los AssetBundles que han sito
etiquetados, y los coloca a una carpeta output llamada AssetBundles. (Por favor
tenga en cuenta que usted necesita crear la carpeta AssetBundles en la carpeta de
su proyecto con anterioridad de correr este script.)
- 361 -
dependencias.
ManifestFileVersion: 0
AssetBundleManifest:
AssetBundleInfos:
Info_0:
Name: scene1assetbundle
Dependencies: {}
Shader stripping
When you include shaders in your bundle, the Unity editor looks at the current scene
and lightmapping settings to decide which Lightmap modes to use. This means that
you need to have a configured scene open when building the bundle.
However, you can also manually specify which scene to calculate Lightmap modes
from. This is necessary when building bundles from the command line.
Open the scene you would like to use. In the Graphics Settings Inspector (Edit >
Project Settings > Graphics), go to Shader stripping/Lightmap modes and
select Manual, then select From current scene.
- 362 -
using UnityEditor;
Variantes de AssetBundle
Las Variantes de AssetBundle es una nueva caractersticas de 5.x. Estas pueden ser
utilizadas para lograr un resultado similar a unos assets virtuales. Por ejemplo, usted
puede configurar un AssetBundle como una variante como MyAssets.hd y
MyAssets.sd. Asegrese de que los assets coincidan exactamente. Los objetos en
estas dos variantes de AssetBundles van a tener el mismo IDs internos el cual son
asegurados por el pipeline de construccin de Unity. Por lo que estas dos variantes de
AssetBundles van a ser cambiadas arbitrariamente con AssetBundles de diferentes
extensiones de variante en tiempo de ejecucin.
Variantes de AssetBundle
- 363 -
Consejos de Scripting
API para marcar el asset a un AssetBundle
Usted puede utilizar el AssetImporter.assetBundleName para configurar el nombre
del AssetBundle.
- 364 -
llamado si el usuario cambia el nombre del AssetBundle de un asset.
BuildAssetBundleOptions
BuildAssetBundleOptions
CollectDependencies y DeterministicAssetBundle siempre estn activadas.
Archivo Manifest
Un archivo manifest es creado para cada AssetBundle que contiene la siguiente
informacin:
CRC
El hash de un archivo Asset. Un solo hash para todos los assets incluidos en este
AssetBundle, solamente utilizarlo para una revisin de construccin incremental.
El hash del Type tree. Un solo hash para todos los tipos incluidos en este AssetBundle,
solamente utilizarlo para una revisin incremental de construccin.
Tipos de clases. todos los tipos de clase incluidos en el AssetBundle. Estos son
utilizados para obtener un solo hash nuevo cuando se haga la revisin de la
construccin incremental del type tree.
Nombres de los Asset. Todos los assets explcitamente incluyen este AssetBundle.
- 365 -
Un solo archivo manifest
Nosotros generamos un solo archivo manifest que incluye:
AssetBundle.LoadAllAssets().
AssetBundle.LoadAssetWithSubAssets().
Typetrees (TiposDerboles)
Un typetree es escrito al AssetBundle por defecto. La nica excepcin es Metro ya que
tiene una solucin de serializacin diferente.
- 366 -
- 367 -
Compresin de Asset Bundles
Unity soporta tres opciones de compresin para Asset Bundles: LZMA, LZ4 y sin
comprimir.
Formato LZMA
Por defecto, cuando los Asset Bundles son construidos, estos son almacenados en un
formato comprimido. El formato estndar de compresin es un stream LZMA de solo
archivos de datos serializados, y necesitan ser des-comprimidos en su totalidad antes
de ser usados.
Formato LZ4
Unity tambin soporta la compresin LZ4, la cual resulta en tamaos de archivo
comprimidos mayores, pero no requiere que el bundle en su totalidad sea
descomprimido antes de su uso. LZ4 es un algoritmo que se basa en porciones
(chunks), y por lo tanto cuando los objetos son cargados desde un bundle
comprimido mediante LZ4, solamente las porciones (chunks) correspondientes para
ese objeto son descomprimidos. Esto ocurre en la marcha (on the fly), significando
que no hay tiempos de espera para que el bundle entero sea descomprimido antes
de su uso. El formato LZ4 fue introducido en Unity 5.3 y no estaba disponible en
versiones anteriores.
- 368 -
algoritmo LZ4. Esto ahorra entre 40%60% de espacio comparado a los bundles sin
comprimir. La re-compresin sucede durante la descarga y por lo tanto casi no se
nota por los usuarios finales. A medida que los datos llegan del socket, Unity lo va a
descomprimir y re-comprimirlo en un formato LZ4. Esta re-compresin ocurre
durante la descarga del streaming, lo cual significa que la compresin en cach
empieza tan pronto la mayora de datos hayan sido descargados, y continua de
manera incremental hasta que la descarga se haya completado. Despus de esto, los
datos son ledos desde el bundle en cach al descomprimirlo por porciones en la
marcha (on the fly) cuando sea necesario.
WWW *
LoadFromCacheOrDownload
LoadFromMemory (Async)
LoadFromFile(Async)
WebRequest (tambin soporta el almacenamiento en cach)
* Cuando descargue un bundle utilizando WWW, WebRequest, tambin hay un buffer
acumulador 8x64KB que almacena datos desde un socket.
Por lo tanto, utilice los siguientes lineamientos utilizando un API para cargar de bajo
nivel en sus juegos:
2. Descargando asset bundles como DLCs (contenido para descargar) - utilice las
- 369 -
opciones por defecto (compresin LZMA) y LoadFromCacheOrDownload/WebRequest
para descargarlo y almacenarlo en cach. Aqu usted tendr la mejor posible tasa de
compresin y AssetBundle.LoadFromFile para un rendimiento optimo de cargar para
futuras cargas.
Compatibilidad
El formato contenedor del Asset Bundle fue cambiado con el fin de soportar nuevos
tipos de compresin, y para proporcionar una base para mejoras futuras. Unity 5
todava soporta bundles creados en Unity 4, sin embargo los bundles creados en
versiones previas (2.x, 3.x) no son soportados.
- 370 -
Estructura Interna de Asset Bundle
Un AssetBundle es esencialmente un conjunto de objetos agrupados a un archivo
serializado. Es desplegado como un archivo de datos que tienen una estructura
diferente dependiendo si es un bundle normal o un bundle de escena.
Compresin de AssetBundles
El contenedor ArchiveFileSystem tiene la siguiente estructura:
- 371 -
La estructura contenedora del ArchiveFileSystem
Los bloques comprimidos mostrados arriban podran tener una compresin por
trozos o una compresin basada en stream. La compresin por trozos (LZ4) significa
que los datos originales estn divididos en trozos (sub-bloques) del mismo tamao y
esos trozos estn comprimidos independientemente. Usted debera utilizar esto si
usted quiere una des-compresin en tiempo real - la sobrecarga de lectura aleatoria
es pequea. La compresin basada en stream (LZMA) utiliza el mismo diccionario al
procesar el bloque entero, este proporciona la tasa ms alta de compresin pero
soporta solamente lecturas secuenciales.
- 372 -
Descargar AssetBundles
En esta seccin se asume que conoces sobre cmo construir AssetBundles. Si no es
as, favor ver la pgina Construccin de AssetBundles
- 373 -
using System;
using UnityEngine;
using System.Collections;
void Start() {
StartCoroutine (DownloadAndCache());
}
// Load the AssetBundle file from Cache if it exists with the same
version or download and store it in the cache
using(WWW www = WWW.LoadFromCacheOrDownload (BundleURL, version)){
yield return www;
if (www.error != null)
throw new Exception("WWW download had an error:" + www.error);
AssetBundle bundle = www.assetBundle;
if (AssetName == "")
Instantiate(bundle.mainAsset);
else
Instantiate(bundle.LoadAsset(AssetName));
// Unload the AssetBundles compressed contents to conserve
memory
bundle.Unload(false);
Favor notar que mximo una sola descarga del AssetBundle puede finalizarse por
cada marco, cuando son descargados con WWW.LoadFromCacheOrDownload.
- 374 -
Final project structure
Ahora puedes dar play en el Editoy, y deberas ver al prefab Cube siendo cargado
desde el AssetBundle.
- 375 -
Obj = null;
#if UNITY_EDITOR
Obj = Resources.LoadAssetAtPath("Assets/" + asset, typeof(T));
yield return null;
#else
// Wait for the Caching system to be ready
while (!Caching.ready)
yield return null;
#endif
}
}
- 376 -
Cargar y quitar objetos desde un AssetBundle
Al haber creado un objeto AssetBundle a partir de los datos descargados, puedes
cargar los Assets utilizando tres mtodos diferentes:
// Note: This example does not check for errors. Please look at the example in
the DownloadingAssetBundles section for more information
IEnumerator Start () {
while (!Caching.ready)
yield return null;
// Start a download of the given URL
WWW www = WWW.LoadFromCacheOrDownload (url, 1);
- 377 -
// Load the object asynchronously
AssetBundleRequest request = bundle.LoadAssetAsync ("myObject",
typeof(GameObject));
- 378 -
Llevar un Seguimiento de los AssetBundles cargados
Unity solamente le va a permitir a usted tener una sola instancia de un AssetBundle
en particular cargado a la vez en su aplicacin. Lo que esto significa es que usted no
puede recuperar un AssetBundle de un objeto WWW si el mismo ha sido cargado
previamente y no ha descargado (unload) completamente. En trminos prcticos
significa que cuando usted intente acceder a un AssetBundle previamente cargado
as:
AssetBundle bundle = www.assetBundle;
Cannot load cached AssetBundle. A file of the same name is already loaded from
another AssetBundle
Por favor tenga en cuenta que antes de Unity 5 todos los bundles terminaban de
cargar antes de que cualquiera de los bundles fueran descargados (unload). Entonces
llamar la funcin AssetBundle.Unload mientras algunos de los bundles todava estn
siendo cargados va a bloquear la ejecucin del resto del cdio hasta que todos los
bundles sean cargados. Esto aadir un hipo de rendimiento. Esto ha sido re-
trabajado en Unity 5.
- 379 -
return abRef.assetBundle;
else
return null;
}
// Download an AssetBundle
public static IEnumerator downloadAssetBundle (string url, int version){
string keyName = url + version.ToString();
if (dictAssetBundleRefs.ContainsKey(keyName))
yield return null;
else {
while (!Caching.ready)
yield return null;
- 380 -
Por favor tenga en cuenta que la clase AssetBundleManager en este ejemplo es
esttica, y cualquier Assetbundles que usted est referenciando no sern destruidos
cuando cargue una nueva escena. Utilice esta clase como una gua pero como se
recomienda en el inicio es mejor si usted unload de los AssetBundles despus de que
han sido utilizados. Usted siempre puede clonar un objeto de una instancia previa,
quitando la necesidad de cargar (load) los AssetBundles nuevamente.
- 381 -
Almacenando y cargando datos binarios en un
AssetBundle
El primer paso es guardar su archivo de datos binarios con la extensin .bytes. Unity
va a tratar este archivo como un TextAsset. Como un TextAsset, el archivo puede ser
incluido cuando usted construya su AssetBundle. Una vez usted haya descargado el
AssetBundle en su aplicacin y cargado el objeto TextAsset, usted puede utilizar la
propiedad .bytes del TextAsset para recuperar sus datos binarios.
string url =
"http://www.mywebsite.com/mygame/assetbundles/assetbundle1.unity3d";
IEnumerator Start () {
while (!Caching.ready)
yield return null;
- 382 -
Protegiendo contenido
Whilst it is possible to use encryption to secure your Assets as they are being
transmitted, once the data is in the hands of the client it is possible to find ways to
grab the content from them. For instance, there are tools out there which can record
3D data at the driver level, allowing users to extract models and textures as they are
sent to the GPU. For this reason, our general stance is that if users are determined to
extract your assets, they will be able to.
However, it is possible for you to use your own data encryption on AssetBundle files if
you still want to.
One way to do this is making use of the TextAsset type to store your data as bytes. You
can encrypt your data files and save them with a .bytes extension, which Unity will
treat as a TextAsset type. Once imported in the Editor the files as TextAssets can be
included in your AssetBundle to be placed in a server. In the client side the
AssetBundle would be downloaded and the content decrypted from the bytes stored
in the TextAsset. With this method the AssetBundles are not encrypted, but the data
stored which is stored as TextAssets is.
string url =
"http://www.mywebsite.com/mygame/assetbundles/assetbundle1.unity3d";
IEnumerator Start () {
while (!Caching.ready)
yield return null;
An alternative approach is to fully encrypt the AssetBundles from source and then
download them using the WWW class. You can give them whatever file extension you
- 383 -
like as long as your server serves them up as binary data. Once downloaded you
would then use your decryption routine on the data from the .bytes property of your
WWW instance to get the decrypted AssetBundle file data and create the AssetBundle
from memory using AssetBundle.CreateFromMemory.
string url =
"http://www.mywebsite.com/mygame/assetbundles/assetbundle1.unity3d";
IEnumerator Start () {
// Start a download of the encrypted assetbundle
WWW www = new WWW (url);
// You can now use your AssetBundle. The AssetBundle is not cached.
}
The advantage of this latter approach over the first one is that you can use any
method (except AssetBundles.LoadFromCacheOrDownload) to transmit your bytes
and the data is fully encrypted - for example sockets in a plugin. The drawback is that
it wont be Cached using Unitys automatic caching. You can in all players except the
WebPlayer store the file manually on disk and load it
using AssetBundles.CreateFromFile
A third approach would combine the best of both approaches and store an
AssetBundle itself as a TextAsset, inside another normal AssetBundles. The
unencrypted AssetBundle containing the encrypted one would be cached. The original
AssetBundle could then be loaded into memory, decrypted and instantiated
using AssetBundle.CreateFromMemory.
string url =
"http://www.mywebsite.com/mygame/assetbundles/assetbundle1.unity3d";
IEnumerator Start () {
while (!Caching.ready)
yield return null;
- 384 -
// Wait for download to complete
yield return www;
// You can now use your AssetBundle. The wrapper AssetBundle is cached
}
- 385 -
Incluyendo scripts en AssetBundles
Los AssetBundles pueden contener scripts como TextAssets, pero de esta forma, no
pueden realmente ser cdigo ejecutable. Si desea incluir cdigo en su AssetBundles
que pueda ser ejecutado en su aplicacin, este requiere ser pre-compilado en
lenguaje ensamblador (assembly) y cargado usando la clase Mono Reflection (Nota:
Reflection no est disponible en iOS). Puede crear ensamblados (assemblies) en
cualquier IDE de C# normal (ej. Monodevelop, Visual Studio) o cualquier editor de
texto usando compiladores mono/.net.
- 386 -
AssetBundles PF (Preguntas Frecuentes)
- 387 -
Cuando la funcin Start de este script es llamada, va a comenzar a cargar el
AssetBundle al llamar la funcin como una Coroutine. La funcin va a esperar (yield)
en el objeto WWW a medida que descarga el AssetBundle. Al utilizar esto, la funcin
va simplemente parar en ese punto hasta que el objeto WWW haya terminado de
descargar, pero no va a bloquear la ejecucin del resto del cdigo, este espera (yields)
hasta que haya terminado. Hasta una sola descarga de AssetBundle puede finalizar
por frame cuando son descargados con WWW.LoadFromCacheOrDownload.
Por favor tenga en cuenta que por simplicidad el ejemplo previo no est haciendo
ninguna revisin de seguridad. Por favor ver el cdigo aqu para un ejemplo ms
complejo.
Lo siguiente es un ejemplo de un script de ayuda, que usted puede utilizar para cargar
sus Assets dependiendo si usted est corriendo en el Editor o no. Coloque este cdigo
en un script C# llamado AssetBundleLoader.cs:
using UnityEngine;
- 388 -
using System.Collections;
#if UNITY_EDITOR
Obj = Resources.LoadAssetAtPath(assetPath, typeof(T));
if (Obj == null)
Debug.LogError ("Asset not found at path: " + assetPath);
yield break;
#else
WWW download;
if ( Caching.enabled ) {
while (!Caching.ready)
yield return null;
download = WWW.LoadFromCacheOrDownload( url, version );
}
else {
download = new WWW (url);
}
assetBundle.Unload(false);
#endif
}
}
- 389 -
public int version = 1; // The version of the AssetBundle
IEnumerator Download () {
AssetBundleLoader assetBundleLoader = new AssetBundleLoader ();
yield return StartCoroutine(assetBundleLoader.LoadBundle <GameObject>
(url, version, assetName, assetPath));
if (assetBundleLoader.Obj != null)
ObjInstance = Instantiate (assetBundleLoader.Obj);
}
void OnGUI(){
GUILayout.Label (ObjInstance ? ObjInstance.name + " instantiated" : "");
}
}
- 390 -
Compatibilidad de plataforma para AssetBundles
Webplayer
Standalone (Reproductor iOS Android
Web)
Editor Y Y Y* Y*
Standalone Y Y
Webplayer
(Reproductor Y Y
Web)
iOS Y
Android Y
Por ejemplo, un bundle creado mientras el que el objetivo de construccin Webplayer
estaba activo sera compatible con el editor y con las construcciones strandalone. Sin
embargo, no sera compatible con apps construidas para las plataformas iOS o
Android.
(*) Los AssetBundles construidos para plataformas mviles podran contener datos
almacenados en un formato de plataforma especfico y optimizado que es
incompatible con la plataforma en dnde el editor est corriendo. Tenga en cuenta
que es seguro asumir que los juegos publicados necesitan diferentes asset bundles
por plataforma. Especficamente los shaders son diferentes entre plataformas.
- 391 -
construya su AssetBundle con BuildPipeline.BuildAssetBundleExplicitAssetNames.
- 392 -
Bundle B tiene una escena que tiene una instancia del mismo prefab. Bundle B
necesita acceder al material. Al menos de que el material sea incluido en un asset
bundle especfico, ser incluido en ambos bundle A y B.
- 393 -
Reduciendo el Tamao del Archivo de la
Construccin
Mantener el tamao del archivo de la app construida a un mnimo a menudo es
importante, especialmente para dispositivos mviles o para tiendas de apps que
imponen un limite de tamao. El primer paso en reducir el tamao es determina qu
assets contribuyen ms a esto, ya que estos assets son los candidatos ms probables
para la optimizacin. Usted puede encontrar esta informacin del Editor Log (Registro
del Editor) justo despus de que usted ha realizado la construccin (seleccione Open
Editor Log del men panel pequeo en la esquina derecha de la ventana de la
Consola).
El log (registro) le ayuda a usted identificar assets que usted podra querer quitar o
optimizar pero usted debera considerar lo siguiente antes de trabajar:
Unity re-programa los assets importados a sus propios formatos internos, por lo que
la opcin del tipo de fuente de asset no es relevante. Por ejemplo, si usted tiene una
textura multi-capa de Photoshop en el proyecto entonces ser aplanado y
comprimido antes de construir. Al exportar la textura como un archivo PNG no va
hacer diferencia al tamao de construccin, por lo que debe atenerse al formato que
sea ms conveniente para usted durante el desarrollo.
- 394 -
assets que no son quitados son los scripts (por lo por lo general son muy pequeos
igual) y los assets en la carpeta Resources (ya que Unity no puede determina cules
de esto sern necesitados y cules no). Con esto en mente, usted debera asegurarse
que los assets en la carpeta Resources solo son aquellos que realmente se necesitan
en el juego. Usted podra remplazar los assets en los Resources
con AssetBundles para cargar los assets dinmicamente y por lo tanto reducir el
tamao del reproductor.
Si eso no hace que el tamao disminuya, intente reducir el tamao de las texturas. El
truco aqu es que usted no necesita modificar el contenido actual de la fuente.
Simplemente seleccione la textura en la vista del Proyecto y configure el Max Size de
los Import Settings (Ajustes de Importacin). Es una buena idea acercarse en un
objeto que utiliza la textura, luego ajustar el Max Size hasta que comience a verse
peor en la Scene View.
- 395 -
Cambiar el tamao mximo de la textura no va a
afectar su asset de textura, simplemente su resolucin en el juego
La siguiente tabla muestra qu tanto espacio del formato de la imagen toma en bytes
por pixel:
- 396 -
Compresin Consumo de Memoria (bytes/pixel)
RGBA 16bit 2 bpp
RGBA 32bit 4 bpp
iOS
RGB Compressed PVRTC 2 bits 0.25 bpp (bytes/pixel)
RGBA Compressed PVRTC 2 bits 0.25 bpp
RGB Compressed PVRTC 4 bits 0.5 bpp
RGBA Compressed PVRTC 4 bits 0.5 bpp
RGB 16bit 2 bpp
RGB 24bit 3 bpp
Alpha 8bit 1 bpp
RGBA 16bit 2 bpp
RGBA 32bit 4 bpp
Android
RGB Compressed DXT1 0.5 bpp (bytes/pixel)
RGBA Compressed DXT5 1 bpp
RGB Compressed ETC1 0.5 bpp
RGB Compressed PVRTC 2 bits 0.25 bpp (bytes/pixel)
RGBA Compressed PVRTC 2 bits 0.25 bpp
RGB Compressed PVRTC 4 bits 0.5 bpp
RGBA Compressed PVRTC 4 bits 0.5 bpp
RGB 16bit 2 bpp
RGB 24bit 3 bpp
Alpha 8bit 1 bpp
RGBA 16bit 2 bpp
RGBA 32bit 4 bpp
La formula para el tamao total de almacenamiento de imagen es width * height *
bpp. Si usted est utilizando mipmaps entonces el almacenamiento ser tres veces
ms grande que una sola imagen.
Por defecto Unity comprime todas las texturas cuando se importe. Para un flujo de
trabajo rpido en el editor, usted puede apagar la compresin desde las Preferences
(preferencias) pero todas las texturas sern comprimidas en la construccin sin
importar acerca de este ajuste.
- 397 -
Meshes y Animaciones
Meshes y los Clips de Animacin importados pueden ser comprimidos para que
tomen menos espacio en el archivo de su juego. Las compresiones pueden prenderse
en los ajustes de importacin del Mesh.
DLLs
Por defecto, Unity incluye solamente los siguientes DLLs en el reproductor construido:
mscorlib.dll
Boo.Lang.dll
UnityScript.Lang.dll
UnityEngine.dll
- 398 -
Como usted puede ver, Unity est incluyendo System.Xml.dll y System.dll, cuando
construya un reproductor
El perfil de API .NET 2.0 es muy similar al API completo .NET 2.0. La mayora de rutinas
de libreras estn completamente implementadas por lo que esta opcin ofrece la
mejor compatibilidad con cdigo .NET pre-existente. Sin embargo, para muchos de los
juegos, la librera completa no se necesita y el cdigo superfluous toma un espacio de
memoria valioso.
Para evitar memoria desperdiciada, Unity tambin soporta el perfil de API que es sub-
conjunto de .NET 2.0. Este es muy similar al perfil Mono monotouch, por lo que
muchas limitaciones del perfil monotouch tambin aplica al perfil del sub-
conjunto .NET 2.0 de Unity. (Ms informacin acerca de las limitaciones del perfil
monotouch puede encontrarse aqu). Muchas library routines que no son
comnmente necesitadas en los juegos son dejadas afuera de este perfil con el fin de
ahorrar memoria. Sin embargo, esto tambin significa que el cdigo con
dependencias en esas routines no van a funcionar correctamente. Esta opcin puede
ser una optimizacin til pero usted debera revisar que ese cdigo existente todava
- 399 -
funciona despus de que es aplicado.
- 400 -
Social API (API Social)
El API Social es el punto de acceso de Unity para caractersticas sociales, tal como:
Perfiles de usuario
Lista de amigos
Logros
Estadsticas / Clasificaciones
Proporciona una interfaz unificada a diferentes back-ends sociales, tal como XBox
Live o el GameCenter, y es utilizado principalmente por programadores en el proyecto
del juego.
Aqu hay un ejemplo (JavaScript) acerca de cmo uno podra utilizar la API Social:
import UnityEngine.ocialPlatforms;
function Start () {
// Authenticate and register a ProcessAuthentication callback
// This call needs to be made before we can proceed to other calls in the
Social API
Social.localUser.Authenticate (ProcessAuthentication);
}
- 401 -
}
else
Debug.Log ("Failed to authenticate");
}
void Start () {
// Authenticate and register a ProcessAuthentication callback
// This call needs to be made before we can proceed to other calls in
the Social API
Social.localUser.Authenticate (ProcessAuthentication);
}
- 402 -
Debug.Log ("Successfully reported achievement progress");
else
Debug.Log ("Failed to report achievement");
});
}
}
- 403 -
Serializacin JSON
La caracterstica de serializacin JSON convierte objetos a y del formato JSON. Esto
puede ser til cuando interactu con servicios web, o simplemente para empacar y
desempacar datos a un formato de texto fcil.
Para informacin acerca de la clase JsonUtility, por favor ver la pgina de ScriptRef de
Unity JsonUtility.
Su simple uso
La caraterstica de serializacin JSON est construida alrededor de una nocin de un
JSON estructurado, que significa que usted describe que variables sern almacenadas
en sus datos JSON al crear una clase o estructura. Por ejemplo:
[Serializable]
public class MyClass
{
public int level;
public float timeElapsed;
public string playerName;
}
Esto define una clase plana de C# que contiene tres variables - level, timeElapsed,
y playerName- y la marca como Serializable, que es necesario para que trabaje con el
serializador JSON. Usted luego puede crear una instancia de esto as:
MyClass myObject = new MyClass();
myObject.level = 1;
myObject.timeElapsed = 47.5f;
myObject.playerName = "Dr Charles Francis";
Y serializarlo a formato JSON utilizando JsonUtility.ToJson:
string json = JsonUtility.ToJson(myObject);
Esto resultara en la variable json conteniendo el string:
{"level":1,"timeElapsed":47.5,"playerName":"Dr Charles Francis"}
Para convertir el JSON devuelta a un objeto, utilice JsonUtility.FromJson:
myObject = JsonUtility.FromJson<MyClass>(json);
Esto va a crear una nueva instancia de MyClass y va a configurar los valores el este
utilizando los datos JSON. Si los datos JSON contiene valores que no mapean a
campos en MyClass entonces esos valores sern simplemente ignorados, y si a los
datos JSON le estn faltando valores para los campos en MyClass, entonces esos
campos sern dejados en sus valores construidos en el objeto devuelto.
El serializador JSON actualmente no soporta trabajar con JSON sin estructura (i.e.
- 404 -
navegar y editar el JSON como un rbol arbitrario de valores-key en pares). Si used
necesita hacer esto, usted debera mirar una librera JSON que contenga ms
caractersticas.
Tipos Soportados
El API soporta cualquier sub clase MonoBehaviour ScriptableObject, o
clase/struct plana con el atributo [Serializable]. El objeto que usted pasa es
alimentado al serializador de Unity estndar para procesar, por lo que las mismas
reglas y limitaciones aplican como sucede en el Inspector; solamente los campos son
serializados, y tipos como Dictionary<> no son soportados.
Pasar otros tipos directamente a la API, por ejemplo tipos primitivos o arreglos,
actualmente no se soporta. Por ahora usted necesitar envolver esos tipos en
una class o struct o algo parecido.
- 405 -
Rendimiento
Pruebas benchmark han mostrado JsonUtility en ser significativamente ms
rpido que soluciones JSON .NET popular (con un poco ms de caractersticas que
algunos de ellos).
FromJson() asigna memoria GC solamente para el objeto devuelto, al igual que otros
sub-objetos necesitados (e.g si usted de-serialica un objeto que contiene un arreglo,
entonces la memoria GC ser asignada para ese arreglo).
- 406 -
El Streaming de Assets
La mayora de los assets en Unity son combinados al proyecto cuando es construido.
Sin embargo, a veces es til colocar los archivos en un sistema de archivos normal en
el equipo destino para hacerlos accesibles va el nombre de una ruta. Un ejemplo de
esto es la implementacin de un archivo de pelcula en dispositivos iOS; el archivo
original de la pelcula debe estar disponible desde una ubicacin en el sistema de
archivos para ser reproducida por la funcin PlayMovie.
La ubicacin de esta carpeta varia por plataforma. Por favor tenga en cuenta que
estas son sensibles a las maysculas:
En iOS, utilice:
- 407 -
- 408 -
ScriptableObject
El ScriptableObject es una clase que le permite a usted almacenar grandes cantidades
de datos compartidos independientes de instancias de script. No confunda esta clase
con la muy similar SerializableObject, la cual es una clase del editor y llena un
propsito diferente. Considere por ejemplo que usted ha hecho un prefab con un
script que tiene un arreglo de millones de enteros. El arreglo ocupa 4MB de memoria
y su dueo es el prefab. Cada vez que usted instancia el prefab, usted va a obtener
una copia de ese arreglo. Si usted ha creado 10 game objects, entonces usted
terminara con 40MB de datos del arreglo para las 10 instancias.
Unity serializa todos los tipos primitivos, strings, arreglos, listas, tipos especficos para
Unity tal como Vector3 y sus clases personalizadas con el atributo Serializable
como copies perteneciendo al objeto en el cual fue declarado. Esto significa que si
usted ha creado un ScriptableObject y almacena millones de enteros en un arreglo,
entonces declara que el arreglo ser almacenado con la instancia. Las instancias son
pensadas en sus propios datos individuales. Los campos ScriptableObject, o cualquier
campo UnityEngine.Object, tal como MonoBehaviour, Mesh, GameObject y as, son
almacenados por referencia opuesto a un valor. Si usted tiene un script con una
referencia al ScriptableObject con un milln de enteros, Unity va a solamente guardar
una referencia al ScriptableObject en los datos de script. El ScriptableObject por el
contrario, almacenada el arreglo. 10 instancias de un prefab que tiene una referencia
ScriptableObject , que mantiene 4MB de datos, va a pesar en total 4MB y no 40MB
como se discutio en el otro ejemplo.
- 409 -
the CreateAssetMenu attribute to make it easy to create custom assets using your
class.
- 410 -
Temas Avanzados del Editor
Esta seccin revela ms acerca de lo que sucede debajo del capote del Editor, desde
cmo los Assets y las Escenas son almacenadas, hasta personalizar el pipeline de
construccin y extender el editor en s. Esta seccin va a ser til para desarrolladores
y equipos que estn cmodos con lo bsico de trabajar con el Editor de Unity.
- 411 -
Construir el Pipeline de un Reproductor
Cuando se construya un reproductor, a veces usted querr modificar el reproductor
construido de cierta manera. Por ejemplo, usted podra querer agregar un icono
personalizado, copie alguna documentacin a lado del reproductor o construya un
instalador. Usted podra querer hacer esto va el scripting del editor
utilizando BuildPipeline.BuildPlayer para ejecutar la construccin y luego seguirla con
el cdigo de postprocessing (post-procesamiento) que usted necesite:-
// JS example.
import System.Diagnostics;
class ScriptBatch {
@MenuItem("MyTools/Windows Build With Postprocess")
static function BuildGame() {
// Get filename.
var path = EditorUtility.SaveFolderPanel("Choose Location of Built
Game", "", "");
var levels : String[] = ["Assets/Scene1.unity", "Assets/Scene2.unity"];
// Build player.
BuildPipeline.BuildPlayer(levels, path + "/BuiltGame.exe",
BuildTarget.StandaloneWindows, BuildOptions.None);
// Copy a file from the project folder to the build folder, alongside
the built game.
FileUtil.CopyFileOrDirectory("Assets/WebPlayerTemplates/Readme.txt",
path + "Readme.txt");
// C# example.
using UnityEditor;
using System.Diagnostics;
// Build player.
- 412 -
BuildPipeline.BuildPlayer(levels, path + "/BuiltGame.exe",
BuildTarget.StandaloneWindows, BuildOptions.None);
// Copy a file from the project folder to the build folder, alongside
the built game.
FileUtil.CopyFileOrDirectory("Assets/WebPlayerTemplates/Readme.txt",
path + "Readme.txt");
Atributo de PostProcessBuild
Usted tambin puede utilizar el parmetro postprocessOrder
del PostProcessBuildAttribute para definir el orden de ejecucin para su mtodos de
construccin y llamar sus scripts externos con la clase Process de estos mtodos
mostrados en la ltima seccin. Este parmetro es utilizado para ordenar los mtodos
de construccin de menor a mayor, y usted puede asignar cualquier valor negativo o
positivo a l.
- 413 -
Argumentos de la lnea de comandos
Por lo general, Unity se ejecutar haciendo doble click en el icono del escritorio, pero
tambin es posible ejecutarlo desde la lnea de comandos (ej. la terminal de MacOS o
una ventana de smbolo del sistema en Windows). Cuando se inicia de esta manera,
Unity puede recibir comandos e informacin al iniciarse, lo cual puede resultar muy
til para pruebas automatizadas, compilaciones automticas y otras tareas de
produccin.
"C:\Program Files\Unity\Editor\Unity.exe"
- 414 -
argumento -projectPath para asegurar que
usted est trabajando con el proyecto correcto.
Si no hay un nombre de proyecto dado
entonces el ltimo proyecto abierto en Unity
es utilizado. Si no existe un proyecto con la
ruta dada por -projectPath entonces uno es
creado automticamente.
Corra Unity en modo batch (modo por lotes).
Esto siempre debera ser utilizado en conjunto
con otros comandos de linea de argumentos ya
que asegura que ninguna ventana emergente
aparezca y elimine la necesidad de una
intervencin humana. Cuando una excepcin
ocurre durante la ejecucin de cdigo script,
las actualizaciones del asset server fallan u
otras operaciones falla, Unity va a
inmediatamente salirse con un cdigo de
-batchmode
retorno de 1. Tenga en cuenta que en batch
mode ( modo por lotes), Unity va a enviar una
versin minima de su output de registro a la
consola. Sin embargo, los Log Files todava
contienen la informacin completa de registro.
Tenga en cuenta que abrir un proyecto en
batch mode mientras el Editor tiene el mismo
proyecto abierto, no es soportado. Solo una
sola instancia de Unity puede ejecutarse a la
vez.
Construir un reproductor standalone Linux de
-buildLinux32Player <pathname> 32-bit (e.g. -buildLinux32Player
path/to/your/build).
Construir un reproductor standalone Linux de
-buildLinux64Player <pathname> 64-bit (e.g. -buildLinux64Player
path/to/your/build).
Construir un reproductor standalone Linux
combinado de 32-bit y 64-bit (e.g.
-buildLinuxUniversalPlayer <pathname>
-buildLinuxUniversalPlayer
path/to/your/build).
Construir un reproductor standalone Mac de
-buildOSXPlayer <pathname> 32-bit (e.g. -buildOSXPlayer
path/to/your/build.app).
Construir un reproductor standalone Mac de
-buildOSX64Player <pathname> 64-bit (e.g. -buildOSX64Player
path/to/your/build.app).
-buildOSXUniversalPlayer <pathname> Construir un reproductor standalone Mac
- 415 -
combinado de 32-bit y de 64-bit (e.g.
-buildOSXUniversalPlayer
path/to/your/build.app).
Permite la seleccin de un objetivo de
construccin activo antes de que un proyecto
sea cargado. Las opciones posibles son:
-buildTarget <name> win32, win64, osx, linux, linux64, ios,
android, web, webstreamed, webgl, xbox360,
xboxone, ps3, ps4, psp2, wsa, wp8, bb10,
tizen, samsungtv.
Construir un Reproductor Web (e.g.
-buildWebPlayer <pathname>
-buildWebPlayer path/to/your/build).
Construir un Reproductor Web que est
-buildWebPlayerStreamed <pathname> streamed (e.g. -buildWebPlayerStreamed
path/to/your/build).
Construir un reproductor standalone Windows
-buildWindowsPlayer <pathname> de 32-bit (e.g. -buildWindowsPlayer
path/to/your/build.exe).
Construir un reproductor standalone Windows
-buildWindows64Player <pathname> de 64-bit (e.g. -buildWindows64Player
path/to/your/build.exe).
Una caracterstica de depuracin detallada.
StackTraceLogging permite que las
caractersticas estn controladas para que den
-cleanedLogFile
un registro detallado. Todos los ajustes
permiten None, Script Only y Full en ser
seleccionados.
-createProject <pathname> Crear un proyecto vaco en la ruta indicada.
Filtra las pruebas del editor por categoras.
-editorTestsCategories
Separe las categoras de prueba con una coma.
Filtra las pruebas del editor por nombres.
-editorTestsFilter Separe los nombres de las pruebas con una
coma.
Ruta dnde el archivo resultante sera
colocado. Si la ruta es una carpeta, un nombre
-editorTestsResultFile de archivo predeterminado ser utilizado. Si
no se especifica, los resultados sern puestos
en la carpeta raz del proyecto.
-executeMethod Ejecuta el mtodo esttico tan pronto Unity
<ClassName.MethodName> comienza, el proyecto est abierto y despus
de que la actualizacin opcional del asset
server se haya realizado. Esto puede ser usado
- 416 -
para hacer una integracin continua, realizar
pruebas de Unity, hacer construcciones,
preparar algunos datos, etc. Si usted quiere
retornar un error desde el proceso de la linea
de comandos, usted puede o lanzar una
excepcin que va a causar que Unity se salga
con 1 o llamar EditorApplication.Exit con un
cdigo diferente a cero. Si usted quiere pasar
parmetros usted puede agregarlos a la linea
de comandos y recuperarlos dentro del mtodo
utilizando
System.Environment.GetCommandLineArgs.
Para utilizar -executeMethod, usted
necesita colocar el script que encierra en la
carpeta Editor. El mtodo para ser ejecutado
debe ser definido como static.
Exporta un paquete dada una ruta (o un
conjunto de rutas dadas). exportAssetPath es
una carpeta (relativa a la raz del proyecto de
-exportPackage <exportAssetPath1 Unity) para exportar del proyecto de Unity
exportAssetPath2 ExportAssetPath3 y exportFileName es el nombre del paquete.
exportFileName> Actualmente, esta opcin puede solamente
exportar carpetas enteras a la vez. Este
comando normalmente necesita ser usado con
el argumento -projectPath .
Haga que el editor utilice Direct3D 9 para
renderizar. Normalmente el API de grficos
-force-d3d9 (Windows solamente)
depende en los player settings (tpicamente cae
en D3D11).
Haga que el editor utilice Direct3D 11 para
renderizar. Normalmente el API de grficos
-force-d3d11 (Windows solamente)
depende en los player settings (tpicamente cae
en D3D11).
Hace que el editor utilice OpenGL 3/4 core
profile para renderizar. El editor intenta
utilizar la mejor versin OpenGL disponible y
-force-glcore (Windows solamente)
todas las extensiones OpenGL expuestas por
los drivers de OpenGL. Si la plataforma no es
soportada, Direct3D ser utilizado.
Similar a -force-glcore pero solicita una
versin de contexto OpenGL especifica. Los
-force-glcoreXY (Windows solamente)
valores aceptados para XY: 32, 33, 40, 41, 42,
43, 44 o 45.
-force-gles (Windows solamente) Hace que el editor utilice OpenGL para
sistemas embebidos de renderizado. El editor
- 417 -
intenta utilizar la mejor versin OpenGL ES
disponible y todas las extensiones OpenGL ES
expuestas por los drivers de OpenGL.
Similar a -force-gles pero solicita una versin
-force-glesXY (Windows solamente) de contexto OpenGL ES especfica. Los
valores aceptados para XY: 30, 31 o 32.
Utilizado en conjunto con -force-glcoreXY,
pero previene la revisin de extensiones
-force-clamped (Windows solamente) adicionales OpenGL permitiendo que haya una
ejecucin entre plataformas con las mismas
rutas de cdigo
Haga que el editor corra como si hubiera una
licencia gratuita de Unity en la maquina,
-force-free
incluso si una licencia Unity Pro est
instalada.
Importe el package dado. Ningn dialogo de
-importPackage <pathname>
importacin es mostrado.
Especifique dnde los archivos de registro del
-logFile <pathname> editor o Windows/Linux/OSX standalone
sern escritos.
Cuando se corra en batch mode, no inicialize
en absoluto el dispositivo grfico. Esto hace
que sea posible correr sus flujos de trabajo
automatizados en maquinas que no tienen un
GPU (los flujos de trabajo automatizados solo
-nographics funcionan, cuando usted tiene una ventana
enfocada, de lo contrario usted no podr enviar
comandos de input simulados). Por favor
tenga en cuenta -nographics no le permitir a
usted bake GI en OSX, ya que Enlighten
requiere una aceleracin de GPU.
La clave del usuario - necesitada cuando se
-password <password>
activa. Esta opcin es nueva en Unity 5.1.
-projectPath <pathname> Abrir el proyecto en la ruta indicada.
Salga del editor de Unity despus de que otros
comandos hayan terminado de ejecutarse.
-quit Tenga en cuenta que esto puede hacer que los
mensajes de error no se muestren (pero se
pueden ver en el archivo Editor.log).
-returnlicense Retorna la licencia actualmente activa al
license server. Por favor permita unos pocos
segundos antes de que el archivo de licencia
sea removido, ya que Unity necesita
- 418 -
comunicarse con el licences server. Esta
opcin es nueva en Unity 5.0.
Corra pruebas del editor del proyecto. Este
argumento requiere projectPath y es bueno
para correr con el
-runEditorTests
argumento batchmode. quit no se requiere ya
que el editor va a cerrarse automticamente
despus de que run haya terminado.
Activa Unity con la clave serial especificada.
Es recomendado pasar los argumentos -
batchmode -quit tambin, con el fin de salirse
de Unity cuando finalice, si se est utilizando
esta activacin de Unity automatizada. Por
favor permtale unos segundos antes de que el
archivo de licencia sea creado, ya que Unity
-serial <serial>
necesita comunicarse con el license server.
Asegrese de que la la carpeta para el archivo
de la licencia exista y tenga unos permisos
apropiados antes de ejecutar Unity con este
argumento. En caso de que la activacin falle,
ver el Editor.log para ms informacin. Esta
opcin es nueva en Unity 5.0.
-silent-crashes No muestre un dialogo de crash.
Ejemplo de uso
// C# example
using UnityEditor;
class MyEditorScript
{
static void PerformBuild ()
{
string[] scenes = { "Assets/MyScene.unity" };
BuildPipeline.BuildPlayer(scenes, ...);
}
}
// JavaScript example
static void PerformBuild ()
{
string[] scenes = { "Assets/MyScene.unity" };
BuildPipeline.BuildPlayer(scenes, ...);
}
El siguiente comando ejecuta Unity en modo batch, ejecuta el
mtodo MyEditorScript.MyMethod y luego se cierra al finalizar.
- 419 -
Mac OS: /Applications/Unity/Unity.app/Contents/MacOS/Unity -quit
-batchmode -executeMethod MyEditorScript.MyMethod
- 420 -
soportan multi-head (pueden manejar
mltiples monitores en una sola tarjeta) cada
head puede tener su propio adaptador.
Corra el juego en modo headless. El juego
no va a mostrar cualquier cosa o aceptar input
-batchmode
de usuario. Esto en la mayora es til para
correr servidores para networked games.
Haga que el juego utilice Direct3D 9 para el
renderizado. Normalmente el API de grficos
-force-d3d9 (Windows solamente)
depende en los player settings (tpicamente cae
a D3D11).
Haga que el juego corra utilizando software de
renderizado Reference de Direct3D.
El DirectX SDK tiene que estar instalado para
que esto funcione. Esto en la mayora es til
-force-d3d9-ref (Windows solamente)
para construir un conjunto de pruebas
automatizadas, dnde usted quiere asegurar
que el renderizado es lo mismo sin importar
que tarjeta grfica est siendo utilizada.
Haga que el juego utilice Direct3D 11 para
-force-d3d11 (Windows solamente)
renderizar.
Obliga a DirectX 11.0 en ser creado sin una
flag
-force-d3d11-no-singlethreaded
D3D11_CREATE_DEVICE_SINGLETHREA
DED.
Hace que el editor utilice el perfil ncleo (core
profile) de OpenGL para renderizado. El editor
intenta utilizar la mejor versin de OpenGL
-force-glcore (Windows solamente) disponible y todas las extensiones OpenGL
expuestas por los drivers OpenGL. Si la
plataforma no es soportada, Direct3D es
utilizada.
Similar a -force-glcore pero solicita una
versin de contexto OpenGL especifica. Los
-force-glcoreXY (Windows solamente)
valores aceptados para XY: 32, 33, 40, 41, 42,
43, 44 o 45.
Utilizado en conjunto con -force-glcoreXY,
pero previene la revisin de extensiones
-force-clamped (Windows solamente) adicionales OpenGL permitiendo que haya una
ejecucin entre plataformas con las mismas
rutas de cdigo
-nographics Cuando se corra en batch mode, no inicialize
el dispositivo grfico en absoluto. Esto hace
- 421 -
que sea posible ejecutar sus flujos de trabajo
automatizados en maquinas que no tienen un
GPU.
No produzca un output de registro (log).
Normalmente output_log.txt es escrito
-nolog (Linux & Windows solamente) en la carpeta *_Data alado del ejecutable del
juego, dnde el output Debug.Log es
imprimido.
La ventana ser creada como una ventana
-popupwindow
emergente (sin un frame).
Anula el comportamiento predeterminado del
-window-mode mode (Windows solamente) ajuste de pantalla completa. Las opciones
posibles son: exclusive, borderless.
Anula el estado por defecto de pantalla
-screen-fullscreen
completa. Este debe ser 0 o 1.
Anula la altura de la pantalla predetermina.
-screen-height Este debe ser un entero de una resolucin
soportada.
Anula la anchura de pantalla predeterminada.
-screen-width Este debe ser un entero de una resolucin
soportada.
Anula la calidad e la pantalla predeterminada.
Un uso de ejemplo
-screen-quality
sera: /path/to/myGame -screen-
quality Beautiful
Obliga al dialogo selector de la pantalla en ser
-show-screen-selector
mostrado.
Permite solo una instancia del juego a correr a
-single-instance (Linux & Windows la vez. Si otra instancia ya est corriendo
solamente) entonces lanzando nuevamente -single-
instance va a enfocarse en la existente.
1 Incrusta la aplicacin de Windows
Standalone a otra aplicacin, usted tiene que
-parentHWND <HWND> (Windows pasar el manejo de la ventana de la aplicacin
solamente) padre a la aplicacin Standalone Windows. Ver
este ejemplo EmbeddedWindow.zip para ms
informacin.
- 422 -
App.xaml.cs/cpp o App.cs/cpp. Por ejemplo,
appCallbacks.AddCommandLineArg("-nolog");
| | | |:|:| |-nolog| No generar UnityPlayer.log.| |-force-driver-type-warp|
Obliga el dispositivo WARP DIrectX 11.0 http://msdn.microsoft.com/en-
us/library/gg615082.aspx)| |-force-d3d11-no-singlethreaded| Obliga a DirectX 11.0
en ser creado sin una flag D3D11_CREATE_DEVICE_SINGLETHREADED.| |-force-gfx-
direct| Forzar renderizacin en un solo hilo.| |-force-feature-level91| Obliga
DirectX 11.0 al nivel de caractersticas 9.1.| |-force-feature-level92| Obliga DirectX
11.0 al nivel de caractersticas 9.2.| |-force-feature-level93| Obliga DirectX 11.0 al
nivel de caractersticas 9.3.| |-force-feature-level100| Obliga DirectX 11.0 al nivel
de caractersticas 10.0.| |-force-feature-level101| Obliga DirectX 11.0 al nivel de
caractersticas 10.1.| |-force-feature-level101| Obliga DirectX 11.0 al nivel de
caractersticas 11.0.| mientras que en Windows 64 bit, usted debe escribir . o esto
cuando se est en Windows 32 bit en la lnea de comandos. En PC usted puede
utilizar el Command prompt: . o esto cuando se est en Windows 32 bit
Opciones
Usted debe realizar esta llamada antes de la
funcin appCallbacks.Initialize*().
- 423 -
Detras de Escenas
Unity importa assets automticamente y gestiona varios tipos de datos adicionales
acerca de estos para usted, como qu tipo de import settings (ajustes de importacin)
deberan ser utilizados para importar un asset, y dnde el asset es utilizado a travs
del proyecto. A continuacin se describe como funciona este proceso.
El primer paso que Unity toma es asignar un ID nico al asset. Este ID es utilizado
internamente por Unity para referirse al asset lo cual significa que el asset puede ser
movido o re-nombrado sin que se rompan las referencias al asset.
Usted va a notar que en la imagen de arriba hay archivos .meta listados en el sistema
de archivos para cada asset y carpeta creada dentro de la carpeta Assets. Estos no son
visibles en la ventana Project de Unity. Unity crea estos archivos para cada asset, pero
estos estn ocultos por defecto, por lo que usted no podr verlos en el
Explorer/Finder tampoco. Usted puede hacerlos visible al seleccionar esta opcin en
- 424 -
Unity Edit > Project Settings > Editor > Versions Control, Mode : Visible Meta Files.
El ID que Unity asigna a cada asset es almacenado dentro del archivo .meta que Unity
crea en conjunto con el archivo asset en s mismo. Este archivo .meta debe
mantenerse con el archivo asset al cual se relaciona.
IMPORTANTE: Los archivos .meta deben coincidir y mantenerse con sus archivos asset
respectivos. Si usted mueve o re-nombra un asset dentro de la ventana Project de Unity,
Unity va de manera automtica a mover o re-nombrar el archivo .meta correspondiente. Si
usted muevo o re-nombra un asset afuera* de Unity (i.e. en Windows Explorer, o Finder
en Mac), usted debe mover o re-nombrar el archivo .meta para que coincidan.
Si un asset pierde su archivo meta (por ejemplo, si usted muevo o re-nombre el asset
afuera de Unity, sin mover/re-nombrar el archivo .meta correspondiente), cualquier
referencia al asset ser rota. Unity generara un nuevo archivo .meta para el asset
movido/re-nombrado como si fuera un nuevo asset, y borrara el archivo .meta viejo
hurfano.
Por ejemplo, en el caso de un asset de textura que pierde su archivo .meta, cualquier
Material que sea utilizado por esa textura ahora no tendr referencia a esa textura.
Para arreglar esto, usted tendra que manualmente re-asignar esa textura a cualquier
material que lo requiera.
En el caso de un asset script que pierde su archivo .meta, cualquier Game Objects o
Prefabs que tena ese script asignado terminara con un componente unassaigned
script, y perdera su funcionalidad. Usted tendra que manualmente re-asignar el
script a estos objetos para arreglar esto.
Utilizar un formato interno para los assets le permite a Unity tener versiones listas
para jugar de sus assets para que utilice en tiempo de ejecucin en el editor, mientras
que mantiene los archivos fuente sin modificar en la carpeta assets para que usted
pueda editarlos de manera rpida. Por ejemplo, el formato de archivos de Photoshop
es conveniente para trabajar y se puede guardar directamente en su carpeta Assets,
- 425 -
pero hardware como los dispositivos mviles y tarjetas grficas de PC no pueden
aceptar ese formato directamente para renderizar como texturas. Todos los datos
para la representacin interna de assets en Unity se almacena en la
carpeta Library que puede ser pensada similarmente a una carpeta de cach. Como
usuario, usted nunca debera alterar manualmente la carpeta Library ya que intentar
hacerlo puede daar la funcionalidad de su proyecto en el editor de Unity. No
obstante, siempre es bueno borrar la carpeta Library (mientras el proyecto no est
abierto en Unity) ya que toda su informacin es generada de lo que est almacenado
en la carpeta Assets y ProjectSettings. Esto tambin significa que la carpeta Library no
debera estar incluida en el control de versiones.
Si usted cambia los ajustes de importacin para un asset, estos ajustes cambiados
son almacenados en el archivo .meta que acompaa el asset. El asset ser re-
importado de acuerdo a sus nuevos ajustes, y los datos correspondientes listos para
- 426 -
el juego importados sern actualizados en la carpeta Library del proyecto.
Tenga en cuenta: Los proyectos creados en Unity 4.2 o antes pueden no tener
archivos .meta si no estn explcitamente activados. Borrar la carpeta Library en estos
proyectos va a llevar a una perdida de informacin y una corrupcin permanente del
proyecto ya que ambos los formatos internos generados de sus assets y los datos
meta son almacenados en la carpeta Library.*
- 427 -
AssetDatabase
AssetDatabase es una API que te permite acceder a los assets contenidos en tu
proyecto. Entre otras cosas, proporciona mtodos para encontrar y cargar assets, y
tambin para crearlos, eliminarlos y modificarlos. El Unity Editor usa el AssetDatabase
internamente para realizar un seguimiento de los archivos de asset y mantener la
conexin entre los assets y los objetos que los referencien. Puesto que que Unity
necesita llevar seguimiento de todos los cambios a la carpeta del proyecto, debes
siempre usar la API de AssetDatabase en lugar del sistema de archivos si quieres
acceder o modificar datos de assets.
Importar un Asset
Unity normalmente importa assets automticamente cuando son arrastrados al
proyecto, pero tambin es posible importarlos bajo control de scripts. Para hacer esto
puedes usar el mtodo AssetDatabase.ImportAsset como en el siguiente ejemplo.
using UnityEngine;
using UnityEditor;
Cargar un Asset
El editor slo carga assets cuando sea necesario, p.ej. si son agregados a la escena o
- 428 -
editados desde el panel Inspector. Sin embargo, puedes cargar y acceder assets
desde un script
usando AssetDatabase.LoadAssetAtPath, AssetDatabase.LoadMainAssetAtPath, Asset
Database.LoadAllAssetRepresentationsAtPath y AssetDatabase.LoadAllAssetsAtPath.
Ver la documentacin de scripting para ms detalles.
using UnityEngine;
using UnityEditor;
// Create
Material material = new Material (Shader.Find("Specular"));
AssetDatabase.CreateAsset(material, "Assets/MyMaterial.mat");
if(AssetDatabase.Contains(material))
Debug.Log("Material asset created");
// Rename
ret = AssetDatabase.RenameAsset("Assets/MyMaterial.mat",
"MyMaterialNew");
if(ret == "")
Debug.Log("Material asset renamed to MyMaterialNew");
else
Debug.Log(ret);
// Create a Folder
ret = AssetDatabase.CreateFolder("Assets", "NewFolder");
if(AssetDatabase.GUIDToAssetPath(ret) != "")
Debug.Log("Folder asset created");
else
Debug.Log("Couldn't find the GUID for the path");
- 429 -
// Move
ret = AssetDatabase.MoveAsset(AssetDatabase.GetAssetPath(material),
"Assets/NewFolder/MyMaterialNew.mat");
if(ret == "")
Debug.Log("Material asset moved to NewFolder/MyMaterialNew.mat");
else
Debug.Log(ret);
// Copy
if(AssetDatabase.CopyAsset(AssetDatabase.GetAssetPath(material),
"Assets/MyMaterialNew.mat"))
Debug.Log("Material asset copied as Assets/MyMaterialNew.mat");
else
Debug.Log("Couldn't copy the material");
// Manually refresh the Database to inform of a change
AssetDatabase.Refresh();
Material MaterialCopy =
AssetDatabase.LoadAssetAtPath("Assets/MyMaterialNew.mat", typeof(Material)) as
Material;
// Move to Trash
if(AssetDatabase.MoveAssetToTrash(AssetDatabase.GetAssetPath(MaterialCopy)))
Debug.Log("MaterialCopy asset moved to trash");
// Delete
if(AssetDatabase.DeleteAsset(AssetDatabase.GetAssetPath(material)))
Debug.Log("Material asset deleted");
if(AssetDatabase.DeleteAsset("Assets/NewFolder"))
Debug.Log("NewFolder deleted");
Utilizar AssetDatabase.Refresh
Cuando hayas finalizado la modificacin de assets, debes llamar a
AssetDatabase.Refresh para ejecutar definitivamente (commit) los cambios a la base
de datos y hacerlos visibles en el proyecto.
- 430 -
Archivos de escena basados en texto
Al igual que el formato por defecto binario, Unity tambin proporciona un formato
basado en texto para datos de escena. Esto puede ser til cuando trabaje con
software de control de versiones, ya que los archivos de texto generados de manera
separada pueden ser fusionados de manera ms fcil que archivos binarios. Tambin,
los datos de texto pueden ser generados y parsed por herramientas, haciendo que
sea posible crear y analiza escenas automticamente. Las pginas en esta seccin
proporciona algn material de referencia para trabajar con el formato.
Ver la pgina de Editor Settings para ver cmo activar esta caracterstica.
- 431 -
Descripcin del formato
El formato de escena de Unity es implementado con el lenguaje de serializacin de
datos YAML. Aunque nosotros no podamos cubrir YAML en profundidad aqu, es un
formato abierto y sus especificaciones estn disponibles de manera gratuita en
la pgina web de YAML. Cada objeto en la escena est escrito al archivo como un
documento YAML separado, el cual es introducido en el archivo por la secuencia .
Tenga en cuenta que en este contexto, el trmino object se refiere a los
GameObjects, Componentes y otros datos de la escena colectiva-mente; cada uno de
estos items requiere su propio documento YAML en el archivo de escena. La
estructura bsica de un objeto serializado puede entenderse mejor con un ejemplo:-
--- !u!1 &6
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
importerVersion: 3
m_Component:
- 4: {fileID: 8}
- 33: {fileID: 12}
- 65: {fileID: 13}
- 23: {fileID: 11}
m_Layer: 0
m_Name: Cube
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
La primera linea contiene el string !u!1 &6 despus del marcador del documento. El
primer nmero despus de la parte !u! indica la clase del objeto (en este caso, es un
GameObject). El nmero que sigue el signo & es el nmero ID de un objeto que es
nico dentro del archivo, aunque el nmero est asignado a cada objeto de manera
arbitraria. Cada una de las propiedades de serializacin del objeto se denota por una
linea como la que sigue:-
m_Name: Cube
--- !u!4 &8
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 6}
m_LocalRotation: {x: 0.000000, y: 0.000000, z: 0.000000, w: 1.000000}
m_LocalPosition: {x: -2.618721, y: 1.028581, z: 1.131627}
m_LocalScale: {x: 1.000000, y: 1.000000, z: 1.000000}
- 432 -
m_Children: []
m_Father: {fileID: 0}
- 433 -
Un ejemplo de un archivo de Escena YAML
Un ejemplo de una escena simple, pero completa es dado a continuacin. La escena
contiene simplemente una cmara y un objeto cubo. Tenga en cuenta que ese
archivo must (debe) comenzar con dos lineas
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
con el fin de que sea aceptado por Unity. De lo contrario, el proceso de importacin
est diseado a ser tolerantes con las omisiones - los valores predeterminados sern
suministrados a datos de propiedades que falten en la medida de lo posible.
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!header
SerializedFile:
m_TargetPlatform: 4294967294
m_UserInformation:
--- !u!29 &1
Scene:
m_ObjectHideFlags: 0
m_PVSData:
m_QueryMode: 1
m_PVSObjectsArray: []
m_PVSPortalsArray: []
m_ViewCellSize: 1.000000
--- !u!104 &2
RenderSettings:
m_Fog: 0
m_FogColor: {r: 0.500000, g: 0.500000, b: 0.500000, a: 1.000000}
m_FogMode: 3
m_FogDensity: 0.010000
m_LinearFogStart: 0.000000
m_LinearFogEnd: 300.000000
m_AmbientLight: {r: 0.200000, g: 0.200000, b: 0.200000, a: 1.000000}
m_SkyboxMaterial: {fileID: 0}
m_HaloStrength: 0.500000
m_FlareStrength: 1.000000
m_HaloTexture: {fileID: 0}
m_SpotCookie: {fileID: 0}
m_ObjectHideFlags: 0
--- !u!127 &3
GameManager:
m_ObjectHideFlags: 0
--- !u!157 &4
LightmapSettings:
m_ObjectHideFlags: 0
m_LightProbeCloud: {fileID: 0}
m_Lightmaps: []
m_LightmapsMode: 1
m_BakedColorSpace: 0
m_UseDualLightmapsInForward: 0
m_LightmapEditorSettings:
- 434 -
m_Resolution: 50.000000
m_LastUsedResolution: 0.000000
m_TextureWidth: 1024
m_TextureHeight: 1024
m_BounceBoost: 1.000000
m_BounceIntensity: 1.000000
m_SkyLightColor: {r: 0.860000, g: 0.930000, b: 1.000000, a: 1.000000}
m_SkyLightIntensity: 0.000000
m_Quality: 0
m_Bounces: 1
m_FinalGatherRays: 1000
m_FinalGatherContrastThreshold: 0.050000
m_FinalGatherGradientThreshold: 0.000000
m_FinalGatherInterpolationPoints: 15
m_AOAmount: 0.000000
m_AOMaxDistance: 0.100000
m_AOContrast: 1.000000
m_TextureCompression: 0
m_LockAtlas: 0
--- !u!196 &5
NavMeshSettings:
m_ObjectHideFlags: 0
m_BuildSettings:
cellSize: 0.200000
cellHeight: 0.100000
agentSlope: 45.000000
agentClimb: 0.900000
ledgeDropHeight: 0.000000
maxJumpAcrossDistance: 0.000000
agentRadius: 0.400000
agentHeight: 1.800000
maxEdgeLength: 12
maxSimplificationError: 1.300000
regionMinSize: 8
regionMergeSize: 20
tileSize: 500
detailSampleDistance: 6.000000
detailSampleMaxError: 1.000000
accuratePlacement: 0
m_NavMesh: {fileID: 0}
--- !u!1 &6
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
importerVersion: 3
m_Component:
- 4: {fileID: 8}
- 33: {fileID: 12}
- 65: {fileID: 13}
- 23: {fileID: 11}
m_Layer: 0
m_Name: Cube
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!1 &7
GameObject:
m_ObjectHideFlags: 0
- 435 -
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
importerVersion: 3
m_Component:
- 4: {fileID: 9}
- 20: {fileID: 10}
- 92: {fileID: 15}
- 124: {fileID: 16}
- 81: {fileID: 14}
m_Layer: 0
m_Name: Main Camera
m_TagString: MainCamera
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &8
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 6}
m_LocalRotation: {x: 0.000000, y: 0.000000, z: 0.000000, w: 1.000000}
m_LocalPosition: {x: -2.618721, y: 1.028581, z: 1.131627}
m_LocalScale: {x: 1.000000, y: 1.000000, z: 1.000000}
m_Children: []
m_Father: {fileID: 0}
--- !u!4 &9
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 7}
m_LocalRotation: {x: 0.000000, y: 0.000000, z: 0.000000, w: 1.000000}
m_LocalPosition: {x: 0.000000, y: 1.000000, z: -10.000000}
m_LocalScale: {x: 1.000000, y: 1.000000, z: 1.000000}
m_Children: []
m_Father: {fileID: 0}
--- !u!20 &10
Camera:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 7}
m_Enabled: 1
importerVersion: 2
m_ClearFlags: 1
m_BackGroundColor: {r: 0.192157, g: 0.301961, b: 0.474510, a: 0.019608}
m_NormalizedViewPortRect:
importerVersion: 2
x: 0.000000
y: 0.000000
width: 1.000000
height: 1.000000
near clip plane: 0.300000
far clip plane: 1000.000000
field of view: 60.000000
orthographic: 0
orthographic size: 100.000000
m_Depth: -1.000000
m_CullingMask:
- 436 -
importerVersion: 2
m_Bits: 4294967295
m_RenderingPath: -1
m_TargetTexture: {fileID: 0}
m_HDR: 0
--- !u!23 &11
Renderer:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 6}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_LightmapIndex: 255
m_LightmapTilingOffset: {x: 1.000000, y: 1.000000, z: 0.000000, w: 0.000000}
m_Materials:
- {fileID: 10302, guid: 0000000000000000e000000000000000, type: 0}
m_SubsetIndices:
m_StaticBatchRoot: {fileID: 0}
m_LightProbeAnchor: {fileID: 0}
m_UseLightProbes: 0
m_ScaleInLightmap: 1.000000
--- !u!33 &12
MeshFilter:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 6}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!65 &13
BoxCollider:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 6}
m_Material: {fileID: 0}
m_IsTrigger: 0
m_Enabled: 1
importerVersion: 2
m_Size: {x: 1.000000, y: 1.000000, z: 1.000000}
m_Center: {x: 0.000000, y: 0.000000, z: 0.000000}
--- !u!81 &14
AudioListener:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 7}
m_Enabled: 1
--- !u!92 &15
Behaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 7}
m_Enabled: 1
--- !u!124 &16
Behaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
- 437 -
m_GameObject: {fileID: 7}
m_Enabled: 1
--- !u!1026 &17
HierarchyState:
m_ObjectHideFlags: 0
expanded: []
selection: []
scrollposition_x: 0.000000
scrollposition_y: 0.000000
- 438 -
YAML Class ID Reference (Referencia del ID
de la clase YAML)
Una referencia a los nmeros de identificacin de clase comn usados por el formato
de archivo YAML es dada a continuacin, tanto en orden numrico de identificacin
de clase y como en orden alfabtico de los nombres de las clases. Observe que
algunos rangos de nmeros son omitidos intencionalmente de la secuencia - estos
pueden representar clases que han sido eliminadas de la API o puede estar
reservados para un futuro uso. Las clases definidas desde scripts siempre tendrn el
identificador de clase 114 (MonoBehaviour).
- 439 -
ID Class
25 Renderer
26 ParticleRenderer
27 Texture
28 Texture2D
29 SceneSettings
30 GraphicsSettings
33 MeshFilter
41 OcclusionPortal
43 Mesh
45 Skybox
47 QualitySettings
48 Shader
49 TextAsset
50 Rigidbody2D
51 Physics2DManager
53 Collider2D
54 Rigidbody
55 PhysicsManager
56 Collider
57 Joint
58 CircleCollider2D
59 HingeJoint
60 PolygonCollider2D
61 BoxCollider2D
62 PhysicsMaterial2D
64 MeshCollider
65 BoxCollider
66 SpriteCollider2D
68 EdgeCollider2D
72 ComputeShader
74 AnimationClip
- 440 -
ID Class
75 ConstantForce
76 WorldParticleCollider
78 TagManager
81 AudioListener
82 AudioSource
83 AudioClip
84 RenderTexture
87 MeshParticleEmitter
88 ParticleEmitter
89 Cubemap
90 Avatar
91 AnimatorController
92 GUILayer
93 RuntimeAnimatorController
94 ScriptMapper
95 Animator
96 TrailRenderer
98 DelayedCallManager
102 TextMesh
104 RenderSettings
108 Light
109 CGProgram
110 BaseAnimationTrack
111 Animation
114 MonoBehaviour
115 MonoScript
116 MonoManager
117 Texture3D
118 NewAnimationTrack
119 Projector
120 LineRenderer
- 441 -
ID Class
121 Flare
122 Halo
123 LensFlare
124 FlareLayer
125 HaloLayer
126 NavMeshAreas
127 HaloManager
128 Font
129 PlayerSettings
130 NamedObject
131 GUITexture
132 GUIText
133 GUIElement
134 PhysicMaterial
135 SphereCollider
136 CapsuleCollider
137 SkinnedMeshRenderer
138 FixedJoint
140 RaycastCollider
141 BuildSettings
142 AssetBundle
143 CharacterController
144 CharacterJoint
145 SpringJoint
146 WheelCollider
147 ResourceManager
148 NetworkView
149 NetworkManager
150 PreloadData
152 MovieTexture
153 ConfigurableJoint
- 442 -
ID Class
154 TerrainCollider
155 MasterServerInterface
156 TerrainData
157 LightmapSettings
158 WebCamTexture
159 EditorSettings
160 InteractiveCloth
161 ClothRenderer
162 EditorUserSettings
163 SkinnedCloth
164 AudioReverbFilter
165 AudioHighPassFilter
166 AudioChorusFilter
167 AudioReverbZone
168 AudioEchoFilter
169 AudioLowPassFilter
170 AudioDistortionFilter
171 SparseTexture
180 AudioBehaviour
181 AudioFilter
182 WindZone
183 Cloth
184 SubstanceArchive
185 ProceduralMaterial
186 ProceduralTexture
191 OffMeshLink
192 OcclusionArea
193 Tree
194 NavMeshObsolete
195 NavMeshAgent
196 NavMeshSettings
- 443 -
ID Class
197 LightProbesLegacy
198 ParticleSystem
199 ParticleSystemRenderer
200 ShaderVariantCollection
205 LODGroup
206 BlendTree
207 Motion
208 NavMeshObstacle
210 TerrainInstance
212 SpriteRenderer
213 Sprite
214 CachedSpriteAtlas
215 ReflectionProbe
216 ReflectionProbes
220 LightProbeGroup
221 AnimatorOverrideController
222 CanvasRenderer
223 Canvas
224 RectTransform
225 CanvasGroup
226 BillboardAsset
227 BillboardRenderer
228 SpeedTreeWindAsset
229 AnchoredJoint2D
230 Joint2D
231 SpringJoint2D
232 DistanceJoint2D
233 HingeJoint2D
234 SliderJoint2D
235 WheelJoint2D
238 NavMeshData
- 444 -
ID Class
240 AudioMixer
241 AudioMixerController
243 AudioMixerGroupController
244 AudioMixerEffectController
245 AudioMixerSnapshotController
246 PhysicsUpdateBehaviour2D
247 ConstantForce2D
248 Effector2D
249 AreaEffector2D
250 PointEffector2D
251 PlatformEffector2D
252 SurfaceEffector2D
258 LightProbes
271 SampleClip
272 AudioMixerSnapshot
273 AudioMixerGroup
290 AssetBundleManifest
1001 Prefab
1002 EditorExtensionImpl
1003 AssetImporter
1004 AssetDatabase
1005 Mesh3DSImporter
1006 TextureImporter
1007 ShaderImporter
1008 ComputeShaderImporter
1011 AvatarMask
1020 AudioImporter
1026 HierarchyState
1027 GUIDSerializer
1028 AssetMetaData
1029 DefaultAsset
- 445 -
ID Class
1030 DefaultImporter
1031 TextScriptImporter
1032 SceneAsset
1034 NativeFormatImporter
1035 MonoImporter
1037 AssetServerCache
1038 LibraryAssetImporter
1040 ModelImporter
1041 FBXImporter
1042 TrueTypeFontImporter
1044 MovieImporter
1045 EditorBuildSettings
1046 DDSImporter
1048 InspectorExpandedState
1049 AnnotationManager
1050 PluginImporter
1051 EditorUserBuildSettings
1052 PVRImporter
1053 ASTCImporter
1054 KTXImporter
1101 AnimatorStateTransition
1102 AnimatorState
1105 HumanTemplate
1107 AnimatorStateMachine
1108 PreviewAssetType
1109 AnimatorTransition
1110 SpeedTreeImporter
1111 AnimatorTransitionBase
1112 SubstanceImporter
1113 LightmapParameters
1120 LightmapSnapshot
- 446 -
Clases Ordenadas Alfabticamente
Class ID
ASTCImporter 1053
AnchoredJoint2D 229
Animation 111
AnimationClip 74
Animator 95
AnimatorController 91
AnimatorOverrideController 221
AnimatorState 1102
AnimatorStateMachine 1107
AnimatorStateTransition 1101
AnimatorTransitionBase 1111
AnimatorTransition 1109
AnnotationManager 1049
AreaEffector2D 249
AssetBundle 142
AssetBundleManifest 290
AssetDatabase 1004
AssetImporter 1003
AssetMetaData 1028
AssetServerCache 1037
AudioBehaviour 180
AudioChorusFilter 166
AudioClip 83
AudioDistortionFilter 170
AudioEchoFilter 168
AudioFilter 181
AudioHighPassFilter 165
AudioImporter 1020
AudioListener 81
AudioLowPassFilter 169
- 447 -
Class ID
AudioManager 11
AudioMixer 240
AudioMixerController 241
AudioMixerEffectController 244
AudioMixerGroup 273
AudioMixerGroupController 243
AudioMixerSnapshot 272
AudioMixerSnapshotController 245
AudioReverbFilter 164
AudioReverbZone 167
AudioSource 82
Avatar 90
AvatarMask 1011
BaseAnimationTrack 110
Behaviour 8
BillboardAsset 226
BillboardRenderer 227
BlendTree 206
BoxCollider 65
BoxCollider2D 61
BuildSettings 141
CachedSpriteAtlas 214
Camera 20
Canvas 223
CanvasGroup 225
CanvasRenderer 222
CapsuleCollider 136
CGProgram 109
CharacterController 143
CharacterJoint 144
CircleCollider2D 58
- 448 -
Class ID
Cloth 183
ClothRenderer 161
Collider 56
Collider2D 53
Component 2
ComputeShader 72
ComputeShaderImporter 1008
ConfigurableJoint 153
ConstantForce 75
ConstantForce2D 247
Cubemap 89
DDSImporter 1046
DefaultAsset 1029
DefaultImporter 1030
DelayedCallManager 98
DistanceJoint2D 232
EdgeCollider2D 68
EditorBuildSettings 1045
EditorExtension 18
EditorExtensionImpl 1002
EditorSettings 159
EditorUserBuildSettings 1051
EditorUserSettings 162
Effector2D 248
EllipsoidParticleEmitter 15
FBXImporter 1041
FixedJoint 138
Flare 121
FlareLayer 124
Font 128
GameManager 9
- 449 -
Class ID
GameObject 1
GlobalGameManager 6
GraphicsSettings 30
GUIDSerializer 1027
GUIElement 133
GUILayer 92
GUIText 132
GUITexture 131
Halo 122
HaloLayer 125
HaloManager 127
HierarchyState 1026
HingeJoint 59
HingeJoint2D 233
HumanTemplate 1105
InputManager 13
InspectorExpandedState 1048
InteractiveCloth 160
Joint 57
Joint2D 230
KTXImporter 1054
LensFlare 123
LevelGameManager 3
LibraryAssetImporter 1038
Light 108
LightmapParameters 1113
LightmapSettings 157
LightmapSnapshot 1120
LightProbeGroup 220
LightProbes 258
LightProbesLegacy 197
- 450 -
Class ID
LineRenderer 120
LODGroup 205
MasterServerInterface 155
Material 21
Mesh 43
Mesh3DSImporter 1005
MeshCollider 64
MeshFilter 33
MeshParticleEmitter 87
MeshRenderer 23
ModelImporter 1040
MonoBehaviour 114
MonoImporter 1035
MonoManager 116
MonoScript 115
Motion 207
MovieImporter 1044
MovieTexture 152
NamedObject 130
NativeFormatImporter 1034
NavMeshAgent 195
NavMeshAreas 126
NavMeshData 238
NavMeshObsolete 194
NavMeshObstacle 208
NavMeshSettings 196
NetworkManager 149
NetworkView 148
NewAnimationTrack 118
OcclusionArea 192
OcclusionPortal 41
- 451 -
Class ID
OffMeshLink 191
ParticleAnimator 12
ParticleEmitter 88
ParticleRenderer 26
ParticleSystem 198
ParticleSystemRenderer 199
PhysicMaterial 134
Physics2DManager 51
Physics2DSettings 19
PhysicsManager 55
PhysicsMaterial2D 62
PhysicsUpdateBehaviour2D 246
Pipeline 17
PlatformEffector2D 251
PlayerSettings 129
PluginImporter 1050
PointEffector2D 250
PolygonCollider2D 60
Prefab 1001
PreloadData 150
PreviewAssetType 1108
ProceduralMaterial 185
ProceduralTexture 186
Projector 119
PVRImporter 1052
QualitySettings 47
RaycastCollider 140
RectTransform 224
ReflectionProbe 215
ReflectionProbes 216
Renderer 25
- 452 -
Class ID
RenderSettings 104
RenderTexture 84
ResourceManager 147
Rigidbody 54
Rigidbody2D 50
RuntimeAnimatorController 93
SampleClip 271
SceneAsset 1032
SceneSettings 29
ScriptMapper 94
Shader 48
ShaderImporter 1007
ShaderVariantCollection 200
SkinnedCloth 163
SkinnedMeshRenderer 137
Skybox 45
SliderJoint2D 234
SparseTexture 171
SphereCollider 135
SpringJoint 145
SpringJoint2D 231
Sprite 213
SpriteCollider2D 66
SpriteRenderer 212
SpeedTreeImporter 1110
SpeedTreeWindAsset 228
SubstanceArchive 184
SubstanceImporter 1112
SurfaceEffector2D 252
TagManager 78
TerrainCollider 154
- 453 -
Class ID
TerrainData 156
TerrainInstance 210
TextAsset 49
TextMesh 102
TextScriptImporter 1031
Texture 27
Texture2D 28
Texture3D 117
TextureImporter 1006
TimeManager 5
TrailRenderer 96
Transform 4
Tree 193
TrueTypeFontImporter 1042
WebCamTexture 158
WheelCollider 146
WheelJoint2D 235
WindZone 182
WorldParticleCollider 76
- 454 -
Cache Server (Server de Cache) (Licencia de
Equipo)
Unity tiene un proceso de control de activos completamente automtico. Cuando el
archivo original de un asset como el de un archivo .psd o el de un archivo .fbx es
modificado, Unity detectar los cambios y automticamente lo re-importar. La
informacin importada del archivo es despus almacenada por Unity en su propio
formato interno.
sta caracterstica fue diseada para hacer que el flujo de trabajo de un usuario sea lo
ms eficiente y flexible posible. Sin embargo, al trabajar en un proyecto en equipo, es
posible que otros usuarios estn constantemente haciendo cambios y actualizaciones
a los assets, dichas modificaciones tendrn que ser importadas manualmente.
Tambin ser necesario re-importar los assets cuando se haga el cambio de una
versin de escritorio a una versin mvil, lo que podra tomar un tiempo considerable
para proyectos de gran envergadura.
El tiempo que toma la importacin de los assets, podra drsticamente verse reducido
si la informacin importada se almacena en la Cache Server.
El archivo mismo
La configuracin de importacin
La plataforma actual.
Nota que una vez que la cach del servidor es configurada, ste proceso
es completamente automtico, lo que significa que no se requiere trabajo adicional.
- 455 -
Simplemente se reduce el tiempo que toma importar los proyectos sin la necesidad
que se tenga que intervenir.
Usted necesita:
Descomprima el archivo, despus del cual usted debera ver algo as:
- 456 -
Dependiendo de su sistema operativo, corra el scrip de comando apropiado.
Usted ver una ventana del terminal, indicando que el Cache Server est corriendo en
el fondo.
El Cache Server necesita estar en una maquina fiable con un almacenamiento muy
grande (ms grande que el tamao del proyecto en s, ya que habr mltiples
- 457 -
versiones de los recursos importados almacenados. Si el disco duro se llena el Cache
Server puede llevarse acabo lentamente.
o
./RunOSX.command --path ~/mycachePath --port 8199 -nolegacy
Usted puede configurar el cache server al utilizar las siguientes opciones de la linea de
comandos:
--port le permite especificar el puerto del servidor, solo aplica al nuevo cache server,
el valor por defecto es 8126.
- 458 -
Requerimientos para la maquina alojando el Cache Server
Para un mejor rendimiento debe haber suficiente RAM para mantener una carpeta de
proyecto importada entera. En adicin, es mejor tener una maquina con un disco
duro rpido, y una conexin rpida Ethernet. El disco duro debera tambin tener
suficiente espacio libre. En la otra mano, el Cache Server tiene un uso muy bajo de
CPU.
- 459 -
El archivo meta: myTexture.psd.meta (almacena todos los ajustes del importador)
Si ese has es diferente de lo que est almacenado en el Cache Server, el asset ser re-
importado, de lo contrario, la versin en cache ser descargada. El editor cliente de
Unity solo va a sacar assets del servidor a medida que sean necesitados - los assets
no son empujados a cada proyecto a medida que cambien.
En prctica hay muchas maneras que usted puede hacer asset postprocessing (post-
procesamiento) par que funcione bien con el cache server (servidor de cache). Usted
puede utilizar:
- 460 -
se utilice el Cache Server, Unity valida que las referencias a los materiales son
mantenidas. Pero debido a que ninguna llamada de post-processing (post-
procesamiento) ser invocada, el contenido del material no puede cambiar cuando un
modelo es importado a travs del Cache Server. Por lo tanto, usted podra obtener
diferentes resultados cuando importe con o sin el Cache Server. Es mejor nunca
modificar los materiales que ya existen en el disco.
Hay algunos tipos de assets que no sern puestos en cache por el servidor?
Hay algunos tipos de informacin de assets que el servidor no da en cache. En
realidad no hay nada para ganar al cachear archivos scripts y por lo tanto el servidor
las va a ignorar. Tambin, los archivos nativos utilizado por software de modelado 3D
(Maya, 3D Max, etc) estn convertidos al FBX utilizando la aplicacin en s.
Actualmente, el asset server caches ni el archivo nativo ni el archivo intermediario FBX
generado en el proceso de importacin. Sin embargo, es posible beneficiarse del
servidor al exportar archivos como FBX del software de modelado y agregando estos
al proyecto de Unity.
- 461 -
Modificando Assets Fuentes a travs del
Scripting
Instanciacin Automtica
Usualmente cuando usted quiere hacer una modificacin de cualquier tipo de asset
del juego, usted quiere que suceda en el tiempo de ejecucin y usted quiere que sea
temporal. Por ejemplo, si su personaje recoge un power-up de invisibilidad, usted
podra querer cambiar el shader del materialpara el personaje del jugador para que
visualmente muestre un estado invisible. Esta accin involucra modificar el material
que est siendo utilizado. Esta modificacin no es permanente ya que nosotros no
queremos que el material tenga un diferente shader cuando salga del Play Mode.
function StartInvincibility {
renderer.material.shader = invincibleShader;
}
Modificacin Directa
NOTA IMPORTANTE
El mtodo presentado abajo va a modificar los archivos assets fuentes utilizados
dentro de Unity. Estas modificaciones no se pueden deshacer. Utilice estas con
precaucin.
Ahora digamos que nosotros no queremos que el material se re-inicie cuando se salga
del modo de reproduccin. Para esto, usted puede utilizar renderer.sharedMaterial.
La propiedad sharedMaterial va a devolver el asset actual utilizado por este
renderizador (y de pronto otros).
- 462 -
Specular. ste no va a re-iniciar el material al estado en el que estaba antes del Play
Mode (modo de reproduccin).
private var invincibleShader = Shader.Find ("Specular");
function StartInvincibility {
renderer.sharedMaterial.shader = invincibleShader;
}
Asignacin Directa
Si usted declara una variable pblica de cualquiera de las clases de arriba: Material,
Mesh, o Physic Material (Material de Fsica), y hace modificaciones al asset utilizando
la variable en vez de utilizar el miembro de la clase relevante, usted no recibir los
beneficios de una instanciacin automtica antes de que las modificaciones sean
aplicadas.
Texture2D
TerrainData
Cualquier modificacin hecha a estos assets a travs del script son siempre
permanentes, y nunca se pueden deshacer. Por lo que si usted est cambian el
heightmap de su terreno a travs de scripting, usted va a necesitar tener que
instanciar y asignas los valores por usted mismo. Lo mismo va para Texturas. Si usted
cambia los pixeles de un archivo de textura, el cambio es permanente.
- 463 -
Notas de iOS y Android
Los assets Texture2D son nunca instanciados automticamente cuando son
modificados en proyectos iOS y Android. Cualquier modificacin hecha a estos assets
a travs de scripting siempre son permanente, y nunca se pueden deshacer. Por lo
que si usted est cambiando los pixeles de un archivo de textura, el cambio es
permanente. Cuando se utilice este script y se salga del Play Mode (modo de
reproduccin), el estado del material se re-inicia a lo que sea que estaba antes de
entrar al Play Mode (modo de reproduccin) inicialmente. Esto sucede ya que cuando
un renderer.material es accedido, el material es automticamente instanciado, y la
instancia es devuelta. Esta instancia es aplicada simultaneamente y automticamente
al renderer (renderizador). Por lo que usted puede cualquier cambios que su corazn
desee sin temer permanencia. Como usted puede ver, hacer cambios a un
sharedMaterial puede ser ambos til y arriesgado. Cualquier cambios hechos a un
sharedMaterial ser permanente, y no se puede deshacer.
- 464 -
Extendiendo el Editor
Unity le permite extender el editor con sus propios inspectores personalizados
y Editor Windows y usted puede definir cmo las propiedades son mostradas en el
inspector con un Property Drawers personalizado. Esta seccin explica cmo utilizar
estas caractersticas.
- 465 -
Ventanas del Editor
Usted puede crear cualquier nmero de ventanas personalizadas en su aplicacin.
Estas se comportan igual que el Inspector, Escena o cualquier otra integrada. Esta es
una gran manera de agregar una interfaz de usuario a un sub-sistema para su juego.
Interfaz del editor personalizado por Serious Games Interactive utilizado para
acciones de escena scripting
Hacer una ventana del editor personalizada implica los siguientes pasos sencillos:
//C# Example
- 466 -
using UnityEngine;
using UnityEditor;
using System.Collections;
{
void OnGUI () {
// The actual window code goes here
}
}
Mostrando la ventana
Con el fin de mostrar la ventana en la pantalla, haga un elemento del men que lo
muestra. Esto es hecho creando una funcin que es activada por
laMenuItem property.
function OnGUI () {
// The actual window code goes here
}
}
//C# Example
using UnityEngine;
using UnityEditor;
using System.Collections;
void OnGUI () {
// The actual window code goes here
}
}
Mostrando el MyWindow
Esto crear una ventana de editor estndar, acoplable que guarda su posicin entre
- 467 -
las invocaciones, puede ser utilizado en diseos personalizados, etc. Para tener ms
control sobre qu es creado, usted puede usar GetWindowWithRect
void OnGUI()
{
GUILayout.Label ("Base Settings", EditorStyles.boldLabel);
myString = EditorGUILayout.TextField ("Text Field", myString);
- 468 -
Ventana del editor personalizada
creada usando ejemplo suministrado.
- 469 -
Property Drawers
Los Property Drawers pueden ser usados para personalizar el aspecto de ciertos
controles en el Inspector, mediante el uso de atributos en sus scripts, o controlando
cmo un clase especfica Serializable debera verse.
JavaScript (example):
enum IngredientUnit { Spoon, Cup, Bowl, Piece }
function Update () {
// Update logic here...
}
C# (example):
using UnityEngine;
using System.Collections;
- 470 -
}
void Update() {
// Update logic here...
}
}
using UnityEngine;
using System.IO;
Ingredient potionResult;
Ingredient[] potionIngredients;
void Update () {
// Update logic here...
}
}
Utilizando un Property Drawer personalizado, cada apariencia de la clase del
Ingrediente en el Inspector puede ser cambiada. Compare el aspecto de las
propiedades del Ingrediente en el Inspector con y sin una Property Drawer
Personalizado:
- 471 -
Usted puede adjuntar el Property Drawer a una clase Serializable utilizando el
atributo CustomPropertyDrawer y pasar el tipo de la clase Serializable al cual es un
drawer.
JavaScript (example):
@CustomPropertyDrawer(Ingredient)
class IngredientDrawer extends PropertyDrawer {
// Draw label
position = EditorGUI.PrefixLabel (position, GUIUtility.GetControlID
(FocusType.Passive), label);
// Calculate rects
var amountRect = new Rect (position.x, position.y, 30, position.height);
var unitRect = new Rect (position.x+35, position.y, 50,
position.height);
var nameRect = new Rect (position.x+90, position.y, position.width-90,
position.height);
EditorGUI.EndProperty ();
}
}
C# (examples):
using UnityEngine;
using UnityEditor;
using System.Collections;
[CustomPropertyDrawer(typeof(Ingredient))]
public class IngredientDrawer : PropertyDrawer {
- 472 -
EditorGUI.BeginProperty(position, label, property);
// Draw label
position = EditorGUI.PrefixLabel(position,
GUIUtility.GetControlID(FocusType.Passive), label);
// Calculate rects
Rect amountRect = new Rect(position.x, position.y, 30, position.height);
Rect unitRect = new Rect(position.x+35, position.y, 50,
position.height);
Rect nameRect = new Rect(position.x+90, position.y, position.width-90,
position.height);
EditorGUI.EndProperty();
}
}
using UnityEngine;
using UnityEditor;
using System.Collections;
[CustomPropertyDrawer (Ingredient)]
class IngredientDrawer : PropertyDrawer {
// Draw label
position = EditorGUI.PrefixLabel (position, GUIUtility.GetControlID
(FocusType.Passive), label);
// Calculate rects
Rect amountRect = new Rect (position.x, position.y, 30,
position.height);
Rect unitRect = new Rect (position.x+35, position.y, 50,
position.height);
Rect nameRect = new Rect (position.x+90, position.y, position.width-90,
- 473 -
position.height);
EditorGUI.EndProperty ();
}
}
JavaScript (example):
// Show this float in the Inspector as a slider between 0 and 10
@Range (0.0, 10.0)
var myFloat = 0.0;
//C# example.
[Range(0.0f, 10.0f)]
public float myFloat = 0.0f;
C# (example):
// Show this float in the Inspector as a slider between 0 and 10
[Range(0.0f, 10.0f)]
float myFloat = 0.0f;
JavaScript (example):
class RangeAttribute extends PropertyAttribute {
var min : float;
var max : float;
- 474 -
function RangeAttribute (min : float, max : float) {
this.min = min;
this.max = max;
}
}
C# (examples):
using UnityEngine;
using System.Collections;
The property drawer class should be placed in an editor script, inside a folder called
Editor.
JavaScript (example):
// Tell the RangeDrawer that it is a drawer for properties with the
RangeAttribute.
@CustomPropertyDrawer (RangeAttribute)
class RangeDrawer extends PropertyDrawer {
// First get the attribute since it contains the range for the slider
var range : RangeAttribute = attribute as RangeAttribute;
- 475 -
// Now draw the property as a Slider or an IntSlider based on whether
it's a float or integer.
if (property.propertyType == SerializedPropertyType.Float)
EditorGUI.Slider (position, property, range.min, range.max, label);
else if (property.propertyType == SerializedPropertyType.Integer)
EditorGUI.IntSlider (position, property, range.min, range.max,
label);
else
EditorGUI.LabelField (position, label.text, "Use Range with float or
int.");
}
}
C# (examples):
using UnityEngine;
using UnityEditor;
using System.Collections;
[CustomPropertyDrawer(typeof(RangeAttribute))]
public class RangeDrawer : PropertyDrawer {
// First get the attribute since it contains the range for the slider
RangeAttribute range = attribute as RangeAttribute;
- 476 -
Editores Personalizados
Una clave para aumentar la velocidad de creacin de juego es crear editores
personalizados para los componentes ms utilizados. Por el bien del ejemplo, vamos
a utilizar este simple script que siempre mantiene un objeto que mira un punto.
//C# Example (LookAtPoint.cs)
using UnityEngine;
public class LookAtPoint : MonoBehaviour
{
public Vector3 lookAtPoint = Vector3.zero;
void Update()
{
transform.LookAt(lookAtPoint);
}
}
//JS Example (LookAtPoint.js)
#pragma strict
var lookAtPoint = Vector3.zero;
function Update()
{
transform.LookAt(lookAtPoint);
}
This will keep an object oriented towards a world-space point. Currently this script will
only become active in play mode, that is, when the game is running. When writing
editor scripts its often useful to have certain scripts execute during edit mode too,
while the game is not running. You can do this by adding an ExecuteInEditMode
attribute to it:
//C# Example (LookAtPoint.cs)
using UnityEngine;
[ExecuteInEditMode]
public class LookAtPoint : MonoBehaviour
{
public Vector3 lookAtPoint = Vector3.zero;
void Update()
{
transform.LookAt(lookAtPoint);
}
}
//JS Example (LookAtPoint.js)
#pragma strict
@script ExecuteInEditMode()
var lookAtPoint = Vector3.zero;
function Update()
{
transform.LookAt(lookAtPoint);
}
Now if you move the object which has this script around in the editor, or change the
values of Look At Point in the inspector - even when not in play mode - the object will
- 477 -
update its orientation correspondingly so it remains looking at the target point in
world space.
When you create a script in Unity, by default it inherits from MonoBehaviour, and
therefore is a Component which can be placed on a game object. When placed on a
game object, the Inspector displays a default interface for viewing and editing all
public variables that can be shown - such as integers, floats, strings, Vector3s, etc.
Heres how the default inspector looks for our script above:
A custom editor is a separate script which replaces this default layout with any
editor controls that you choose.
To begin creating the custom editor for our LookAtPoint script, you should create
another script with the same name, but with Editor appended. So for our example:
LookAtPointEditor.
//c# Example (LookAtPointEditor.cs)
using UnityEngine;
using UnityEditor;
[CustomEditor(typeof(LookAtPoint))]
[CanEditMultipleObjects]
public class LookAtPointEditor : Editor
{
SerializedProperty lookAtPoint;
void OnEnable()
{
lookAtPoint = serializedObject.FindProperty("lookAtPoint");
}
- 478 -
@CanEditMultipleObjects
class LookAtPointEditor extends Editor {
function OnEnable()
{
lookAtPoint = serializedObject.FindProperty("lookAtPoint");
}
function OnInspectorGUI()
{
serializedObject.Update();
EditorGUILayout.PropertyField(lookAtPoint);
serializedObject.ApplyModifiedProperties();
}
}
Esta clase debe derivar del Editor. El atributo @CustomEditor le informa a Unity qu
componente debe actuar como un editor.
Its not very interesting because all we have done so far is to recreate the Vector3 field,
exactly like the default inspector shows us, so the result looks very similar (although
the Script field is now not present, because we didnt add any inspector code to
show it).
However now that you have control over how the inspector is displayed in an Editor
script, you can use any code you like to lay out the inspector fields, allow the user to
adjust the values, and even display graphics or other visual elements. In fact all of the
inspectors you see within the Unity Editor including the more complex inspectors such
as the terrain system and animation import settings, are all made using the same API
that you have access to when creating your own custom Editors.
Heres a simple example which extends your editor script to display a message
indicating whether the target point is above or below the gameobject:
//c# Example (LookAtPointEditor.cs)
using UnityEngine;
using UnityEditor;
- 479 -
[CustomEditor(typeof(LookAtPoint))]
[CanEditMultipleObjects]
public class LookAtPointEditor : Editor
{
SerializedProperty lookAtPoint;
void OnEnable()
{
lookAtPoint = serializedObject.FindProperty("lookAtPoint");
}
function OnEnable()
{
lookAtPoint = serializedObject.FindProperty("lookAtPoint");
}
function OnInspectorGUI()
{
serializedObject.Update();
EditorGUILayout.PropertyField(lookAtPoint);
serializedObject.ApplyModifiedProperties();
if (lookAtPoint.vector3Value.y > (target as
LookAtPoint).transform.position.y)
{
EditorGUILayout.LabelField("(Above this object)");
}
if (lookAtPoint.vector3Value.y < (target as
LookAtPoint).transform.position.y)
{
EditorGUILayout.LabelField("(Below this object)");
}
}
}
So now we have an new element to our inspector which prints a message showing if
the target point is above or below the gameobject.
- 480 -
This is just scratching the surface of what you can do with Editor scripting. You have
full access to all the IMGUI commands to draw any type of interface, including
rendering scenes using a camera within editor windows.
[CustomEditor(typeof(LookAtPoint))]
[CanEditMultipleObjects]
public class LookAtPointEditor : Editor
{
SerializedProperty lookAtPoint;
void OnEnable()
{
lookAtPoint = serializedObject.FindProperty("lookAtPoint");
}
serializedObject.ApplyModifiedProperties();
- 481 -
}
EditorGUI.BeginChangeCheck();
Vector3 pos = Handles.PositionHandle(t.lookAtPoint,
Quaternion.identity);
if (EditorGUI.EndChangeCheck())
{
Undo.RecordObject(target, "Move point");
t.lookAtPoint = pos;
t.Update();
}
}
}
//JS Example (LookAtPointEditor.js)
#pragma strict
@CustomEditor(LookAtPointJS)
@CanEditMultipleObjects
class LookAtPointEditorJS extends Editor {
function OnEnable()
{
lookAtPoint = serializedObject.FindProperty("lookAtPoint");
}
function OnInspectorGUI()
{
serializedObject.Update();
EditorGUILayout.PropertyField(lookAtPoint);
serializedObject.ApplyModifiedProperties();
if (lookAtPoint.vector3Value.y > (target as
LookAtPointJS).transform.position.y)
{
EditorGUILayout.LabelField("(Above this object)");
}
if (lookAtPoint.vector3Value.y < (target as
LookAtPointJS).transform.position.y)
{
EditorGUILayout.LabelField("(Below this object)");
}
}
function OnSceneGUI()
{
var t : LookAtPointJS = (target as LookAtPointJS);
EditorGUI.BeginChangeCheck();
var pos = Handles.PositionHandle(t.lookAtPoint, Quaternion.identity);
if (EditorGUI.EndChangeCheck())
{
Undo.RecordObject(target, "Move point");
t.lookAtPoint = pos;
t.Update();
}
}
- 482 -
}
Si usted quiere color objetos 2D GUI (GUI, EditorGUI y amigos), usted necesita
envolverlos en llamadas a Handles.BeginGUI() y Handles.EndGUI().
- 483 -
Corriendo Cdigo Script del Editor en la
Ejecucin
A veces, es til ser capaz de correr algo de cdigo script del editor en un proyecto tan
pronto Unity se ejecuta sin requerir una accin por parte del usuario. Usted puede
hacer esto al aplicar el atributo InitializeOnLoad a una clase que tiene un static
constructor (constructor esttico). Un constructor esttico es una funcin con el
mismo nombre que la clase, declarado esttico y sin un tipo de retorno o parmetros
(ver aqu for more information):-
using UnityEngine;
using UnityEditor;
[InitializeOnLoad]
public class Startup {
static Startup()
{
Debug.Log("Up and running");
}
}
[InitializeOnLoad]
class MyClass
{
static MyClass ()
{
EditorApplication.update += Update;
}
- 484 -
}
- 485 -
Licencias y Activacin
Unity>Manage License
- 486 -
Activacin en linea
La activacin online es la manera ms fcil y rpida de empezar a trabajar con Unity. A
continuacin hay una gua paso-a-paso acerca de cmo activar Unity online.
3. Siguiente, usted se va a encontrar con una ventana Unity Account. Aqu usted va a
necesitar ingresar las credenciales de su cuenta Unity Developer Network (UDN). (Si
usted no tiene una cuenta existente o ha olvidado su contrasea, simplemente click
los botones respectivos Create account y Forgot your password? y links. Siga las
indicaciones de la pantalla o recupere su cuenta.) Una vez sus credenciales ingresadas
usted puede proceder haciendo click en OK.
4. Usted se encontrar con una ventana llamada Choose a version of Unity. Seleccione
- 487 -
la versin de Unity que usted desea activar y click OK.
5. Para activar un Nmero Serial de Unity existente generado por la Store (tienda) o un
miembro de nuestro Equipo de Ventas, marque la caja Activate an existing serial e
ingrese el nmero serial apropiado. Una vez el nmero Serial haya sido ingresado, su
tipo de Licencia ser mostrado en la pantalla.
6. Para activar la versin Gratuita de Unity, marque la casilla Activating Unity Free
7. Usted ahora ser capaz de proceder al Editor de Unity haciendo click en el botn Start
using
Unity.
- 488 -
Para cualquier otra aclaracin, contacte support@unity3d.com.
- 489 -
Activacin fuera de linea/ Manual
Si la activacin en linea falla, esto se puede deber a varias cosas:
Si la activacin Online falla, si usted no tiene una conexin a internet o usted e.g. est
detrs de un firewall que no le permite a Unity contactar el servidor de licencia, el
Editor va a automticamente intentar realizar una activacin manual.
Siga los siguientes pasos aqu para activar manualmente Unity en su maquina:
Siga los pasos aqu para activar manualmente Unity en su mquina. Tenga en cuenta
que usted necesita tener acceso a conexin de internet, como parte de este proceso,
pero no tiene que ser en la maquina en la cual est usted intenta activar Unity.
- 490 -
Request.
la carpeta Documents).
Una vez usted haya presionado el botn Save, el archivo es guardado y usted debera ver
la siguiente notificacin arriba de la ventana.
- 491 -
El archivo de licencia que usted acaba de crear ser atado a la maquina en la que fue
generado. Este archivo de licencia no va a funcionar en otras maquinas. El archivo de
licencia ya no va a reconocer una maquina que ha sido re-formateada o ha tenido
cambios en el hardware.
6. Haga click en el botn Browse para escoger el archivo que fue guardado a la
carpeta de Documentos. Luego presione el botn Next. La siguiente ventana va a
aparecer.
- 492 -
En este ejemplo nosotros estamos licenciando una versin Pro de Unity.
7. Ingrese el nmero
- 493 -
serial.
Tenga en cuenta: En esta ventana el nmero serial ha sido ocultado. Haga click en el
botn Next.
- 494 -
9. Vaya devuelta a Unity. Haga click en el botn Load License para cargar el
archivo del nmero serial el cual fue descargado.
- 495 -
Esto abrir sus directorios dentro de su disco duro.
10. Ahora, seleccione el archivo que usted acaba de descargar y haga clic
en OK. Unity va a proporcionarle a usted una ventana de Thank you!
(agradecimiento). Presione el botn Start Using Unity para continuar.
- 496 -
Manejando su Licencia de Unity
Mi mquina ya no es accesible:
Usted puede devolver activaciones desde el numero(s) serial agregado a su cuenta de
la webstore (tienda web).
Desafortunadamente usted no puede devolver activaciones solas, esto solo las resetea.
Una vez usted haya click en la opcin Manage License usted se va a encontrar con
la ventana License Management. Usted luego tiene cuatro opciones (ver imagen),
explicado a continuacin:
- 497 -
License Management Window
Return license
Manual activation
Para mayor asistencia, por favor contactar support@unity3d.com.
- 498 -
Preguntas frecuentes de activacin
En cuntas mquinas puedo instalar mi copia de Unity?
Cada licencia comercial de Unity paga le permite a una sola persona utilizar Unity
en dos maquinas que tengan un uso exclusivo de ellas. Sea en Mac y en PC o sus
maquinas del Trabajo y Hogar. Las licencias de Educacin vendidas va Unity o
cualquiera de nuestros distribuidores son solamente buenas para una sola activacin.
Lo mismo va a licencias Prueba (Unity 4.x solamente), a menos que se indique lo
contrario.
La versin gratuita de Unity podra no ser licenciada por un entidad comercial con
ingresos anuales (basados en el ao fiscal) en exceso de US$100,000, o por una
entidad educacional, sin animo de lucro o del gobierno con un presupuesto anual
sobre US$100,000,.
Si usted es una Entidad Lega, usted podra no combinar archivos desarrollados con la
versin gratuita de Unity con cualquier archivos desarrollados por usted (o por un
tercero) a travs del uso de Unity Pro. Ver nuestra EULA para ms informacin acerca
del uso de licencia.
Yo necesito utilizar mi licencia en otra maquina, pero obtengo ese mensaje que
mi licencia ha sido Activated too many times (activada muchas veces). Qu
debera hacer?
Asegrese de que sus detalles sean ingresados de manera correcta. Las claves
distingue maysculas y minsculas, por lo que revise si usted est escribiendo
exactamente lo que usted registro. Usted puede reset su clave utilizando este link.
- 499 -
No, usted no puede. Con el fin de utilizar Unity 5.x, usted necesitar actualizarse a una
licencia 5.x . Usted puede hacer esto Enlinea, va nuestro Web Store
Tal como cambiar maquina, usted va a necesitar Return (devolver) su licencia antes
de hacer cualquier cambio de hardware o OS de su maquina. Si usted falla Return
(devolver) la licencia, nuestro servidor va a ver una peticin de otra maquina y le va a
informar que usted ha llegado a su limite de activacin para la licencia. Referirse
a Managing your Unity License, para ms informacin acerca de devolver la licencia.
*Mi maquina muri sin dejarme poder devolver (Return) mi licencia. Qu hago ahora?
https://store.unity3d.com/account/licenses
Esta pgina le debera permitir a usted devolver activaciones, a travs del uso del
botn Disable all activations.
Yo tengo dos licencias, cada una con un add-on (complemento) que yo requiero.
Cmo los activo en unison en mi maquina?
Usted no puede. Una sola licencia pude ser solamente utilizada en una maquina a la
vez.
C:\ProgramData\Unity\ (Windows)
- 500 -
C:\Users\(username)\AppData\Local\VirtualStore\ProgramData\Unity, si
el Windows User Account Control (UAC) ha restringido su acceso
a C:\ProgramData\Unity. (Esto puede suceder si la carpeta es eliminada o Unity es
comenzado con permisos administrativos por primera vez.)
Unity asume que slo una nica versin de Unity puede correr en tu mquina. Sin
embargo, t puedes tener multiples versiones de Unity instaladas y correrlas en tu
mquina. Todas estas versiones necesitan el mismo nmero de serie. Si usted tiene
diferentes versiones de Unity que requiren diferentes licencias usted necesitar una
manera de copiar las licencias de un lado a otro. Una forma de hacer esto es tener las
licencias almacenadas en su escritorio. Antes de correr una versin especfica copie el
archivo ULF requerido en el lugar donde la licencia necesita ser guardada.
- 501 -
Guas de Actualizacin
Visite las pginas de abajo para informacin acerca de actualizarse a versiones
posteriores de Unity.
Actualizando a Unity 5.0 [Sacado 03mar15] (Hay varias sub-pginas para esto.)
- 502 -
Usando la Actualizacin Automtica del API
We tend to only introduce these significant breaking changes when moving from one
significant version of Unity to another, and only in cases that it makes Unity easier to
use (meaning users will incur fewer errors) or brings measurable performance gains,
and only after careful alternative consideration. However, the upshot of this is that if
you were to - for example - open a Unity 4 project in Unity 5, you might find some of
the scripting commands that you used have now been changed, removed, or work a
little differently.
One obvious example of this is that in Unity 5, we removed the quick accessors
which allowed you to reference common component types on a GameObject directly,
such as gameObject.light, gameObject.camera, gameObject.audioSource, etc.
In Unity 5, you now have to use the GetComponent command for all types, except
transform. Therefore if you open a Unity 4 project that uses gameObject.light in
Unity 5, you will find that particular line of code is obsolete and needs to be updated.
- 503 -
The API Update dialog
Obviously, as always, its important to have a backup of your work in case anything
goes wrong, but particularly when youre allowing software to rewrite your code! Once
youve ensured you have a backup, and clicked the Go Ahead button, Unity will
rewrite any instances of obsolete code with the recommended updated version.
1. Abra un project / importe un paquete que contenga scripts / assemblies con uso de
API obsoleto
3. El API updater revisa por errores de compilacin en partculas que son conocidos
como updatable (actualizables)
4. If we find any occurrence in previous step, show a dialog to user offering automatic
update, otherwise, weve finished.
5. If user accepts the update, then run API updater (which will update all scripts written
in the same language being compiled in step 2)
6. Go to step 2 (to take any updated code into account) until no scripts get updated in
step 5
So, from the list above you can see the updater may run multiple times if there are
scripts which fall into different compilation passes (Eg, scripts in different languages,
editor scripts, etc) that use obsolete code.
- 504 -
When the API Updater finishes successfully, you will get a notification in the console,
like this:
Success!
If you choose not to allow the API updater to update your scripts, you will see the
script errors in your console as normal. You will also notice that the errors which the
API Updater could update automatically are marked as (UnityUpgradable) in the
error message.
If your script has other errors, in addition to obsolete API uses, the API updater may
not be able to fully finish its work until you have fixed the other errors. In this case,
youll be notified in the console window with a message like this:
Other errors in your scripts can prevent the API updater from working properly.
Some scripts have compilation errors which may prevent obsolete API usages to get
updated. Obsolete API updating will continue automatically after these errors get
fixed.
Once you have fixed the other errors in your script, you can run the API updater again.
The API updater runs automatically when a script compilation is triggered, but you can
also run it manually from the Assets menu, here:
- 505 -
The API Updater can be run manually
from the Assets menu.
Solucin de Problemas
If you get a message saying API Updating failed. Check previous console messages.
this means the API updater encountered a problem that prevented it from finishing its
work.
A common cause of this is if the updater was unable to save its changes - if for
example - the user does not have rights to modify the updated script. It might be write
protected, for instance.
By checking the previous lines in the console as instructed, you should be able to see
the problems that occurred during the update process.
En este ejemplo el actualizador del API fallo ya que este no tena permiso de escritura
- 506 -
para el archivo script.
Limitaciones
No todo cambio de la API puede ser arreglado automticamente por el actualizador.
Abajo hay una lista de los cambios actuales del API que nopueden ser arreglados por
el actualizador:
Mesh.GetTriangleStrip() / SetTriangleStrip()
TextureImporter: ReadTextureImportInstructions(UnityEditor.TextureImpo
rtInstructions, UnityEditor.BuildTarget) -
> ReadTextureImportInstructions(UnityEditor.BuildTarget, out
UnityEngine.TextureFormat, out UnityEngine.ColorSpace, out
System.Int32)
IPackerPolicy: OnGroupAtlases(UnityEditor.BuildTarget,
UnityEditor.Sprites.PackerJob, UnityEditor.TextureImporter[]) -
> OnGroupAtlases(UnityEditor.BuildTarget,
UnityEditor.Sprites.PackerJob, System.Int32[]) (un tipo de parmetro
completamente diferente)
PasteToStateMachineFromPasteboard
CopyStateMachineDataToPasteboard
- 507 -
Actualizarse a Unity 5.3
Los light probes y la iluminacin ambiental ahora son consistentes en gamma y linear
color space. Algunas diferencias en la iluminacin ambiente comparado a Unity 5.2
son de esperarse. El Output coincide con la intensidad de Unity 4.x de manera
prudente ahora pero ya que 4.x y nuestro cdigo de proyeccin de luz genera
coeficientes L2 y Enlighten solamente da como salida (output) L1, el resultado final de
los light probes pueden parecer diferente. Soporte L2 para light probes aparecer en
una versin futura. Las luces direccionales no importantes deberan ahora coincidir
con 4.x. Los Light probes siempres son pasados a los shaders en linear color space y
la conversin final gamma sucede en la GPU. Si usted est utilizando las funciones
ShadeSHxxx de Unity para evaluar los armnicos esfricos en el shader, usted no
debera tener que cambiar sus shaders. En los shaders UNITY_STANDARD_SIMPLE la
evaluacin de los armnicos esfricos no se divide entre el pixel y vertex shaders, por
lo que se limita las conversiones lineales a gamma para que solo sucedan una vez y
solamente en el vertex shader. En GPUs ms avanzadas, los clculos se dividen entre
vertex y fragment shader.
Shuriken
El tamao de la partcula en el Modulo de Colisin ha sido remplazado por un nuevo
parmetro: Radius Scale. Este nuevo parmetro funciona como un multiplicador en el
tamao actual de la partcula. Si usted estuviera utilizando el valor antiguo para hacer
cualquier cosa en vez de aproximar los tamaos de la partculas, entonces usted
necesitar re-configurar los limites de su colisin utilizando el nuevo parmetro.
- 508 -
Edicin Multi Escena (Multi Scene Editing)
La caracterstica de edicin multi escena introduce el nuevo API a travs de
EditorSceneManager y SceneManager. Estos significa que muchos de los APIs de
EditorApplication y Application se han vuelto obsoletos.
EditorApplication.NewScene
EditorApplication.NewEmptyScene
EditorApplication.OpenScene
EditorApplication.OpenSceneAdditive
EditorApplication.SaveScene
EditorApplication.SaveCurrentSceneIfUserWantsTo
EditorApplication.SaveCurrentSceneIfUserWantsToForce
EditorApplication.currentScene
EditorApplication.MarkSceneDirty
EditorApplication.isSceneDirty
Cada escena ahora tiene su propia dirty flag. Obtenga las escenas a travs del
EditorSceneManager y revise su estado. La configuracin de escenas dirty (sucias)
tambin se hace a travs del EditorSceneManager. Los APIs obsoletos todos operan
en la escena activa solamente.
Application.LoadLevel
Application.LoadLevelAsync
Application.LoadLevelAdditive
Application.LoadLevelAdditiveAsync
- 509 -
Application.loadedLevel
Application.loadedLevelName
Del mismo modo usted todava puede ver el cdigo generado para el surface shader,
modificarlo, y copiarlo a un nuevo asset shader - ya que es solamente la fuente HLSL
que usted est modificando.
Para informacin ms detallada usted puede ver este blog post de Unity acerca de las
caractersticas que se volvern obsoletas.
- 510 -
la versin OpenGl en desktop OS X a 4.1 como mucho, no va a soportar todas las
caractersticas de Directx 11 (tal como Unordered Access Views o Compute Shaders).
Esto significa que todos los shaders que estn configurados para tener un nivel
shader de 5.0 (con #pragma en 50) va a fallar en ser cargado en OS X.
Por lo tanto un nuevo nivel objetivo shader es introducido: #pragma target gl4.1. Este
nivel objetivo requiere al menos OpenGL 4.1 o un nivel shader Directx 11.0 de 5 en
desktop, o OpenGL ES 3.1 + Android Extension Pack en mviles.
AssetBundles
El formato contenedor del AssetBundle fue cambiado con el fin de soportar una
nueva compresin LZ4 y tener una base para mejoras futuras. Los Bundles creados en
versiones previas (2.x, 3.x) son obsoletas y no soportadas. Los Bundles creados en
Unity 4.x, 5.05.2 estn soportados y pueden ser cargados. Pero, si ya estuviera en
cach en el dispositivo del usuario utilizando el mtodo
WWW.LoadFromCacheOrDownload, esto seran re-descargados. Tambin tenga en
cuenta que los datos en dichos bundles podran estar sujetos a cambio (ver e.g la
seccin de Global Illumination).
GetComponent(s)InChildren
GetComponentsInChildren ha cambiado un poco de comportamiento en el caso
dnde usted lo invoque en un gameobject que tiene un padre que est inactivo.
Previamente, usted siempre obtendra un arreglo vaco como resultado. Debido a que
esto es lo que usted nunca quiere, y debido a que eso significara que
GetComponentsOnChildren no funcionara en prefabs, esto ha sido cambiado para
ignorar cualquier estado activo del gameobject padre objeto. Tambin, la versin
singular GetComponentInChildren() ahora tiene un argumento opcional
includeInactive.
- 511 -
Luces Point y Spot que emiten sombras
Las point lights que estn seleccionadas para emitir sombras ahora tienen un
deslizador bias funcionando, para permitir el ajuste y el balanceo de artifacts
(problemas) de sombras (under shadowing vs shadow acne). Esto significa que
cualquier point lights existente que podran tener un Bias configurado antes que no
estuviera haciendo nada, ahora comenzar a tener un efecto, y esto va a cambiar el
comportamiento de emisin de sombras.
Los Spot Lights que emiten sombras ahora tienen un nuevo deslizador que le permite
a usted seleccionar la distancia near clip. Esta es la distancia a la luz que si un objeto
est debajo de ella no va a emitir sombras. Unos valores bajos incluyen objetos
cercanos, al precio de una precisin altamente reducida para las sombras. En
versiones previas de Unity esto era calculado en 4% del rango total de la luz, la cual
puede ser un poco mayor para luces grandes. Ahora el predeterminado es a 0.2, que
debera funcionar en la mayora de casos.
Matemtica de Quaternions
The new support of importer Euler rotation curves, and the support of all the different
Euler rotation orders necessitated a rewrite of the QuaternionToEuler and
EulerToQuaternion mathematics functions, both in traditional and SIMD versions.
Those new variations have not been made available in the API yet, and are only used
internally for now.
This should have very little impact, but there are minute differences (<0.01 degrees) in
the results between the previous version and the new one, and only when very close
to gimbal lock conditions. Tests run have shown the new version to be more accurate
most of the time, and the average error to be smaller by at least a factor of 10.
JointDriveMode flags
JointDriveMode flags are now obsolete, and thus have been removed. However, in
earlier versions of Unity they were incorrectly being used to ignore the Configurable
Joints Joint Drive stiffness and damping settings. When upgrading a project to Unity
5.3 which uses Configurable Joints, users should be aware that these settings may
now be having an effect when previously they did not - because they were wrongly
being ignored based on the old JointDriveMode flags.
- 512 -
Legacy Light Animation
As of 5.3, Legacy Animations, both existing and new, will not animate Light properties.
Changes to the underlying data structure of the Lights have made them incompatible
with Legacy. To properly animate Lights, please use the Animator Component.
Editor Extensions
The scenes dirty flag is now respected when saving scenes. Editor extensions that do
not correctly set the dirty flag may fail to save data correctly. Use Undo.RecordObject
to record that an object is about to change and to update the scenes dirty flag
accordingly, or EditorSceneManager.MarkSceneDirty to forcibly mark the entire scene
as dirty.
- 513 -
Actualizndose a Unity 5.2
Global Illumination
UV packing for baked UVs not filling the 01 space (smaller or bigger) has been fixed. It
makes the resolution assigned to each object work much more reliably if that objects
unwrap is not filling the 01 space and also when its bounds are non-square. Please
review the resolution on your instances for baked lightmaps.
Shader variant stripping was fixed for realtime lightmaps. Now each lightmaps mode
(non-directional, directional and directional specular) variant can be picked for baked
and realtime GI separately. Please review your settings if you previously selected a
specific lightmaps mode variant in the Graphics Settings to make that mode work for
realtime lightmaps.
Bounce scale has been changed from the arbitrary value of 0.7 to 1.0. The bounce is
the product of the albedo and bounce scale. Artists should set real-life albedo values
(the brightest non-metallic is snow with 0.9). This is our PBS
reference http://forum.unity3d.com/threads/official50-pbr-calibration-
charts.289416/
Since you should author physically correct albedo, it makes sense for us to set the
scale close to 1. We already clamp albedo values in the meta pass, so the bounce scale
should just be 1.0f.
Please note that if you choose to set albedo to 1.0 in a custom meta pass without
clamping, then the scene can look like its exploding with light.
Shaders
Fixed Function style shaders (the ones that use SetTexture, Lighting On etc.)
internally get turned into actual shaders at shader import time now. Upside is that
they now work on all platforms (previously did not work on consoles), and with more
consistency. Also a lot of code and fixed function related inefficiencies got removed
from runtime, making rendering a bit faster. Downside is, creating fixed function
shaders at runtime - using new Material(fixedFunctionShaderString) - does
not work anymore. That constructor was deprecated in Unity 5.1, and now in 5.2 it
actually stopped working for fixed function shaders.
- 514 -
Reflection Probes
Weve changed how Reflection Probes are rendered when using Deferred Shading, in
order to allow screen space reflections effects in the future. Short version is: in
deferred shading, reflection probes are per-pixel instead of per-object now.
Comparison of current behavior (reflection probes per object; in some cases hard to avoid
harsh reflection transitions between large objects) and reflection probes per pixel
(transitions much less visible; and they happen at probe boundaries not at object
boundaries):
Reflection probes are sampled during the G-buffer pass, in exactly the same way as in
forward rendering. They are written into emission buffer together with light probes,
lightmaps and emissive material parts.
This meant you get one (or two, when probe blending is on) reflection probes per
object.
Reflections being together with emission/lightmaps in the same buffer means that
doing SSRR properly is hard. SSRR provides reflections by itself (and falls back to
reflection probes where it cant), but it does not know which part of emission buffer
color is coming from reflection probes.
Now (5.2)
When using deferred shading, do not sample reflection probes during G-buffer pass.
Instead, after the G-buffer is done, make a separate deferred reflections pass that
draws reflection probes as boxes in screenspace; that output reflection information
- 515 -
into a separate render target.
What does this mean? (everything below only affects deferred shading)
Reflection probes are no longer per-object; they are effectively per-pixel. It is easier
to have large objects affected by many reflection probes.
Also probes got a blend distance which defines how much space around the probe is
used for blending into other probes.
Reflection probe Renderer flags (probe blending, etc.) are ignored; everything is
affected by reflection probes in the same way (since it happens in screenspace now).
This is very similar to how receive shadows flag is ignored in deferred shading.
If you are using custom deferred shading light pass shader (with custom BRDF etc.),
youll probably want to use custom deferred reflections shader too, with the same
BRDF applied to reflection probes.
Shuriken
Particles are now generated in world space, which may require an update to any
custom vertex shaders. This change was made in order to allow re-use of the particle
buffers between each eye for VR.
Mesh particles now support the Texture Sheet Animation module. Its worth checking
that your existing effects do not have this enabled by accident, otherwise you may see
a change in behaviour.
The Dampen parameter in the Limit Velocity over Lifetime module used to have a
stronger effect at higher framerates. This has been fixed, and if your game is
targetting 30fps, your old effects will be unaffected by this change. However, if your
game targets a differnet FPS, you can update the Dampen value using this formula, to
- 516 -
ensure your effect is unchaged in 5.2:
newDampen = 1.0f - pow(1.0f - oldDampen, targetFPS / 30.0f);
UI (Interfaz de Usuario)
In 5.2 we have combined the shaders that text and normal UI element rendering
users. A side effect of this is that if you specify a manual font texture in a 32bit format
then the color channels will be honored. This means that black texture channels will
result in black text where previously the text would be white (we only looked at the
alpha). If you wish to use custom textures for your fonts do one of the following:
1. Change the import format of the texture to A8. This will only keep the alpha
component and Unity will generate the text as white by default.
2. Specify a color / colors in the texture for Unity to use when rendering the text
Multiplayer
The way the project identification is handled has changed in Unity 5.2, now the project
is automatically registered and you do not need to manually enter an ID anywhere.
There is a Multiplayer panel in the Services Window (open it with cloud icon in upper
right corner) and in there you can find a deep link directly to the project on the
website (Go to dashboard). When configured the Multiplayer configuration will appear
here.
- 517 -
Graphics (Other items)
- 518 -
Actualizando a Unity 5.0
Muchas de las caractersticas y sistemas de Unity han sido actualizados en Unity5,
incluyendo Fsica, Audio, Animacin, Shaders y mucho ms. Mientras muchas reas
son automticamente actualizadas cuando usted abre un proyecto ms viejo, hay
ciertas reas dnde usted tendr que manualmente ajustar o re-factorizar partes de
su proyecto.
Estas pginas son una referencia rpida a la mayora de cambios que usted necesita
tener en cuenta cuando actualice un proyecto de Unity4 a Unity5.
AI en Unity 5.0
- 519 -
AI (Inteligencia artificial) en Unity 5.0
Estas son notas para tener en cuenta cuando actualice proyectos de Unity 4 a Unity 5,
si su proyecto utiliza las caractersticas AI/Navmesh.
EditorApplication.SaveScene ();
}
}
- 520 -
static List<string> SearchFiles(string dir, string pattern)
{
List <string> sceneNames = new List <string>();
foreach (string f in Directory.GetFiles(dir, pattern,
SearchOption.AllDirectories))
{
sceneNames.Add (f);
}
return sceneNames;
}
}
#endif
- 521 -
Animacin en Unity 5.0
Estas son notas para tener en cuenta cuando actualice proyectos de Unity 4 a Unity 5,
si su proyecto utiliza las caractersticas de animacin.
Previamente:
UnityEditorInternal.BlendTree
UnityEditorInternal.AnimatorController
UnityEditorInternal.StateMachine
UnityEditorInternal.State
UnityEditorInternal.AnimatorControllerLayer
UnityEditorInternal.AnimatorControllerParameter
Tambin tenga en cuenta que las funciones ms de acceso (accessor) han cambiado a
arreglos:
UnityEditorInternal.AnimatorControllerLayer layer =
animatorController.GetLayer(index);
se vuelve:
UnityEditor.Animations.AnimatorControllerLayer layer =
animatorController.layers[index];
Un ejemplo bsico del uso del API es dado al final de este post de
blog: http://blogs.unity3d.com/2014/06/26/shiny-new-animation-features-in-unity5
0/
- 522 -
Audio en Unity 5.0
Estas son notas para tener en cuenta cuando actualice proyectos de Unity 4 a Unity 5,
si su proyecto utiliza caractersticas de audio.
Mientras los ajustes por defecto para la propiedad vieja 3D fuera verdad, por defecto
en el nuevo sistema, el predeterminado para el parmetro para Spatial Blend es
configurado a 2D.
Formato
El nombramiento de la propiedad Format ha cambiado para que refleje el mtodo por
el cual los datos son almacenados en vez de un formato de un archivo particular que
se desva de plataforma a plataforma. Por lo que de ahora en adelante lo
Uncompressed (Descomprimido) se refiere a datos de muestra crudos, Compressed
(Comprimido) se refiere a un mtodo de compresin con prdidas que encaja mejor a
la plataforma y ADCPM se refiere a un ligero (en trminos de CPU) mtodo de
compresin que mejor encaja a la seales naturales de audio que contienen una
cantidad moderada de ruido (pasos, impactos, armas, etc.) y estn para reproducir en
grandes cantidades.
- 523 -
demanda ahora ayuda mantener el uso de memoria de AudioClips bajo.
Adicionalmente a esto, los AudioClips pueden cargar sus datos de audio en el fondo
sin bloquear el thread del juego principal y causar cadas de frames. El proceso de
carga puede obviamente ser controlado va el API de scripting.
Multi-edicin
Todos los AudiClips ahora soporta multi-edicin.
GetData/SetData (ObtenerDatos/ConfigurarDatos)
Estos llamados de API solo estn soportados por clips que estn almacenando los
datos de audio descomprimidos como PCM o realizar la descompresin cuando
cargue. En el pasado, ms clips soportaban esto, pero el patrn no era muy limpio ya
que ambos dependa en la plataforma destino y tenia diferente comportamiento en el
editor y reproductores standalone. Como una nueva cosa, los archivos trackers
pueden ser descomprimidos como data PCM a memoria tambin, por lo que
GetData/SetData tambin puede ser utilizado en estos.
Para asistir con des-pausar un AudioSource sin reproducir el clip asignados, (til para
cuando haya voces oneshot reproduciendo), nosotros hemos agregado una nueva
funcin AudioSource.Unpause ().
- 524 -
un script simplemente crea muchas instancia de un GameObject conteniendo. Con el
mezclador ahora es posible configurar un grupo con los mismos efectos y
simplemente enrutar el audio del AudioSource a travs de los efectos compartidos
resultando en un uso bajo de CPU.
- 525 -
AudioSettings.Reset() o por eventos externos como un plugging en monitores HDMI
con soporte de audio, tarjetas de sonido externas o auriculares USB, un callback
definido por el usuario AudioSettings.OnAudioConfigurationChanged(bool
deviceChanged) sera invocado. Su argumento deviceChanged ser falso si el cambio
fue causado por un llamado AudioSettings.Reset(), y verdad si fue causado por un
cambio de dispositivo externo (este tambin puede cambiar la velocidad de muestras
del dispositivo de audio en uso). Si el callback le permite a usted recrear cualquier
sonido voltil como lo son clips PCM generados, restaurar cualquier estado de audio,
o adaptar los ajustes de audio a travs de AudioSettings.Reset().
- 526 -
Datos Baked en Unity 5.0
Cuando actualice un proyecto de Unity 4 a Unity 5, usted puede necesitar re-bake los
datos almacenados ya que algunos de los formatos de datos pre-baked han
cambiado.
El formato de Baked Lighting de datos fue cambiado. Rebaking es requerido para los
datos lighting.
- 527 -
Plugins en Unity 5.0
Estas son notas para tener en cuenta cuando actualice proyecto de Unity 4 a Unity 5,
si su proyecto utiliza plugins, incluyendo plugins nativos de audio.
Para continuar de utilizar plugins nativos de 32-bit, utilice la versin del editor 32-bit
(proporcionado en un instalador separado).
Para tener ambas versiones 32-bit y 64-bit del mismo plugin en su proyecto,
simplemente colocarlos en dos diferentes carpetas y configure las plataformas
superadas apropiadamente en los ajustes de importer.
Restricciones:
- 528 -
instancia efectos.
- 529 -
Fsica en Unity 5.0
Unity 5.0 tiene una actualizacin a Physx3.3 SDK. Por favor darle un vistazo rpido a
este blogpost antes de realizar cualquier accin en sus proyectos 4.x. Esto le podra
dar una idea de qu esperar del nuevo cdigo base: High Performance Physics in
Unity 5. Por favor tenga cuidado que PhysX3 no es 100% compatible con PhysX2 y
requiere algunas acciones del usuario cuando actualice.
Las Colisiones Suaves de Esferas son quitadas de ambos los terrenos y meshes.
PhysX3 tiene una caracterstica que aborda el mismo tema y ya no es conmutable, ya
que est considerado como una solucin sin mayores inconvenientes.
- 530 -
fsica a trves de TerrainData ya no va a funcionar. Como un bonus, usted puede
ahora especificar el material de fsica para el terreno en una base por colisionador.
Si usted quiere tener colisiones con mesh cncavos, usted puede solamente tenerlos
en colliders estticos y cuerpos kinematic.
Ver la pgina de Joint And Ragdoll Stability para la versin ms reciente de esta gua.
- 531 -
Configure Enable Preprocessing a falso (sin marcar). Desactivando el pre-
procesamiento puede ayudar contra articulaciones explotando. Las articulaciones
pueden explotarse si son puestas en situaciones dnde no hay una manera de
satisfacer las restricciones de las articulaciones. Esto puede ocurrir si los rigi bodies
que estn juntos son separados por geometra esttica de colisin, como generar un
ragdoll parcialmente dentro de una pared.
Si los cuerpos conectados con articulaciones tienen titileo, intente aumentar Edit-
>Project Settings->Physics->Solver Iteration Count. Intente entre 10 o 20.
Nunca utilice el acceso directo al transform con cuerpos kinematic unidos a otros
cuerpos. Haciendo esto salta el paso dnde PhysX computa las velocidades internas
de los cuerpos correspondientes y por lo tanto hace que el solver (solucionador)
proporcione resultados no esperados. Nosotros hemos visto algunos proyectos 2D
utilizando el acceso directo al transform para voltear los personajes va alterando
transform.direction en la raz boon del rig. Esto se comporta mucho mejor si usted
utiliza MovePosition / MoveRotation / Move ms bien.
- 532 -
WheelCollider
El nuevo WheelCollider est funcionando gracias al PhysX3 Vehicles SDK que es
bsicamente una nueva librera de simulacin vehicular cuando es comparada al
cdigo que tenamos en PhysX2.
Cloth
Unity 5 utiliza el solver de Cloth completamente re-escrito proporcionado por el nuevo
PhysX SDK. Este cloth solver ha sido diseado con el clothing de personajes en mente,
y es un gran avance comparado a las versiones anteriores en trminos de
rendimiento y estabilidad. Unity 5 remplaza los componentes SkinnedCloth y
InteractiveCloth en Unity 4 con un solo componente Cloth, que funciona en conjunto
con un SkinnedMeshRenderer. La funcionalidad es similar al previo componente
SkinnedCloth, pero ahora es posible asignar arbitrariamente, meshes non-skinned al
SkinnedMeshRenderer, por lo que usted puede todava manejar la simulacin de
cloth en un mesh aleatorio.
usted ya no puede utilizar cloth para colisionar con geometra del mundo arbitraria.
usted ya no puede adjuntar cloth a colliders o tener cloth aplicar fuerzas a rigidbodies
en la escena.
- 533 -
Shaders en Unity 5.0
Estas son recomendaciones para tener en cuenta cuando actualice proyectos de Unity
5 a Unity 5, si su proyecto utiliza cdigo personalizado de shader.
En el caso de que haya shaders personalizados, dnde usted define sus propias
funciones de iluminacin , usted tendr que quitar el *2 usted mismo.
// A common pattern in shader code that has this problem will look like this
c.rgb = s.Albedo * _LightColor0.rgb * (diff * atten * 2);
// You need to fix the code so it looks more like this
c.rgb = s.Albedo * _LightColor0.rgb * (diff * atten);
La Non-uniform mesh scale (escala no-uniforme mesh) debe ser tenida en cuenta
en los shaders
En Unity 5.0, los meshes no-uniformes no son pre-escalados en el CPU ya. Esto
significa que los vectores de normales y tangentes pueden ser no-normalizados en el
- 534 -
vertex shader. Si usted est haciendo clculos manuales de iluminacin ah, usted
tendr que normalizarlos. Si usted est utilizando los Surface Shaders de Unity,
entonces todo el cdigo necesario ser generado para usted.
Todos los alpha blended surface shaders (surface shaders mezclados con alpha)
utiliza un componente alpha computado por la funcin de iluminacin como factor de
mezcla ahora (en vez de s.Alpha). Si usted est utilizando funciones de iluminacin
personalizadas, usted probablemente querr agregar algo como c.a = s.Alpha hacia
el final.
- 535 -
Fixed function TexGen (la funcin fija TexGen), texture matrices (matrices de
textura) y algunos SetTexture combiner modes (modos del combinador
SetTexture) fueron quitados
Unity 5.0 quito soporte para la funcionalidad de este fixed function shader :
Modos del cominador SetTexture rara vez utilizados: signed add (a+-b), multiply
signed add (ab+-c), multiply subtract (ab-c), producto punto (dot3, dot3rgba).
Cualquiera de los de arriba ahora har nada, y el inspector del shader mostrar
advertencias acerca de sus usos. Usted debera re-escribir los shaders afectados
utilizando shaders vertex+fragment programables ms bien. Todas las plataformas los
soporta hoy en da, y no hay ventajas en absoluto para utilizar fixed function shaders.
- 536 -
Las variables del shader unity_Scale han sido quitadas
La propiedad del shader unity_Scale ha sido quitada. En 4.x unity_Scale.w fue 1 /
uniform Scale del transform, Unity 4.x solamente renderizaba modelos no-escalados
o uniformemente escalados. Otras escalas fueron realizadas en CPU, lo cual fue muy
costoso & tuvo una sobrecarga inesperada de memoria.
En Unity 5.0 todo esto es hecho en el GPU al simplemente pasar matrices con escalas
no-uniformes a los shaders. Por lo tanto, unity_Scale ha sido quitado porque ya no
representa la escala completa. En la mayora de casos dnde unity_Scale era
utilizado, nosotros recomendamos ms bien transformarlo primero al espacio del
mundo. En el caso de transformar normales, usted siempre tendr que utilizar
normalize en la normal transformada ahora. En algunos casos esto lleva a cdigo un
poco ms caro en el vertex shader.
// Unity 4.x
float3 norm = mul ((float3x3)UNITY_MATRIX_IT_MV, v.normal * unity_Scale.w);
// Becomes this in Unity 5.0
float3 norm = normalize(mul ((float3x3)UNITY_MATRIX_IT_MV, v.normal));
// Unity 4.x
temp.xyzw = v.vertex.xzxz * unity_Scale.xzxz * _WaveScale4 + _WaveOffset;
- 537 -
- 538 -
Otras notas de actualizacin para Unity 5.0
Ms informacin acerca de caractersticas que han cambiado y pueden afectar su
proyecto cuando actualice de Unity 4 a Unity 5
Linux
El manejo de Gamepad ha sido quitado en Unity 5.
Windows Phone 8
Cuando construya sobre un proyecto de Visual Studio existente usted podra obtener
errores diciendo que UnityPlayer.UnityApp no contiene definiciones para
IsLocationEnabled, EnableLocationService y SetupGeolocator. Los servicios de
ubicacin ahora son automticamente incivilizados por Unity para que usted puede
con seguridad quitar cdigo de ubicacin del mtodo OnNavigatedTo y el mtodo
entero SetupGeolocator en el archivo MainPage.xaml.cs.
- 539 -
Windows Store Apps
La palabra clave Metro fue remplazada a WSA en la mayora de los APIs, por
ejemplo : BuildTarget.MetroPlayer se volvi BuildTarget.WSAPlayer,
PlayerSettings.Metro se volvi PlayerSettings.WSA.
- 540 -
conflictos son solucionados.
Los Packages (paquetes) ahora solamente estn construidos con el asset fuente y el
archivo texto .meta que contiene todos los ajustes del importer para el asset.
Los packages (paquetes) siempre van a requerir una importacin de asset ahora.
Los Paquetes con nombres de archivo que ya existe en el proyecto, pero con
diferentes GUIDs tendrn estos archivos importados con un nombre de archivo nico.
Esto es hecho para prevenir sobre-escribir archivos en el proyecto que no vienen de
diferentes paquetes o fueron creados por el usuario.
- 541 -
Gua de Actualizacin de Unity 3.5 a 4.0
El comportamiento viejo:
Si un GameObject est activo o no fue definido por su propiedad .active
Los prefabs no podan contener cualquier estado, y siempre estaban activos despus
de la instanciacin de un prefab.
El nuevo comportamiento:
Si un GameObject est activo o no est definido por su propia propiedad .activeSelf, y
todo aquellos de sus padres. El GameObject est activo si su propia
propiedad .activeSelf y la de todos sus padre es true. Si cualquiera de ellos es false, el
GameObject est inactivo.
- 542 -
Esto se puede consultar utilizando la propiedad .activeInHierarchy.
Ejemplo:
Usted tiene tres GameObjects, A, B y C, para que B y C son hijos de A.
- 543 -
El nuevo estado activo en el editor
Para visualizar estos cambios, en el editor de 4.0, cualquier GameObject que es
inactivo (ya sea porque su propia .activeSelf es configurada a false, o aquel d uno de
sus padres), se volver gris en la jerarqua, y va a tener un icono en gris en el
inspector. La propiedad .activeSelf del GameObject es reflejada por su casilla de
verificacin active, que puede ser activada/des-activada sin importar del estado del
padre (pero solamente va a activar el GameObject si todos los padres estn activos).
- 544 -
La primera parte significa que durante el post-procesamiento usted no puede obtener
las referencias correctas a objetos en el asset y la segunda parte significa si usted
utiliza las referencias a una versin previamente importada del asset durante el post-
procesamiento, por favor almacene la modificaciones ya que estas modificaciones
sern perdidas.
En Unity 3.5 esto va a crear un prefab con todas las referencias correctas a los meshes
y as ya que todos los meshes ya estaran hechos persistentes, pero debido a que este
no es el caso en Unity 4.0 el mismo post procesador va a crear un prefab dnde todas
las referencias a los meshes desaparecen, simplemente porque Unity 4.0 no sabe
todava cmo resolver las referencias a los objetos en el prefab del modelo original.
Para copiar correctamente un modelprefab a un prefab usted debera
utilizar OnPostProcessAllAssets para ir a travs de todos los assets importados,
encuentre el modelprefab y cree el nuevo prefab como se hace arriba.
- 545 -
public class Postprocess : AssetPostprocessor
{
public void OnPostprocessModel(GameObject go)
{
Referencer myRef =
(Referencer)AssetDatabase.LoadAssetAtPath("Assets/MyRef.asset",
typeof(Referencer));
myRef.myMesh.name = "AwesomeMesh";
}
}
Esto funciono bien en Unity 3.5 pero en Unity 4.0 el modelo que ya estuvo importado
ser completamente remplazado, por lo que cambiar el nombre de un mesh de una
importacin previa no tendr efecto. La solucin aqu es encontrar el mesh por otros
medios y cambiar su nombre. Lo que es ms importante para tener en cuenta es que
en Unity 4.0 usted debera SOLAMENTE modificar el input dado del post procesador y
no debe depende en la versin previamente importada del mismo asset.
Optimizacin de Mesh
El Importador de Modelo en Unity 4.0 se ha vuelto mejor en las optimizaciones mesh.
La casilla de verificacin Mesh Optimization en el importador del modelo en Unity
4.0 est activado por defecto. Usted puede que tenga algo de cdigo de post-
procesamiento o effectos en su proyecto que dependen en el orden del vrtice de sus
meshes, y estos podran estar rotos por este cambio. En ese caso, apague Mesh
Optimization en el importador de Mesh. Especialmente, si usted est utilizando el
componente SkinnedCloth, la optimizacin mesh va a causar que el mappeo del peso
de vrtice cambie. Por lo que is usted est utilizando SkinnedCloth en un proyecto
- 546 -
importado de 3.5, usted necesita apagar Mesh Optimization para los meshes
afectados, o re-configurar sus pesos del vrtice para que coincidan el nuevo orden de
vrtices.
Input Mvil
Con Unity 4.0, el input del sensor mvil tiene un mejor alineamiento entre
plataformas, que significa que usted puede escribir menos cdigo cuando maneje un
input tpico en plataformas mviles. Ahora el input de aceleracin y de gyro va a
seguir la orientacin de la pantalla de la misma manera que en plataformas iOS y
Android. Para tomar ventaja de este cambio usted debera re-factorizar el cdigo de
input y quitar cdigo especifico de la plataforma y orientacin de pantalla cuando se
maneje el input de aceleracin y gyro. Usted todava puede obtener una vieja versin
en IOS al configurar Input.compensateSensors a falso.
- 547 -
Actualizando a Unity 3.5
Si usted tiene un archivo FBX con un nodo raz marcado como skeleton (esqueleto),
ste ser importado con un nodo raz adicional en 3.4, comparado a 3.4.
Unity 3.5 hace esto ya que cuando se importe los personajes animados, la
configuracin ms comn es tener un nodo raz con todos los huesos debajo y un
esqueleto alado de l en la jerarqua. Cuando se cree animaciones adicionales, es
comn quitar el mesh skinned del archivo fbx. En ese caso, el nuevo mtodo de
importacin asegura que el nodo raz adicional siempre existe y por lo tanto las
animaciones y el mesh skinned de verdad coincide.
Si la conexin entre la instancia y el prefab del archivo FBX ha sido rota en 3.4 la
animacin no coincidir en 3.5, y como resultado su animacin podra no
reproducirse.
En ese caso se recomienda que usted re-cree los prefabs o jerarquas de Game Object
al arrastrar su archivo FBX a su escena y recrendola.
- 548 -