프로젝트를 위해 background에서 카메라를 사용하고자 했으나 정보가 없고, apple의 정책상 불가능 하다는 글이 구글에 있어서 포기를 하려 했습니다. 그러나 background에서 실행시키지 않으면 의미가 없다는 생각을 하며 최선을 방안을 탐색하던 중 불쑥 나타난 그 이름
pip mode...
그렇다면 pip mode란 무엇일까요?
pip mode란 picture in picture mode로서 유튜브 프리미엄을 쓰는 사람들은 화면을 최소화 하여 다른 어플을 사용할 수 있는데 그때 사용되는 것이 pip mode입니다.
즉, pip mode를 사용하면 프로젝트 초기에 구상했던 방안을 완성할 수 있다는 것이죠!!
그래서 Unity에서 pip mode를 사용하는 방법을 찾다보니
flutter_unity_widget을 사용하여 flutter로 정보를 옮기면 사용할 수 있겠다 싶었습니다.
사실 이전에 flutter로 어플을 만들고 싶어서 unity의 3D 정보를 flutter로 가져오기 위해 flutter_unity_widget을 시도했으나 여러 오류를 겪으며 결국 사용을 실패했던 기억이 있었죠....
아픈 기억을 가지고 두려움에 떨며 유튜브 튜토리얼을 차근차근 따라한 결과!!!!!!
실패
역시나 이전에 했던 방식으로 접근하니 과거에 안됐던 것이 될리가 없었죠... 하지만 여기서 포기하면 성장은 없다!!!
되지 않는 이유를 찾아보다 도달한 결론은 pub.dev에 올라온 정보를 따라해보자!!! 였습니다.
기존에는 글을 통해 따라가는 것에 대한 두려움이 있어 넘겼지만, 더 이상 물러날 곳이 없기에 정석을 따르기로 했습니다. 처음부터 차근차근 따라해서 실행시킨 결과!!!
실패 X 2
역시나 쉽지 않은 상대였습니다. 지금까지 계속 괴롭힌 Error가
위 사진과 같은
No such moduel 'Unity Framework'
였습니다.
구글에 검색해보니 많은 사람들이 위 오류를 접한 것 같았습니다(뉴비 분쇄기...).
그러나 해결책으로 써놓은 많은 답변들로도 이 오류를 물리칠 수 없었습니다. 그래서 '최근 iOS는 지원을 안하나 보다' 라고 위로하며 도망치려하던 중 발견한 공식 Discord!!
해당 채널로 들어가니 많은 분들이 존재했고 거기서 위 오류를 질문했습니다. 그 결과
- 혹시 flavors를 제대로 setting 하셨나요?
허나 flavors가 뭔지도 모르는 초 뉴비인 저는 해당 setting 법을 물어봤습니다.
그 결과 공식 문서의 거의 마지막 부분에
Flavors
라는 부분이 있다는 것을 알게되었습니다.
해당 부분의 요구에 맞게
- Runner 부분의 Configurations를 아래와 같이
- Unity-iPhone 부분의 Configurations를
위와 같이 설정하고
flutter에 공식 문서에서 제공한 코드인
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_unity_widget/flutter_unity_widget.dart';
void main() {
runApp(MaterialApp(
home: UnityDemoScreen()
));
}
class UnityDemoScreen extends StatefulWidget {
UnityDemoScreen({Key key}) : super(key: key);
@override
_UnityDemoScreenState createState() => _UnityDemoScreenState();
}
class _UnityDemoScreenState extends State<UnityDemoScreen>{
static final GlobalKey<ScaffoldState> _scaffoldKey =
GlobalKey<ScaffoldState>();
UnityWidgetController _unityWidgetController;
Widget build(BuildContext context) {
return Scaffold(
key: _scaffoldKey,
body: SafeArea(
bottom: false,
child: WillPopScope(
onWillPop: () {
// Pop the category page if Android back button is pressed.
},
child: Container(
color: colorYellow,
child: UnityWidget(
onUnityCreated: onUnityCreated,
),
),
),
),
);
}
// Callback that connects the created controller to the unity controller
void onUnityCreated(controller) {
this._unityWidgetController = controller;
}
}
를 넣고 실행시킨 결과 드디어.....
성공!!!!!!!!!
여기서 주의할 점은 Simulator에 어플을 실행시키면 여전히 오류가 나므로 실제 device에서 어플을 실행해야 하는 것 같습니다!!
To Be Continued...
'LiDAR' 카테고리의 다른 글
iOS LiDAR 화면 하단 영역만 PointCloud 검출 (0) | 2024.03.03 |
---|---|
iOS 가로 세로 모드 설정 (0) | 2024.03.03 |
Unity iOS notification (0) | 2024.02.27 |
Unity AR iOS LiDAR 활용 (0) | 2024.02.26 |
Unity AR 메모리 누수 현상 잡기 (0) | 2024.02.25 |