구글 시트 연동 기능 확장3
This commit is contained in:
parent
82db949dc0
commit
68147e1543
@ -289,9 +289,9 @@ MonoBehaviour:
|
||||
_isAccessGoogleSheet: 1
|
||||
_googleSheetUrl: https://script.google.com/macros/s/AKfycbw8TRSl_OuY2S-RX0yvOJi1SqNqoflG0R3pWxk9GC9u_wvGQeuABZc0VH7YJ5lMrAl4/exec
|
||||
_availSheets: Food/Monster
|
||||
_generateFolderPath: /0.Datas/02.Scripts/GenerateGoogleSheet/AutoCreated
|
||||
_lastUpdated: 2025-05-12 20:31:48
|
||||
_restoreIndex: 1
|
||||
_generateFolderPath: /_Datas/02.Scripts/GenerateGoogleSheet/AutoCreated
|
||||
_lastUpdated: 2025-05-13 03:24:04
|
||||
_restoreIndex: 0
|
||||
_editorName:
|
||||
_refreshTrigger: 1
|
||||
--- !u!4 &383092898
|
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 89a023f100586884990e16b137a5b30e
|
||||
guid: eca79fbd6ba923849bafc170520d87c1
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
@ -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
|
||||
}
|
||||
]
|
||||
}
|
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b602c44d9fb135241aa54fff866bb6ee
|
||||
guid: 59c0671301dbb8f4b8929bc354d0d52c
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0b8a0f41319f9ca4296c486723e89735
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8f5408d8dd9191c469b5e4717d4da831
|
||||
guid: 593c063d566ca254c88f17d5d7ed1b36
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
@ -13,8 +13,8 @@ MonoBehaviour:
|
||||
m_Name: GoogleSheetChangeLog
|
||||
m_EditorClassIdentifier:
|
||||
_logs:
|
||||
- Editor: NTG
|
||||
Timestamp: 2025-05-12 03:31:27
|
||||
- Editor: "\uB0A8\uD0DC\uAC74"
|
||||
Timestamp: 2025-05-13 03:29:27
|
||||
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\":
|
||||
@ -36,54 +36,8 @@ MonoBehaviour:
|
||||
\"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 03:32:27
|
||||
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
|
||||
- Editor: "\uACE0\uC131\uC9C4"
|
||||
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\":
|
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 70eb4ff0fb5057744a569e016975ded0
|
||||
guid: ddcf1da52a823a242be56998cd210903
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
@ -16,39 +16,42 @@
|
||||
|
||||
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;
|
||||
|
||||
[BoxGroup("기본 설정")]
|
||||
[Tooltip("구글 시트 -> 확장 프로그램 -> Apps Script -> 새 배포(웹 앱) or 배포 관리 -> 웹 앱 URL(~~~/exec)")]
|
||||
[SerializeField]
|
||||
[SerializeField, Tooltip("구글 시트 -> 확장 프로그램 -> Apps Script -> 새 배포(웹 앱) or 배포 관리 -> 웹 앱 URL(~~~/exec)")]
|
||||
private string _googleSheetUrl;
|
||||
|
||||
[BoxGroup("기본 설정")]
|
||||
[Tooltip("적용시킬 시트의 이름을 적고, 여러 개의 시트를 적는 경우 '/'로 구분지어 시트 나열\nex) \"Sheet1/Sheet2\"")]
|
||||
[SerializeField]
|
||||
[SerializeField, Tooltip("적용시킬 시트의 이름을 적고, 여러 개의 시트를 적는 경우 '/'로 구분지어 시트 나열\nex) \"Sheet1/Sheet2\"")]
|
||||
private string _availSheets = "Sheet1/Sheet2";
|
||||
|
||||
[BoxGroup("기본 설정")] [Tooltip("Class, Json, So 생성 위치 \"/GenerateGoogleSheet\"")] [SerializeField]
|
||||
private string _generateFolderPath = "/0.Datas/02.Scripts/GenerateGoogleSheet/AutoCreated";
|
||||
[BoxGroup("기본 설정")]
|
||||
[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;
|
||||
|
||||
#if UNITY_EDITOR
|
||||
[BoxGroup("버전 복구")] [SerializeField, ValueDropdown(nameof(GetVersionOptions))]
|
||||
[BoxGroup("버전 복구")]
|
||||
[SerializeField, ValueDropdown(nameof(GetVersionOptions))]
|
||||
private int _restoreIndex;
|
||||
#endif
|
||||
|
||||
[Title("데이터 변경")]
|
||||
[BoxGroup("데이터 변경")]
|
||||
[LabelText("수정자 이름")]
|
||||
[Title("데이터 변경"), BoxGroup("데이터 변경"), LabelText("수정자 이름")]
|
||||
[SerializeField, Required("반드시 수정자 이름을 입력해야 합니다\n이력을 남길 때 표시될 사용자 이름입니다.")]
|
||||
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 _json;
|
||||
@ -79,7 +82,7 @@ private async void FetchGoogleSheet()
|
||||
{
|
||||
_availSheetArray = _availSheets.Split('/');
|
||||
|
||||
var prevLog = AssetDatabase.LoadAssetAtPath<GoogleSheetChangeLog>(ChangeLogPath);
|
||||
var prevLog = AssetDatabase.LoadAssetAtPath<GoogleSheetChangeLog>(_changeLogAssetPath);
|
||||
string previousJson = prevLog?.Logs.LastOrDefault()?.JsonSnapshot ?? "";
|
||||
|
||||
if (_isAccessGoogleSheet)
|
||||
@ -109,7 +112,7 @@ private async void FetchGoogleSheet()
|
||||
if (diffs.Count > 0)
|
||||
GoogleSheetDiffViewer.ShowWindow(diffs);
|
||||
|
||||
bool isJsonSaved = SaveFileOrSkip(JsonPath, _json);
|
||||
bool isJsonSaved = SaveFileOrSkip(_jsonFullPath, _json);
|
||||
GenerateClassFilesPerSheet(_json);
|
||||
|
||||
_lastUpdated = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
||||
@ -133,18 +136,18 @@ private bool CanFetchData()
|
||||
/// </summary>
|
||||
private void SaveChangeLog(string json)
|
||||
{
|
||||
string logsDirectory = Path.GetDirectoryName(ChangeLogPath);
|
||||
string logsDirectory = Path.GetDirectoryName(_changeLogAssetPath);
|
||||
if (!Directory.Exists(logsDirectory))
|
||||
{
|
||||
Directory.CreateDirectory(logsDirectory);
|
||||
AssetDatabase.ImportAsset(logsDirectory);
|
||||
}
|
||||
|
||||
var log = AssetDatabase.LoadAssetAtPath<GoogleSheetChangeLog>(ChangeLogPath);
|
||||
var log = AssetDatabase.LoadAssetAtPath<GoogleSheetChangeLog>(_changeLogAssetPath);
|
||||
if (log == null)
|
||||
{
|
||||
log = ScriptableObject.CreateInstance<GoogleSheetChangeLog>();
|
||||
AssetDatabase.CreateAsset(log, ChangeLogPath);
|
||||
AssetDatabase.CreateAsset(log, _changeLogAssetPath);
|
||||
}
|
||||
|
||||
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 versionLabel = $"{log.Logs.Count} - {saveTime} by {_editorName}";
|
||||
|
||||
_lastUpdated = versionLabel;
|
||||
log.Logs.Add(new GoogleSheetChangeLog.LogEntry
|
||||
{
|
||||
Editor = _editorName,
|
||||
@ -176,13 +182,12 @@ private void SaveChangeLog(string json)
|
||||
private void SaveJsonBackup(string json, string saveTime)
|
||||
{
|
||||
string safeSaveTime = saveTime.Replace(":", "-"); // 윈도우 파일 이름 안전 처리
|
||||
string folderPath = Path.Combine(Application.dataPath, "0.Datas/02.Scripts/GenerateGoogleSheet/Backups");
|
||||
|
||||
if (!Directory.Exists(folderPath))
|
||||
Directory.CreateDirectory(folderPath);
|
||||
if (!Directory.Exists(_backupFullPath))
|
||||
Directory.CreateDirectory(_backupFullPath);
|
||||
|
||||
string fileName = $"{safeSaveTime} by {_editorName}.json";
|
||||
string filePath = Path.Combine(folderPath, fileName);
|
||||
string filePath = Path.Combine(_backupFullPath, fileName);
|
||||
|
||||
File.WriteAllText(filePath, json);
|
||||
}
|
||||
@ -191,7 +196,7 @@ private void SaveJsonBackup(string json, string saveTime)
|
||||
[Button("선택한 버전과 현재 비교")]
|
||||
private void CompareWithSelectedVersion()
|
||||
{
|
||||
var log = AssetDatabase.LoadAssetAtPath<GoogleSheetChangeLog>(ChangeLogPath);
|
||||
var log = AssetDatabase.LoadAssetAtPath<GoogleSheetChangeLog>(_changeLogAssetPath);
|
||||
if (log == null || _restoreIndex < 0 || _restoreIndex >= log.Logs.Count)
|
||||
{
|
||||
Debug.LogWarning("비교할 수 있는 로그가 없습니다.");
|
||||
@ -199,7 +204,7 @@ private void CompareWithSelectedVersion()
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
@ -218,7 +223,7 @@ private void CompareWithSelectedVersion()
|
||||
[Button("선택한 버전으로 복구")]
|
||||
private void RestoreSelectedVersion()
|
||||
{
|
||||
var log = AssetDatabase.LoadAssetAtPath<GoogleSheetChangeLog>(ChangeLogPath);
|
||||
var log = AssetDatabase.LoadAssetAtPath<GoogleSheetChangeLog>(_changeLogAssetPath);
|
||||
if (log == null || _restoreIndex < 0 || _restoreIndex >= log.Logs.Count)
|
||||
{
|
||||
Debug.LogWarning("복원할 수 있는 로그가 없습니다.");
|
||||
@ -226,7 +231,7 @@ private void RestoreSelectedVersion()
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
@ -236,7 +241,7 @@ private void RestoreSelectedVersion()
|
||||
// 복원 처리
|
||||
_json = restoreJson;
|
||||
|
||||
SaveFileOrSkip(JsonPath, _json);
|
||||
SaveFileOrSkip(_jsonFullPath, _json);
|
||||
CreateGoogleSheetSo();
|
||||
_lastUpdated = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
||||
|
||||
@ -248,14 +253,13 @@ private void RestoreSelectedVersion()
|
||||
/// </summary>
|
||||
private IEnumerable<ValueDropdownItem<int>> GetVersionOptions()
|
||||
{
|
||||
var log = AssetDatabase.LoadAssetAtPath<GoogleSheetChangeLog>(ChangeLogPath);
|
||||
var log = AssetDatabase.LoadAssetAtPath<GoogleSheetChangeLog>(_changeLogAssetPath);
|
||||
if (log == null)
|
||||
yield break;
|
||||
|
||||
for (int i = 0; i < log.Logs.Count; i++)
|
||||
{
|
||||
yield return new ValueDropdownItem<int>(
|
||||
$"{i} - {log.Logs[i].Timestamp} by {log.Logs[i].Editor}", i);
|
||||
yield return new ValueDropdownItem<int>($"{i} - {log.Logs[i].Timestamp} by {log.Logs[i].Editor}", i);
|
||||
}
|
||||
}
|
||||
|
||||
@ -284,12 +288,12 @@ private async Task<string> LoadDataGoogleSheet(string url)
|
||||
/// </summary>
|
||||
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;
|
||||
}
|
||||
|
@ -6,7 +6,7 @@ EditorBuildSettings:
|
||||
serializedVersion: 2
|
||||
m_Scenes:
|
||||
- enabled: 1
|
||||
path: Assets/0.Datas/01.Scenes/SampleScene.unity
|
||||
path: Assets/_Datas/01.Scenes/SampleScene.unity
|
||||
guid: 99c9720ab356a0642a771bea13969a05
|
||||
m_configObjects:
|
||||
com.unity.addressableassets: {fileID: 11400000, guid: 8aedbecfee36f6f47b57e6359672a64f, type: 2}
|
||||
|
@ -0,0 +1,5 @@
|
||||
{
|
||||
"m_Dictionary": {
|
||||
"m_DictionaryValues": []
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user