Unity
[Unity] WebGL csv 파일 다운로드하기
JiHxxn
2024. 6. 25. 18:20
1. Info Set
- csv에 들어갈 정보를 담아준다.
2. WebGL 빌드 후 Download
- 버튼 클릭 → csv Export 함수를 작동
3. csv 파일 확인
- 스크립트에서 적용한 내용들 csv 파일로 Export 완료
Unity C#
using UnityEngine;
using System.Text;
using System.Collections.Generic;
using System.Runtime.InteropServices;
public class CSVExport : MonoBehaviour
{
[SerializeField] private List<TalkAddText> TalkAddText;
[DllImport("__Internal")]
private static extern void OpenFileBrowser(string data);
string data;
void Start()
{
TalkAddText = new List<TalkAddText>();
TalkAddText.Add(new TalkAddText("1", "1"));
TalkAddText.Add(new TalkAddText("2", "2"));
TalkAddText.Add(new TalkAddText("3", "3"));
Write();
}
private void Update()
{
// 키보드 6번 버튼 클릭 시 다운로드 함수 작동
if (Input.GetKeyDown(KeyCode.Alpha6))
{
OpenFileBrowser(data);
}
}
// CSV 파일로 내보내기
private List<string[]> rowData = new List<string[]>();
void Write()
{
// 첫 번째 행 적용
string[] rowDataTemp = new string[3];
rowDataTemp[0] = "key";
rowDataTemp[1] = "talker";
rowDataTemp[2] = "talk";
rowData.Add(rowDataTemp);
// 정보 적용
for (int i = 0; i < TalkAddText.Count; i++)
{
rowDataTemp = new string[3];
rowDataTemp[0] = "Student" + i;
rowDataTemp[1] = TalkAddText[i].talker;
rowDataTemp[2] = TalkAddText[i].talk;
rowData.Add(rowDataTemp);
}
string[][] output = new string[TalkAddText.Count + 1][];
for (int i = 0; i < output.Length; i++)
{
output[i] = rowData[i];
}
int length = output.GetLength(0);
string delimiter = ",";
StringBuilder sb = new StringBuilder();
for (int index = 0; index < length; index++)
{
sb.AppendLine(string.Join(delimiter, output[index]));
}
// JavaScript에 보내줄 data
data = sb.ToString();
}
}
JavaScript(jslip)
mergeInto(LibraryManager.library, {
OpenFileBrowser: function(data) {
const str = "\\uFEFF" + UTF8ToString(data);
const blob = new Blob([str], {type: 'text/csv;charset=utf-8;'});
const url = URL.createObjectURL(blob);
const element = document.createElement('a');
element.href = url;
element.download = 'EscaperoomResult.csv';
element.click();
},
});
📒 참고자료
WebGL: 브라우저 스크립트와 상호작용 - Unity 매뉴얼