我是Unity3D的新手。我的要求是在iOS本机应用程序之间安装游戏屏幕(由Unity3D构建)。
我已经在.oder中编写了.mm来继承UnityAppController.mm
#import <UIKit/UIKit.h>
#import "UnityAppController.h"
@interface TNAppController : UnityAppController
- (void)createViewHierarchyImpl;
@end
@implementation TNAppController
- (void)createViewHierarchyImpl {
UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil];
UIViewController *mainVC = [storyBoard instantiateInitialViewController];
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.rootViewController = mainVC;
_rootController = [self.window rootViewController];
_rootView = _rootController.view;
}
@end
IMPL_APP_CONTROLLER_SUBCLASS(TNAppController)
但是当我尝试分配_rootView时出现以下错误。
2015-01-29 18:21:53.298 ProductName [548:60b]->已注册单声道
模块0x136b0c0
-> applicationDidFinishLaunching()单路径[0] ='/var/mobile/Applications/A7836E0B-2F4B-4704-B359-63A7C860CB07/ProductName.app/Data/Managed'
单声道配置路径=
'/var/mobile/Applications/A7836E0B-2F4B-4704-B359-63A7C860CB07/ProductName.app/Data/Managed'
-> applicationDidBecomeActive()请求分辨率:640x1136渲染器:PowerVR SGX 543供应商:Imagination Technologies版本:
OpenGL ES 2.0 IMGSGX543-97 GL_OES_depth_texture GL_OES_depth24
GL_OES_element_index_uint GL_OES_fbo_render_mipmap GL_OES_mapbuffer
GL_OES_packed_depth_stencil GL_OES_rgb8_rgba8
GL_OES_standard_derivatives GL_OES_texture_float
GL_OES_texture_half_float GL_OES_texture_half_float_linear
GL_OES_vertex_array_object GL_EXT_blend_minmax
GL_EXT_color_buffer_half_float GL_EXT_debug_label GL_EXT_debug_marker
GL_EXT_discard_framebuffer GL_EXT_draw_instanced
GL_EXT_instanced_arrays GL_EXT_map_buffer_range
GL_EXT_occlusion_query_boolean GL_EXT_pvrtc_sRGB
GL_EXT_read_format_bgra GL_EXT_separate_shader_objects
GL_EXT_shader_framebuffer_fetch GL_EXT_shader_texture_lod
GL_EXT_shadow_samplers GL_EXT_sRGB GL_EXT_texture_filter_anisotropic
GL_EXT_texture_rg GL_EXT_texture_storage GL_APPLE_copy_texture_levels
GL_APPLE_framebuffer_multisample GL_APPLE_rgb_422 GL_APPLE_sync
GL_APPLE_texture_format_BGRA8888 GL_APPLE_texture_max_level
GL_IMG_read_format GL_IMG_texture_compression_pvrtc创建
OpenGLES2.0图形设备初始化引擎版本:4.6.1f1
(d1db7a1b5196)开始MonoManager ReloadAssembly
-完成重新加载,时间为0.072秒
遵循http://www.the-nerd.be/2014/08/06/add-unity3d-in-a-native-ios-application/中的教程
注意_rootViewController在UnityAppController.mm中的transitionToViewController方法时被垃圾回收,这被认为是错误的访问。
有什么经验吗?
谢谢一群!
最佳答案
这段代码,对我来说很好:
#import <UIKit/UIKit.h>
#import "UnityAppController.h"
#import "UI/UnityView.h"
#import "UI/UnityViewControllerBase.h"
#import "TopViewController.h"
@interface TNAppController : UnityAppController
@property (nonatomic, strong) UINavigationController *navController;
- (void)willStartWithViewController;
@end
@implementation TNAppController
- (void)willStartWithViewController:(UIViewController*)controller {
UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *mainVC = [storyBoard instantiateInitialViewController];
_rootController = [[UnityDefaultViewController alloc] init];
_rootView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
_rootController.view = _rootView;
//UnitySceneViewController *unityScene = [[UnitySceneViewController alloc] initWithNibName:nil bundle:nil];
self.navController = [[UINavigationController alloc] initWithRootViewController:mainVC];
[_rootView addSubview:self.navController.view];
/*
UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *mainVC = [storyBoard instantiateInitialViewController];
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.rootViewController = mainVC;
_rootController = [self.window rootViewController];
_rootView = _rootController.view;
*/
}
@end
IMPL_APP_CONTROLLER_SUBCLASS(TNAppController)
关于ios - 使用 Storyboard 自定义Unity3D Xcode项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28215959/