有時咱們須要修改Unity爲咱們生成的在ios上的代碼,一般可能要修改主要的是UnityAppController這個類,他是ios的UIApplicationDelegate。咱們能想到的方法就是可以繼承這個類,這在unity裏是支持的,作法是這樣的:ios
編寫你本身的類型CustomAppController,繼承自UnityAppController,而後把你的CustomAppController.mm放在plugins/IOS/下面,這個下面全部的代碼會在打包時放入xcode工程的Libraries下面,可是進入Unity裏面,如何讓程序使用我沒動controller而不是默認的那個,在main.mm中定義了一個常量AppControllerClassName,它表示unity將使用的那個類型的名字,要修改這裏。xcode
不過這裏有個自動修改的方式,只要在你的CustomAppController.mm的最前面加入ide
IMPL_APP_CONTROLLER_SUBCLASS(CustomAppController)就好了。
函數
這個宏的定義是這樣的
spa
這裏的代碼使用了object-c的一些特性,其中擴展load這個函數的意思就是,在這個類被加載到內存時執行這個事情,它會自動把main裏面的code
#define IMPL_APP_CONTROLLER_SUBCLASS(ClassName) \ @interface ClassName(OverrideAppDelegate) \ { \ } \ +(void)load; \ @end \ @implementation ClassName(OverrideAppDelegate) \ +(void)load \ { \ extern const char* AppControllerClassName; \ AppControllerClassName = #ClassName; \ } \ @endAppControllerClassName改爲你的