구글 시트 연동 기능 확장3

This commit is contained in:
NTG_DESKTOP 2025-05-13 03:32:04 +09:00
parent 82db949dc0
commit 68147e1543
53 changed files with 138 additions and 92 deletions

View File

@ -289,9 +289,9 @@ MonoBehaviour:
_isAccessGoogleSheet: 1 _isAccessGoogleSheet: 1
_googleSheetUrl: https://script.google.com/macros/s/AKfycbw8TRSl_OuY2S-RX0yvOJi1SqNqoflG0R3pWxk9GC9u_wvGQeuABZc0VH7YJ5lMrAl4/exec _googleSheetUrl: https://script.google.com/macros/s/AKfycbw8TRSl_OuY2S-RX0yvOJi1SqNqoflG0R3pWxk9GC9u_wvGQeuABZc0VH7YJ5lMrAl4/exec
_availSheets: Food/Monster _availSheets: Food/Monster
_generateFolderPath: /0.Datas/02.Scripts/GenerateGoogleSheet/AutoCreated _generateFolderPath: /_Datas/02.Scripts/GenerateGoogleSheet/AutoCreated
_lastUpdated: 2025-05-12 20:31:48 _lastUpdated: 2025-05-13 03:24:04
_restoreIndex: 1 _restoreIndex: 0
_editorName: _editorName:
_refreshTrigger: 1 _refreshTrigger: 1
--- !u!4 &383092898 --- !u!4 &383092898

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 89a023f100586884990e16b137a5b30e guid: eca79fbd6ba923849bafc170520d87c1
folderAsset: yes folderAsset: yes
DefaultImporter: DefaultImporter:
externalObjects: {} externalObjects: {}

View File

@ -0,0 +1,76 @@
{
"$개요": [
{
"": "시트 생성"
}
],
"Food": [
{
"Id": "식별ID",
"Name": "이름",
"Ingredient1": "재료1",
"Ingredient2": "재료2",
"Taste1:Taste_Enum": "맛1",
"Taste2:Taste_Enum": "맛2"
},
{
"Id": "Food001",
"Name": "햇빛수프",
"Ingredient1": "극락쌀",
"Ingredient2": "햇빛당근",
"Taste1:Taste_Enum": "Bitter",
"Taste2:Taste_Enum": "Sweet"
},
{
"Id": "Food002",
"Name": "B",
"Ingredient1": 1,
"Ingredient2": 11,
"Taste1:Taste_Enum": "Spicy",
"Taste2:Taste_Enum": "Bitter"
},
{
"Id": "Food003",
"Name": "C",
"Ingredient1": 2,
"Ingredient2": 22,
"Taste1:Taste_Enum": "Fresh",
"Taste2:Taste_Enum": "None"
},
{
"Id": "Food004",
"Name": "D",
"Ingredient1": 3,
"Ingredient2": 33,
"Taste1:Taste_Enum": "Sour",
"Taste2:Taste_Enum": "Salty"
}
],
"Monster": [
{
"Id": "식별번호",
"Name": "이름",
"T1": "테스트1"
},
{
"Id": "Test001",
"Name": "A",
"T1": 1
},
{
"Id": "Test002",
"Name": "B",
"T1": 2
},
{
"Id": "Test003",
"Name": "C",
"T1": 3
},
{
"Id": "Test004",
"Name": "D",
"T1": 4
}
]
}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: b602c44d9fb135241aa54fff866bb6ee guid: 59c0671301dbb8f4b8929bc354d0d52c
TextScriptImporter: TextScriptImporter:
externalObjects: {} externalObjects: {}
userData: userData:

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 0b8a0f41319f9ca4296c486723e89735
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 8f5408d8dd9191c469b5e4717d4da831 guid: 593c063d566ca254c88f17d5d7ed1b36
folderAsset: yes folderAsset: yes
DefaultImporter: DefaultImporter:
externalObjects: {} externalObjects: {}

View File

@ -13,8 +13,8 @@ MonoBehaviour:
m_Name: GoogleSheetChangeLog m_Name: GoogleSheetChangeLog
m_EditorClassIdentifier: m_EditorClassIdentifier:
_logs: _logs:
- Editor: NTG - Editor: "\uB0A8\uD0DC\uAC74"
Timestamp: 2025-05-12 03:31:27 Timestamp: 2025-05-13 03:29:27
JsonSnapshot: "{\n \"$\uAC1C\uC694\": [\n {\n \"\": \"\uC2DC\uD2B8 \uC0DD\uC131\"\n JsonSnapshot: "{\n \"$\uAC1C\uC694\": [\n {\n \"\": \"\uC2DC\uD2B8 \uC0DD\uC131\"\n
}\n ],\n \"Food\": [\n {\n \"Id\": \"\uC2DD\uBCC4ID\",\n \"Name\": }\n ],\n \"Food\": [\n {\n \"Id\": \"\uC2DD\uBCC4ID\",\n \"Name\":
\"\uC774\uB984\",\n \"Ingredient1\": \"\uC7AC\uB8CC1\",\n \"Ingredient2\": \"\uC774\uB984\",\n \"Ingredient1\": \"\uC7AC\uB8CC1\",\n \"Ingredient2\":
@ -36,54 +36,8 @@ MonoBehaviour:
\"Name\": \"B\",\n \"T1\": 2\n },\n {\n \"Id\": \"Test003\",\n \"Name\": \"B\",\n \"T1\": 2\n },\n {\n \"Id\": \"Test003\",\n
\"Name\": \"C\",\n \"T1\": 3\n },\n {\n \"Id\": \"Test004\",\n \"Name\": \"C\",\n \"T1\": 3\n },\n {\n \"Id\": \"Test004\",\n
\"Name\": \"D\",\n \"T1\": 4\n }\n ]\n}" \"Name\": \"D\",\n \"T1\": 4\n }\n ]\n}"
- Editor: NTG - Editor: "\uACE0\uC131\uC9C4"
Timestamp: 2025-05-12 03:32:27 Timestamp: 2025-05-13 03:29:57
JsonSnapshot: "{\n \"$\uAC1C\uC694\": [\n {\n \"\": \"\uC2DC\uD2B8 \uC0DD\uC131\"\n
}\n ],\n \"Food\": [\n {\n \"Id\": \"\uC2DD\uBCC4ID\",\n \"Name\":
\"\uC774\uB984\",\n \"Ingredient1\": \"\uC7AC\uB8CC1\",\n \"Ingredient2\":
\"\uC7AC\uB8CC2\",\n \"Taste1:Taste_Enum\": \"\uB9DB1\",\n \"Taste2:Taste_Enum\":
\"\uB9DB2\"\n },\n {\n \"Id\": \"Food001\",\n \"Name\": \"\uD587\uBE5B\uC218\uD504\",\n
\"Ingredient1\": \"\uADF9\uB77D\uC300\",\n \"Ingredient2\": \"\uD587\uBE5B\uB2F9\uADFC\",\n
\"Taste1:Taste_Enum\": \"Bitter\",\n \"Taste2:Taste_Enum\": \"Sweet\"\n
},\n {\n \"Id\": \"Food002\",\n \"Name\": \"B\",\n \"Ingredient1\":
1,\n \"Ingredient2\": 4,\n \"Taste1:Taste_Enum\": \"Spicy\",\n
\"Taste2:Taste_Enum\": \"Bitter\"\n },\n {\n \"Id\": \"Food003\",\n
\"Name\": \"C\",\n \"Ingredient1\": 2,\n \"Ingredient2\": 5,\n
\"Taste1:Taste_Enum\": \"Fresh\",\n \"Taste2:Taste_Enum\": \"None\"\n
},\n {\n \"Id\": \"Food004\",\n \"Name\": \"D\",\n \"Ingredient1\":
3,\n \"Ingredient2\": 6,\n \"Taste1:Taste_Enum\": \"Sour\",\n
\"Taste2:Taste_Enum\": \"Salty\"\n }\n ],\n \"Monster\": [\n {\n
\"Id\": \"\uC2DD\uBCC4\uBC88\uD638\",\n \"Name\": \"\uC774\uB984\",\n
\"T1\": \"\uD14C\uC2A4\uD2B81\"\n },\n {\n \"Id\": \"Test001\",\n
\"Name\": \"A\",\n \"T1\": 1\n },\n {\n \"Id\": \"Test002\",\n
\"Name\": \"B\",\n \"T1\": 2\n },\n {\n \"Id\": \"Test003\",\n
\"Name\": \"C\",\n \"T1\": 3\n },\n {\n \"Id\": \"Test004\",\n
\"Name\": \"D\",\n \"T1\": 4\n }\n ]\n}"
- Editor: NTG
Timestamp: 2025-05-12 20:26:43
JsonSnapshot: "{\n \"$\uAC1C\uC694\": [\n {\n \"\": \"\uC2DC\uD2B8 \uC0DD\uC131\"\n
}\n ],\n \"Food\": [\n {\n \"Id\": \"\uC2DD\uBCC4ID\",\n \"Name\":
\"\uC774\uB984\",\n \"Ingredient1\": \"\uC7AC\uB8CC1\",\n \"Ingredient2\":
\"\uC7AC\uB8CC2\",\n \"Taste1:Taste_Enum\": \"\uB9DB1\",\n \"Taste2:Taste_Enum\":
\"\uB9DB2\"\n },\n {\n \"Id\": \"Food001\",\n \"Name\": \"\uD587\uBE5B\uC218\uD504\",\n
\"Ingredient1\": \"\uADF9\uB77D\uC300\",\n \"Ingredient2\": \"\uD587\uBE5B\uB2F9\uADFC\",\n
\"Taste1:Taste_Enum\": \"Bitter\",\n \"Taste2:Taste_Enum\": \"Sweet\"\n
},\n {\n \"Id\": \"Food002\",\n \"Name\": \"B\",\n \"Ingredient1\":
1,\n \"Ingredient2\": 4,\n \"Taste1:Taste_Enum\": \"Spicy\",\n
\"Taste2:Taste_Enum\": \"Bitter\"\n },\n {\n \"Id\": \"Food003\",\n
\"Name\": \"C\",\n \"Ingredient1\": 2,\n \"Ingredient2\": 5,\n
\"Taste1:Taste_Enum\": \"Fresh\",\n \"Taste2:Taste_Enum\": \"None\"\n
},\n {\n \"Id\": \"Food004\",\n \"Name\": \"D\",\n \"Ingredient1\":
3,\n \"Ingredient2\": 6,\n \"Taste1:Taste_Enum\": \"Sour\",\n
\"Taste2:Taste_Enum\": \"Salty\"\n }\n ],\n \"Monster\": [\n {\n
\"Id\": \"\uC2DD\uBCC4\uBC88\uD638\",\n \"Name\": \"\uC774\uB984\",\n
\"T1\": \"\uD14C\uC2A4\uD2B81\"\n },\n {\n \"Id\": \"Test001\",\n
\"Name\": \"A\",\n \"T1\": 1\n },\n {\n \"Id\": \"Test002\",\n
\"Name\": \"B\",\n \"T1\": 2\n },\n {\n \"Id\": \"Test003\",\n
\"Name\": \"C\",\n \"T1\": 3\n },\n {\n \"Id\": \"Test004\",\n
\"Name\": \"D\",\n \"T1\": 4\n }\n ]\n}"
- Editor: NTG
Timestamp: 2025-05-12 20:31:48
JsonSnapshot: "{\n \"$\uAC1C\uC694\": [\n {\n \"\": \"\uC2DC\uD2B8 \uC0DD\uC131\"\n JsonSnapshot: "{\n \"$\uAC1C\uC694\": [\n {\n \"\": \"\uC2DC\uD2B8 \uC0DD\uC131\"\n
}\n ],\n \"Food\": [\n {\n \"Id\": \"\uC2DD\uBCC4ID\",\n \"Name\": }\n ],\n \"Food\": [\n {\n \"Id\": \"\uC2DD\uBCC4ID\",\n \"Name\":
\"\uC774\uB984\",\n \"Ingredient1\": \"\uC7AC\uB8CC1\",\n \"Ingredient2\": \"\uC774\uB984\",\n \"Ingredient1\": \"\uC7AC\uB8CC1\",\n \"Ingredient2\":

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 70eb4ff0fb5057744a569e016975ded0 guid: ddcf1da52a823a242be56998cd210903
NativeFormatImporter: NativeFormatImporter:
externalObjects: {} externalObjects: {}
mainObjectFileID: 11400000 mainObjectFileID: 11400000

View File

@ -16,39 +16,42 @@
public class GoogleSheetManager : Singleton<GoogleSheetManager> public class GoogleSheetManager : Singleton<GoogleSheetManager>
{ {
[BoxGroup("기본 설정")] [Tooltip("true: google sheet, false: local json")] [SerializeField] [BoxGroup("기본 설정")]
[SerializeField, Tooltip("true: google sheet, false: local json")]
private bool _isAccessGoogleSheet = true; private bool _isAccessGoogleSheet = true;
[BoxGroup("기본 설정")] [BoxGroup("기본 설정")]
[Tooltip("구글 시트 -> 확장 프로그램 -> Apps Script -> 새 배포(웹 앱) or 배포 관리 -> 웹 앱 URL(~~~/exec)")] [SerializeField, Tooltip("구글 시트 -> 확장 프로그램 -> Apps Script -> 새 배포(웹 앱) or 배포 관리 -> 웹 앱 URL(~~~/exec)")]
[SerializeField]
private string _googleSheetUrl; private string _googleSheetUrl;
[BoxGroup("기본 설정")] [BoxGroup("기본 설정")]
[Tooltip("적용시킬 시트의 이름을 적고, 여러 개의 시트를 적는 경우 '/'로 구분지어 시트 나열\nex) \"Sheet1/Sheet2\"")] [SerializeField, Tooltip("적용시킬 시트의 이름을 적고, 여러 개의 시트를 적는 경우 '/'로 구분지어 시트 나열\nex) \"Sheet1/Sheet2\"")]
[SerializeField]
private string _availSheets = "Sheet1/Sheet2"; private string _availSheets = "Sheet1/Sheet2";
[BoxGroup("기본 설정")] [Tooltip("Class, Json, So 생성 위치 \"/GenerateGoogleSheet\"")] [SerializeField] [BoxGroup("기본 설정")]
private string _generateFolderPath = "/0.Datas/02.Scripts/GenerateGoogleSheet/AutoCreated"; [SerializeField, Tooltip("Class, Json, So 생성 위치 \"/GenerateGoogleSheet\"")]
private string _generateFolderPath = "/_Datas/02.Scripts/GenerateGoogleSheet/AutoCreated";
[Title("버전 복구")] [BoxGroup("버전 복구")] [Tooltip("마지막 업데이트 시간")] [SerializeField, ReadOnly] [Title("버전 복구"), BoxGroup("버전 복구")]
[SerializeField, Tooltip("마지막 업데이트 시간"), ReadOnly]
private string _lastUpdated; private string _lastUpdated;
#if UNITY_EDITOR #if UNITY_EDITOR
[BoxGroup("버전 복구")] [SerializeField, ValueDropdown(nameof(GetVersionOptions))] [BoxGroup("버전 복구")]
[SerializeField, ValueDropdown(nameof(GetVersionOptions))]
private int _restoreIndex; private int _restoreIndex;
#endif #endif
[Title("데이터 변경")] [Title("데이터 변경"), BoxGroup("데이터 변경"), LabelText("수정자 이름")]
[BoxGroup("데이터 변경")]
[LabelText("수정자 이름")]
[SerializeField, Required("반드시 수정자 이름을 입력해야 합니다\n이력을 남길 때 표시될 사용자 이름입니다.")] [SerializeField, Required("반드시 수정자 이름을 입력해야 합니다\n이력을 남길 때 표시될 사용자 이름입니다.")]
private string _editorName; private string _editorName;
private string JsonPath => $"{Application.dataPath}{_generateFolderPath}/GoogleSheetJson.json"; private string _baseFullPath => $"{Application.dataPath}{_generateFolderPath}";
private string _baseAssetPath => $"Assets{_generateFolderPath}";
private const string ChangeLogPath = "Assets/0.Datas/02.Scripts/GenerateGoogleSheet/Logs/GoogleSheetChangeLog.asset"; private string _jsonFullPath => $"{_baseFullPath}/GoogleSheetJson.json";
private string _changeLogAssetPath => $"{_baseAssetPath}/Logs/GoogleSheetChangeLog.asset";
private string _backupFullPath => $"{_baseFullPath}/BackUps";
private string[] _availSheetArray; private string[] _availSheetArray;
private string _json; private string _json;
@ -79,7 +82,7 @@ private async void FetchGoogleSheet()
{ {
_availSheetArray = _availSheets.Split('/'); _availSheetArray = _availSheets.Split('/');
var prevLog = AssetDatabase.LoadAssetAtPath<GoogleSheetChangeLog>(ChangeLogPath); var prevLog = AssetDatabase.LoadAssetAtPath<GoogleSheetChangeLog>(_changeLogAssetPath);
string previousJson = prevLog?.Logs.LastOrDefault()?.JsonSnapshot ?? ""; string previousJson = prevLog?.Logs.LastOrDefault()?.JsonSnapshot ?? "";
if (_isAccessGoogleSheet) if (_isAccessGoogleSheet)
@ -109,7 +112,7 @@ private async void FetchGoogleSheet()
if (diffs.Count > 0) if (diffs.Count > 0)
GoogleSheetDiffViewer.ShowWindow(diffs); GoogleSheetDiffViewer.ShowWindow(diffs);
bool isJsonSaved = SaveFileOrSkip(JsonPath, _json); bool isJsonSaved = SaveFileOrSkip(_jsonFullPath, _json);
GenerateClassFilesPerSheet(_json); GenerateClassFilesPerSheet(_json);
_lastUpdated = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); _lastUpdated = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
@ -133,18 +136,18 @@ private bool CanFetchData()
/// </summary> /// </summary>
private void SaveChangeLog(string json) private void SaveChangeLog(string json)
{ {
string logsDirectory = Path.GetDirectoryName(ChangeLogPath); string logsDirectory = Path.GetDirectoryName(_changeLogAssetPath);
if (!Directory.Exists(logsDirectory)) if (!Directory.Exists(logsDirectory))
{ {
Directory.CreateDirectory(logsDirectory); Directory.CreateDirectory(logsDirectory);
AssetDatabase.ImportAsset(logsDirectory); AssetDatabase.ImportAsset(logsDirectory);
} }
var log = AssetDatabase.LoadAssetAtPath<GoogleSheetChangeLog>(ChangeLogPath); var log = AssetDatabase.LoadAssetAtPath<GoogleSheetChangeLog>(_changeLogAssetPath);
if (log == null) if (log == null)
{ {
log = ScriptableObject.CreateInstance<GoogleSheetChangeLog>(); log = ScriptableObject.CreateInstance<GoogleSheetChangeLog>();
AssetDatabase.CreateAsset(log, ChangeLogPath); AssetDatabase.CreateAsset(log, _changeLogAssetPath);
} }
string previousJson = log.Logs.Count > 0 ? log.Logs[^1].JsonSnapshot : null; string previousJson = log.Logs.Count > 0 ? log.Logs[^1].JsonSnapshot : null;
@ -157,6 +160,9 @@ private void SaveChangeLog(string json)
} }
string saveTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); string saveTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
string versionLabel = $"{log.Logs.Count} - {saveTime} by {_editorName}";
_lastUpdated = versionLabel;
log.Logs.Add(new GoogleSheetChangeLog.LogEntry log.Logs.Add(new GoogleSheetChangeLog.LogEntry
{ {
Editor = _editorName, Editor = _editorName,
@ -176,13 +182,12 @@ private void SaveChangeLog(string json)
private void SaveJsonBackup(string json, string saveTime) private void SaveJsonBackup(string json, string saveTime)
{ {
string safeSaveTime = saveTime.Replace(":", "-"); // 윈도우 파일 이름 안전 처리 string safeSaveTime = saveTime.Replace(":", "-"); // 윈도우 파일 이름 안전 처리
string folderPath = Path.Combine(Application.dataPath, "0.Datas/02.Scripts/GenerateGoogleSheet/Backups");
if (!Directory.Exists(folderPath)) if (!Directory.Exists(_backupFullPath))
Directory.CreateDirectory(folderPath); Directory.CreateDirectory(_backupFullPath);
string fileName = $"{safeSaveTime} by {_editorName}.json"; string fileName = $"{safeSaveTime} by {_editorName}.json";
string filePath = Path.Combine(folderPath, fileName); string filePath = Path.Combine(_backupFullPath, fileName);
File.WriteAllText(filePath, json); File.WriteAllText(filePath, json);
} }
@ -191,7 +196,7 @@ private void SaveJsonBackup(string json, string saveTime)
[Button("선택한 버전과 현재 비교")] [Button("선택한 버전과 현재 비교")]
private void CompareWithSelectedVersion() private void CompareWithSelectedVersion()
{ {
var log = AssetDatabase.LoadAssetAtPath<GoogleSheetChangeLog>(ChangeLogPath); var log = AssetDatabase.LoadAssetAtPath<GoogleSheetChangeLog>(_changeLogAssetPath);
if (log == null || _restoreIndex < 0 || _restoreIndex >= log.Logs.Count) if (log == null || _restoreIndex < 0 || _restoreIndex >= log.Logs.Count)
{ {
Debug.LogWarning("비교할 수 있는 로그가 없습니다."); Debug.LogWarning("비교할 수 있는 로그가 없습니다.");
@ -199,7 +204,7 @@ private void CompareWithSelectedVersion()
} }
string restoreJson = log.Logs[_restoreIndex].JsonSnapshot; string restoreJson = log.Logs[_restoreIndex].JsonSnapshot;
string currentJson = File.Exists(JsonPath) ? File.ReadAllText(JsonPath) : ""; string currentJson = File.Exists(_jsonFullPath) ? File.ReadAllText(_jsonFullPath) : "";
List<GoogleSheetDiff> diffs = GoogleSheetFetchHelper.CompareJsonDiff(currentJson, restoreJson); List<GoogleSheetDiff> diffs = GoogleSheetFetchHelper.CompareJsonDiff(currentJson, restoreJson);
@ -218,7 +223,7 @@ private void CompareWithSelectedVersion()
[Button("선택한 버전으로 복구")] [Button("선택한 버전으로 복구")]
private void RestoreSelectedVersion() private void RestoreSelectedVersion()
{ {
var log = AssetDatabase.LoadAssetAtPath<GoogleSheetChangeLog>(ChangeLogPath); var log = AssetDatabase.LoadAssetAtPath<GoogleSheetChangeLog>(_changeLogAssetPath);
if (log == null || _restoreIndex < 0 || _restoreIndex >= log.Logs.Count) if (log == null || _restoreIndex < 0 || _restoreIndex >= log.Logs.Count)
{ {
Debug.LogWarning("복원할 수 있는 로그가 없습니다."); Debug.LogWarning("복원할 수 있는 로그가 없습니다.");
@ -226,7 +231,7 @@ private void RestoreSelectedVersion()
} }
string restoreJson = log.Logs[_restoreIndex].JsonSnapshot; string restoreJson = log.Logs[_restoreIndex].JsonSnapshot;
string currentJson = File.Exists(JsonPath) ? File.ReadAllText(JsonPath) : ""; string currentJson = File.Exists(_jsonFullPath) ? File.ReadAllText(_jsonFullPath) : "";
List<GoogleSheetDiff> diffs = GoogleSheetFetchHelper.CompareJsonDiff(currentJson, restoreJson); List<GoogleSheetDiff> diffs = GoogleSheetFetchHelper.CompareJsonDiff(currentJson, restoreJson);
@ -236,7 +241,7 @@ private void RestoreSelectedVersion()
// 복원 처리 // 복원 처리
_json = restoreJson; _json = restoreJson;
SaveFileOrSkip(JsonPath, _json); SaveFileOrSkip(_jsonFullPath, _json);
CreateGoogleSheetSo(); CreateGoogleSheetSo();
_lastUpdated = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); _lastUpdated = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
@ -248,14 +253,13 @@ private void RestoreSelectedVersion()
/// </summary> /// </summary>
private IEnumerable<ValueDropdownItem<int>> GetVersionOptions() private IEnumerable<ValueDropdownItem<int>> GetVersionOptions()
{ {
var log = AssetDatabase.LoadAssetAtPath<GoogleSheetChangeLog>(ChangeLogPath); var log = AssetDatabase.LoadAssetAtPath<GoogleSheetChangeLog>(_changeLogAssetPath);
if (log == null) if (log == null)
yield break; yield break;
for (int i = 0; i < log.Logs.Count; i++) for (int i = 0; i < log.Logs.Count; i++)
{ {
yield return new ValueDropdownItem<int>( yield return new ValueDropdownItem<int>($"{i} - {log.Logs[i].Timestamp} by {log.Logs[i].Editor}", i);
$"{i} - {log.Logs[i].Timestamp} by {log.Logs[i].Editor}", i);
} }
} }
@ -284,12 +288,12 @@ private async Task<string> LoadDataGoogleSheet(string url)
/// </summary> /// </summary>
private string LoadDataLocalJson() private string LoadDataLocalJson()
{ {
if (File.Exists(JsonPath)) if (File.Exists(_jsonFullPath))
{ {
return File.ReadAllText(JsonPath); return File.ReadAllText(_jsonFullPath);
} }
Debug.Log($"Json 파일이 존재하지 않습니다\n{JsonPath}"); Debug.Log($"Json 파일이 존재하지 않습니다\n{_jsonFullPath}");
return null; return null;
} }

View File

@ -6,7 +6,7 @@ EditorBuildSettings:
serializedVersion: 2 serializedVersion: 2
m_Scenes: m_Scenes:
- enabled: 1 - enabled: 1
path: Assets/0.Datas/01.Scenes/SampleScene.unity path: Assets/_Datas/01.Scenes/SampleScene.unity
guid: 99c9720ab356a0642a771bea13969a05 guid: 99c9720ab356a0642a771bea13969a05
m_configObjects: m_configObjects:
com.unity.addressableassets: {fileID: 11400000, guid: 8aedbecfee36f6f47b57e6359672a64f, type: 2} com.unity.addressableassets: {fileID: 11400000, guid: 8aedbecfee36f6f47b57e6359672a64f, type: 2}

View File

@ -0,0 +1,5 @@
{
"m_Dictionary": {
"m_DictionaryValues": []
}
}