# Unity 4.6.3

The Unity 4.6.3 release brings you some improvements and fixes. Read the release notes below for details.

For more information about the previous main release, see the [Unity 4.6 Release Notes](https://unity.com/unity/whats-new/unity-4.6).

## Release notes

### Features

- iOS: Added Metal rendering support. By default Metal will be used on capable devices. You can force graphics to be OpenGL ES 2.0/3.0 only in player settings.

### Improvements

- Asset Loading: Added names of affected assets to the error message when a hash collision occurs while generating asset bundles.
- BlackBerry: Passport device now supports landscape orientation.
- Documentation: Fixed broken links, particularly in UI docs.
- Documentation: Updated documentation for iOS 64-bit and UI.
- iOS: Added launch screen support for iPhones.
- iOS: Added PlayerSettings.shortBundleVersion which is linked to the CFBundleShortVersionString stored in the Info.plist file; this relates to short public version string. PlayerSettings.bundleVersion can now be used for full incremental build version and is linked to CFBundleVersion.
- iOS: Allow to set compile flags for already existing files in Xcode API.
- iOS/IL2CPP: Added support for async delegates (BeginInvoke/EndInvoke).
- iOS/IL2CPP: Disabled Script Debugging option when building iOS projects with IL2CPP scripting backend.
- iOS/IL2CPP: Implemented .NET classes: for ThreadPool, Asynchronous Sockets, WebRequest.
- iOS/IL2CPP: Optimize methods that use string literals and memory used for string literals.
- Shaders: Added UNITY\_NO\_SCREENSPACE\_SHADOWS, UNITY\_NO\_RGBM, UNITY\_NO\_DXT5nm macros; better to check for these instead of hardcoding checks for "GLES or GLES3" and similar.
- Shaders: MRT support on OpenGL ES 2.0 via GL\_EXT\_draw\_buffers.
- Shaders: Support for GL\_EXT\_shader\_framebuffer\_fetch. If you have a pixel shader with an "inout" color, it gets translated to use shader framebuffer fetch on GLES2/GLES3/Metal. Use UNITY\_FRAMEBUFFER\_FETCH\_AVAILABLE macro in shaders to conditionally enclose that.
- UI: Exposed IsAddedToManager on Behaviour.
- UI: Improved ordering for the EventOrdering.
- UI: Optimized adding/removing Graphics to a Canvas. It should be much cheaper to enable and disable Graphics now.

### iOS 64 bit / il2cpp fixes

A whole bunch of fixes were done for initial iOS 64 bit support (released in 4.6.2):

- Break IL instruction is now a no-op instead of a crash.
- Don't allow to select ARM64 architecture when using Mono scripting backend.
- Don't include .NET metadata into the binary.
- Ensure that the HideInInspector and ResourceRequest types are not stripped so they can be used if necessary.
- Fixed an issue with Socket.Poll, where socket instances where not removed from the list if inactive.
- Fixed Application.RequestUserAuthorization not working.
- Fixed a problem with generic classes where the generic type argument lives in a different assembly from the type definition.
- Fixed array of interfaces also being marked as interfaces.
- Fixed Attribute.GetCustomAttribute crash.
- Fixed C++ compile error for marshaled types.
- Fixed C++ compile error for methods with two or more generic arguments of the same type.
- Fixed C++ compile error when there's a struct array field in a marshalable struct that is marshaled as ByValArray.
- Fixed C++ compile error when using Interlocked.CompareExchange/Exchange with null.
- Fixed code generation for arrays of System.IntPtr, as well as IntPtr passed by reference.
- Fixed code generation for generic methods with generic instance type constraints.
- Fixed code generation for leave instructions jumping out of multiple exception handlers; fixes crash in Parse libraries.
- Fixed code generation for unsafe structs with fixed fields.
- Fixed crash in some cases when using ILeaderboard.
- Fixed crash when calling GetCustomAttributes() and one of the methods happened to have a [DllImport] attribute.
- Fixed CustomAttributes on constructors and method parameters.
- Fixed deserialization of Dictionary.
- Fixed Enum.IsDefined.
- Fixed incorrect stripping in some cases when inheriting classes with interfaces.
- Fixed issue with two dimensional arrays.
- Fixed lock statement code generation when wrapping a try/catch statement.
- Fixed memory corruption when using AssemblyName.
- Fixed MethodInfo.ReturnParameter.
- Fixed multiple Cryprography library issues.
- Fixed RakNet being unavailable on IL2CPP, causing linker errors.
- Fixed some race conditions in the low level threading primitives.
- Fixed Type.GetNestedTypes() crash.
- Fixed unsigned storage types for CustomAttributes.
- Get the correct method to invoke via a delegate that points to an interface method.
- Handle LdToken IL instruction correctly.
- Handle non-ASCII characters in names.
- Implemented dynamic library loading.
- Implemented FieldInfo.GetRawConstantValue.
- Implemented marshaling of fixed size strings as fields of structs and classes.
- Implemented support for StructLayout and FieldOffset attributes in managed code, when not using for PInvoke.
- iOS Internal profiler is now working on IL2CPP.
- Make JsonFX library work with stripping.
- Make reflection on constant fields work (with the exception of string, for which support is pending).
- Never use microcorlib for iOS/IL2CPP.
- Nullable now works correctly when being cast to/from object or T.
- Prevented a duplicate symbol linker error for projects that use zlib in a static library by renaming the zlib symbols exported from the iOS/IL2CPP version of zlib.
- Prevent the error "Cannot get stack type for Item" when "Item" is a type nested in a generic type.
- Reduced the maximum depth to which IL2CPP tries to inflate generics. This fixed an issue which caused IL2CPP to never finish on certain C# patterns.
- Runtime now attaches to native thread automatically if it's being called into from native code through reverse P/Invoke.
- Support attributes that have arrays of System.Type arguments.

### Other Fixes

- 2D: Detect when Sprite.Create is called with an invalid rectangle.
- 2D: Fixed sprite UV calculation when mipmapped NPOT sprites were used for sliced UI elements.
- AI: Fixed crash when exceeding maximum polygon count in a tile (4096).
- AI: Fixed no result when calling NavMesh.SamplePosition with infinity range argument.
- AI: NavMeshObstacle carving tessellation fixes.
- AI: Prevent occasional hang when path is requested to an invalid position (degenerate values).
- Android: Added support for ATC decompression on x86.
- Android: Fixed black screen when using some ImageEffects on Adreno 2xx devices.
- Android: Fixed crash on some NullReferenceExceptions.
- Android: Fixed TextureAtlasses with only RGBA4444 textures.
- Animation: Fixed animation event not always fired when they are at the limit of transition end.
- BlackBerry: Deploy tools on OSX now have execute flag set properly.
- Deployment Management: Prevent simultaneous launches of Unity loading wrong project.
- Editor: Fixed occasional crash when switching between DX9 and DX11 in the editor.
- iOS: Fixed a crash due to unaligned memory access.
- iOS: Fixed a crash in physics code on iOS 6.x and older.
- iOS: Fixed a typo in UnityRegisterMainViewControllerListener().
- iOS: Fixed Chinese/Japanese keyboard dismissing itself when scrolling suggestions on iPhone.
- iOS: Fixed crashes on iOS 5 devices.
- iOS: Fixed performance drop for iPhone 6+ in Zoomed Mode.
- iOS: Fixed sound stopping to work when using OnAudioFilterRead.
- iOS: Fixed the issue where Unity doesn't check if startUnity() has been called.
- iOS: Fixed various issues with Xcode project handling.
- Linux: Fixed "fullscreen to native resolution" for window managers that resize the window many times while full-screening.
- Oculus Plugin: Fixed editor crash when trying to open a project with Oculus Plugin present and an issue with Plugins not being detected if moved in the Plugins folder.
- Physics: Changing only Z position of an object which has a Rigidbody2D component no longer disturbs its X/Y interpolation.
- Scripting: Fixed issue in Mono that threw "Mono.Security.Protocol.Tls.TlsException: Bad record MAC" exception.
- Scripting: Fixed plugin verification crash on reload/shutdown.
- Scripting: Fixed regression in StopCoroutine(Coroutine) error message.
- Scripting: Fixed rare crashes on Webplayer which is most likely to happen on x64.
- Shaders: Fixed some blending modes (e.g. One Zero, Zero Zero) only working in editor.
- UI: Disabling an InputField clears the caret data now.
- UI: Fixed a memory leak with Text objects.
- UI: Fixed an issue where the ObjectField was not configured to look at the correct time.
- UI: Fixed an issue with calling disabled from OnEndEdit.
- UI: Fixed a render-to-texture issue of UI elements.
- UI: Fixed keyboard not displaying on mobile devices.
- UI: Fixed menu items in GameObject &gt; UI menu not having spaces between words. They now match component names as shown in the Inspector and in the Component menu.
- UI: Fixed screen space camera canvas using a uninitialized camera.
- UI: Fixing issue with setting InputField.value on mobile devices.
- UI: Make “ignore parent group” work properly with selectable and Graphic.
- UI: Maximum allowed internal font size (after pixels per unit have been applied) is now clamped to a maximum of 1000 to prevent majority of cases of the font rendering becoming very slow.
- UI: Prevent characterCountVisible from getting the length of a null string.
- UI: Prevent deleting selection from calling OnValueChanged multiple times.
- UI: Prevent InputField caret from positioning based on layout.
- Webcam: Fixed webcam detection on x86 first time creating WebCamTexture with empty device name.
- WebPlayer: Unity 2.x content is no longer supported on modern OSes (Windows 8+, Mac OS X 10.9+).
- Windows Standalone: Adding/removing game controllers should be detected more reliably now.
- Windows Standalone: Fallback to XInput 1.0 when XInput 1.3 is not installed on the system.
- Windows Store Apps: Fixed architecture specific plugin copying.
- Windows Store Apps: Fixed InvokeOnAppThread/InvokeOnUIThread from scripts.
