Unity
[ Unity ] IOS 포커스 잃었을 때, 화면 가리기
거두절me
2025. 2. 15. 18:39
728x90
Assets > Plugins > IOS에 AppPauseHandler.mm 파일을 추가한다.
#import <UIKit/UIKit.h>
@interface AppPauseHandler : NSObject
@end
@implementation AppPauseHandler
+ (void)load {
// 백그라운드로 전환될 때 실행
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(appWillResignActive)
name:UIApplicationWillResignActiveNotification
object:nil];
// 다시 포커스를 얻을 때 실행
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(appDidBecomeActive)
name:UIApplicationDidBecomeActiveNotification
object:nil];
}
+ (void)appWillResignActive {
// 유니티 화면을 덮을 검은색 뷰 추가
UIView *blackView = [[UIView alloc] initWithFrame:[UIScreen mainScreen].bounds];
blackView.backgroundColor = [UIColor blackColor];
blackView.tag = 9999; // 태그 추가 (나중에 제거하기 위함)
dispatch_async(dispatch_get_main_queue(), ^{
UIWindow *window = [UIApplication sharedApplication].keyWindow;
if (window) {
[window addSubview:blackView];
}
});
}
+ (void)appDidBecomeActive {
// 다시 게임으로 돌아올 때 검은 화면 제거
dispatch_async(dispatch_get_main_queue(), ^{
UIWindow *window = [UIApplication sharedApplication].keyWindow;
UIView *blackView = [window viewWithTag:9999];
if (blackView) {
[blackView removeFromSuperview];
}
});
}
@end
이렇게 하면 포커스를 잃었을 때 검은 화면이 나오고, 다시 포커스 찾았을때 복구된다.