2012-11-27 4 views
1

내가 (A 애니메이션 포함) Unity3D에 의해 생성 된 Xcode 프로젝트를 가지고 내가 (증강 현실) 애니메이션을 표시 vuforia SDK를 통합 한vuforia 및 UINavigationController가

내가 지금 가지고 문제는을 추가하는 것입니다 카메라 화면과 내 앱 대시 보드 사이의 탐색

내가 좋아하는 실용적 뒤로 버튼을 추가 해요 방법 int OpenEAGL_UnityCallback(UIWindow** window, int* screenWidth, int* screenHeight, int* openglesVersion)에서 : 래퍼 클래스에

if (wrapperObj == nil) 
{ 
    wrapperObj = [[WrapperClass alloc] init]; 
} 

[backButton addTarget:wrapperObj action:@selector(goToDashBoard:) forControlEvents:UIControlEventTouchUpInside]; 

패스가

@interface WrapperClass : NSObject 

@property (nonatomic, retain) UINavigationController *navigation; 

-(void)goToDashBoard:(UIButton*)sender; 

@end 

void goToPreviousScreen() 
{ 

} 

@implementation WrapperClass 
@synthesize navigation; 

-(void) goToDashBoard:(UIButton*)sender 
{ 
    [[self navigation] popViewControllerAnimated:YES]; 
    goToPreviousScreen(); 
} 

@end 

사람이 탐색을 구성하는 방법을 해결책으로 날 포인트 달리기?

UPDATE

이런 식으로보기 팝업하려고 : 내가 제대로 질문을 이해한다면

2012-12-05 16:20:45.502 arapp[5993:907] <HomeViewController: 0x246db00> 

StopQCAR 

(Filename: /Applications/buildAgent/work/14194e8ce88cdf47/Runtime/ExportGenerated/iPhonePlayer-armv7/UnityEngineDebug.cpp Line: 43) 

Could not deactivate dataset. 

(Filename: /Applications/buildAgent/work/14194e8ce88cdf47/Runtime/ExportGenerated/iPhonePlayer-armv7/UnityEngineDebug.cpp Line: 43) 

Could not destroy dataset. 

(Filename: /Applications/buildAgent/work/14194e8ce88cdf47/Runtime/ExportGenerated/iPhonePlayer-armv7/UnityEngineDebug.cpp Line: 43) 

Could not deinitialize the tracker. 

(Filename: /Applications/buildAgent/work/14194e8ce88cdf47/Runtime/ExportGenerated/iPhonePlayer-armv7/UnityEngineDebug.cpp Line: 43) 

Could not deinitialize the tracker. 

(Filename: /Applications/buildAgent/work/14194e8ce88cdf47/Runtime/ExportGenerated/iPhonePlayer-armv7/UnityEngineDebug.cpp Line: 43) 

ghashtable.c:294: assertion 'hash != NULL' failed 

답변

1

당신이하려고하는 :이 로그를 얻을

AppDelegate *appDelegate = [UIApplication sharedApplication].delegate; 
[appDelegate.navigationController popToRootViewControllerAnimated:YES]; 

을 파일, 뷰 콘트롤러, 코드 등을 추가하여 유니티 내장 Xcode 프로젝트를 수정하십시오. 이게 좋은 생각이 아니었고 Unity에서 앱을 가능한 한 많이 만드는 것이 훨씬 낫다는 것이 내 경험이었습니다. Vuforia의 포럼에있는 사회자는 또한 그것을 강하게 반대합니다. 이 방법으로 Unity/Vuforia 응용 프로그램을 만들었습니다. 대부분 C#으로 Unity에서이 작업을 수행하는 방법을 배우는 시간을 소비하지 않기 위해서입니다. 나는 추적 할 수 없었던 메모리 누수로 끝내고 총알을 물고 유니티로 돌아가서 유니티 스크립팅을 배워야했습니다. 당연히 유니티에는 할 수없는 많은 iOS 것들이 있습니다. 당신의 앱이 무엇인지 모르지만, 당신을 도울 수있는 많은 플러그인이 있습니다. 그리고 iOS 기능을 얻기 위해 제 자신의 플러그인을 작성하는 법을 배웠습니다. 내가 필요.

그러나 AR 뷰와 다른 뷰 컨트롤러 사이를 탐색하려면 기본적으로 오버레이 였고 탐색 용 버튼 만 포함 된 다른 viewController를 만드는 것이 었습니다. 그런 다음이를 초기화하고 UnityViewController에 하위 뷰로 추가했습니다. 그런 다음 코드를 추가하여 대시 보드와 같이 원하는보기로 이동할 수 있습니다.

// Init Vuforia VC, then add its view as subview to "view" AR view, line 524 
VuforiaViewController *vuforia = [[VuforiaViewController alloc] init]; 

// Create a full-screen window 
_window = [[UIWindow alloc] initWithFrame:rect]; 
EAGLView* view = [[EAGLView alloc] initWithFrame:rect]; 
UnityViewController *controller = [[UnityViewController alloc] init]; 

sGLViewController = controller; 
sGLView = view; 



controller.view = view; 

_splashView = [ [UIImageView alloc] initWithFrame: [[UIScreen mainScreen] bounds] ]; 
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) 
{ 
    _splashView.image = [UIImage imageNamed:SplashViewImage(UIInterfaceOrientationPortrait)]; 
} 
else 
{ 
    _splashView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 
    _splashView.autoresizesSubviews = YES; 
} 




[view addSubview:_splashView]; 
[view addSubview:vuforia.view];  // Overlay view added as subview of AR view 

앱이 시작될 때 오는에서 AR보기를 방지하기 위해 AppController가에서 startUnity()를 주석 수있어, 다시 AR보기로 얻기 위해 다른 VC에서 그것을 호출 할 수있다. 이 접근 방식을 통해 AR보기와 여러 다른 VC를 탐색 할 수 있었지만 궁극적으로 응용 프로그램이 불안정하여 Unity에서 완전히 빌드 된 응용 프로그램으로 교체해야했습니다. 어쩌면 더 좋은 방법을 찾을 수 있을지 모르지만, 앱이 원하는 것을 따라 Unity와 플러그인으로 뛰어 들기가 더 좋습니다. 희망이 도움이됩니다.

관련 문제