Version: 2018.2 (switch to 2018.1 or 2017.4)
Unity iOS Basics
Other Versions

Getting started with iOS development

Building games for devices like the iPhone and iPad requires a different approach than you would use for desktop PC games. Unlike the PC market, your target hardware is standardized and not as fast or powerful as a computer with a dedicated video card. Because of this, you will have to approach the development of your games for these platforms a little differently. Also, the features available in Unity for iOSApple’s mobile operating system. More info
See in Glossary
differ slightly from those for desktop PCs.

Setting up your Apple Developer account

You don’t need an Apple Developer account to buildThe process of compiling your project into a format that is ready to run on a specific platform or platforms. More info
See in Glossary
to devices; any Apple ID is sufficient for building only to your own device for testing.

However, we recommend that you set up your Apple Developer account before proceeding because you will need it to use Unity to its full potential with iOS. This includes establishing your team, adding your devices, and finalizing your provisioning profiles. All this setup is performed through Apple’s Developer website. Since this is a complex process, we have provided a basic outline of the tasks that must be completed, which can be referred to alongside the step-by-step instructions at Apple’s iPhone Developer portal.

The Unity XCode project

When you build the Unity iOS game an XCode project is generated. This project is required to sign, compile and prepare your game for distribution. See the Unity XCode project manual page for further information.

Accessing iOS functionality

Unity provides a number of scripting APIs to access the multi-touch screen, accelerometer, device geographical location system and much more. You can find out more about the script classes on the iOS scripting page.

Exposing native C, C++ or Objective-C code to scripts

Unity allows you to call custom native functions written in C, C++ or Objective-C directly from C# scriptsA piece of code that allows you to create your own Components, trigger game events, modify Component properties over time and respond to user input in any way you like. More info
See in Glossary
. To find out how to bind native functions, visit the plugins page.

Prepare your application for in-app purchases

The Unity iOS runtime allows you to download new content and you can use this feature to implement in-app purchases. See the downloadable content manual page for further information.

Splash screen customization

See the splash screen customization page to find out how to change the image your game shows while launching.

Troubleshooting and reporting crashes

If you are experiencing crashes on the iOS device, please consult the iOS troubleshooting page for a list of common issues and solutions. If you can’t find a solution here then please file a bug report for the crash (menu: Help > Report A Bug in the Unity editor).

How Unity’s iOS and desktop targets differ

Audio compression

Unity supports importing a variety of source format sound files. However when importing these files (with the exception of tracker files), they are always re-encoded to the build target format. By default, this format is Vorbis, though this can be overridden per platform to other formats (ADPCM, MP3 etc) if required. MM3 playback offers slightly better performance on iPhone compared with Vorbis playback.

PVRTC instead of DXT texture compression

Unity iOS does not support DXT textures. Instead, PVRTCPowerVR Texture Compression (PVRTC) is a fixed-rate texture format that compresses textures to significantly reduce file sizes without causing a noticable reduction in image quality. More info
See in Glossary
texture compressionA method of storing data that reduces the amount of storage space it requires. See Texture Compression3D Graphics hardware requires Textures to be compressed in specialised formats which are optimised for fast Texture sampling. More info
See in Glossary
, Animation CompressionThe method of compressing animation data to significantly reduce file sizes without causing a noticable reduction in motion quality. Animation compression is a trade off between saving on memory and image quality. More info
See in Glossary
, Audio Compression, Build Compression.
See in Glossary
is natively supported by iPhone/iPad devices. Consult the texture import settings documentation to learn more about iOS texture formatsA file format for handling textures during realtime rendering by 3D graphics hardware, such as a graphics card or mobile device. More info
See in Glossary

Movie/Video playback

We recommend you use the Video Player to play video files. This supersedes the earlier Movie Texture feature.

  • 2018–06–14 Page amended with limited editorial review

  • Video Player component added in Unity 5.6

Did you find this page useful? Please give it a rating:

Unity iOS Basics