118 lines
3.5 KiB
C#
Executable File
118 lines
3.5 KiB
C#
Executable File
using System;
|
|
using System.Runtime.InteropServices;
|
|
using UnityEngine;
|
|
using UnityEngine.SceneManagement;
|
|
|
|
namespace FlutterUnityIntegration
|
|
{
|
|
public class NativeAPI
|
|
{
|
|
#if UNITY_IOS && !UNITY_EDITOR
|
|
[DllImport("__Internal")]
|
|
public static extern void OnUnityMessage(string message);
|
|
|
|
[DllImport("__Internal")]
|
|
public static extern void OnUnitySceneLoaded(string name, int buildIndex, bool isLoaded, bool IsValid);
|
|
#endif
|
|
|
|
#if UNITY_WEBGL
|
|
[DllImport("__Internal")]
|
|
public static extern void OnUnityMessageWeb(string message);
|
|
|
|
[DllImport("__Internal")]
|
|
public static extern void OnUnitySceneLoadedWeb(string name, int buildIndex, bool isLoaded, bool isValid);
|
|
#endif
|
|
|
|
public static void OnSceneLoaded(Scene scene, LoadSceneMode mode)
|
|
{
|
|
#if UNITY_ANDROID
|
|
try
|
|
{
|
|
AndroidJavaClass jc = new AndroidJavaClass("com.xraph.plugin.flutter_unity_widget.UnityPlayerUtils");
|
|
jc.CallStatic("onUnitySceneLoaded", scene.name, scene.buildIndex, scene.isLoaded, scene.IsValid());
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
Debug.Log(e.Message);
|
|
}
|
|
#elif UNITY_WEBGL
|
|
OnUnitySceneLoadedWeb(scene.name, scene.buildIndex, scene.isLoaded, scene.IsValid());
|
|
#elif UNITY_IOS && !UNITY_EDITOR
|
|
OnUnitySceneLoaded(scene.name, scene.buildIndex, scene.isLoaded, scene.IsValid());
|
|
#endif
|
|
}
|
|
|
|
public static void SendMessageToFlutter(string message)
|
|
{
|
|
#if UNITY_ANDROID
|
|
try
|
|
{
|
|
AndroidJavaClass jc = new AndroidJavaClass("com.xraph.plugin.flutter_unity_widget.UnityPlayerUtils");
|
|
jc.CallStatic("onUnityMessage", message);
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
Debug.Log(e.Message);
|
|
}
|
|
#elif UNITY_WEBGL
|
|
OnUnityMessageWeb(message);
|
|
#elif UNITY_IOS && !UNITY_EDITOR
|
|
OnUnityMessage(message);
|
|
#endif
|
|
}
|
|
|
|
public static void ShowHostMainWindow()
|
|
{
|
|
#if UNITY_ANDROID
|
|
try
|
|
{
|
|
var jc = new AndroidJavaClass("com.xraph.plugin.flutter_unity_widget.OverrideUnityActivity");
|
|
var overrideActivity = jc.GetStatic<AndroidJavaObject>("instance");
|
|
overrideActivity.Call("showMainActivity");
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
Debug.Log(e.Message);
|
|
}
|
|
#elif UNITY_IOS && !UNITY_EDITOR
|
|
// NativeAPI.showHostMainWindow();
|
|
#endif
|
|
}
|
|
|
|
public static void UnloadMainWindow()
|
|
{
|
|
#if UNITY_ANDROID
|
|
try
|
|
{
|
|
AndroidJavaClass jc = new AndroidJavaClass("com.xraph.plugin.flutter_unity_widget.OverrideUnityActivity");
|
|
AndroidJavaObject overrideActivity = jc.GetStatic<AndroidJavaObject>("instance");
|
|
overrideActivity.Call("unloadPlayer");
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
Debug.Log(e.Message);
|
|
}
|
|
#elif UNITY_IOS && !UNITY_EDITOR
|
|
// NativeAPI.unloadPlayer();
|
|
#endif
|
|
}
|
|
|
|
public static void QuitUnityWindow()
|
|
{
|
|
#if UNITY_ANDROID
|
|
try
|
|
{
|
|
AndroidJavaClass jc = new AndroidJavaClass("com.xraph.plugin.flutter_unity_widget.OverrideUnityActivity");
|
|
AndroidJavaObject overrideActivity = jc.GetStatic<AndroidJavaObject>("instance");
|
|
overrideActivity.Call("quitPlayer");
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
Debug.Log(e.Message);
|
|
}
|
|
#elif UNITY_IOS && !UNITY_EDITOR
|
|
// NativeAPI.quitPlayer();
|
|
#endif
|
|
}
|
|
}
|
|
} |