Unity 4.0

Unity 4.0 is our biggest release to date. It brings you all new powerful features never before seen in Unity, such as:

  • Mecanim, the new animation system to animate any character or object
  • Real-time shadows for all platforms
  • DirectX 11 rendering
  • Shuriken particle system updated with world collision functionality
  • Adobe Flash and Linux as two new platforms
  • Cross-platform dynamic fonts

And of course, many more new features and updates. Keep reading to learn more.

Update now

New to Unity? Get started

Release notes

New Animation System

  • Once imported as muscle clips, animations can be used with all humanoid characters with no additional conversions needed.
    • Use the same animations on different proportion characters with no overhead or need for storing multiple versions of the clip.
    • Map the bones of your model to human muscles with a single click, or fine tune the setup for full control.
  • Slice up your authored or motion-captured animations directly inside Unity with the industry's best tool for the job.
    • Preview the animation as your drag the ranges of a clip.
    • Indicators for pose looping quality and motion looping quality lets you easily pick the range with optimal looping.
    • Differences between start and end pose is smoothed out by the importer to ensure perfect looping.
  • Support for arbitrary animations:
    • Support for Generic Skeletons.
    • Support for human avatars with additionals bones (“hybrids”).
    • Preview of generic or hybrid skeleton in Animation Clip, Blend Tree and Transition inspector.
    • Multiple IK layer solving (changes to OnAvatarIK() API).
    • Supports Culling (Animator.cullingMode = AnimatorCullingMode).

DirectX 11 Rendering

  • On Windows Vista and later, and with DX10 or better level GPU, you can use DirectX 11 now.
  • New features:
    • Geometry shaders (require DX10 GPU) and hull/domain shaders (require DX11 GPU). #pragma geometry, hull, domain in shader files.
    • Compute shaders (*.compute files, ComputeShader in scripts).
    • ComputeBuffer scripting API ("structured buffers" in DX11 lingo). Can use them in compute shaders and regular shader model 5.0 shaders (Material.SetBuffer, Shader.SetGlobalBuffer).
    • Render textures with "random write" access ("UAVs" in DX11 lingo). Graphics.SetRandomWriteTarget, RenderTexture.enableRandomWrite.
    • Graphics.DrawProcedural & DrawProceduralIndirect.
    • DX11-specific RenderTexture formats: RenderTextureFormat.R8, ARGBInt, RGInt, RInt.
    • 3D RenderTextures (RenderTexture.isVolume, volumeDepth). Fill them as "random write" textures from a compute or pixel shader.
    • In shaders, can optionally use CBUFFER_START(name) .. CBUFFER_END macros to markup separate constant buffers.
  • Usage and documentation:
    • Player Settings has "Use DX11" option; when it it set the editor and player will try using DX11. Editor will have “” in the title bar when it is in DX11 mode.
    • See “Using DirectX 11” page in the documentation.
    • New image effects take advantage of DX11: Depth of Field, Camera Motion Blur, Noise.
    • “Tessellation Shaders” standard package has several shaders that use DX11 tessellation.

Linux Publishing

  • Export a standalone player for 32-bit (x86) or 64-bit (x86_64) Linux.
    • Select "Linux" from the Target Platform list in the Build Settings.
    • After building a Linux player on Windows, you will first need to make the binary executable on Linux before being able to run it. Do this by running 'chmod +x' on the executable or right clicking and selecting "Allow to run as application".
  • Supported Platforms
    • Standalone players will run on most modern Linux systems with vendor-supplied graphics drivers.
    • Official support will be provided for 32 or 64-bit Ubuntu Linux, version 10.10 (Maverick Meerkat) or newer, with graphics cards using vendor-supplied drivers.

Graphics Features

  • Terrain: Normal map & custom shader support for Terrain. Added built-in shader Nature/Terrain/Bumped Specular; added "normal map" texture slot to terrain splat maps; added Material field under terrain settings.
  • 3D (volume) textures support. Currently no way to import them, but you can create them from script (Texture3D) and use them in shaders (sampler3D and tex3D). Also SystemInfo.supports3DTextures.
  • Shadows on mobile devices!
    • Only directional lights, no shadow cascades, no soft shadows.
    • Requires GL_OES_depth_texture extension. Most notably, Tegra 2/3-based devices do not support it.
    • On Android, requires Honeycomb of later OS.
  • Fonts:
    • Dynamic font rendering on all platforms (including mobiles) with identical results (via FreeType).
    • Simple html-style text markup support to have multiple font sizes, styles and colors in a string in UnityGUI, GUIText & TextMesh.
  • Image Effects updates:
    • Depth of Field (Scatter), an improved version of existing Depth of Field 3.4 effect. Has a DX11 mode that splats bokeh sprites on the bright spots.
    • Camera Motion Blur, does what it says: camera motion based motion blur. Has DX11-optimized mode for better quality.
    • Noise and Grain does a fancier film noise simulation (also has a DX11-optimized mode).
    • Bloom, an improved version of Bloom and Lens Flares. New "High Quality" mode simulates aberration, glint, better treatment of high frequency parts.
    • Color Correction LUT effect that uses a 3D texture to do arbitrary color correction.
    • Edge Detection (Geometry) effect got ability to interact nicely with other depth-based effects (DOF, Motion Blur etc.) with new "Sobel Depth Thin" mode.
    • Color Correction Curves now supports (de)saturation and has a fix for color key correction.
  • Cubemaps:
    • New Generate Cubemap texture import option that creates a cubemap from vertical/horizontal cross or row/column of images.
    • Seamless cubemap option that makes sure edges of faces match up. Also runtime scripting API, Cubemap.SmoothEdges.
    • Cubemap assets reference their original textures in the editor instead of copying their pixels at assign time.
  • Lightmapping: "Bake selected" no longer destroys lightmaps on objects that aren't selected. Instead it updates lightmaps on selected objects, as expected.
  • Lightmapping: Normalmaps are taken into account when lightmapping, which allows to add detail to lightmaps and makes the transition between near and far distance in Dual Lightmaps mode less visible.
  • Lightmapping: FIxed issue with generated lightmap uvs being different across mac/win on some occasions.
  • Render Textures: added RenderTextureFormat.ARGBFloat, RGFloat, RGHalf, RFloat, RHalf formats.
  • Meshes can have a non-triangle topology now. You can create meshes that are lines, points or quads from scripts. See MeshTopology enum, Mesh.GetIndices, SetIndices, GetTopology.
  • Added SkinnedMeshRenderer.BakeMesh to "bake" skinned mesh result into a regular mesh. You can use this to implement semi-instanced crowd rendering schemes.
  • Graphics: Added resizable window support for standalone builds; see Resizable Window option in player settings.
  • LOD: Add an API that allows for the construction / configuration of LODs at runtime. You can now add a LODGroup and configure it without using the UI.
  • Shuriken particle system:
    • World collision support - world collisions can be high/medium/low quality. High quality raycasts all particles and is expensive. Medium/low quality traces some of the particles, while the rest reuses older collisions. While this is approximate, in many cases where there are a lot of particles it will look fine and perform very well. The ray casting budget is set in quality settings.
    • Automatic simulation culling support. Particle systems will only update when visible. When it is not possible to support this automatically, Shuriken shows why directly inside the UI.
    • External forces support - use Wind Zones with particles.
    • Bent normals support for sprites.
    • Support for sorting and rendering with immediate children (solving sorting issues for combined systems).
  • Shaders:
    • Added built-in matrix variables, UNITY_MATRIX_V (view matrix), UNITY_MATRIX_VP (view*projection).
    • Added float4 unity_DeltaTime, contains (dt, 1/dt, smoothdt, 1/smoothdt).
    • Shader helper macros added:
      • UNITY_DECLARE_SHADOWMAP(tex), UNITY_SAMPLE_SHADOW(tex,uv), UNITY_SAMPLE_SHADOW_PROJ(tex,uv).
      • UNITY_NEAR_CLIP_VALUE, defined to 0.0 on D3D-like, -1.0 on GL-like platforms.
      • UNITY_COMPILER_HLSL (d3d11, 360), UNITY_COMPILER_HLSL2GLSL (gles), UNITY_COMPILER_CG if you need to determine which shader compiler is used on a platform.
      • UNITY_INITIALIZE_OUTPUT(type,name) to help with DX11 shader compiler requiring full initialization of "out" parameters.
    • OpenGL ES 2.0: Supports depth textures on Android.
    • Scripting API: added Texture.SetGlobalAnisotropicFilteringLimits.

New Project Browser (replaces the Project Window)

  • View assets by preview icons.
  • Separate tree for folders for better overview of folder structure.
  • Search for assets using droplists for type and asset labels.
  • Save searches to favorites list for easy access to most used searches.
  • Drag folders to favorites list for easy access to most used folders.
  • Enable searching the Asset Store and previewing assets.
  • You can switch Project Browser to old-style one column layout in the context menu of the window (upper right corner).

Rewrite of the GUI system

  • The existing GUI system (OnGUI) had its core rewritten, optimized and cleaned up. It uses less memory and induces less garbage collection cycles. In some cases we’ve seen it being 10x faster without GUILayout, and several times faster than previous version when GUILayout is used.
  • Note: this is not the “New GUI” that is coming to a later Unity 4.x release. It’s existing GUI, made much faster.

Other Features

  • Added a new development console to show error messages on screen in development player builds.
  • Android: Added Eclipse project generation.
  • Android: Support for APK Expansion Files (OBBs) - effectively enabling applications larger than 50Mb in the Google Play Store.
  • iOS: Screen.SetResolution now works on iOS too.
  • iOS: Target Resolution Player Setting was redesigned to better suite development workflow on multiple iOS devices. Two new “Auto (Best performance)” and “Auto (Best Quality)” settings allow Unity Runtime to choose most optimal rendering resolution according to device GPU capabilities.
  • Debugger: Web players can now be attached to and debugged just like standalones.
  • Editor: Add components and scripts to Game Objects easier and faster through the new Add Component drop-down directly inside the Inspector.
  • Editor: Create your own Inspector GUI for custom classes or attributes and see it used across all scripts that use those classes or attributes.
  • Fonts: Custom fonts can now use arbitrary character rectangles instead of a fixed grid.
  • Fonts: Font character placement properties are now accessible from scripting.
  • Fonts: Imported fonts can now be converted to editable custom fonts from the gear menu.
  • Gradient (known from the Shuriken editor) is now exposed to scripts: Gradient, GradientColorKey, GradientAlphaKey.
  • Navigation: NavMeshAgent supports prioritized levels of avoidance.
  • Navigation: NavMeshObstacle component added.
  • New Cursor API was introduced:
    • Cursor API supports both software and hardware cursors.
    • Support for hardware cursors on the following platforms: Windows, Mac OS X, Linux, Flash.
    • Configure the default cursor in your projects’ Player Settings.
  • License: New activation system was developed: Ability to un-license a machine yourself!
    • Continuous license and content updates.
    • Unity Account login for certain license types.
    • Surveys for certain license types.
  • New Web Player Update mechanism, which allows multiple runtime versions to be installed at the same time:
    • Allows running beta content with the beta runtime without having to install a beta plugin (beta runtime will be downloaded automatically).
    • Optionally allows testing release content using the beta runtime (by default it will be played back using the release runtime), using the context menu.
    • Allows switching between development and non-development players without plugin reinstallations, using the context menu.
    • Please note: in order for this to work, web plugin bundled with this build must be installed on user machine.
  • Flash: Assembly validation for Flash supported/unsupported API's. If .NET feature or API is not available the validator will notify the user in the log, before compiling.
  • Plugins: Added Texture.GetNativeTexturePtr() that you can use in native code plugins. Can now directly access textures on non-OpenGL platforms as well! Example plugin in Low-level Native Plugin Interface documentation page shows how to.

Upgrade guide

  • We have changed how the active state of GameObjects is handled. GameObjects active state will now affect child GameObjects, so setting a GameObject to inactive will now turn the entire sub-hierarchy inactive. This may change the behavior of your projects. GameObject.active and GameObject.SetActiveRecursively() have been deprecated. Instead, you should now use the GameObject.activeSelf and GameObject.activeInHierarchy getters and the GameObject.SetActive() method.
  • Android: Removed X<->Y axis mismatch for Android input. Now out of the box it should match iOS input. Requires code refactoring!
  • Editor: We have reset the preferences from 3.x to 4.x. This affects your saved window layouts, the project wizard list, saved filters etc.
  • Editor: While an asset is being imported it will not be persistent. E.g. if you postprocess a texture and query its asset path, it will return an empty string. Assets outside of the asset postprocessor can, of course, be accessed at any point.
  • iOS: Now iOS sensors follow screen orientation. No more complicated code for axis remapping! This can be switched off via Input.compensateSensors. Requires code refactoring!
  • iOS: Target Resolution Player Setting was redesigned to better suite development workflow on multiple iOS devices. Two new “Auto (Best performance)” and “Auto (Best Quality)” settings allow Unity Runtime to choose most optimal rendering resolution according to device GPU capabilities. Some custom editor scripts might need to be updated to comply with these changes. Rendering resolution might be also changed from game scripts using Screen.SetResolution API.
  • iOS: Device SDK Player Settings was simplified and now contains only two entries “Device SDK” and “Simulator SDK”. Corresponding editor API entries were also changed and some custom editor scripts might need to be changed.
  • iOS: Unity 4.0 discontinues support for ARMv6 devices (iPhone 1st gen, iPhone 3G, iPod Touch 1st/2nd gen). This affects existing project development in several ways:
    • Target Platform Player Setting was removed from Unity Editor. Now all Unity iOS applications are ARMv7-only. Corresponding PlayerSetting.iOS Editor API entries also were removed. You might need to fix some of your editor scripts for that.
    • Graphics API level (Open GL ES 1.1 or 2.x) selection was moved to separate Graphics Level Player Setting. This setting is synced with the Android platform.
    • Applications that were already released to the App Store as supporting ARMv6+ARMv7 or ARMv6-only now can be updated only if Target iOS Version Player Setting is set to “4.3” or higher.
  • Mobile: Unity 4.0 brings hard shadow support to mobiles. Shadows for mobiles are enabled at the default Quality Setting. And if the project is shared with desktop platforms then shadows might just appear on mobiles too when project gets imported into Unity 4.0. Some manual tweaking of lighting/shadow setup might be required for optimal performance on mobiles.
  • Runtime: GameObjects marked DontDestroyOnLoad are no longer temporarily deactivate when loading a level. They will also not receive an OnDisable / OnEnable call when loading a level.
  • Graphics: Unity 4.0 adds a "Read/Write Enabled" option in Mesh import settings. When this option is turned off, it saves memory since Unity can unload a copy of mesh data in the game. However, if you are scaling or instantiating meshes at runtime with a non-uniform scale, you may have to enable "Read/Write Enabled" in their import settings. The reason is that non-uniform scaling requires the mesh data to be kept in memory. Normally we detect this at build time, but when meshes are scaled or instantiated at runtime you need to set this manually. Otherwise they might not be rendered in game builds correctly.
  • Model importing: The Model Importer in Unity 4.0 has become better at mesh optimization. The "Mesh Optimization" checkbox in the Model Importer in Unity 4.0 is now enabled by default, and will reorder the vertices in your Mesh for optimal performance. You may have some post-processing code or effects in your project which depend on the vertex order of your meshes, and these might be broken by this change. In that case, turn off "Mesh Optimization" in the Mesh importer. Especially, if you are using the SkinnedCloth component, mesh optimization will cause your vertex weight mapping to change. So if you are using SkinnedCloth in a project imported from 3.5, you need to turn off "Mesh Optimization" for the affected meshes, or reconfigure your vertex weights to match the new vertex order.

Profiler Improvements

  • Android: Profiler blocks marked up in rendering commands via EXT_debug_marker (for tools like PerfHud).
  • GPU profiler detailed objects view sorts in decreasing GPU time.
  • Optimized memory usage and UI performance for complex profiles.
  • Scripting API: Profiler.GetMonoHeapSize, GetMonoUsedSize.
  • Made profiler player connection run threaded to improve throughput and reduce lack of profile data.

Asset Pipeline Improvements

  • Added userData string property to AssetImporter, use this to pass per asset data to asset post processor.
  • Manual asset reimport (via context menu) always reimports, even if cache server already has the result.
  • Optimized file system performance of asset imports. Library/cache and Library/previews folders are gone; all imported results are in Library/metadata.

Other Improvements

  • Android: Exposed control over SYSTEM_UI_FLAG_LOW_PROFILE ("lights-out" mode) through Screen.fullScreen.
  • Android: Added support for Input.compenstateSensors.
  • Android: Added support ldpi/xhdpi icon images.
  • Android: Added support for non-US characters for key store keys and passwords.
  • Android uses compressed vertex streams (where available).
  • Animation : Can now preview non-Mecanim animation in previewer.
  • Cache Server: Now includes a 32-bit linux build.
  • Cache Server: Modifying the import settings and clicking on Apply will now also use the cache server if it is available.
  • Cache Server: Made sure the Editor does not connect to cache server when it's not needed.
  • Documentation: Improvements to shader authoring documentation (Built-in shader include files, Predefined shader preprocessor macros, DirectX 11).
  • Documentation: Extended Low-level Native Plugin Interface example to demonstrate DirectX 11 rendering from a plugin.
  • Editor: In the Build Settings Window it is now possible to change enabled state for all the selected scenes in one click (Use Ctrl + A for selecting all scenes).
  • Editor: Component context menu (gear icon) got Move Up/Down, Copy & Paste entries.
  • Editor: Light Probes scene view rendering mode gone; probe visualization in lightmapping window overlay.
  • Editor: Dragging a .unityPackage file into project view imports it now.
  • Editor: The Scene Gizmo axis cones no longer sets the camera to be orthographic. The center cube now toggles orthographic. The label below the gizmo now toggles between perspective and ortho as well. Shift-clicking or middle-mouse clicking the center cube will set the "nice" perspective view and shift-clicking or middle-mouse clicking the cones will enforce ortho.
  • Editor: Simplified mobile graphics emulation; only have OpenGL ES 1.1 & 2.0 now.
  • Editor: Lightmaps now get "best" compression quality for mobiles when available.
  • Editor: Added menu item in Component menu for Add Component drop-down.
  • Editor: Don't show animation import settings if no animation data is available.
  • Editor: Cleaned up indentation logic so LooksLikeInspector & LooksLikeControls are more similar.
  • Editor: Ignore symlinks in Windows so it behaves like OS X build.
  • Editor: Inspector Window recovers gracefully when a CustomEditor throws an exception or has missing layout group endings.
  • Editor: GameObject and Prefab inspector icons indicate active object status.
  • Editor: Counters for collapsed console entries.
  • Editor: Scene View now shows the current View Tool (Move, Orbit, Zoom, FPS) as the cursor to reinforce what's happening.
  • Editor: New icons throughout Unity.
  • Execution order of components and scripts is now always the same between Player and Editor.
  • Editor: Light picker icons (gizmo icons) now reflect the color (hue and saturation) and type (point/spot/directional/directional, main/area) of light.
  • Flash: Scripting overall; Better generics support.
  • Flash: Added FlashPlayer 11.3 and 11.4 support. Mouse middleclick and right click is supported on this subtarget.
  • Flash: Added support for Enum.GetValues() & Enum.GetNames().
  • Flash: Added support subset of field reflection.
  • Flash: Full support for animation events, including runtime scripting API.
  • Flash: Reduce black screen initialization time.
  • Flash: Reduced memory footprint.
  • Flash: Performance increased.
  • Flash: Improved support for static fields of generic type.
  • Flash: Implemented support for batching. No runtime scripting support for batching yet.
  • Flash: Injection of swf tag for 3rd party profilers.
  • Flash: Reduced number of Stage3D calls per frame.
  • Font rendering: Add Font.RequestCharactersInTexture, Font.GetCharacterInfo and Font.textureRebuildCallback to allow full control over dynamic fonts from scripting.
  • Font rendering: Made font texture rebuild callback get called less often.
  • Graphics: Exposed GUITexture.border to scripts.
  • Graphics: Added "Read/Write Enabled" checkbox to Model Import Settings. Disabling this will reduce memory footprint of meshes.
  • Graphics: Dynamic Batching with tangent vectors works on Windows & Mac now (was disabled before due to various driver issues).
  • Graphics: Surface shaders can use arbitrary vertex input data type (instead of appdata_full); now the type of a vertex modifier parameter is used.
  • Graphics: Shader properties can have [HideInInspector] in front of them, which makes them hidden in inspector (useful for properties that are set from code).
  • Graphics: Optimized light culling; particularly noticeable when you have lots of baked lights.
  • Image Effects: Screen Overlay effect fixed "overlay" blend mode, and gained an intensity slider.
  • Image Effects: Some optimizations for Tonemapping effect.
  • Image Effects: Vignetting effect got a nicer inspector.
  • Image Effects: Moved chromatic aberration from Bloom to Vignetting image effect.
  • iOS: iOS view handling extracted to separate files in trampoline.
  • iOS: Added request for re-orientation on iOS5 and newer when allowed auto-rotation orientations were changed.
  • iOS Remote: Improved latency of touch events sent to editor.
  • iOS: Improved fog performance.
  • Mac OS X: Make installers and Editor application signed so they can be run with the default security settings in OS X 10.8 Mountain Lion.
  • Mac OS X Standalone: Added support for 256x256, 512x512 and 1024x1024 icons.
  • Mac OS X Standalone and Editor: WWW class will now correctly use the proxy selected in System Preferences.
  • Mac OS X Web Player: Respect system scroll direction in fullscreen mode.
  • Mobile: PowerVR texture compression tool updated to 2.10.87.4981.
  • Mobile: Introduced RGBA16 texture format.
  • Mobile: Added TouchScreenKeyboard.wasCanceled. On iOS, a “Cancel” button was added, on Android, the “back” button will be used for that
  • Mobile: TouchScreenKeyboard.text now can be used to set text to show in edit field.
  • Mobile: ActivityIndicator can now be started/stopped from script.
  • Mobile: SystemInfo.supportsVibration now queries device for actual support.
  • Mobile: OpenGL ES version selector is now shared between Android/iOS.
  • Mobile: Some optimizations regarding dynamic geometry.
  • Mobile: Increased max texture size for OpenGL ES 2.0 to 4096 and added handling of GPU imposed restrictions on texture size at runtime.
  • Mobile: Enabled OnMouse event processing for scripts that use it.
  • MonoDevelop: Updated Gtk+ for improved behavior and responsiveness (OSX).
  • NavMesh: Improved crowd avoidance. Now prioritize neighbours by the predicted time of impact instead of distance.
  • NavMesh: OffMeshLink has GUI for selection of NavMeshLayer.
  • Profiler can now profile the editor.
  • Runtime: Fixed rare issue where loading a level asynchronously could be interrupted by other loading operations.
  • Runtime: Instantiate now respects script execution order.
  • Runtime: GameObjects marked DontDestroyOnLoad are no longer temporarily deactivate when loading a level. This way they also will not receive a OnDisable / OnEnable call when loading a level.
  • Scene View: Show small icon next to Scene Gizmo label showing whether Scene View is in perspetive or isometric mode.
  • Scene View: When in axis-aligned view such as "Right", always show that in label and not "Iso" or "Persp".
  • Scene View - Mac: Make Scene View swipe gestures math the SceneView Gizmos
  • Scripting: Users can now add their own per-platform custom defines in the player settings.
  • Scripting: MonoBehaviours can now be inside namespaces.
  • Scripting: SkinnedMeshRenderer.rootBone is now exposed to scripting.
  • Scripting: Allow creation of editor scriptable objects from runtime scripts when inside the editor.
  • Shaders: Vertex shader inputs don't have to come from a struct with predefined names anymore. Just use proper semantics and you're good now.
  • Shaders: Added unity_CameraWorldClipPlanes built-in shader variable. Contains camera's world space clipping planes.
  • Shuriken: Cone emitters: Support for emit from shell, emit from volume and controlling random direction.
  • Shuriken: Support for up to 4 meshes in particle system renderer. Selection of mesh happens randomly.
  • Shuriken: Support for up to 2 sub emitters per type (previously 1).
  • Shuriken: Dynamic batching support for particle sprites.
  • Shuriken: Particle updates are now multithreaded together with LateUpdate script calls. This should in most cases result in better performance.
  • Shuriken: It is now possible to specify a particle radius in the collision module which can be used for avoiding clipping artifacts.
  • Shuriken: Simulate() calls are much faster for most systems.
  • Shuriken: Exposed .randomSeed to script.
  • Shuriken: Exposed .particleSystem to GameObject scripting.
  • Shuriken: Improved API for Emit(count) and added 2 more Emit() functions.
  • Shuriken: Optimizations across the board for performance and less memory usage.
  • Social API: Added a GameCenterPlatform function for showing a specific Leaderboard UI based on ID + TimeScope.
  • Substance: Fast-forward reimport of a substance when leaving the substance Inspector.
  • Substance: Faster tweaking / import in the Editor (multi-threaded now activated by default only in the Editor).
  • Web Player: Make HTTP error handling more robust in Internet Explorer.

Optimizations

  • Editor: Optimize Console window memory usage with high log entry counts.
  • Editor: Optimized Hierarchy View for very large number of root objects.
  • Editor: Optimized DXT compression of textures; better uses all CPU cores now.
  • Editor: Detecting if assets need to be reimported when switching platforms is much much faster.
  • Editor: Made entering playmode faster by reducing the number of domain reloads.
  • Flash: Made performance improvements when calling functions taking or returning an array of structs.
  • Flash: Made dramatic memory usage reduction.
  • Flash: Optimizations were done by recycling actionscript objects for value types such as Vector3, and by being smarter about when to not have to copy them.
  • Mac OS X: Dynamic geometry optimization via ARB_map_buffer_range & APPLE_flush_buffer_range.
  • Meshes: Mesh.MarkDynamic; use this for meshes which you modify from scripts a lot.
  • Mobile: added RenderTexture.DiscardContents - discards previous RT contents via EXT_discard_framebuffer or explicit clear.
  • Particles: Optimized legacy particle systems via prefetching.
  • Physics: Physics simulation is now using SSE2 on windows for better performance and to make simulation consistent with Mac OS X.
  • Rendering: Point & spot lights in forward rendering use scissor rectangle optimization.
  • Rendering: Unity skips rendering lights that have intensity smaller than 0.01.
  • Rendering: Optimized Color32 multiplications (particles, lightmapping, …).
  • Skinned Meshes: Optimized performance & memory usage by keeping static data (UVs & colors) in a separate vertex stream.
  • Static batching: Compress vertex data to half-precision floats on platforms that support them; and save memory by unloading batched geometry after it's sent to the graphics card.
  • Static batching: Optimized static batching code.
  • Threading: Optimized multithreaded job scheduler (used for skinning, Mecanim, Shuriken, shader compilation, texture compression). It “multithreads more efficiently” now.

Fixes

  • Android: Added exception checking / propagation for script-based JNI Calls (AndroidJava* / AndroidJNI*).
  • Android: Loading a lot of assets through Resources.Load() could create a memory-leak-like behavior - this has been fixed.
  • Android: Fixed a rare case where libmono.so / libunity.so would not load due to "unable to link library".
  • Android: Cases with extremely slow loading times, when re-reading scene assets, has been fixed.
  • Android: The automatic binary splitting (for APK Expansion (.obb) support) was incorrectly omitting some files when using the Windows editor.
  • Android: Korean fonts were not rendered correctly on some Android devices.
  • Android: PlayerPrefs values queried with the wrong type would cause Java exceptions and application termination.
  • Android: Added additional registry entries to search when looking for the JDK installation on Windows.
  • Android: Requested RGBX32 instead of transparent when 32bit display buffer is selected.
  • Android: Workaround for mali and ics resulting in crash with shader that sample texture in vertex program.
  • Android: Crash when pausing/resuming on OS 4.1 / Jellybean has been fixed.
  • Android: If system environment variable JAVA_TOOLS_OPTIONS was set it could prevent the .apk to be signed.
  • Android: Webcam Texture now works on LG Optimus 3D (with OS 2.2 / Froyo).
  • Android: Portrait upside down orientation caused errors when building the .apk.
  • Android: EGL context recreation is fully supported (when pausing/resuming, or changing DisplayBuffer bit-depth, or anti-aliasing).
  • Android: Enforce that System.Net.Sockets use is only allowed with an Android Pro license.
  • Android: Added workaround for ARM Mali-400 GL ES 1.1 drivers sometimes referencing disabled vertex attrs (caused a crash).
  • Android: Script debugging yields/coroutines could sometimes cause a crash - this has been fixed.
  • Android: Application.streamingAssetsPath was incorrectly adding a slash before the jar delimiter (/!).
  • Android: Fixed failing to build signed APKs on Windows.
  • Android: Webcam resolution and frame rate selection is now more accurate.
  • Android: Webcam now works on Ice Cream Sandwich and JellyBean devices.
  • Android: Webcam now works on Motorola and OMAP devices.
  • Android: Microphone resources are now properly released when pausing the application.
  • Android: Audio should now play without any clicking noise on Kindle and Nook, although latency is still pretty bad.
  • Android: It should now be possible to play and record audio at the same time.
  • Android: Gyro.attitude did not compensate for screen orientation, nor device natural orientation (phone/tablet) - this has been fixed.
  • Android: Restarting an application right after calling Application.Quit() could cause a race condition between quitting the old and starting the new process.
  • Android: Input.multiTouchEnabled was returning false before the screen received an initial touch.
  • Android: Changed some tags in the AndroidManifest to have required="false".
  • Android: Fixed a problem where non-development ('release') builds would fail to load on devices with kernel 3.4 and later.
  • Android: Autorotation with only either portrait or landscape modes is now enforced by the manifest as well.
  • Android: Back button will quit the application while the first level has not yet been loaded.
  • Android: Renamed GameView resolutions to HVGA, WVGA, ..., and added WXGA (1280x800).
  • Android: Runtime class Ping now works.
  • Android: Added PowerVR performance stats to the internal profiler.
  • Android: Fixed a problem where multiple screen touches would lead to incorrect touch phases (especially during low framerate situations).
  • Android: The detection zone for screen touches resulting in increased tap count has been made resolution independent.
  • Android: Kindle Fire incorrectly reported having a camera.
  • Android: Fixed startup rotation when device is held in landscapeRight.
  • Android: Fixed an issue where the device might go to sleep before any script code was invoked.
  • Android: Added a wake lock to fullscreen video to make sure the device doesn't go to sleep during video playback.
  • Android: Fixed auto-rotation problem in landscape/reversed landscape on Kindle Fire HD.
  • Android/iOS: Incorrect mouse hover events stemming from screen touches has been fixed.
  • Android: Fixed an optimization error which could cause javac to crash/fail when loading UnityPlayer class.
  • Android: SystemInfo.deviceUniqueIdentifier is anonymized by calculating the MD5 sum of IMEI/MEID, ANDROID_ID or WiFi MAC - whichever is available.
  • Android: SystemInfo.deviceUniqueIdentifier didn't automatically add the right permissions in the manifest.
  • Android: Switched to Bouncycastle for keystore certificate creation.
  • Android: On pre-Gingerbread devices 16bit DisplayBuffer is no longer enforced (and fallback from 32bits to 16bits buffer is handled gracefully). Worked around compositor issue with DisplayBuffer alpha on pre-Honeycomb devices.
  • Android: Made sure Ping cannot hang (times out after 5s).
  • Android: Added JB (4.1) to the list of SDK APIs.
  • Android: Fixed crash on Kindle when quitting without ever pausing.
  • Android: Changing system time/date while application was running would cause an ANR.
  • Android: Fixed camera initialization on platforms without FPS range support.
 
  • Animation: Exposed ModelImporter.generateAnimations as a bool, to allow control of over imported animation from an asset file.
  • Animation: Fixed a bug where animation wouldn't play if it's out of frustum and cullingType is switched to AlwaysAnimate in runtime.
  • Audio: Fixed problems playing back audio files whose paths contain special characters.
  • Audio: Fixed problems displaying audio files whose paths contain special characters in the inspector.
  • Audio: Fixed reverb filter diffuse slider inconsistency.
  • Audio: Fixed looping issue on tracked music files.
  • Audio: Fixed length determination for tracked music files.
  • Audio: Fixed m_IgnoreListenerVolume property (was not working in the expected way).
  • Audio: Fixed the length property of an AudioClip to be more accurate in the case of MP3s.
  • Audio/video: Gracefully handle importing corrupt OGG container assets.
  • Audio: Fixed crashes when using audio clips with read callbacks.
  • Audio: Various fixes related to handling of special characters.
  • Audio: Fixed incorrect display of waveform preview.
  • Audio: Fixed rare deadlocks.
  • Audio: Hardened AudioClip SetData and GetData to when the array argument is longer than the clip itself.
  • Asset Import: Default assets generated for failed imports are now persisted correctly.
  • AssetStore: Fixed out of memory crash when downloading large packages.
  • Bugreporter: Fixed the issue that log files would not be shown in bug reporter window, even though they existed.
  • Cache Server: Fixed connection problem when downloading assets.
  • Cache Server: Fixed other connection issues.
  • Debugger: Fixed hangs/deadlocks when debugging multithreaded script code.
  • Debugger: Fixed crash on debug-time evaluation of generic methods.
  • Documentation: Fixed script reference History page to reflect reality again.
  • Editor: Fixed crash when calling Close in the OnFocus callback.
  • Editor: Fixed object selector not working for ObjectFields in GUI.Window.
  • Editor: Fixed some vertically misaligned buttons in the dark skin.
  • Editor: Fixed EditorExtensionImpl showing up in the Project view in some projects imported from 3.4.
  • Editor: Will now use project name instead of the build file name as the title for published web players.
  • Editor: Scenes in Build Settings no longer get reordered alphabetically.
  • Editor: Undo now working if movement is cancelled by right click.
  • Editor: Fixed error message when resizing arrays.
  • Editor: Fixed crash when changing asset serialization to text mode.
  • Editor: Fixed hang when play mode is exited while a download is in progress.
  • Editor: Fixed crash when selecting multiple ScriptableObjects of different types.
  • Editor: Scene view uses the same rendering path as main camera. Much less confusion!
  • Editor: Soft particles usage hint in Quality Settings UI.
  • Editor: Screen.width and Screen.height much more consistently report actual game view size when used outside of editor window GUI code.
  • Editor: Made default values for sphere & capsule colliders use 0,0,0 for the center (it previously was not precisely zero due to floating point inaccuracies).
  • Editor: Made the TextMesh inspector automatically change the material of the MeshRenderer when the font is changed.
  • Editor: Properly reset MovieTextures when entering play mode.
  • Editor: Fixed crash if importing an AudioClip fails during project re-import.
  • Editor: Fixed null ref when using "Open" button in the inspector for model files in some cases.
  • Editor: Fixed errors about not being allowed to access targets array.
  • Editor: Fixed profiler using deep profiling when exceptions occur.
  • Editor: Fixed DnD references being empty during DragExited after a DragPerform.
  • Editor: Update visible rect when horizontal scrollbar is needed because vertical scrollbar is used.
  • Editor: Clamping of the scroll position to account for the visible rect of the scrollview.
  • Editor: Fixed scrollview returning scroll position out of view rect size when using scrollwheel.
  • Editor: Correctly handle when null string is passed to a TextField.
  • Editor: Don't show Display Resolution Dialog when using CTRL-B from the editor and it's turned off.
  • Editor: Fixed EditorWindow.ShowPopup with initial position of 0, 0 not rendering correctly.
  • Editor: Fixed missing bold font in some inspectors (e.g. FBXImporter).
  • Editor: GizmoType.NotSelected attribute for DrawGizmo works correctly.
  • Editor: Component menu now handles custom namespaces.
  • Editor: Light probes are selectable in search mode.
  • Editor: Excess flood of Animation clips is not confusing the model importer inspector.
  • Editor: EnumMaskField returns consistent value when every item is selected.
  • Editor: Textfield word wrapping fixes.
  • Editor: Display names of colliding enumeration values in inspector
  • Editor: Fixed problem with the Asset Store window on retina display Macbook Pros.
  • Editor: Fixed hang while closing if plugins had created their own native threads.
  • Editor: Fixed odd drawing behavior when attempting to resize welcome screen.
  • Editor: GUI.color is reset properly for every CustomEditor
  • Editor: Fixed profiler causing an Out of Memory error in the console.
  • Editor: Improved error reporting when exporting a Unity package.
  • Editor: Fixed a bug where ARGB16 textures loaded from AssetBundles built for iOS/Android would load incorrectly.
  • Editor: Editor doesn't hang anymore if exiting while in play mode.
  • Editor: Made entering playmode faster by reducing the number of domain reloads.
  • Editor: Fixed null reference exception when a MonoBehaviour is missing in the inspector. Instead we display helpful warnings embedded in the inspector.
  • Editor: Fixed issue in fbx importer where prefab instance modifications would in some corner cases get applied to a different object on a different machine
  • Editor: Fixed bug where calling LoadLevel in OnDestroy when exiting playmode could lead to a crash.
  • Editor: Fixed bug where the import settings were not updated when a .meta file is changed.
  • Editor: Fixed various leaks in the asset import pipeline when importing large project folders.
  • Editor: Fixed prefab override recording issue where modifications would not get applied to array elements if the prefab array is empty and the size value was overridden after the property was overridden.
  • Editor: Fixed warning when changing import settings on a lot of fbx files.
  • Editor: Fixed crashbug when clicking on Apply prefab button in the game object inspector when the prefab would add / remove components on awake in edit mode.
  • Editor: Fixed drag and drop behaviour when dragging child prefab objects.
  • Editor: Improvements to Light Probe editing: don't change selection when duplicating them; render editable ones on top of baked ones.
  • Editor: Wireframe and Textured Wireframe scene view modes take actual vertex & tessellation shaders into account now.
  • Editor: Fixed import of .EXR files with alpha channel.
  • Editor: Invoked OnFocus/OnLostFocus when switching tabs within the same DockArea.
  • Editor: Disallowed hiding cursor when GameView is out of focus.
  • Editor: Fixed crash caused by scene view overlays.
  • Editor: Fixed box collider handles not matching box collider gizmos.
  • Editor: Text fields support OS standard behavior of Command + Backspace deleting everything from the start of the current line to the cursor position.
  • Editor: Cleaned up LOD group inspector (button alignment, text clipping).
  • Editor: Make Unity 1.x GUI components never be shown in the Scene View.
  • Editor: Changed order of calculations during model import to improve normal calculation.
  • Editor: EditorUtility.CopySerialized now works correctly for components.
  • Editor: Fixed a bug where generated OS X icons would occasionally get corrupted.
  • Editor: Fixed a bug where the editor would fail to open projects if the root Assets folder has a .meta file.
  • Editor: Fixed delay when bringing up shader selection menu for the first time (4.0: fixed delay when bringing it up each time).
  • Editor: Fixed potential crash when editing multiple objects and resizing arrays.
  • Editor: Fixed Rendering Paths scene view mode to take camera's render path into account, not only what the shaders are capable of.
  • Editor: Fixed WebPlayer building code; now it does not try to recreate the outermost directory (a user might not have sufficient filesystem access rights anyway).
  • Editor: Allow for cmd+c and ctrl+c to be used on a SelectableLabel.
  • Editor: Do not show cut/paste context menu action for SelectableLabel
  • Editor: Popup windows no longer flicker for a frame on OSX.
  • Editor: Audio preview in Scene View now works correctly without any Audio Listeners in the scene.
  • Editor: Fix some importer inspectors constantly repainting.
  • Editor: Fix key navigation to assets store groups while showing local assets.
  • Editor: Fixed windows standalone icons alpha issues.
 
  • Flash: Replace no longer ignores parens.
  • Flash: Several code conversion issues resolved.
  • Flash: NavmeshPath can now be instantiated correctly.
  • Flash: Fixed translation of some shaders (e.g. Refractive Glass was causing errors).
  • Flash: Made AsyncOperation work.
  • Flash: Fixed division by long and ulong.
  • Flash: Fixed bug where assigning a struct to an object or interface would introduce two pointers to the same struct instead of two copies.
  • Flash: Fixed several cornercase bugs in support for generics.
  • Flash: Properly initialize fields of type DateTime in structs instantiated with default constructor.
  • Flash: Fixed memory corruption crash if WWW response .Length didn't match actual length of payload.
  • Flash: Support ++ and -- on arguments that are passed byref, whose result is assigned to an array.
  • Flash: Fixed mouse visibility bug.
  • Flash : Fixed equality comparison for ValueTypes.
  • Flash : Fixed hashtable comparison.
  • Flash : Fixed enum comparison
  • Flash : Fixed enum to enum cast.
  • Flash : Fixed keyboard input handling and TextArea input (control, delete, space, arrow keys).
  • Flash : Generic collections now work with interfaces.
  • Flash : Fixed crash when www.audioclip was used in a coroutine.
  • Flash : SweepTestAll now works.
  • Flash : UnityEngine.Flash.FlashPlayer allows retrieval of target player and swf version.
  • Flash: Fixed rare condition in which we ran out of stack space, resulting in an out of range error.
  • Flash: Fixed issues with anonymous delegates.
  • Flash: Implemented delegate comparison.
  • Flash: Implemented Double.TryParse.
  • Flash: Input.inputString now works.
  • Flash: No more compiler crashes on incorrect SWF dimensions.
  • Flash: Key repeat works.
  • Flash: Fixed NewInstance for Enum value types
  • Flash: Fixed getter/setter generation for System.Array.
  • Flash: Don't show Development Build watermark in non-dev builds.
  • Flash: Fixed issues with anonymous delegates.
  • Flash : Fix string marshalling. Now consistently UTF8.
  • Flash : Fix dynamic font textures generated larger then Flash max texture size (2048*2048).
  • Flash : Fix dynamic font generation trashing memory.
  • Flash : Fix invalid agal generated for cube map samplers.
  • Flash : Fix backbuffer being cleared because of rtt.
  • Flash : Fix type inference for float division.
  • Flash : Fix issue with loitering objects in finalizermaps.
  • Flash : Fix issue with converted GetHashCode code being invalid when generated from a MS compiler.
  • Flash : Implemented Char.ConvertFromUtf32
  • Flash : Improved support for System.Convert
  • Flash : Adding support for TryParse for additional data types.
  • Font rendering: Fixed position of text cursor when a custom font size is used for the TextField.
  • Font rendering: Fixed kerning.
  • Graphics: Fixed crashes that sometimes occurred on OpenGL with mismatched GL.Begin/GL.End pairs.
  • Graphics: Fixed TrailRenderer culling issue.
  • Graphics: Don't break batching based on shadow distance when there aren't any shadow casting lights.
  • Graphics: Properly take line width into account when adding points to LineRenderer.
  • Graphics: SubShader tags (render queue etc.) take shader LOD into account properly now.
  • Graphics: Free up temporary memory used by non-uniformly scaled mesh when deactivating a mesh renderer.
  • Graphics: Static batching performs better when there are multiple lightmaps in the scene (before it could run into cases where it wasn't batching much).
  • Graphics: Fixed memory leak in Material.CopyPropertiesFromMaterial.
  • Graphics: Fixed a rare "invalid angle: inf" error message with terrain and shadows.
  • Graphics: Fixed Camera pixelWidth/pixelHeight/aspect queries done from Editor code being really confusing. Before, it was using the size of last drawn editor view for the calculations. Now, for regular cameras, Game View size is used.
  • Graphics: Fixed crash in Shuriken mesh particles, when source mesh has no normals or tangents.
  • Graphics: Fixed errors with statically batched meshes that are later modified by a script.
  • Graphics: Fixed issue with Deferred rendering and wireframe Scene View mode.
  • Graphics: Fixed various issues with shaders in asset bundles. E.g. you can actually put terrain with trees into an asset bundle, and the billboard shaders will work, without having to jump through various hoops.
  • Graphics: Properly include all shaders into game data files when editor is in "-nographics" mode.
  • Graphics: Batched Shuriken draw calls were not accounted for in the game view stats window.
  • Graphics: Don't load Occlusion Culling data in non-Pro editor licenses.
  • Graphics: Fixed console error messages when a terrain tree prefab is missing.
  • Graphics: Smoother framerate on Windows when using vsync.
  • Graphics: Fixed Screen.resolutions reporting zero for refresh rate in some cases.
  • Graphics: Fixed crash when using additive scene loading with missing lightmaps.
  • Graphics: Fixed small memory leak when loading shaders with syntax errors; made shader loading a bit faster as a byproduct ;)
  • Graphics: Fixed error messages in some situations when calling camera.Render from editor scripts.
  • Graphics: Fixed surface shader finalcolor modifier sometimes producing wrong results.
  • Graphics: Limit maximum texture size to 4096 on Retina MacBookPros due to OS X driver bugs.
  • Graphics: Removed limitation that Windows Standalone game window can't reach whole desktop screen size.
  • Graphics: On Linux, fixed lower resolution blit texture getting broken due to quality settings change.
  • Graphics: Improved deferred lighting depth buffer sharing workaround for some OpenGL systems. Mostly, much faster now on some Linux GPUs/drivers.
  • Graphics: Fixed different mesh compression setting to actually make a difference (previously it would always use "Low" compression, regardless of setting).
  • Graphics: Fixed some issues with Fog on Direct3D 9; in rare cases with some complex shaders it was not working properly.
  • Graphics: Fixed HDR rendering being off in the very first frame.
  • Graphics: Fixed Camera.hdr returning wrong value when called before render.
  • Graphics: Fixed occasional errors being reported when rendering objects with zero scale.
  • IMGUI: Fix BeginHorizontal not displaying content/tooltip when using GUIStyle.none.
  • Image Effects: Fixed Flash-related warning messages when importing Image Effects package.
  • Image Effects: Fixed Global Fog on Windows when MSAA is used.
  • Input: Fixed OnMouseDown and related callbacks being wrongly sent to cameras that render into RenderTextures.
  • Input: Gamepad buttons are now correctly initialized again.
  • iOS: Fixed Xcode crash when native plugin uses "+" in the name.
  • iOS: Fixed iPad splash handling when starting in portrait.
  • iOS: Made various orientation fixes.
  • iOS: Corrected texture atlas padding.
  • iOS: Fixed skinning corrupting UVs.
  • iOS: Fixed crash on suspending app while playing video.
  • iOS: Fixed recognition of more recent iPhone4/4S models.
  • iOS: Fixed various crashes when Script Call Optimization set to "fast but no exceptions".
  • iOS: Fixed text-area behavior when on-screen keyboard is hidden.
  • iOS: Fixed Screen.orientation on the first frame on iOS6.
  • iOS: Fixed interoperability of DisplayLink mode and iOS native UI.
  • iOS: Fixed iOS splash screen image not being released after game starts.
  • iOS: Fixed www.uploadProgress support.
  • iOS: Fixed loading indicator position.
  • iOS: Small GPU profiling (in the internal iPhone profiler) improvement.
  • iOS: Fixed basic license splash screen issue with Xcode 4.5.
  • iOS: Fixed support for native methods inside of inner classes.
  • iOS: More fixes to initial orientation handling.
  • iOS: Unity Remote support updated to work better with input compensation for screen orientation.
  • iOS: Fixed Screen.dpi for iPad Mini.
  • Javascript: Fixed error checking for array indices.
  • Javascript: Fixed regression on 'not in' operator. Operator has been brought back.
  • Javascript: Introduced 'for each' syntax for better compatibility with other javascript dialects.
  • Lightmapping: Fixed "Generate Lightmap UVs" difference between Windows & Mac!
  • Lightmapping: Fixed handling degenerate triangles in UV space, Beast no longer spits out "TexBakeSampleGenerator: Non-invertible matrix".
  • Lightmapping: Skipping tree instances that reference a prototype without a mesh.
  • Lightmapping: Improved error messages when failing to bake Light Probes; when meshes have UVs outside 0..1 range, when meshes have missing UVs.
  • Lightmapping: Take texture tiling into account for materials with cutout shaders.
  • Lightmapping: Fixed issues with some emissive materials.
  • Lightmapping: Fix harmless error when lightmap baking an unsaved scene on Mac.
  • LOD: Fix double GUI repaint error when caused by reparent renderers dialog.
  • Mobile: Better RenderTexture.DiscardContents implementation.
  • Mobile: Fixed wrong lighting when dynamically batching uniformly scaled meshes.
  • Mac OS X Editor: Fixed window focus issues when using a multiple screen setup in OS X 10.8 Mountain Lion.
  • Mac OS X: Event.clickCount behavior for double-clicks now matches windows (clickCount is always 1 for MouseUp events).
  • Mac OS X: Don't freeze Unity content when the System clock is changed while running.
  • Mac OS X: PlayerPrefs keys will now work if they contain an '@' character.
  • Mac OS X: Fix Webcam textures with non-native resolutions correctly picking up the desired texture size.
  • Mac OS X: Fixed some graphics issues on dual-GPU Mac models, e.g. editor windows occasionally becoming all white.
  • Mac OS X: Fixed Crash on quit if profiling had been enabled.
  • Mac OS X Standalone: Fixed problems when writing OS X icon format, leading to broken icon graphics in some cases.
  • Mac OS X Standalone: Used OS X Lion style fullscreen mode, to allow other windows to show up in front of fullscreen apps, and to allow switching in and out of fullscreen mode by clicking onto the fullscreen button in the window title bar (optional).
  • Mac OS X Standalone: Fix hiding of window when GameCenter is activated.
  • Mac OS X Standalone: Changed event processing to allow other windows to receive keyboard events, to allow better integration with OS services such as GameCenter using plugins.
  • Mac OS X Web Player: Made IME support work in all Mac browsers.
  • Mac OS X Web Player: Fixed focus handling when the browser is switched to the background or the user switches to another window/tab.
  • Mac OS X Web Player: Fixed memory leak.
  • Mac OS X WebPlayer: Fixed OnApplicationPause being called when window goes to the background.
  • Math: Fixed Plane.SameSide equation side error.
  • Misc: Improve Time.smoothDeltaTime so it's not affected by pausing/unpausing.
  • Native Client: Fixed download of JPG files as textures.
  • Native Client:: Fixed problem where preferences might get lost when the player is closed while writing preferences to disk.
  • Native Client: Fixed deadlock when loading mono DLLs.
  • Native Client: Fixed Build & Run with Chrome 23.
  • NavMeshAgent : Fix crash querying nextOffMeshLinkData when having no navmesh in scene.
  • NavMeshAgent: Fixed bug where Resume breaks updateRotation setting.
  • NavMeshAgent: Path request processing queue order fixed.
  • Physics: Fixed problem where CCD would incorrectly detect collisions if the center or scale of a collider was changed.
  • Networking: Fixed case where a MasterServerEvent.HostListReceived was triggered for each host in a host list.
  • Networking: Fixed problem with connecting to password protected servers with NAT punchthrough.
  • Player: Fixed race condition in WWW class that could cause a crash when aborting download.
  • Physics: Fixed MeshCollider not working if it had been scaled to be zero sized, and then scaled up again.
  • Physics: Fixed a bug where Raycasts against CapsuleColliders with a zero-length middle section would not always return correct results.
  • Physics: Fixed a bug where destroyed colliders would not be properly deallocated if Time.timeScale was zero.
  • Physics: Fixed colliders being properly inactive when they are on inactive child game objects of the rigidbody.
  • Physics: Fixed collision between two triggers to send OnTriggerEnter events to both triggers and both rigidbodies for consistent results.
  • Physics: Fixed memory leak when Time.timeScale is zero.
  • Physics: Fix problem with activation order when recursively activating hierarchies, causing rag dolls not to function properly in some cases.
  • Physics: Fixed a bug where rigidbody interpolation would have an effect on physics simulation results.
  • Physics cloth: Fixed tangents to match initial rotation of object.
  • Prefabs: Duplicating game objects with references to abstract classes behaves more reliable.
  • Profiler: Fixed hang on editor or player when connection could not keep up with the data.
  • Profiler: Made the profiler skip frames instead of freezing up if editor lacks behind player.
  • Profiler: GC memory was not propagated correctly up the call hierarchy.
  • ProfilerConnection: Fixed inifinite loop freeze if profiler sendbuffer is full on the player.
  • Scene View: Fix scene editor camera becoming locked out from user control.
  • Scripting: Added overloads to EditorGUI.IntSlider so it can take SerializedProperties.
  • Scripting: Fixed crash when calling material.GetFloat(null).
  • Scripting: Fixed crash when a component destroys itself while AddComponent is trying to create it.
  • Scripting: Fixed crash calling Resources.Load before resources have been imported.
  • Scripting: Fixed bug where AssetBundle.LoadFromFile would get unloaded by UnloadUnusedAssets.
  • Scripting: GameObject.Find will now correctly find children of objects of the same name as other objects which don't have children of that name.
  • Scripting: Fixed crash when a gameObject is being destroyed while calling SendMessage on it.
  • Scripting: Fixed script serialization bug where properties could not be #if-ed out for the player.
  • Serialization: For non-webplayer-targets, scenes (implicitly) referencing assets placed under the Resources folder will now always have the assets placed together with the scene (and not in the resources.assets).
  • Shaders: Fog shader variables (unity_FogColor etc.) are set to produce no fog when it's off.
  • Shaders: round() and trunc() HLSL functions are now supported when compiling shaders for mobile.
  • Shaders: Updated HLSL-to-GLSL shader compilers; fixes some complex mobile shaders (e.g. Tree Creator ones, or Edge Detection image effect on some mobile GPUs).
  • Shaders: Fixed compile errors in some cases where custom directional lightmap lighting function is used.
  • Shadows: Fixed shadow caster culling when light direction is exactly parallel to one of camera's frustum planes.
  • Shuriken: Fixed particle system randomness. There should be a lot less visible correlation between parameters when using random between curves and values.
  • Shuriken: Can't remove disabled UI modules, gizmo scaling issue, simulation preview issues when scrubbing.
  • Shuriken: Fixed sub-emitter memory leaks, occasional crash.
  • Shuriken: Gracefully handle when mesh is invalid, instead of leaving the emitter in a bad state.
  • Shuriken: Fixed crash if using mesh particles without UVs.
  • Standard Assets: Projector uses smaller, but uncompressed textures; to avoid artifacts when looking from a distance.
  • Substances now handles iOS non-square unsupported PVRTC.
  • Substance: Fixed baking issues on unsupported platforms (Android, iOS, Flash).
  • Substance: Lower memory consumption in the Editor when importing projects and switching color space.
  • Substance: Fixed runtime re-generation of substances with bitmap inputs.
  • Substance: "Generate all outputs" now displays all generated textures in the Inspector.
  • Substance: Fixed cloning substances in the Inspector.
  • Substance: Fixed bitmap export.
  • Substance: Fixed several erroneous error messages appearing in the log.
  • Terrain: Fixed error messages when painting terrain grass with negative sizes, and when adding some tree models.
  • Terrain: Terrain renderer no longer causes invalid memory accesses during rendering traversal.
  • Time: Fixed timescale usage when single stepping.
  • UV generation is now more deterministic between platforms since it is performed prior to scaling of vertices.
  • UnityObject: The default templates works nicely over https now.
  • UnityObject: Running a offline build locally will not break the default templates.
  • WebCamTextures: Fixed error message when querying list of available devices while WebCams are in use.
  • Web Player: Application.dataPath will now work correctly if the player URLs has slash characters in the url parameters.
  • WebPlayer: Fixed the plugin ticking routine. It is simpler and less error prone.
  • WebPlayer: Updated the builtin resources; now there is a distinction between "Made with Unity 4 Beta" and "Unity 4 Beta" plugin.
  • WebPlayer: Fixed a variety of crashes when plugin was running on IE9.
  • Webplayer: Crash logs now contain stacktrace.
  • Webplayer: Fixed memory overwrite on startup when running in-process on Firefox.
  • WWW Class: Fixed parsing text encoding if the encoding http header contains more parameters.
  • Windows: Improved StackOverflowException handling in scripts.
  • Windows: Fixed issues with 64-bit player not launching when non-latin characters in path.
  • Windows Editor: Messages with "Failed: The operation has completed successfully" should not be presented anymore when operations on files fail.
  • Windows Editor: Fixed extracting .unitypackage files containing extended Unix file attributes.
  • Windows Editor: Asset Store window now works correctly in OpenGL mode.

Changes

  • Android: New Unity3d splash screen.
  • Android: The video player activity has been removed. Fullscreen video is still supported but not as a separate activity.
  • Android: "Google Play OBB Downloader" is now available in the asset store. The plugin can be used on devices that does not support automatic downloading of APK Expansion Files".
  • Android: "Google Play Application License Verification" is now available on the asset store and thus no longer embedded in the standard distribution.
  • Android: Removed X<->Y axis mismatch for Android input. Now out of the box it should match iOS input. Requires code refactoring!
  • Editor: Requires a DX9-capable GPU now (pretty much anything since 2004).
  • Editor: PreferenceItem attribute now works on private static methods.
  • Editor: Added new default window layout.
  • Editor: When in OpenGL ES 1.1 graphics emulation, maximum texture size increased from 1024 to 2048 now.
  • Editor: Temporary meshes created by GUI texts are excluded from vertex buffer count/size statistics in game view.
  • Editor: If necessary, build dialog now automatically performs a "Switch Platform" when pressing "Build" or "Build & Run" (fixes class layout build errors some have encountered).
  • Editor: Positive values are enforced in Terrain Detail Wizard.
  • Editor: Prevent multiple editors from opening the same project on OSX.
  • Flash: Removed support for Flash Player 11.0 and Flash Player 11.1; players both had serious bugs in memory opcodes. Unity now defaults to Flash 11.2 as target player.
  • Flash: Disabled GrabPass shaders; they now behave like in Unity non-Pro instead of rendering nothing. Flash can't support GrabPass due to Stage3D limitations.
  • GameObjects: Active state is now recursive. If a GameObject is inactive, all children will inherit that state.
  • GameObject.active is now deprecated to make users aware of the new behavior. GameObject.SetActive() or GameObject.activeInHieararchy should be used instead.
  • Graphics: Low-level rendering API (Graphics and GL classes) do not require Pro license anymore.
  • Graphics: Marked Get/SetTriangleStrip on Mesh as obsolete
  • Input: Removed support for assigning an input axis of window movement (only ever worked on Mac).
  • iOS: removed Unity-iPhone-simulator build target from Xcode trampoline. Now simulator specific changes are backed directly into Unity-iPhone build target. It still requires to rebuild Xcode project after switching between device and simulator SDK.
  • iOS: PVRTC compressor updated.
  • iOS: added iOS 6.0 OS target.
  • iOS: SystemInfo.deviceModel now returns full device name, including revision number.
  • iOS: Exposed AOT.MonoPInvokeCallbackAttribute custom attribute. Passing managed delegates to native functions is now possible, though limited to static methods only.
  • iOS: PVRTC compressor upgraded to imgtec 3.0@2144429.
  • iOS: Gyro and other sensors implementation moved to the trampoline. Provides more possibilities for customizations.
  • iOS: Now iOS sensors follow screen orientation. No more complicated code for axis remapping! This can be switched off via Input.compensateSensors. Requires code refactoring!
  • iOS: Removed unneeded one frame of latency (presentRenderBufer moved to the end of Repaint).
  • iOS: Added iPad Mini and iPad 4gen to iPhoneGeneration.
  • Prefabs can now have an active state which is copied to instances on instantiation.
  • Mobile: ARMv6 is not supported anymore.
  • Model Importing: Model importer no longer triangle strips but does vertex cache optimization if mesh GPU optimization is turned on. GPU optimization is turned on by default.
  • Model Importing: When using the new animation import mode, Unity will no longer attempt to move the SkinnedMeshRenderer to the root bone.
  • Native Client: NaCl is now it's own BuildTarget instead of a checkbox in the WebPlayer build target.
  • NavMeshAgent: Avoidance priority made consistent with e.g. audio priority: Most important = 0. Least important = 99. Default = 50. Loading older scenes will reset agent avoidance priority to new default value (50).
  • Scripting: Removed SceneView.RenderMode from Editor API(was not documented, but public). Use the documented DrawCameraMode instead.
  • Scripting: Development player emits warnings when accessing the script API from the wrong thread (or using explicit object initializers).
  • Scripting: OnEnable no longer changes the execution order of Awake. Execution order for scripts is now much more consistent. The call to OnEnable always comes immediately after Awake.
  • Substance: Added "Bake and keep" and "Bake and discard" load behaviours, to allow the baking of bitmaps on supported platforms.
  • UnityObject: Deprecated, and will no longer be used when building a WebPlayer.
  • UnityOject2: New install script when building the WebPlayer, replaces UnityObject giving more flexibility to developers.

Changeset: