您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
46 行
1.7 KiB
46 行
1.7 KiB
#if !UNITY_EDITOR && UNITY_ANDROID
|
|
using UnityEngine;
|
|
using AOT;
|
|
using System;
|
|
using System.IO;
|
|
using System.Runtime.InteropServices;
|
|
using NativeBindings = Unity.UIWidgets.ui.NativeBindings;
|
|
namespace Unity.UIWidgets.engine2 {
|
|
public static class AndroidPlatformUtil {
|
|
[DllImport(NativeBindings.dllName)]
|
|
internal static extern void InitUnpackFile(UnpackFileCallback unpack);
|
|
|
|
internal delegate string UnpackFileCallback(string file);
|
|
|
|
[MonoPInvokeCallback(typeof(UnpackFileCallback))]
|
|
internal static string unpackFile(string file) {
|
|
var dir = Application.temporaryCachePath + "/";
|
|
if (!File.Exists(dir + file)) {
|
|
WWW unpackerWWW = new WWW("jar:file://" + Application.dataPath + "!/assets/" + file);
|
|
while (!unpackerWWW.isDone) {
|
|
} // This will block in the webplayer.
|
|
|
|
if (!string.IsNullOrEmpty(unpackerWWW.error)) {
|
|
Debug.Log("Error unpacking 'jar:file://" + Application.dataPath + "!/assets/" + file +
|
|
"'");
|
|
dir = "";
|
|
return dir + file;
|
|
}
|
|
System.IO.FileInfo fileInfo = new System.IO.FileInfo(dir + file);
|
|
fileInfo.Directory.Create();
|
|
System.IO.File.WriteAllBytes(fileInfo.FullName, unpackerWWW.bytes);
|
|
}
|
|
|
|
return dir + file;
|
|
}
|
|
|
|
[DllImport(NativeBindings.dllName)]
|
|
static extern System.IntPtr GetUnityContextEventFunc();
|
|
|
|
public static void Init() {
|
|
InitUnpackFile(unpackFile);
|
|
GL.IssuePluginEvent(GetUnityContextEventFunc(), 1);
|
|
}
|
|
}
|
|
}
|
|
#endif
|