Unity3D中繼承在ios上的UIApplicationDelegate

有時咱們須要修改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改爲你的
相關文章
相關標籤/搜索