一, 目标文件: UnityAppController.mm

Unity3D之iOS重写UnityAppController_UnityAppController

  1, 这个文件就是APP启动文件,里面有周期函数

二, UnityAppController.mm的重写 (必须以AppController为后缀)

  1, 原因: UnityAppController.mm是Unity打包每次都会生成的,如果我们直接改写UnityAppController.mm文件,下次打包依然会被覆盖。那就永远在悲剧了。。。。。。

  2,在Plugins/iOS下 建MyUnityAppController文件(h和m), 如下

Unity3D之iOS重写UnityAppController_iOS_02

2.1 准备MyUnityAppController.h 和 MyUnityAppController.m文件

//
// MyUnityAppController.h
// Unity-iPhone
//
// Created by mac on 2022/4/17.
//

#ifndef MyUnityAppController_h
#define MyUnityAppController_h

#import "UnityAppController.h"

@interface MyUnityAppController : UnityAppController

@end

#endif /* MyUnityAppController_h */
//
// MyUnityAppController.m
// Unity-iPhone
//
// Created by mac on 2022/4/17.
//

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "MyUnityAppController.h"

@implementation MyUnityAppController



@end
IMPL_APP_CONTROLLER_SUBCLASS(MyUnityAppController);//*以MyUnityAppController为启动项

   注意使用  IMPL_APP_CONTROLLER_SUBCLASS

    三, 重写MyUnityAppController.m实现UnityAppController.mm的相关方法

          1, didFinishLaunchingWithOptions , 游戏运行起来后就调用

               适用场景: 接SDK需要注册的时候


//
// MyUnityAppController.m
// Unity-iPhone
//
// Created by mac on 2022/4/17.
//

#import <Foundation/Foundation.h>
#import "MyUnityAppController.h"

@implementation MyUnityAppController

- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
{
[super application:application didFinishLaunchingWithOptions:launchOptions];
NSLog(@"hello by Aonaufly!");
return YES;
}
@end

IMPL_APP_CONTROLLER_SUBCLASS(MyUnityAppController);//*以MyUnityAppController为启动项