Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
独立线程在iOS上启动Unity_Ios_Objective C_Multithreading_Unity3d - Fatal编程技术网

独立线程在iOS上启动Unity

独立线程在iOS上启动Unity,ios,objective-c,multithreading,unity3d,Ios,Objective C,Multithreading,Unity3d,我创建了一个Unity3d项目。 我创建了一个单独的iOS项目,并将Unity库和类复制到新项目中。 我成功地完成了项目,并在项目中添加了其他UIViewController 我的问题是UnityController在主线程中工作,我不知道如何创建另一个线程,这样当Unity运行时主线程就不会被冻结 有什么建议吗 这是我的AppDelegate代码: - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOp

我创建了一个Unity3d项目。 我创建了一个单独的iOS项目,并将Unity库和类复制到新项目中。 我成功地完成了项目,并在项目中添加了其他UIViewController

我的问题是UnityController在主线程中工作,我不知道如何创建另一个线程,这样当Unity运行时主线程就不会被冻结

有什么建议吗

这是我的AppDelegate代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.

    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
    self.window.backgroundColor = [UIColor redColor];
    ViewController *viewController = [[ViewController alloc] initWithNibName:nil bundle:nil];
    self.navVC = [[UINavigationController alloc]initWithRootViewController:viewController];
    self.window.rootViewController = self.navVC;

    self.unityController = [[UnityAppController alloc] init];
    [self.unityController application:application didFinishLaunchingWithOptions:launchOptions];

    [self.window makeKeyAndVisible];
    return YES;
}
在我的ViewController上,当我按下按钮更改为unity时,我在AppDelegate中调用showUnityWindow

- (UIWindow *)unityWindow {
    return UnityGetMainWindow();
}
- (void)showUnityWindow{
    [self.unityWindow makeKeyAndVisible];
}

你知道DispatchQueue吗?是的,我知道,我以前也使用过它,但在我的代码中使用unity,我不知道如何使用它。如果我把它放在didFinishLaunchingWithOptions来初始化unity,应用程序崩溃不确定它是否可取(我以前没有使用unity),但是你能把应用程序委托中的两个unity行包装在DispatchQueue.main.async调用中吗?这样Unity就可以在主线程上工作,但当Unity冻结时,仍然可以让你管理应用程序的其余部分,这就是我的想法,但是当我包装它的时候,应用程序崩溃了是的,从这个看来Unity不会让你在任何其他线程中运行它…但是我相信你应该能够在主线程上异步运行它:PDo你知道DispatchQueue吗?是的,我知道,我以前使用过它,但是在我的代码中使用Unity,我不知道如何使用它。如果我把它放在didFinishLaunchingWithOptions来初始化unity,应用程序崩溃不确定它是否可取(我以前没有使用unity),但是你能把应用程序委托中的两个unity行包装在DispatchQueue.main.async调用中吗?这种方式Unity可以在主线程上运行,但当Unity冻结时,仍然可以让你管理应用程序的其余部分。这是我的想法,但当我包装它时,应用程序崩溃。这看起来Unity不允许你在任何其他线程中运行它……但我相信你应该能够在主线程上异步运行它:P