webgl平台导出文件只能调用js方法里面的下载功能具体实现方案如下:
1,编写jslib,创建一个DownloaderPlugin.jslib文件导入到unity代码如下:
mergeInto(LibraryManager.library, {
Download: function (str, fn) {
var msg = UTF8ToString(str);
var fname = UTF8ToString(fn);
function fixBinary(bin) {
var length = bin.length;
var buf = new ArrayBuffer(length);
var arr = new Uint8Array(buf);
for (var i = 0; i < length; i++) {
arr[i] = bin.charCodeAt(i);
}
return buf;
}
var binary = fixBinary(atob(msg));
var data = new Blob([binary]);
var link = document.createElement('a');
link.download = fname;
link.href = URL.createObjectURL(data);
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
});
2,调用,首先把需要下载的文件转成base64字符串传给js再下载这个文件,可以支持文本图片音频等各种文件,但是似乎有大小限制具体多少不清楚。具体调用方式如下:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Text;
using UnityEngine;
public class test : MonoBehaviour
{
[DllImport("__Internal")]
private static extern void Download(string base64str, string fileName);
// Start is called before the first frame update
void Start()
{
string base64str = Convert.ToBase64String(Encoding.UTF8.GetBytes("这是一个文本"));
Download(base64str, "a.txt");
}
}
这样就能下载一个文本文件了,其他类型文件用同样的方法调用。