I have been doing a lot of research into iPhone development and have seen the light of APIs. I would like to use Xcode for the APIs but I want to use Unity for the engine. Is there a way I can integrate the APIs (like CoreMotion) into Unity so it compiles altogether so I don't have to worry about everything working together? Or are there unity APIs that do the same thing?
I am a beginning developer and need help. Links are great but explanations on how to integrate are better.
Thank you in advance!
asked Sep 10 '10 at 02:41 AM
Sure, Unity iPhone Advanced 1.7 supports "plugins" and Unity iPhone 3.0 will also support plugins (in other words, starting with 3.0 you will no longer need Unity iPhone Advanced in order to be able to use that feature).
There's a related question and answer: Specific steps to set up a plugin for iphone in XCode
There's also a couple of vendors that sell Plugins that make it very easy to access many of the iOS features that are not directly supported by Unity. One example would be: Unity 3 iPhone Plugins - Native Made Easy. As these come with full source code, they might also be a good starting point to learn the trade ;-)
EDIT: How to connect Unity scripts with plugins ... it's in the documentation but I only have a local link which wouldn't work for you, so I'm duplicating some of the information here (EDIT2: That documentation is now available online: Unity Manual > Advanced > Plugins - Pro/Mobile-Only Feature, thanks to ForceMagic for the note):
If you are using C++ (.cpp) or Objective-C (.mm) to implement the plugin you have to make sure the functions are declared with C linkage to avoid name mangling issues.
Using your plugin from C#
iPhone native plugins can be called only when deployed on the actual device, so it is recommended to wrap all native code methods with an additional C# code layer. This code could check Application.platform and call native methods only when running on the actual device and return mockup values when running in the Editor. Check the Bonjour browser sample application.
This function has three parameters : game object name, game object script method to call, message to pass to the called method. Limitations to know:
only script methods that correspond to the following signature can be called from native code :
calls to UnitySendMessage are asynchronous and have a one frame delay.