Unity3D中繼承在ios上的UIApplicationDelegate
阿新 • • 發佈:2018-11-06
有時我們需要修改Unity為我們生成的在ios上的程式碼,通常可能要修改主要的是UnityAppController這個類,他是ios的UIApplicationDelegate。我們能想到的方法就是能夠繼承這個類,這在unity裡是支援的,做法是這樣的:
編寫你自己的型別CustomAppController,繼承自UnityAppController,然後把你的CustomAppController.mm放在plugins/IOS/下面,這個下面所有的程式碼會在打包時放入xcode工程的Libraries下面,但是進入Unity裡面,程式沒使用我的controller而不是預設的那個,在main.mm中定義了一個常量AppControllerClassName,它表示unity將使用的那個型別的名字,要修改這裡。
不過這裡有個自動修改的方式,只要在你的CustomAppController.mm的最前面加入
IMPL_APP_CONTROLLER_SUBCLASS(CustomAppController)就行了。
這個巨集的定義是這樣的
#define IMPL_APP_CONTROLLER_SUBCLASS(ClassName) \ @interface ClassName(OverrideAppDelegate) \ { \ } \ +(void)load; \ @end \ @implementation ClassName(OverrideAppDelegate) \ +(void)load \ { \ extern const char* AppControllerClassName; \ AppControllerClassName = #ClassName; \ } \ @end
這裡的程式碼使用了object-c的一些特性,其中擴充套件load這個函式的意思就是,在這個類被載入到記憶體時執行這個事情,它會自動把main裡面的
AppControllerClassName改成你的
---------------------
作者:leonwei
來源:CSDN
原文:https://blog.csdn.net/leonwei/article/details/51098648
版權宣告:本文為博主原創文章,轉載請附上博文連結!