AR동물사전
This commit is contained in:
@@ -0,0 +1,100 @@
|
||||
using UnityEngine;
|
||||
using UnityEditor;
|
||||
using ZXing;
|
||||
using ZXing.QrCode;
|
||||
using System.IO;
|
||||
|
||||
public class QRCodeGenerator : EditorWindow
|
||||
{
|
||||
// 입력 필드
|
||||
string animalName = "";
|
||||
int qrSize = 256;
|
||||
string savePath = "Assets/QRCodes";
|
||||
|
||||
// 미리보기 텍스처
|
||||
Texture2D previewTex;
|
||||
|
||||
[MenuItem("Tools/QR Code Generator")]
|
||||
public static void ShowWindow()
|
||||
{
|
||||
GetWindow<QRCodeGenerator>("QR Code Generator");
|
||||
}
|
||||
|
||||
void OnGUI()
|
||||
{
|
||||
GUILayout.Label("QR Code Generator", EditorStyles.boldLabel);
|
||||
GUILayout.Space(10);
|
||||
|
||||
// 동물 이름 입력
|
||||
animalName = EditorGUILayout.TextField("Animal Name", animalName);
|
||||
|
||||
// QR 사이즈
|
||||
qrSize = EditorGUILayout.IntField("QR Size", qrSize);
|
||||
|
||||
// 저장 경로
|
||||
savePath = EditorGUILayout.TextField("Save Path", savePath);
|
||||
|
||||
GUILayout.Space(10);
|
||||
|
||||
// 미리보기 생성
|
||||
if (GUILayout.Button("Preview"))
|
||||
{
|
||||
if (!string.IsNullOrEmpty(animalName))
|
||||
previewTex = GenerateQR(animalName, qrSize);
|
||||
}
|
||||
|
||||
// PNG 저장
|
||||
if (GUILayout.Button("Generate & Save"))
|
||||
{
|
||||
if (!string.IsNullOrEmpty(animalName))
|
||||
SaveQR(animalName);
|
||||
}
|
||||
|
||||
GUILayout.Space(10);
|
||||
|
||||
// 미리보기 표시
|
||||
if (previewTex != null)
|
||||
{
|
||||
GUILayout.Label("Preview:");
|
||||
GUILayout.Label(previewTex, GUILayout.Width(256), GUILayout.Height(256));
|
||||
}
|
||||
}
|
||||
|
||||
// QR Texture2D 생성
|
||||
Texture2D GenerateQR(string text, int size)
|
||||
{
|
||||
var writer = new BarcodeWriter
|
||||
{
|
||||
Format = BarcodeFormat.QR_CODE,
|
||||
Options = new QrCodeEncodingOptions
|
||||
{
|
||||
Width = size,
|
||||
Height = size,
|
||||
Margin = 1
|
||||
}
|
||||
};
|
||||
|
||||
var pixels = writer.Write(text);
|
||||
var tex = new Texture2D(size, size);
|
||||
tex.SetPixels32(pixels);
|
||||
tex.Apply();
|
||||
return tex;
|
||||
}
|
||||
|
||||
// PNG 저장
|
||||
void SaveQR(string text)
|
||||
{
|
||||
if (!Directory.Exists(savePath))
|
||||
Directory.CreateDirectory(savePath);
|
||||
|
||||
var tex = GenerateQR(text, qrSize);
|
||||
var bytes = tex.EncodeToPNG();
|
||||
var path = $"{savePath}/{text}_QR.png";
|
||||
|
||||
File.WriteAllBytes(path, bytes);
|
||||
AssetDatabase.Refresh();
|
||||
|
||||
Debug.Log($"QR 저장 완료: {path}");
|
||||
previewTex = tex;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: cdd0900f6c68f1c4c8e46d3b6f006a6f
|
||||
Reference in New Issue
Block a user