Flutter

Flutter - Unity 연동

Dean83 2023. 12. 8. 16:59

Flutter 와 유니티간 연동이 가능하다. 렌더링은 유니티에서 하고, 껍데기는 플러터에서 작업하여 유니티를 띄워준다.

Flutter의 안드로이드, ios, web에서 사용 가능하다.  

 

1. Flutter 라이브러리 설치
     - pubspec.yaml -> dependencies : 에 다음을 추가

dependencies:
	flutter_unity_widget: ^2022.2.0

 

2. Unity 에서 패키지 설치

    - https://github.com/juicycleff/flutter-unity-view-widget/tree/master/unitypackages

 

 

3. Unity쪽 세팅
     - 공통적으로 유니티 프로젝트는 Flutter 프로젝트 내부에 존재해야 한다. 플러터 프로젝트에서 
        unity 폴더를 만들고, 그 안에 유니티 프로젝트를 넣어야 한다. 
        (예 : 플러터 프로젝트 폴더 내부 -> unity -> 유니티프로젝트 -> assets, ..... 등 유니티 내부폴더들)

     - WebGL의 경우, build settings -> player settings -> 에서 publishing settings -> compression format 을 disable 한다. 

     - Android나 ios의 경우 위의 링크에서 참조하면 된다. 


4. Unity 빌드
    - 패키지를 설치했다면, 상단메뉴 Flutter -> 원하는 항목을 눌러주면 자동으로 빌드가 된다.

5. Flutter 에서 사용
     - 사용법은 매우 간단하다. 유니티 위젯만 추가하면 된다. 

import 'package:flutter_unity_widget/flutter_unity_widget.dart';
..... 

 UnityWidgetController? ctrl; // 맴버 변수로 선언.
 
 //아래 함수 선언
  void UnityCreated(controller) {
    ctrl = controller;
  }
  
   void onUnityMessage(message) {
   	.....
  }
  
    void onUnityLoaded(SceneLoaded? message) {
   	.....
  }
  
  ....
  
  Widget build(BuildContext context)
  {
  	......
    onUnityCreated: UnityCreated,
            onUnitySceneLoaded: onUnityLoaded,
            onUnityMessage: onUnityMessage);
    .....
  };


 6. Flutter -> Unity 메세지 전달
      - Unity 에서 세팅
         - 스크립트에, public void 함수명(string message) {} 를 선언한다. 
      - Flutter 
         - UnityWidget 생성시, onUnityCreated 콜백 함수에서 수신한 UnityWidgetController 를 사용해야 한다.
         - UnityWidgetController.postMessage("스크립트가 붙어있는 게임오브젝트명","위의 유니티 함수명", "문자열"); 

 

7. Unity -> Flutter 메세지 전달
     - Unity 에서 세팅

        - 아무 Gameobject의 Inspector 에서 UnityMessageManager 스크립트를 추가 한다.
        - 스크립트에서 해당 클래스 변수.SendMessageToFlutter("전달 문자열"); 을 통해 전송한다.
           - 예 : manager.SendMessageToFlutter("start");

 

     - Flutter 에서 세팅

        - unityWidget 생성시 연결한 콜백함수 onUnityMessage 에 메세지가 수신된다.

 

8. WebGL 유의점
     - Flutter를 web으로 빌드시, 유니티에서 TextMeshPro를 사용하며 한글이 들어갈 경우 페이지 로딩이 안되고 오류가
       발생한다. 플러그인 버그로 생각된다. 

 

'Flutter' 카테고리의 다른 글

Web 빌드 후 배포시 유의점  (0) 2024.01.26
DIO 를 이용한 RESTAPI 구현  (0) 2023.10.18
Gzip  (0) 2023.10.18
Protobuf (socket.io)  (0) 2023.10.18
Flutter - kotlin 간 호출  (0) 2023.10.18