Game Framework
SDK DocumentationGame EnginesUnity Engine

Unity Integration Overview

The gameframework_unity package provides complete Unity Engine integration for Flutter applications.

Features

  • Multi-Platform - Android, iOS, macOS, Windows, Linux
  • Bidirectional Communication - Flutter ↔ Unity messaging
  • Lifecycle Management - Automatic pause/resume/dispose
  • Platform Views - Native rendering with Flutter overlays
  • Data Streaming - Dynamic asset loading (optional)
  • WebGL Support - Run Unity games in Flutter Web

Installation

dependencies:
  gameframework: ^0.0.1
  gameframework_unity: ^0.0.1
flutter pub get

Basic Setup

1. Initialize Plugin

import 'package:gameframework_unity/gameframework_unity.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  UnityEnginePlugin.initialize();
  runApp(MyApp());
}

2. Add GameWidget

GameWidget(
  engineType: GameEngineType.unity,
  config: GameEngineConfig(
    runImmediately: true,
  ),
  onEngineCreated: (controller) {
    controller.sendMessage('GameManager', 'Start', '');
  },
)

3. Unity C# Scripts

Create a C# script that extends FlutterMonoBehaviour:

using GameFramework;

public class GameManager : FlutterMonoBehaviour
{
    void Start()
    {
        // Listen for Flutter messages
        MessageRouter.RegisterHandler("GameManager", HandleMessage);
    }

    void HandleMessage(string method, string data)
    {
        if (method == "Start")
        {
            StartGame();
        }
    }

    void StartGame()
    {
        // Send message to Flutter
        SendToFlutter("Flutter", "GameStarted", "success");
    }
}

Platform Support

PlatformStatusRequirements
Android✅ StableAPI 22+, ARM64
iOS✅ StableiOS 12.0+
macOS🟡 BetamacOS 10.14+
Windows🟡 BetaWindows 10+
Linux🟡 BetaUbuntu 20.04+

Unity Project Setup

Required Unity Plugins

The Unity project needs Game Framework scripts:

# Sync scripts to Unity project
game sync scripts --project /path/to/UnityProject

This adds:

  • FlutterMonoBehaviour.cs - Base class for Unity scripts
  • MessageRouter.cs - Message handling
  • BinaryMessageProtocol.cs - High-performance messaging

Build Settings

Configure Unity for Flutter integration:

  1. Scenes - Add required scenes to Build Settings
  2. Player Settings - Configure for target platforms
  3. Scripting Backend - Use IL2CPP for better performance
  4. API Level - Android API 22+ minimum

Communication

Flutter → Unity

controller.sendMessage('ObjectName', 'MethodName', 'data');

Unity → Flutter

SendToFlutter("Flutter", "MethodName", "data");

JSON Messages

// Flutter
controller.sendMessage('Player', 'UpdateStats', jsonEncode({
  'health': 100,
  'level': 5,
}));
// Unity
var stats = JsonUtility.FromJson<PlayerStats>(data);

Advanced Features

See the Unity Setup Guide for detailed configuration.

Next Steps