Unity 4.2

There’s an outstanding lineup of new features in Unity 4.2 including:

  • Windows Store Apps, Windows Phone 8 and Blackberry 10 deployment
  • Tons of great new graphics features
  • OpenGL ES 3.0 API support
  • iOS crash reporter
  • Build and run cancellation
  • Perforce integration

Read the release notes for the full list of new features and updates.

New Platforms and Licensing

  • Windows Store Apps ("WSA", for both x86 and ARM) and Windows Phone 8 support. Pro version of WSA/WP8 is free for Unity Pro owners!
  • BlackBerry 10 support.
  • Now free: all "Basic" mobile licenses.
  • Now free: realtime shadows (one directional light only; hard shadows only).
  • Now free: text-based serialization of materials, prefabs, scenes etc. for easier version control.
  • Now free: NavMesh baking (OffMeshLinks still require Pro).

Graphics Features

  • Anti-aliased RenderTextures. Implemented on D3D9, D3D11, OpenGL, OpenGL ES 2.0 (iOS and some Android devices via GL_IMG_multisampled_render_to_texture), OpenGL ES 3.0.
  • Image Effects, a batch of new goodies and improvements (update Image Effects package!)
    • Ambient Obscurance: Added "Screen Space Ambient Obscurance" effect, like old SSAO but better quality, faster and scales better to large resolutions.
    • Bloom: Added mobile oriented "Bloom (Optimized)" effect; not as fancy as Bloom one but faster.
    • Blur: Added mobile oriented "Blur (Optimized)" effect.
    • Tilt Shift: Replaced old effect with "Tilt Shift (Lens Blur)" one; better quality and HDR support.
    • Camera Motion Blur: Added "Reconstruction Disc" mode, quality tweaks to existing modes.
    • Vignetting: Optimized performance and improved UI.
    • Edge detection: Removed old simple "Edge Detection (Color)" effect, added it as a new mode into Edge Detection effect.
    • Reorganized image effects menu structure to be more logical.
  • Stencil buffer access (requires Unity Pro). Shaders can define stencil buffer operations that they perform, for optimizations or special effects.
  • Shadows: Implemented static & dynamic batching for shadow casters & shadow collector pass. Note: many shadow casters can be batched even if they use different materials! They will be batched as long as the actual shadow caster shader & material properties affecting it are the same.
  • Shuriken: Collision event callback scripting interface. Efficient callbacks on GameObjects and ParticleSystems are issued when Shuriken particle collisions occur. Per particle callback data include collision positions, incident velocities, surface normals and Collider references allowing developers to, say, cause + damage to GameObjects and apply forces to RigidBodies.v
  • GPU Skinning! (requires Unity Pro)
    • Completely automatic, no custom shaders needed.
    • Works on DirectX 11 (via stream-out), OpenGL ES 3.0 (via transform feedback) and Xbox 360 (via memexport). Other platforms will continue to use CPU skinning.
  • OpenGL ES 3.0 support for Android:
    • ES3 has nicer shadow filtering, ETC2 texture compression, GPU skinning via transform feedback, HDR rendering, multiple render targets, derivative instructions in shaders etc.
    • A new option in Player Settings, next to ES1.x and 2.0 devices.
    • Requires a GPU that can do ES3, for example Qualcomm Adreno 3xx or ARM Mali T6xx.
    • Note that the official Android version does not support ES3 yet. So to test it you should install ES3 drivers directly from GPU makers (e.g. Qualcomm).
  • Deferred Lighting is now enabled on Android and iOS.
    • Requires depth texture support and at least a 512MB RAM device.
    • Note, it might still be too slow for big games scenes on anything but latest devices, so use with care.
  • Added possibility to create Texture2D directly from native texture; Texture2D.CreateExternalTexture. This is mostly useful when your native code plugin creates textures itself.

Editor Features

  • Integrated version control support for Perforce.
    • Do common Perforce operations right inside Unity editor.
    • We've made the integrated version control system extensible; support for more VCS will be coming later. Or you can write your own VCS plugin, see our plugin page on github.
  • Platform switching, player building and asset importing can be cancelled now! How cool is that?
  • Custom GameView resolutions & aspect ratios. Custom settings are saved per project for easy sharing through version control (ProjectSettings/GameViewSizes.asset).
  • Preset Libraries: You can now save the following types as presets:
    • Curves in the Curve Editor and Particle System Curve Editor.
    • Gradients in the Gradient Editor.
    • Colors in the Color Picker.
    • Create new libraries either as personal libraries (saved in preferences) or shared libraries (saved in the project folder).
  • Added a Quad primitive ;)
  • Memory Profiler: Now shows the objects that have references to another loaded object. This can help pinpoint why a given object is in memory.
  • Shader importer can have default textures specified. When you initially set a shader on a material or reset a material the textures will be set to these default textures.
  • Texture importer now has "Alpha is Transparency" setting, which does color dilation to fix edge artifacts on semitransparent textures. It is enabled by default for GUI textures.

Mobile Features

  • Android: Added support for Android Library Projects (no compilation support, so the libraries have to be pre-compiled).
  • Android: AndroidJavaProxy - Support for implementing Java interfaces in C#.
  • Android: Editor can now update the Android SDK if it does not match the required dependencies.
  • iOS: Added CrashReporter API for crash detection and extraction (requires Unity Pro).
  • iOS: Now you can setup iOS PlayerSettings, texture import overrides and build iOS AssetBundles from Windows Editor. Building an actual iOS player still requires Mac OS X & Xcode.
  • iOS: WebCamTexture can be set non-readable (prior to playback), which allows it to output from camera directly to texture, avoiding extra memory copies.
  • Editor: When in mobile graphics emulation mode, editor will show a warning when RenderTexture usage is not optimal for tile-based or multi-GPU systems. Use RenderTexture.MarkRestoreExpected() to suppress the warning if needed.

Other Features

  • Audio: Added Bypass Listener and Bypass Reverb Zones properties that enable turning off listener effects independently from the effects on the audio source. Thus, Bypass Effects only turns off the effects on the AudioSource, and the 3 flags can be combined freely.
  • Audio: Added Disable Audio property in Audio project settings to deactivate the audio system in standalone builds. Note that this also affects the audio of MovieTextures. In the editor the audio system is still on and will support previewing audio clips, but AudioSource.Play calls and playOnAwake will not be handled in order to simulate behavior of the standalone build.
  • Audio: Added "Prepare iOS For Recording" property in Player Settings (iOS > Other Settings in the inspector). Turning it on will avoid the stalls that otherwise happen when starting or stopping the Microphone object.
  • Editor: Editor extensions can now get a callback when Unity is about to open an asset. Use this callback to open an asset inside Unity before its opened in an external tool. Decorate a static method with the attribute UnityEditor.Callbacks.OnOpenAsset.
  • Linux: Added basic webcam support for video4linux2-supported devices.
  • Linux: Implement headless player; this will not require Xlib (requires Unity Pro).
  • Mac OS X: 64 bit standalone player support (x86_64 and Universal).
  • Mecanim: Avatar Creation API, for avatar creation from scripts at runtime or in the editor.
  • Mecanim: Synchronized Layers option to override state durations.
  • Mecanim: You can now set the default layer weight in the editor for your animator controller layer.

Changes

  • Asset bundles built in prior versions of Unity are no longer compatible with Unity 4.2 (this has been necessary because of changes to how built-in resources are handled).
  • AssetDatabase.ImportPackage and AssetDatabase.ExportPackage can now be called repeatedly from within the same iteration of the game update loop (previously, successive calls would overwrite the buffered state of the previous one).
  • Audio: 7.1 content can now be loaded in the editor (previously only 5.1 was allowed).
  • Editor: Add MeshRenderer component dependency for TextMesh component.
  • Editor: NavMeshLayers editing is now located as a tab in the Navigation Window.
  • Editor: Terrain menu functionality moved to Terrain Inspector. Now you create a terrain by GameObject > Create Other > Terrain. Terrain settings previously in the menu are under Settings tab in terrain inspector.
  • Font colors are now applied as vertex colors, instead of by setting the color on the material. This makes it work better with markup tags in rich text strings. The color property in the font importer has been removed, and instead there are now color properties on the GUIText and TextMesh components to let you set the color of text objects per instance instead of per font.
  • Graphics: Disabled multisampling on NVIDIA cards on OS X earlier than 10.9 in Mac Web Player, due to driver issues.
  • Graphics: Majority of built-in shaders are now only included into your game data if they are actually used. This saves about 200 kilobytes off your mobile game size if you're not using many built-in ones. If you need some built-in shaders to be available without explicit references to them (to make Shader.Find etc. work), set them up in Edit -> Project Settings -> Graphics (by default Diffuse shader is always included).
  • Mac OS X Editor: The Editor on OS X will now allow symlinks in project folders to match Windows behavior. This can be used to share assets across projects, but is not recommended unless you know exactly what you are doing.
  • Made several Unity API calls which had been undocumented for many years properly deprecated.
  • NavMesh: "Reset" button in navmesh bake window is moved to window menu item.
  • Resources.LoadAll() now permits a trailing slash when given a folder name.
  • Web Player: the "Release Channels" context menu item will now only be visible when the Alt/Option key is pressed when opening the context menu.

Improvements

  • Android: Stylus support.
  • Android: Support for xxhdpi resolution icons.
  • Android: AndroidJNIHelper and AndroidJava classes will now throw exceptions on failed invocations.
  • Android: Enhanced performance of AndroidJava and reduced the load on the dalvik GC.
  • Android: If possible, use native sensors (accelerometer, compass, etc) instead of routing it through Java.
  • Android: Improved error messages when build fails; added Retry option when device deployment fails; automatically create adb tunnel for profiler.
  • Android: OBB is now exported in the root folder when exporting an android project.
  • Android: Remove Eclipse project support in favor of Android project support.
  • Asset Bundles: Compressed AssetBundles built with 4.2 or later will have reduced runtime memory usage when decompressing.
  • Audio: Added a more informative error message when the audio device is changed during work in the editor or at runtime (i.e. when plugging in a screen that has built-in audio device such as HDMI screens).
  • Building: Show a warning when assembly's internal and file names don't match. This can cause issues on platforms that do AOT.
  • Editor: Added EditorGUIUtility.ShowObjectPicker to let editor extensions use it on demand.
  • Editor: Added a Select Prefab item in the Hierarchy View context menu.
  • Editor: Added EditorWindow.maximized bool. Use this to query if a window is maximized, set it to maximize/unmaximize a window. Is always false if the window is not docked.
  • Editor: Gradient API now has alphaKeys and colorKeys properties.
  • Editor: New #SCRIPTNAME_LOWER# token for use in script templates.
  • Editor: Popups, buttons, color pickers, etc. in the inspector can now be opened by pressing Space.
  • Editor: Show warning in inspector when you have non-power-of-two texture that cannot be compressed.
  • Editor: Switching between DX9 and DX11 in player settings does not require editor restart now.
  • Editor: Trying to open a project that is already open in another Unity instance will now simply display an error and then bring up the project selector (except in batch mode where it keeps triggering a fatal error and exits).
  • Graphics: Optimized sorting of renderable objects for smaller CPU load.
  • Graphics: Exposed Light.alreadyLightmapped to scripts.
  • Graphics: reduced memory footprint of non-readable meshes.
  • Graphics: Added WebCamTexture.videoVerticallyMirrored. Use Case: on iOS, when you use non-readable webcam texture, GL texture will be created on top of camera's target pixel buffer, which is vertically "flipped".
  • iOS: Ability to disable "Replace" button when overwriting existing build.
  • iOS: Added Objective-C VideoPlayer, to playback video to view or to a texture.
  • iOS: Enforced keyboard to be shown on main thread (to play nicely with iOS6).
  • iOS: Improved support for AppController subclassing and unity view integration with native UI.
  • iOS: In case of unhandled exceptions iOS player now will generate crash report instead of exiting silently.
  • iOS: Made Unity iOS apps PIE compatible.
  • iOS: Added iPhone.vendorIdentifier and iPhone.advertisingIdentifier with iPhone.advertisingTrackingEnabled APIs for better manual control of what device ID to use.
  • iOS: Xcode project cleaned up a bit.
  • iOS: Native VideoPlayback can be now paused/resumed. You can seek and check if it is playing.
  • iOS: Added UNITY_VERSION macro support for native code in trampoline. We also added a UNITY_4_2_0 macro to make it future-proof (we will add macros like that for future releases too). We now support these ways of checking the version:
    • you can use it like MSC_VER macro, i.e. if you want some code to be enabled only when using unity 4.4.1 or newer, do #if UNITY_VERSION >= 441.
    • you can do it in a way that resembles iOS SDK versioning, e.g. for version 4.4.1 and newer #ifdef UNITY_4_4_1.
    • you can combine them, e.g. #if defined(UNITY_4_4_1) && UNITY_VERSION < UNITY_4_4_1
  • Linux: Improved inter-application copy/paste.
  • Linux: Add fullscreen scaling fallback for devices that don't support GL_EXT_framebuffer_blit.
  • Mecanim: Allow scrolling when adding transition.
  • Mecanim: Return warning message in console to user when we detect an invalid avatar while importing.
  • Mobile: Optimized a bunch of rendering places to be more tiled-GPU friendly (as is common on mobile). This includes shadows, deferred lighting and most of image effects.
  • Mobile: Added RenderTexture.DiscardContents with separate flags for color/depth discard.
  • Mobile: Greatly improved performance of fixed function shaders on OpenGL ES 2.0. There's no reason to use ES 1.1 anymore.
  • Mobile: Switched to one FBO object per RenderTexture; performance improvement with render texture switches.
  • NavMesh: General crowd performance improvements.
  • Profiler: Now roughly estimates how much application binary and loaded libraries take.
  • Profiler: Open webstreams (for Asset Bundles etc.) report their used sizes.
  • Profiler: Removed log spamming when manually connecting to IP.
  • Scripting: Avoid pausing some threads during Mono garbage collection on Windows, OS X, and iOS. Helps prevent audio stutters during GC.
  • Scripting: Added HideFlags.None enum value.
  • Scripting: While compiling C# scripts, you can now use classes from System.Xml.Linq namespace.
  • Shaders: Ability to output custom Z buffer value from shaders. Previously, a bug in Cg compiler prevented this on D3D9, we've worked around that. Note that some platforms (OpenGL ES 2.0, Flash) don't have ability to write custom values into Z buffer from pixel shaders.
  • Shaders: Add ability to override how lightmaps are applied in surface shaders.
  • Shadows: Better sorting of shadow casters for GPU efficiency.
  • Shadows: Improved shadowmap filtering on OpenGL. It will use native GPU bilinear shadow filter when available, just like D3D9 and D3D11 does. No more "shadows are worse on Mac than on Windows"! Note: native shadowmap filtering disabled for Spot lights on Linux due to driver issues.
  • Shuriken: Added script binding for ParticleSystem simulation space.
  • Shuriken: Exposed particle axis of rotation to scripting API.
  • Standalone: Added "fullscreen at native resolution" player setting.
  • Standalone: Added player setting for single instance mode.
  • Substance: Cloned ProceduralMaterials now inherit the original substance's animation rate.
  • Substance: It is now possible to reliably assign ProceduralTextures from a SBSAR to the shader associated to a ProceduralMaterial from another SBSAR.
  • Substance: ProceduralMaterial.ClearCache now takes effect immediately instead of being taken into account at next RebuildTextures call.
  • Substance: ProceduralTextures created from a cloned ProceduralMaterial now have the same name and "RAW/Compressed" format as the original textures.
  • Substance: Reimporting substances that have been modified in Play mode is now multithreaded.
  • Substance: Editor scripts can now modify a ProceduralMaterial's size/format/behaviour using SubstanceImporter.Get/SetPlatformTextureSettings.
  • Web Player: the "Release Channels" context menu now lists actual versions used for different channels.

Fixes

  • Android: Support for Android SDK rev22.
  • Android: Added a workaround for ANR when using Apple magic mouse; fixed ANR caused by deadlock when using touch enabled controllers.
  • Android: Added exception checks to avoid crashes in AndroidJNI.
  • Android: Added JDK version detection.
  • Android: Application no longer quits if joystick button 'A' is pressed before the first level has loaded.
  • Android: Disabled shader cache on pre-Honeycomb devices due to buggy drivers; also disabled it on all Immersion GPUs due to driver bugs.
  • Android: Editor; when switching between building a project and an actual apk, project is no longer replaced by the apk.
  • Android: Fixed a problem with streaming assets in exported android project.
  • Android: Fixed an issue where it was impossible to delete a project on windows due to adb keeping a lock in the project directory.
  • Android: Fixed crash on GL context recreate.
  • Android: Fixed crash when trying to read a non-existent string field through JNI.
  • Android: Fixed IndexOutOfRangeException on faulty package name.
  • Android: Fixed occasional crash on Nexus4 in shader compilation.
  • Android: Fixed problem with crashing video player on 1st gen Kindle Fire.
  • Android: Fixed propagation of key input events to OnGUI().
  • Android: Fixed touch and stylus input on devices having a single surface emitting both at the same time.
  • Android: Re-initialization of UnityPlayer is now possible.
  • Android: Removed black screen rendered while loading first level using Unity free.
  • Android: Reworked LocationService and Compass, to only compensate the magnetic declination when location is updated.
  • Animation: Added error when assigning too few bind poses so mesh skin indexes would index out of bounds.
  • Animation: Fix null reference exception in Clip tab of Model Importer.
  • Audio: Fixed memory leak when attempting realtime streamed playback of tracker files (XM/MOD/IT/S3M). Realtime streamed playback is not supported for these files, but streams may still be used for loading the files fully before playing them.
  • Audio: Fixed some down-mixing issues when compressing multi-channel material for Android/iOS.
  • Audio: Fixed upside-down rendering of channels in previews.
  • Audio: Use of OnAudioFilterRead should no longer causes random crashes.
  • Audio: Fixed a memory leak when importing a large number of audio files at once.
  • Building: When list of included assets is printed to editor console, built-in resources have proper names now, instead of empty strings.
  • Caching: AssetBundles with a CRC not matching the request will be removed from the asset bundle cache.
  • CacheServer: Improved robustness of LRU size calculation when replacing files in the cache server.
  • Core: Fixed a crash where AsyncOperation.allowSceneActivation = false would cause an infinite loop when exiting playmode.
  • Core: Fixed crash when exiting playmode and allowSceneActivation being disabled.
  • Core: Fixed deadlock that could occur when asset bundles failed to load.
  • Core: Assets referenced by GUISkin are now corectly retained.
  • DX11: Fixed dynamic Meshes being inefficient on DirectX 11, mostly observable on WSA/WP8.
  • DX11: Fix crash when setting ComputeBuffer stride to zero.
  • DX11: Fixed Asset Store window not working on some machines when in DirectX 11 mode.
  • DX11: Fixed crash with stacked cameras, HDR and some image effect combinations.
  • DX11: Fixed some normal maps being decoded wrong (if the normal length has exceeded 1.0).
  • DX11: Make Raw compute buffer types actually work.
  • DX11: RenderTextures properly respect depthBits now; fixes really confusing behavior when a depth buffer was always created for a RenderTexture even if no depth buffer was requested.
  • DX11: Fixed some fixed function shaders (AlphaTest or projected textures), and some Fog combinations not working properly on Intel GPUs.
 
  • Editor: Improved importing of semitransparent PSD texture files. They are premultiplied with white color; this will be accounted for in Unity now.
  • Editor: Active toolbar button rendered with correct style without a delay.
  • Editor: Animation preview rendering problems fixed.
  • Editor: AnimationWindow: Notify user if animating invalid game object hierarchy: When animating a object hiearchy user needs to ensure that names of object siblings are unique.
  • Editor: Calling Focus() on an invisible EditorWindow no longer crashes.
  • Editor: Camera frustum gizmo in Scene View now renders correctly when using normalized viewport rect.
  • Editor: Dark skin loads correctly after upgrading/activating a Pro license.
  • Editor: Displayed number of Asset Store previews in Project browser is consistent when zooming/resizing view.
  • Editor: Do not force RGBA format for normal maps when building for OpenGL ES targets.
  • Editor: Fix [HideInInspector] not working for shader properties.
  • Editor: Fix Aux Windows causing assert when closed on OS X.
  • Editor: Fix bad texture previews / mesh previews in linear lighting mode.
  • Editor: Fix broken occlusion culling overlay window.
  • Editor: Fix build target not updating correctly when switching between standalone platforms.
  • Editor: Fix color picker zoomed preview being upside down on OS X.
  • Editor: Fix copying of text in SelectableLabel in windows.
  • Editor: Fix crash if terrain alpha map textures get out of sync with the alpha map resolution setting.
  • Editor: Fix crash when loading assemblies with invalid references.
  • Editor: Fix crash while attempting to deserialize abstractly typed fields.
  • Editor: Fix flicker of progress bar when reserializing all assets to switch between text and binary serialization.
  • Editor: Fix inaccuracy caused by window margins in HandleUtility.WorldToGUIPoint() and HandleUtility.GUIPointToWorldRay().
  • Editor: Fix incorrect GameView rendering rect when having multiple GameViews.
  • Editor: Fix index out of bounds exception in BuildPlayerWindow when opening a project which was previously opened by another Unity Editor which had more platforms in the list.
  • Editor: Fix MonoBehaviour.OnApplicationFocus() on Windows platform.
  • Editor: Fix null ref when setting text mesh font with no renderer component.
  • Editor: Fix that animation window could not expand Transform components.
  • Editor: Fix that project browser multi-selection was lost when shift-selecting beyond start and end.
  • Editor: Fix that shift-delete deleted assets while renaming.
  • Editor: Fix the focus switch problem when the user press 'alt-tab' or 'ctrl-tab'.
  • Editor: Fixed "Export Package..." failing on OSX in some cases.
  • Editor: Fixed crash in lightmapping window when multi-selecting renderers.
  • Editor: Fixed crash when multi-selecting MonoBehaviours with missing scripts.
  • Editor: Fixed crash when opening scene with a reference to a prefab that has become empty.
  • Editor: Fixed empty Application.LoadLevelName after loading scene from an assetbundle.
  • Editor: Fixed forcing texture to be power of two size if PVRTC compression is selected.
  • Editor: Fixed lightmaps getting wrong compression format on platform change (between mobile and other platforms).
  • Editor: Fixed out of memory issue when building player with lots of resources files in it. Material texture references are now loaded on first use in the editor. In the player they are always preloaded.
  • Editor: Fixed Substance texture preview in some cases producing invalid mipmap bias settings.
  • Editor: Fixed that some keyboard keys could not be used for MenuItem shortcuts (e.g "," and "." can now be used).
  • Editor: Fixed wireframe scene view rendering not working on some shader model 3.0 shaders on Windows.
  • Editor: For Add Component window search function, always pick the first search result whenever the search changes.
  • Editor: Log error if user is calling GUI.Windows nested in window functions.
  • Editor: Make animated speed of transitions in AddComponent menu not be framerate dependent.
  • Editor: Make welcome dialog point to new URL for video tutorials.
  • Editor: Object Selector shows built-in shaders now.
  • Editor: Opening the Add Component window will now work when adding a MenuItem to the Components menu with priority less than 20.
  • Editor: Pasting a Particle System as a new component will now properly copy the Renderer values.
  • Editor: PropertyDrawers now also work for private members in base classes.
  • Editor: Scene view gizmo picking fixed.
  • Editor: Texture preview Labels will not be offset and clipped in some cases.
  • Editor: Throw mono exception (instead of crash), when unwrapping mesh without triangles assigned.
  • Editor: Fixed target texture size override not storing it's value correclty in the texture importer for the web player target.
  • Editor: Having a mesh asset preprocessor or doing Reset on mesh import settings no longer turns "Swap UVs" option on.
  • Fonts: Fixed embedding font data for styled fonts.
  • Fonts: Duplicating a dynamic font using Instantiate will result in garbage font rendering. User is now notified that duplicating a dynamic font is not allowed.
  • Graphics: Fix GrabPass when running fullscreen at non-native resolution on Mac and Linux.
  • Graphics: Fix linear lighting when running fullscreen at non-native resolution on Mac and Linux.
  • Graphics: Fixed "Use Lightmaps" in the Forward Rendering path, available via Lightmap Display scene view overlay.
  • Graphics: Fixed Camera.CopyFrom not copying some properties (rendering path, custom projection, layer cull distances etc.).
  • Graphics: Fixed development standalone players sometimes crashing on Windows when doing Alt-Tab.
  • Graphics: Fixed dynamic batching not working on meshes that use "Mesh Compression" import setting (regression in 4.0).
  • Graphics: Fixed incorrect scissoring of point/spot lights when a custom projection matrix is used.
  • Graphics: Fixed light "Draw Halo" checkbox not working unless there's some Halo component somewhere.
  • Graphics: Fixed point & spot lights not affecting lightmapped objects in dual-lightmap forward rendering mode.
  • Graphics: Fixed RenderTextures being invalidated in Windows Standalone player when moving the window.
  • Graphics: Made the Rendering area in the profiler show proper stats on multithreaded Win-non-dx11, Mac, iOS and Flash.
  • Graphics: Using BlendOp in a shader doesn't cause the text in the Editor to appear garbled anymore.
  • Graphics: Fixed crash on Windows standalone player exit exit when using OpenGL.
  • Graphics: Fixed legacy MeshParticleEmitter crash when the mesh has no vertices.
  • iOS: Do not render the default cursor as no iOS devices support cursors.
  • iOS: Fixed CFBundleShortVersionString setting in Info.plist.
  • iOS: Fixed crash on startup on iPhone 3GS (some versions of iOS5), where empty array of screens is returned.
  • iOS: Fixed deprecated API usage for Keyboard.
  • iOS: Fixed gyroscope restart problem.
  • iOS: Fixed memory leak in GL.InvalidateState.
  • iOS: Fixed multiline Keyboard not having "done" button.
  • iOS: Fixed Ping stripping issue.
  • iOS: Fixed static batching performance regression.
  • iOS: Fixed various issues with video playback: view stretch after canceling video, second movie in a row cannot be played, status bar is not shown after returning from video, etc.
  • iOS: Fixed Xcode launching issue when script code supplies relative path.
  • iOS: Fixed iOS player hangup issue on single core devices.
  • iOS: Improved Guid API compatibility with managed code stripping.
  • iOS: Made structs/enums in trampoline be C-style typedefs, for better interop with ObjectiveC plugins.
  • iOS: Playing two movies in a row will not cause a second movie to disappear.
  • iOS: Project will not be replaced if doing a silent build and can't append to existing build. Instead, a save dialog will be shown.
  • iOS: Unity Remote now always will report multitouch supported.
  • Lightmapping: Fixed crash when a TextMesh has been marked for lightmapping.
  • Lightmapping: Lightmap atlasing now always tightly packs object UVs based on their bounding rectangles.
  • Lightmapping: Made baking of terrains much quicker when Color Space is set to Linear.
  • Linux: Copy StreamingAssets when building player.
  • Linux: Enable native rendering plugin callbacks.
  • Linux: Fix Application.CancelQuit() and Application.OpenURL().
  • Linux: Fix crash when attempting to read a non-readable mesh.
  • Linux: Fix double-click.
  • Linux: Fix miscellaneous rendering issues on low-end intel graphics cards.
  • Linux: Fix plugin detection when the plugin resides in a subfolder (DllImport("foo/bar")).
  • Linux: Fix pointer offsets when dynamically resizing player windows.
  • Linux: Fixed keyboard shortcuts for text fields.
  • Linux: Improve ctrl/alt/shift keypress detection; improved keyboard modifier handling while typing/mousing.
  • Linux: Make handling of scroll wheel axis more consistent with other platforms.
  • Mecanim: Fixed crash with interuptible transitions.
  • Mecanim: AnimationClip.length was not returning the right value for clip created from script.
  • Mecanim: Blending between two clip with negative scaling was wrongly returning a positive scale.
  • Mecanim: Check consistency for older avatar asset. Older avatar file pre 4.0 were not valid anymore and could crash in some cases.
  • Mecanim: Fix Avatar body mask UI accuracy. Selection around the neck and upper torso was not accurate.
  • Mecanim: Fix Avatar with scale on root not reaching IK goal.
  • Mecanim: Fix Blend Tree type selector in inspector.
  • Mecanim: Fix broken blend tree visualization when using Freeform Directional blending with no motion in the center.
  • Mecanim: Fix clip's additionnal curve binding to controller's parameter when type doesn't match.
  • Mecanim: Fix crash if you set a small speed value for a state and then preview any transition going from or to this state.
  • Mecanim: Fix culling bug, at runtime if you add a new renderer it was not added to the animator's list of renderer to compute if it should update the Animator.
  • Mecanim: Fix error message UnityEngine.Transform.get_position when creating an Avatar whose mesh is not skinned.
  • Mecanim: Fix IK hand moving on Y axis on iOS.
  • Mecanim: Fix iOS precision error for IK and root motion.
  • Mecanim: Fix MatchTarget function for small characters. The matching was done in the wrong transform space.
  • Mecanim: Fix memory leak in state machine; fix memory leak with recorder.
  • Mecanim: Fix multi selection of node in animator window now correctly delete all selected node rather than just the last one.
  • Mecanim: Fix multi-edition of Animator, avatar and apply root motion field can now be multi-edited too.
  • Mecanim: Fix NullRefException when selecting a prefab with Animator Controller set to null.
  • Mecanim: Fix Reset button for Animator.
  • Mecanim: Fix StateMachine copy-paste.
  • Mecanim: Fixed crash in transition preview with 1 frame animation.
  • Mecanim: Fixed crash when building standalone with synchronized layer referencing a layer that was after the synchronized layer in the layer's list.
  • Mecanim: Fixed crash when previewing empty AnimatorController.
  • Mecanim: Fixed crash when previewing transition with state with no animation.
  • Mecanim: Fixed preview state mirror in transition preview.
  • Mecanim: Fixed transition reordering with different StateMachines.
  • Mecanim: Fixes crash when deleting or reordering some transitions; and with 0 duration transitions.
  • Mecanim: Fixes transition previewer being slow.
  • Mecanim: In some case Avatar mapping was not saved correctly when manually set by a user. Transform not attached to a renderer or without any child attached to a renderer were discarded.
  • Mecanim: OnAnimatorIK and OnAnimatorMove () won't be call anymore on disabled scripts.
  • Mecanim: Right-clicking on a state in the Animator window now properly shows the context menu.
  • Mecanim: When creating a transition from or to a blend tree with no motion, the transition duration was set to Infinity which could produce some crash or hang unity when trying to preview this transition.
  • Mecanim: Fixed transitions with transforms having negative scales.
  • Mobile: Fixed occasional crash in Substance system when loading Asset Bundles.
  • Mobile: Fixed RenderTexture.DiscardContents to correctly use glDiscardFramebufferEXT.
  • Mobile: Fixed unaligned memory accesses in BitStream.
  • Native Client: Fixed a bug in color multiplication math which could cause wrong colors to be displayed.
  • Native Client: Fixed a crash loading PNG files.
  • Native Client: Fixed asset garbage collection not to incorrectly collect assets which were still being referenced.
  • Native Client: Fixed some rendering issues with particles when the mouse is clicked.
  • Native Client: Mono is now built from our own sources and is no longer subject to the LGPL.
  • Native Client: Fix "Development Player" label always showing.
  • Native Client: Fix color of Terrain details.
  • Native Client: Fix File Access error message on start up.
  • Native Client: Fix incorrect methods being used for http requests in WWW class (POST instead of GET).
  • Native Client: Fixed a memory leak in the WWW class.
  • Native Client: Fixed a potential crash when loading unity3d files (including the game main data itself).
  • NavMesh: Fixed crash when loading scenes while NavMeshAgents are marked by "DontDestroyOnLoad".
  • NavMesh: Fixed issue where agent move state was affected when calling CompleOffMeshLink while not occupying an OffMeshLink.
  • NavMesh: Fixed issue where calling ResetPath while occupying an OffMeshLink would leave the OffMeshLink inaccessible.
  • NavMesh: Fixed issue where NavMesh.SamplePosition could return sub-optimal position for large query radius.
  • NavMesh: Fixed issue where outstanding agent path requests could get corrupted when adding new agents.
  • NavMesh: Fixed issue where remainingDistance would return too optimistic value.
  • NavMesh: Fixed regression where agent would accelerate too fast when doing moves shorter that agent diameter.
  • Physics: Changing gravity will wake up sleeping Rigidbodies.
  • Physics: Fixed a crash in raycasts against BoxColliders on 64 bit Windows.
  • Physics: Fixed a crash related to destroying colliders while Time.timeScale is zero.
  • Physics: Hinge Joints now have sane range limits.
  • Scripting: Fixes to Mono GC to avoid 'GetThreadContext' error issue on Windows.
  • Scripting: Fix constraints for Time.scale so that it cannot be negative.
  • Scripting: "new Font()" will now produce a valid Font instance (useful when programmatically generating font assets).
  • Scripting: Avoid crash if behaviors are destroyed from OnDisable.
  • Scripting: Avoid crash when creating MaterialPropertyBlock in MonoBehaviour constructor.
  • Scripting: Editor and Windows standalone should now be able to correctly use Mono.Posix assembly.
  • Scripting: Fix Windows crash on OutOfMemory.
  • Shaders: Fixed HLSL-to-GLSL shader translation when a shader modifies global variables; regression introduced in 4.1.
  • Shaders: Fixed tex2Dgrad/texCUBElod/texCUBEgrad support for mobile shaders.
  • Shaders: Fixed rare bug when a fixed function dot3 texture combiner could get wrong alpha channel state.
  • Shaders: Fixed shader keywords not being copied for instantiated materials.
  • Shaders: Fixed some surface shaders not being liked by DX11 shader compiler (errors about structs not being fully initialized).
  • Shaders: Fixed surface shader code generation if you're trying to output Normal into Emission, and are not writing to normal otherwise.
  • Shaders: Make sure that vertex shader output is always high precision on mobile; fixes some problems on Mali 6xx GPUs if you accidentally have half4 position.
  • Shaders: Worked around Cg shader code generation bug that happened on saturate(texture2D(...)); Cg was generating invalid D3D9 shader code on this.
  • Shuriken: Fix collision module such that trigger objects do not cause particle collisions.
  • Shuriken: Fixed errors when manually emitting particles with a non-unit axis of rotation.
  • Shuriken: Fixed horizontal and vertical billboard modes to be properly aligned with coordinate axes.
  • Shuriken: Fixed issue with particle systems not shutting down properly.
  • Shuriken: Fixed some gradient settings being lost when upgrading project from Unity 3.5.x to 4.x.
  • Shuriken: Fixed issue with Emit() function when the particle system has a scaled parent object. The emitter shape would be scaled incorrectly.
  • Substance: B2M instances should no longer lose their output texture references when entering/leaving Play mode.
  • Substance: Better strategy for mapping ProceduralTextures to shaders slots and for remembering custom assignments.
  • Substance: Fix crash due to a race condition on resource deallocation.
  • Substance: It is now possible to properly clone all substance graphs in a SBSAR (previously the first cloned graph would be instantiated when cloning other graphs).
  • Substance: Instance names are now properly sorted in the Inspector (B2M_10 would previously be listed before B2M_2).
  • Substance: Unnecessary reimports of multigraph Substances are no longer performed when leaving Play mode.
  • Substance: Deletion of the single remaining instance of a ProceduralMaterial in the Inspector is now prevented (this would previously result in an empty SubstanceImporter).
  • Substance: Option groups for newly cloned/instantiated substances in the Inspector no longer show only the first option from each group.
  • Substance: ProceduralMaterials attached to prefabs that were loaded in levels other than the first one and that were cloned but not modified themselves are no longer reimported after exiting Play mode.
  • Substance: ProceduralTexture::GetPixels32 now works on cloned substances.
  • Substance: SBSAR should now properly auto-refresh when the asset is modified on disk.
  • Substance: Fixed potential deadlock when using ProceduralMaterial.
  • Substance: Fixed memory leak.
  • Substance: DoNothing substances in asset bundles are no longer generated when the assetbundle is loaded, but only when RebuildTextures/Immediately is called instead.
  • Substance: Resetting a ProceduralMaterial from the Inspector no longer causes the 'Generate All Outputs' checkbox to be checked.
  • UnityGUI: Fix crash when passing a null GUIContent to various methods.
  • Web Player: Fixed regression playing back content using old grid fonts.
  • Web Player: Fixed a bug in PlayerPrefs, which made Firefox crash on close.
  • Web Player: Fixed some crashes during startup and when entering full-screen mode.
  • Webcam: Fixed Fatal Error on scene loading when WebCamTexture was used in a scene; and fixed a crash on quitting Windows Standalone players with webcam textures.
  • Webcam: When requesting user authorization to use microphone Unity was previously asking for permission to the web camera.
  • Windows: Fixed crash when closing the display resolution dialog of the player.
  • WWW: Fixed CRC calculation to give correct results.

Upgrade guide

  • See "Changes" section above!
  • iOS: We renamed AppController.mm/h to UnityAppController.mm/h to highlight the fact that we now allow your own AppDelegate (derived from UnityAppController). If you have plugins including AppController.h you can simply include UnityAppController.h instead. If you have AppController.mm/h in Plugins/iOS folders you can merge and rename them. Anyway, we urge you to consider moving to new AppDelegate model: if you needed to do some view tweaking, now you can do it without ever touching Unity's trampoline, meaning no upgrade pains.
  • Deprecation heads-up. In the next release (4.3), we plan to drop:
    • OpenGL ES 1.1 support on mobile (set Rendering Path to VertexLit in player settings and it should be very similar experience on OpenGL ES 2.0)
    • Pre-DX9 GPU support on PC (Windows/Mac/Linux). This means, NVIDIA GPUs before GeForce FX (2003), AMD GPUs before Radeon 9500 (2002) and Intel GPUs before GMA 900 (2004). Shader Model 2.0 will be the new minimum requirement.
  • MonoDevelop may fail to start correctly on Windows if an old version of Gtk# is installed on the system. Please uninstall this version, and install a newer one if still needed.
Unity 4.1.5
Unity 4.2.1