구글 시트 기능 수정

This commit is contained in:
NTG_DESKTOP 2025-05-13 19:24:58 +09:00
parent 6c9283ed6e
commit 38bbe9b697
49 changed files with 40 additions and 1560 deletions

View File

@ -50,9 +50,9 @@ MonoBehaviour:
m_CheckForContentUpdateRestrictionsOption: 0 m_CheckForContentUpdateRestrictionsOption: 0
m_MonoScriptBundleCustomNaming: m_MonoScriptBundleCustomNaming:
m_RemoteCatalogBuildPath: m_RemoteCatalogBuildPath:
m_Id: cb8a3716c5e5eae4c968a7c055b25814 m_Id: 30b8e03fd76b09f46850a05b2650884d
m_RemoteCatalogLoadPath: m_RemoteCatalogLoadPath:
m_Id: 9b57c3bf4ae74bd408f442d8caaa93c1 m_Id: 7852182deca226a488adf0342a6f6c9a
m_ContentStateBuildPathProfileVariableName: <default settings path> m_ContentStateBuildPathProfileVariableName: <default settings path>
m_CustomContentStateBuildPath: m_CustomContentStateBuildPath:
m_ContentStateBuildPath: m_ContentStateBuildPath:

View File

@ -14,19 +14,7 @@ MonoBehaviour:
m_EditorClassIdentifier: m_EditorClassIdentifier:
m_GroupName: GoogleSheetSo_Group m_GroupName: GoogleSheetSo_Group
m_GUID: 7fe0c33d351391a45a0ea3c93ecef42e m_GUID: 7fe0c33d351391a45a0ea3c93ecef42e
m_SerializeEntries: m_SerializeEntries: []
- m_GUID: 1542a7a4161005c4baf6262cdf5f4ac7
m_Address: MonsterSo
m_ReadOnly: 0
m_SerializedLabels:
- GoogleSheetSo
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: ccb6f7909b5ffd94499bbeaef45086be
m_Address: FoodSo
m_ReadOnly: 0
m_SerializedLabels:
- GoogleSheetSo
FlaggedDuringContentUpdateRestriction: 0
m_ReadOnly: 0 m_ReadOnly: 0
m_Settings: {fileID: 11400000, guid: d12ffbb6f886d48418efb0b6d15ccb88, type: 2} m_Settings: {fileID: 11400000, guid: d12ffbb6f886d48418efb0b6d15ccb88, type: 2}
m_SchemaSet: m_SchemaSet:

View File

@ -290,7 +290,7 @@ MonoBehaviour:
_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: /_Datas/02.Scripts/GenerateGoogleSheet/AutoCreated _generateFolderPath: /_Datas/02.Scripts/GenerateGoogleSheet/AutoCreated
_currentVersion: "7 - 2025-05-13 16:44:24 by \uB0A8\uD0DC\uAC74" _currentVersion: "0 - 2025-05-13 19:23:45 by \uB0A8\uD0DC\uAC74"
_restoreIndex: 0 _restoreIndex: 0
_editorName: _editorName:
_refreshTrigger: 1 _refreshTrigger: 1

View File

@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: 68c35d02b1414b34f87d8c3169f743e5
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: 46bf69576c1d1b24ebce48222bcb0a4d
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,81 +0,0 @@
{
"$개요": [
{
"": "시트 생성"
}
],
"Food": [
{
"Id:string": "식별ID",
"Name:string": "이름",
"Ingredient1:string": "재료1",
"Ingredient2:string": "재료2",
"Taste1:Taste_Enum": "맛1",
"Taste2:Taste_Enum": "맛2",
"Sprite:Sprite": "Addressable 이미지 이름"
},
{
"Id:string": "Food001",
"Name:string": "햇빛수프",
"Ingredient1:string": "극락쌀",
"Ingredient2:string": "햇빛당근",
"Taste1:Taste_Enum": "Bitter",
"Taste2:Taste_Enum": "Sweet",
"Sprite:Sprite": "Gold"
},
{
"Id:string": "Food002",
"Name:string": "B",
"Ingredient1:string": 1,
"Ingredient2:string": 4,
"Taste1:Taste_Enum": "Spicy",
"Taste2:Taste_Enum": "Bitter",
"Sprite:Sprite": ""
},
{
"Id:string": "Food003",
"Name:string": "C",
"Ingredient1:string": 2,
"Ingredient2:string": 5,
"Taste1:Taste_Enum": "Fresh",
"Taste2:Taste_Enum": "None",
"Sprite:Sprite": ""
},
{
"Id:string": "Food004",
"Name:string": "D",
"Ingredient1:string": 3,
"Ingredient2:string": 6,
"Taste1:Taste_Enum": "Sour",
"Taste2:Taste_Enum": "Salty",
"Sprite:Sprite": ""
}
],
"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,7 +0,0 @@
fileFormatVersion: 2
guid: 07e7795754f7da943976cb3e16c363d8
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,81 +0,0 @@
{
"$개요": [
{
"": "시트 생성"
}
],
"Food": [
{
"Id:string": "식별ID",
"Name:string": "이름",
"Ingredient1:string": "재료1",
"Ingredient2:string": "재료2",
"Taste1:Taste_Enum": "맛1",
"Taste2:Taste_Enum": "맛2",
"Sprite:Sprite": "Addressable 이미지 이름"
},
{
"Id:string": "Food001",
"Name:string": "햇빛수프",
"Ingredient1:string": "극락쌀",
"Ingredient2:string": "햇빛당근",
"Taste1:Taste_Enum": "Bitter",
"Taste2:Taste_Enum": "Sweet",
"Sprite:Sprite": "Gold"
},
{
"Id:string": "Food002",
"Name:string": "B",
"Ingredient1:string": 1,
"Ingredient2:string": 11,
"Taste1:Taste_Enum": "Spicy",
"Taste2:Taste_Enum": "Bitter",
"Sprite:Sprite": ""
},
{
"Id:string": "Food003",
"Name:string": "C",
"Ingredient1:string": 2,
"Ingredient2:string": 22,
"Taste1:Taste_Enum": "Fresh",
"Taste2:Taste_Enum": "None",
"Sprite:Sprite": ""
},
{
"Id:string": "Food004",
"Name:string": "D",
"Ingredient1:string": 3,
"Ingredient2:string": 33,
"Taste1:Taste_Enum": "Sour",
"Taste2:Taste_Enum": "Salty",
"Sprite:Sprite": ""
}
],
"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,7 +0,0 @@
fileFormatVersion: 2
guid: 2f85d1030505c1a46b9c4b296dfd1213
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,81 +0,0 @@
{
"$개요": [
{
"": "시트 생성"
}
],
"Food": [
{
"Id:string": "식별ID",
"Name:string": "이름",
"Ingredient1:string": "재료1",
"Ingredient2:string": "재료2",
"Taste1:Taste_Enum": "맛1",
"Taste2:Taste_Enum": "맛2",
"Sprite:Sprite": "Addressable 이미지 이름"
},
{
"Id:string": "Food001",
"Name:string": "햇빛수프",
"Ingredient1:string": "극락쌀",
"Ingredient2:string": "햇빛당근",
"Taste1:Taste_Enum": "Bitter",
"Taste2:Taste_Enum": "Sweet",
"Sprite:Sprite": "Gold"
},
{
"Id:string": "Food002",
"Name:string": "B",
"Ingredient1:string": 1,
"Ingredient2:string": 7,
"Taste1:Taste_Enum": "Spicy",
"Taste2:Taste_Enum": "Bitter",
"Sprite:Sprite": ""
},
{
"Id:string": "Food003",
"Name:string": "C",
"Ingredient1:string": 2,
"Ingredient2:string": 7,
"Taste1:Taste_Enum": "Fresh",
"Taste2:Taste_Enum": "None",
"Sprite:Sprite": ""
},
{
"Id:string": "Food004",
"Name:string": "D",
"Ingredient1:string": 3,
"Ingredient2:string": 7,
"Taste1:Taste_Enum": "Sour",
"Taste2:Taste_Enum": "Salty",
"Sprite:Sprite": ""
}
],
"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,7 +0,0 @@
fileFormatVersion: 2
guid: f7e7c66cf0ba20d4f9f69ec1de7247c7
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,81 +0,0 @@
{
"$개요": [
{
"": "시트 생성"
}
],
"Food": [
{
"Id:string": "식별ID",
"Name:string": "이름",
"Ingredient1:string": "재료1",
"Ingredient2:string": "재료2",
"Taste1:Taste_Enum": "맛1",
"Taste2:Taste_Enum": "맛2",
"Sprite:Sprite": "Addressable 이미지 이름"
},
{
"Id:string": "Food001",
"Name:string": "햇빛수프",
"Ingredient1:string": "극락쌀",
"Ingredient2:string": "햇빛당근",
"Taste1:Taste_Enum": "Bitter",
"Taste2:Taste_Enum": "Sweet",
"Sprite:Sprite": "Gold"
},
{
"Id:string": "Food002",
"Name:string": "B",
"Ingredient1:string": 1,
"Ingredient2:string": 8,
"Taste1:Taste_Enum": "Spicy",
"Taste2:Taste_Enum": "Bitter",
"Sprite:Sprite": ""
},
{
"Id:string": "Food003",
"Name:string": "C",
"Ingredient1:string": 2,
"Ingredient2:string": 8,
"Taste1:Taste_Enum": "Fresh",
"Taste2:Taste_Enum": "None",
"Sprite:Sprite": ""
},
{
"Id:string": "Food004",
"Name:string": "D",
"Ingredient1:string": 3,
"Ingredient2:string": 8,
"Taste1:Taste_Enum": "Sour",
"Taste2:Taste_Enum": "Salty",
"Sprite:Sprite": ""
}
],
"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,7 +0,0 @@
fileFormatVersion: 2
guid: fd833067e5a7f804baef09baccca5d35
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,81 +0,0 @@
{
"$개요": [
{
"": "시트 생성"
}
],
"Food": [
{
"Id:string": "식별ID",
"Name:string": "이름",
"Ingredient1:string": "재료1",
"Ingredient2:string": "재료2",
"Taste1:Taste_Enum": "맛1",
"Taste2:Taste_Enum": "맛2",
"Sprite:Sprite": "Addressable 이미지 이름"
},
{
"Id:string": "Food001",
"Name:string": "햇빛수프",
"Ingredient1:string": "극락쌀",
"Ingredient2:string": "햇빛당근",
"Taste1:Taste_Enum": "Bitter",
"Taste2:Taste_Enum": "Sweet",
"Sprite:Sprite": "Gold"
},
{
"Id:string": "Food002",
"Name:string": "B",
"Ingredient1:string": 1,
"Ingredient2:string": 9,
"Taste1:Taste_Enum": "Spicy",
"Taste2:Taste_Enum": "Bitter",
"Sprite:Sprite": ""
},
{
"Id:string": "Food003",
"Name:string": "C",
"Ingredient1:string": 2,
"Ingredient2:string": 9,
"Taste1:Taste_Enum": "Fresh",
"Taste2:Taste_Enum": "None",
"Sprite:Sprite": ""
},
{
"Id:string": "Food004",
"Name:string": "D",
"Ingredient1:string": 3,
"Ingredient2:string": 9,
"Taste1:Taste_Enum": "Sour",
"Taste2:Taste_Enum": "Salty",
"Sprite:Sprite": ""
}
],
"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,7 +0,0 @@
fileFormatVersion: 2
guid: 9fabf60774f9a7941b5c170871ca941c
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,81 +0,0 @@
{
"$개요": [
{
"": "시트 생성"
}
],
"Food": [
{
"Id:string": "식별ID",
"Name:string": "이름",
"Ingredient1:string": "재료1",
"Ingredient2:string": "재료2",
"Taste1:Taste_Enum": "맛1",
"Taste2:Taste_Enum": "맛2",
"Sprite:Sprite": "Addressable 이미지 이름"
},
{
"Id:string": "Food001",
"Name:string": "햇빛수프",
"Ingredient1:string": "극락쌀",
"Ingredient2:string": "햇빛당근",
"Taste1:Taste_Enum": "Bitter",
"Taste2:Taste_Enum": "Sweet",
"Sprite:Sprite": "Gold"
},
{
"Id:string": "Food002",
"Name:string": "B",
"Ingredient1:string": 1,
"Ingredient2:string": 333,
"Taste1:Taste_Enum": "Spicy",
"Taste2:Taste_Enum": "Bitter",
"Sprite:Sprite": ""
},
{
"Id:string": "Food003",
"Name:string": "C",
"Ingredient1:string": 2,
"Ingredient2:string": 444,
"Taste1:Taste_Enum": "Fresh",
"Taste2:Taste_Enum": "None",
"Sprite:Sprite": ""
},
{
"Id:string": "Food004",
"Name:string": "D",
"Ingredient1:string": 3,
"Ingredient2:string": 555,
"Taste1:Taste_Enum": "Sour",
"Taste2:Taste_Enum": "Salty",
"Sprite:Sprite": ""
}
],
"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,7 +0,0 @@
fileFormatVersion: 2
guid: 2252c8d797af75e49adb65a24069c094
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,81 +0,0 @@
{
"$개요": [
{
"": "시트 생성"
}
],
"Food": [
{
"Id:string": "식별ID",
"Name:string": "이름",
"Ingredient1:string": "재료1",
"Ingredient2:string": "재료2",
"Taste1:Taste_Enum": "맛1",
"Taste2:Taste_Enum": "맛2",
"Sprite:Sprite": "Addressable 이미지 이름"
},
{
"Id:string": "Food001",
"Name:string": "햇빛수프",
"Ingredient1:string": "극락쌀",
"Ingredient2:string": "햇빛당근",
"Taste1:Taste_Enum": "Bitter",
"Taste2:Taste_Enum": "Sweet",
"Sprite:Sprite": "Gold"
},
{
"Id:string": "Food002",
"Name:string": "B",
"Ingredient1:string": 1,
"Ingredient2:string": 222,
"Taste1:Taste_Enum": "Spicy",
"Taste2:Taste_Enum": "Bitter",
"Sprite:Sprite": ""
},
{
"Id:string": "Food003",
"Name:string": "C",
"Ingredient1:string": 2,
"Ingredient2:string": 333,
"Taste1:Taste_Enum": "Fresh",
"Taste2:Taste_Enum": "None",
"Sprite:Sprite": ""
},
{
"Id:string": "Food004",
"Name:string": "D",
"Ingredient1:string": 3,
"Ingredient2:string": 444,
"Taste1:Taste_Enum": "Sour",
"Taste2:Taste_Enum": "Salty",
"Sprite:Sprite": ""
}
],
"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,7 +0,0 @@
fileFormatVersion: 2
guid: cd40e1a2187a0764e8770d553ae71bd4
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,81 +0,0 @@
{
"$개요": [
{
"": "시트 생성"
}
],
"Food": [
{
"Id:string": "식별ID",
"Name:string": "이름",
"Ingredient1:string": "재료1",
"Ingredient2:string": "재료2",
"Taste1:Taste_Enum": "맛1",
"Taste2:Taste_Enum": "맛2",
"Sprite:Sprite": "Addressable 이미지 이름"
},
{
"Id:string": "Food001",
"Name:string": "햇빛수프",
"Ingredient1:string": "극락쌀",
"Ingredient2:string": "햇빛당근",
"Taste1:Taste_Enum": "Bitter",
"Taste2:Taste_Enum": "Sweet",
"Sprite:Sprite": "Gold"
},
{
"Id:string": "Food002",
"Name:string": "B",
"Ingredient1:string": 1,
"Ingredient2:string": 8,
"Taste1:Taste_Enum": "Spicy",
"Taste2:Taste_Enum": "Bitter",
"Sprite:Sprite": ""
},
{
"Id:string": "Food003",
"Name:string": "C",
"Ingredient1:string": 2,
"Ingredient2:string": 6,
"Taste1:Taste_Enum": "Fresh",
"Taste2:Taste_Enum": "None",
"Sprite:Sprite": ""
},
{
"Id:string": "Food004",
"Name:string": "D",
"Ingredient1:string": 3,
"Ingredient2:string": 7,
"Taste1:Taste_Enum": "Sour",
"Taste2:Taste_Enum": "Salty",
"Sprite:Sprite": ""
}
],
"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,7 +0,0 @@
fileFormatVersion: 2
guid: d2ca60b3390812642a7c5d3f4f2315a5
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,81 +0,0 @@
{
"$개요": [
{
"": "시트 생성"
}
],
"Food": [
{
"Id:string": "식별ID",
"Name:string": "이름",
"Ingredient1:string": "재료1",
"Ingredient2:string": "재료2",
"Taste1:Taste_Enum": "맛1",
"Taste2:Taste_Enum": "맛2",
"Sprite:Sprite": "Addressable 이미지 이름"
},
{
"Id:string": "Food001",
"Name:string": "햇빛수프",
"Ingredient1:string": "극락쌀",
"Ingredient2:string": "햇빛당근",
"Taste1:Taste_Enum": "Bitter",
"Taste2:Taste_Enum": "Sweet",
"Sprite:Sprite": "Gold"
},
{
"Id:string": "Food002",
"Name:string": "B",
"Ingredient1:string": 1,
"Ingredient2:string": 123123,
"Taste1:Taste_Enum": "Spicy",
"Taste2:Taste_Enum": "Bitter",
"Sprite:Sprite": ""
},
{
"Id:string": "Food003",
"Name:string": "C",
"Ingredient1:string": 2,
"Ingredient2:string": 123123,
"Taste1:Taste_Enum": "Fresh",
"Taste2:Taste_Enum": "None",
"Sprite:Sprite": ""
},
{
"Id:string": "Food004",
"Name:string": "D",
"Ingredient1:string": 3,
"Ingredient2:string": 123123,
"Taste1:Taste_Enum": "Sour",
"Taste2:Taste_Enum": "Salty",
"Sprite:Sprite": ""
}
],
"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,7 +0,0 @@
fileFormatVersion: 2
guid: 310fc35bc8fc3fb4d8428fde47834a19
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,81 +0,0 @@
{
"$개요": [
{
"": "시트 생성"
}
],
"Food": [
{
"Id:string": "식별ID",
"Name:string": "이름",
"Ingredient1:string": "재료1",
"Ingredient2:string": "재료2",
"Taste1:Taste_Enum": "맛1",
"Taste2:Taste_Enum": "맛2",
"Sprite:Sprite": "Addressable 이미지 이름"
},
{
"Id:string": "Food001",
"Name:string": "햇빛수프",
"Ingredient1:string": "극락쌀",
"Ingredient2:string": "햇빛당근",
"Taste1:Taste_Enum": "Bitter",
"Taste2:Taste_Enum": "Sweet",
"Sprite:Sprite": "Gold"
},
{
"Id:string": "Food002",
"Name:string": "B",
"Ingredient1:string": 1,
"Ingredient2:string": 1,
"Taste1:Taste_Enum": "Spicy",
"Taste2:Taste_Enum": "Bitter",
"Sprite:Sprite": ""
},
{
"Id:string": "Food003",
"Name:string": "C",
"Ingredient1:string": 2,
"Ingredient2:string": 1,
"Taste1:Taste_Enum": "Fresh",
"Taste2:Taste_Enum": "None",
"Sprite:Sprite": ""
},
{
"Id:string": "Food004",
"Name:string": "D",
"Ingredient1:string": 3,
"Ingredient2:string": 1,
"Taste1:Taste_Enum": "Sour",
"Taste2:Taste_Enum": "Salty",
"Sprite:Sprite": ""
}
],
"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,7 +0,0 @@
fileFormatVersion: 2
guid: e554e55047455884493dac8eadb77222
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,14 +0,0 @@
// <auto-generated>
using System;
public enum Taste
{
None = 0,
Bitter = 1,
Sweet = 2,
Spicy = 3,
Fresh = 4,
Sour = 5,
Salty = 6,
}

View File

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: ba9b1a4c8af1e73408126a6a97be8423

View File

@ -1,35 +0,0 @@
// <auto-generated>
using System;
using UnityEngine;
[Serializable]
public class Food
{
/// <summary>식별ID</summary>
[Tooltip("식별ID")]
public string Id;
/// <summary>이름</summary>
[Tooltip("이름")]
public string Name;
/// <summary>재료1</summary>
[Tooltip("재료1")]
public string Ingredient1;
/// <summary>재료2</summary>
[Tooltip("재료2")]
public string Ingredient2;
/// <summary>맛1</summary>
[Tooltip("맛1")]
public Taste Taste1;
/// <summary>맛2</summary>
[Tooltip("맛2")]
public Taste Taste2;
/// <summary>Addressable 이미지 이름</summary>
[Tooltip("Addressable 이미지 이름")]
public Sprite Sprite;
}

View File

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: dce45c629bff82849ae40a08e605ce13

View File

@ -1,9 +0,0 @@
// <auto-generated> File: FoodSo.cs
using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu(fileName = "FoodSo", menuName = "GoogleSheet/FoodSo")]
public class FoodSo : ScriptableObject
{
public List<Food> FoodList;
}

View File

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: 80338c211c1fbc44f9fc1827b83ce50f

View File

@ -1,81 +0,0 @@
{
"$개요": [
{
"": "시트 생성"
}
],
"Food": [
{
"Id:string": "식별ID",
"Name:string": "이름",
"Ingredient1:string": "재료1",
"Ingredient2:string": "재료2",
"Taste1:Taste_Enum": "맛1",
"Taste2:Taste_Enum": "맛2",
"Sprite:Sprite": "Addressable 이미지 이름"
},
{
"Id:string": "Food001",
"Name:string": "햇빛수프",
"Ingredient1:string": "극락쌀",
"Ingredient2:string": "햇빛당근",
"Taste1:Taste_Enum": "Bitter",
"Taste2:Taste_Enum": "Sweet",
"Sprite:Sprite": "Gold"
},
{
"Id:string": "Food002",
"Name:string": "B",
"Ingredient1:string": 1,
"Ingredient2:string": 1,
"Taste1:Taste_Enum": "Spicy",
"Taste2:Taste_Enum": "Bitter",
"Sprite:Sprite": ""
},
{
"Id:string": "Food003",
"Name:string": "C",
"Ingredient1:string": 2,
"Ingredient2:string": 1,
"Taste1:Taste_Enum": "Fresh",
"Taste2:Taste_Enum": "None",
"Sprite:Sprite": ""
},
{
"Id:string": "Food004",
"Name:string": "D",
"Ingredient1:string": 3,
"Ingredient2:string": 1,
"Taste1:Taste_Enum": "Sour",
"Taste2:Taste_Enum": "Salty",
"Sprite:Sprite": ""
}
],
"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,7 +0,0 @@
fileFormatVersion: 2
guid: 76740917292abb542b69fe09178e5bfa
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: 53d86386d682bb445ba3b231e83086c6
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,290 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 47d33f999b3dd2f44a64b3c7b6262376, type: 3}
m_Name: GoogleSheetChangeLog
m_EditorClassIdentifier:
_logs:
- Editor: "\uB0A8\uD0DC\uAC74"
Timestamp: 2025-05-13 16:28:35
JsonSnapshot: "{\n \"$\uAC1C\uC694\": [\n {\n \"\": \"\uC2DC\uD2B8 \uC0DD\uC131\"\n
}\n ],\n \"Food\": [\n {\n \"Id:string\": \"\uC2DD\uBCC4ID\",\n
\"Name:string\": \"\uC774\uB984\",\n \"Ingredient1:string\": \"\uC7AC\uB8CC1\",\n
\"Ingredient2:string\": \"\uC7AC\uB8CC2\",\n \"Taste1:Taste_Enum\": \"\uB9DB1\",\n
\"Taste2:Taste_Enum\": \"\uB9DB2\",\n \"Sprite:Sprite\": \"Addressable
\uC774\uBBF8\uC9C0 \uC774\uB984\"\n },\n {\n \"Id:string\": \"Food001\",\n
\"Name:string\": \"\uD587\uBE5B\uC218\uD504\",\n \"Ingredient1:string\":
\"\uADF9\uB77D\uC300\",\n \"Ingredient2:string\": \"\uD587\uBE5B\uB2F9\uADFC\",\n
\"Taste1:Taste_Enum\": \"Bitter\",\n \"Taste2:Taste_Enum\": \"Sweet\",\n
\"Sprite:Sprite\": \"Gold\"\n },\n {\n \"Id:string\": \"Food002\",\n
\"Name:string\": \"B\",\n \"Ingredient1:string\": 1,\n \"Ingredient2:string\":
4,\n \"Taste1:Taste_Enum\": \"Spicy\",\n \"Taste2:Taste_Enum\": \"Bitter\",\n
\"Sprite:Sprite\": \"\"\n },\n {\n \"Id:string\": \"Food003\",\n
\"Name:string\": \"C\",\n \"Ingredient1:string\": 2,\n \"Ingredient2:string\":
5,\n \"Taste1:Taste_Enum\": \"Fresh\",\n \"Taste2:Taste_Enum\": \"None\",\n
\"Sprite:Sprite\": \"\"\n },\n {\n \"Id:string\": \"Food004\",\n
\"Name:string\": \"D\",\n \"Ingredient1:string\": 3,\n \"Ingredient2:string\":
6,\n \"Taste1:Taste_Enum\": \"Sour\",\n \"Taste2:Taste_Enum\": \"Salty\",\n
\"Sprite:Sprite\": \"\"\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: "\uB0A8\uD0DC\uAC74"
Timestamp: 2025-05-13 16:30:24
JsonSnapshot: "{\n \"$\uAC1C\uC694\": [\n {\n \"\": \"\uC2DC\uD2B8 \uC0DD\uC131\"\n
}\n ],\n \"Food\": [\n {\n \"Id:string\": \"\uC2DD\uBCC4ID\",\n
\"Name:string\": \"\uC774\uB984\",\n \"Ingredient1:string\": \"\uC7AC\uB8CC1\",\n
\"Ingredient2:string\": \"\uC7AC\uB8CC2\",\n \"Taste1:Taste_Enum\": \"\uB9DB1\",\n
\"Taste2:Taste_Enum\": \"\uB9DB2\",\n \"Sprite:Sprite\": \"Addressable
\uC774\uBBF8\uC9C0 \uC774\uB984\"\n },\n {\n \"Id:string\": \"Food001\",\n
\"Name:string\": \"\uD587\uBE5B\uC218\uD504\",\n \"Ingredient1:string\":
\"\uADF9\uB77D\uC300\",\n \"Ingredient2:string\": \"\uD587\uBE5B\uB2F9\uADFC\",\n
\"Taste1:Taste_Enum\": \"Bitter\",\n \"Taste2:Taste_Enum\": \"Sweet\",\n
\"Sprite:Sprite\": \"Gold\"\n },\n {\n \"Id:string\": \"Food002\",\n
\"Name:string\": \"B\",\n \"Ingredient1:string\": 1,\n \"Ingredient2:string\":
11,\n \"Taste1:Taste_Enum\": \"Spicy\",\n \"Taste2:Taste_Enum\":
\"Bitter\",\n \"Sprite:Sprite\": \"\"\n },\n {\n \"Id:string\":
\"Food003\",\n \"Name:string\": \"C\",\n \"Ingredient1:string\":
2,\n \"Ingredient2:string\": 22,\n \"Taste1:Taste_Enum\": \"Fresh\",\n
\"Taste2:Taste_Enum\": \"None\",\n \"Sprite:Sprite\": \"\"\n },\n
{\n \"Id:string\": \"Food004\",\n \"Name:string\": \"D\",\n
\"Ingredient1:string\": 3,\n \"Ingredient2:string\": 33,\n \"Taste1:Taste_Enum\":
\"Sour\",\n \"Taste2:Taste_Enum\": \"Salty\",\n \"Sprite:Sprite\":
\"\"\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: "\uB0A8\uD0DC\uAC74"
Timestamp: 2025-05-13 16:37:27
JsonSnapshot: "{\n \"$\uAC1C\uC694\": [\n {\n \"\": \"\uC2DC\uD2B8 \uC0DD\uC131\"\n
}\n ],\n \"Food\": [\n {\n \"Id:string\": \"\uC2DD\uBCC4ID\",\n
\"Name:string\": \"\uC774\uB984\",\n \"Ingredient1:string\": \"\uC7AC\uB8CC1\",\n
\"Ingredient2:string\": \"\uC7AC\uB8CC2\",\n \"Taste1:Taste_Enum\": \"\uB9DB1\",\n
\"Taste2:Taste_Enum\": \"\uB9DB2\",\n \"Sprite:Sprite\": \"Addressable
\uC774\uBBF8\uC9C0 \uC774\uB984\"\n },\n {\n \"Id:string\": \"Food001\",\n
\"Name:string\": \"\uD587\uBE5B\uC218\uD504\",\n \"Ingredient1:string\":
\"\uADF9\uB77D\uC300\",\n \"Ingredient2:string\": \"\uD587\uBE5B\uB2F9\uADFC\",\n
\"Taste1:Taste_Enum\": \"Bitter\",\n \"Taste2:Taste_Enum\": \"Sweet\",\n
\"Sprite:Sprite\": \"Gold\"\n },\n {\n \"Id:string\": \"Food002\",\n
\"Name:string\": \"B\",\n \"Ingredient1:string\": 1,\n \"Ingredient2:string\":
7,\n \"Taste1:Taste_Enum\": \"Spicy\",\n \"Taste2:Taste_Enum\": \"Bitter\",\n
\"Sprite:Sprite\": \"\"\n },\n {\n \"Id:string\": \"Food003\",\n
\"Name:string\": \"C\",\n \"Ingredient1:string\": 2,\n \"Ingredient2:string\":
7,\n \"Taste1:Taste_Enum\": \"Fresh\",\n \"Taste2:Taste_Enum\": \"None\",\n
\"Sprite:Sprite\": \"\"\n },\n {\n \"Id:string\": \"Food004\",\n
\"Name:string\": \"D\",\n \"Ingredient1:string\": 3,\n \"Ingredient2:string\":
7,\n \"Taste1:Taste_Enum\": \"Sour\",\n \"Taste2:Taste_Enum\": \"Salty\",\n
\"Sprite:Sprite\": \"\"\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: "\uB0A8\uD0DC\uAC74"
Timestamp: 2025-05-13 16:39:30
JsonSnapshot: "{\n \"$\uAC1C\uC694\": [\n {\n \"\": \"\uC2DC\uD2B8 \uC0DD\uC131\"\n
}\n ],\n \"Food\": [\n {\n \"Id:string\": \"\uC2DD\uBCC4ID\",\n
\"Name:string\": \"\uC774\uB984\",\n \"Ingredient1:string\": \"\uC7AC\uB8CC1\",\n
\"Ingredient2:string\": \"\uC7AC\uB8CC2\",\n \"Taste1:Taste_Enum\": \"\uB9DB1\",\n
\"Taste2:Taste_Enum\": \"\uB9DB2\",\n \"Sprite:Sprite\": \"Addressable
\uC774\uBBF8\uC9C0 \uC774\uB984\"\n },\n {\n \"Id:string\": \"Food001\",\n
\"Name:string\": \"\uD587\uBE5B\uC218\uD504\",\n \"Ingredient1:string\":
\"\uADF9\uB77D\uC300\",\n \"Ingredient2:string\": \"\uD587\uBE5B\uB2F9\uADFC\",\n
\"Taste1:Taste_Enum\": \"Bitter\",\n \"Taste2:Taste_Enum\": \"Sweet\",\n
\"Sprite:Sprite\": \"Gold\"\n },\n {\n \"Id:string\": \"Food002\",\n
\"Name:string\": \"B\",\n \"Ingredient1:string\": 1,\n \"Ingredient2:string\":
8,\n \"Taste1:Taste_Enum\": \"Spicy\",\n \"Taste2:Taste_Enum\": \"Bitter\",\n
\"Sprite:Sprite\": \"\"\n },\n {\n \"Id:string\": \"Food003\",\n
\"Name:string\": \"C\",\n \"Ingredient1:string\": 2,\n \"Ingredient2:string\":
8,\n \"Taste1:Taste_Enum\": \"Fresh\",\n \"Taste2:Taste_Enum\": \"None\",\n
\"Sprite:Sprite\": \"\"\n },\n {\n \"Id:string\": \"Food004\",\n
\"Name:string\": \"D\",\n \"Ingredient1:string\": 3,\n \"Ingredient2:string\":
8,\n \"Taste1:Taste_Enum\": \"Sour\",\n \"Taste2:Taste_Enum\": \"Salty\",\n
\"Sprite:Sprite\": \"\"\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: "\uB0A8\uD0DC\uAC74"
Timestamp: 2025-05-13 16:40:46
JsonSnapshot: "{\n \"$\uAC1C\uC694\": [\n {\n \"\": \"\uC2DC\uD2B8 \uC0DD\uC131\"\n
}\n ],\n \"Food\": [\n {\n \"Id:string\": \"\uC2DD\uBCC4ID\",\n
\"Name:string\": \"\uC774\uB984\",\n \"Ingredient1:string\": \"\uC7AC\uB8CC1\",\n
\"Ingredient2:string\": \"\uC7AC\uB8CC2\",\n \"Taste1:Taste_Enum\": \"\uB9DB1\",\n
\"Taste2:Taste_Enum\": \"\uB9DB2\",\n \"Sprite:Sprite\": \"Addressable
\uC774\uBBF8\uC9C0 \uC774\uB984\"\n },\n {\n \"Id:string\": \"Food001\",\n
\"Name:string\": \"\uD587\uBE5B\uC218\uD504\",\n \"Ingredient1:string\":
\"\uADF9\uB77D\uC300\",\n \"Ingredient2:string\": \"\uD587\uBE5B\uB2F9\uADFC\",\n
\"Taste1:Taste_Enum\": \"Bitter\",\n \"Taste2:Taste_Enum\": \"Sweet\",\n
\"Sprite:Sprite\": \"Gold\"\n },\n {\n \"Id:string\": \"Food002\",\n
\"Name:string\": \"B\",\n \"Ingredient1:string\": 1,\n \"Ingredient2:string\":
9,\n \"Taste1:Taste_Enum\": \"Spicy\",\n \"Taste2:Taste_Enum\": \"Bitter\",\n
\"Sprite:Sprite\": \"\"\n },\n {\n \"Id:string\": \"Food003\",\n
\"Name:string\": \"C\",\n \"Ingredient1:string\": 2,\n \"Ingredient2:string\":
9,\n \"Taste1:Taste_Enum\": \"Fresh\",\n \"Taste2:Taste_Enum\": \"None\",\n
\"Sprite:Sprite\": \"\"\n },\n {\n \"Id:string\": \"Food004\",\n
\"Name:string\": \"D\",\n \"Ingredient1:string\": 3,\n \"Ingredient2:string\":
9,\n \"Taste1:Taste_Enum\": \"Sour\",\n \"Taste2:Taste_Enum\": \"Salty\",\n
\"Sprite:Sprite\": \"\"\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: "\uB0A8\uD0DC\uAC74"
Timestamp: 2025-05-13 16:41:55
JsonSnapshot: "{\n \"$\uAC1C\uC694\": [\n {\n \"\": \"\uC2DC\uD2B8 \uC0DD\uC131\"\n
}\n ],\n \"Food\": [\n {\n \"Id:string\": \"\uC2DD\uBCC4ID\",\n
\"Name:string\": \"\uC774\uB984\",\n \"Ingredient1:string\": \"\uC7AC\uB8CC1\",\n
\"Ingredient2:string\": \"\uC7AC\uB8CC2\",\n \"Taste1:Taste_Enum\": \"\uB9DB1\",\n
\"Taste2:Taste_Enum\": \"\uB9DB2\",\n \"Sprite:Sprite\": \"Addressable
\uC774\uBBF8\uC9C0 \uC774\uB984\"\n },\n {\n \"Id:string\": \"Food001\",\n
\"Name:string\": \"\uD587\uBE5B\uC218\uD504\",\n \"Ingredient1:string\":
\"\uADF9\uB77D\uC300\",\n \"Ingredient2:string\": \"\uD587\uBE5B\uB2F9\uADFC\",\n
\"Taste1:Taste_Enum\": \"Bitter\",\n \"Taste2:Taste_Enum\": \"Sweet\",\n
\"Sprite:Sprite\": \"Gold\"\n },\n {\n \"Id:string\": \"Food002\",\n
\"Name:string\": \"B\",\n \"Ingredient1:string\": 1,\n \"Ingredient2:string\":
333,\n \"Taste1:Taste_Enum\": \"Spicy\",\n \"Taste2:Taste_Enum\":
\"Bitter\",\n \"Sprite:Sprite\": \"\"\n },\n {\n \"Id:string\":
\"Food003\",\n \"Name:string\": \"C\",\n \"Ingredient1:string\":
2,\n \"Ingredient2:string\": 444,\n \"Taste1:Taste_Enum\": \"Fresh\",\n
\"Taste2:Taste_Enum\": \"None\",\n \"Sprite:Sprite\": \"\"\n },\n
{\n \"Id:string\": \"Food004\",\n \"Name:string\": \"D\",\n
\"Ingredient1:string\": 3,\n \"Ingredient2:string\": 555,\n \"Taste1:Taste_Enum\":
\"Sour\",\n \"Taste2:Taste_Enum\": \"Salty\",\n \"Sprite:Sprite\":
\"\"\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: "\uB0A8\uD0DC\uAC74"
Timestamp: 2025-05-13 16:43:04
JsonSnapshot: "{\n \"$\uAC1C\uC694\": [\n {\n \"\": \"\uC2DC\uD2B8 \uC0DD\uC131\"\n
}\n ],\n \"Food\": [\n {\n \"Id:string\": \"\uC2DD\uBCC4ID\",\n
\"Name:string\": \"\uC774\uB984\",\n \"Ingredient1:string\": \"\uC7AC\uB8CC1\",\n
\"Ingredient2:string\": \"\uC7AC\uB8CC2\",\n \"Taste1:Taste_Enum\": \"\uB9DB1\",\n
\"Taste2:Taste_Enum\": \"\uB9DB2\",\n \"Sprite:Sprite\": \"Addressable
\uC774\uBBF8\uC9C0 \uC774\uB984\"\n },\n {\n \"Id:string\": \"Food001\",\n
\"Name:string\": \"\uD587\uBE5B\uC218\uD504\",\n \"Ingredient1:string\":
\"\uADF9\uB77D\uC300\",\n \"Ingredient2:string\": \"\uD587\uBE5B\uB2F9\uADFC\",\n
\"Taste1:Taste_Enum\": \"Bitter\",\n \"Taste2:Taste_Enum\": \"Sweet\",\n
\"Sprite:Sprite\": \"Gold\"\n },\n {\n \"Id:string\": \"Food002\",\n
\"Name:string\": \"B\",\n \"Ingredient1:string\": 1,\n \"Ingredient2:string\":
222,\n \"Taste1:Taste_Enum\": \"Spicy\",\n \"Taste2:Taste_Enum\":
\"Bitter\",\n \"Sprite:Sprite\": \"\"\n },\n {\n \"Id:string\":
\"Food003\",\n \"Name:string\": \"C\",\n \"Ingredient1:string\":
2,\n \"Ingredient2:string\": 333,\n \"Taste1:Taste_Enum\": \"Fresh\",\n
\"Taste2:Taste_Enum\": \"None\",\n \"Sprite:Sprite\": \"\"\n },\n
{\n \"Id:string\": \"Food004\",\n \"Name:string\": \"D\",\n
\"Ingredient1:string\": 3,\n \"Ingredient2:string\": 444,\n \"Taste1:Taste_Enum\":
\"Sour\",\n \"Taste2:Taste_Enum\": \"Salty\",\n \"Sprite:Sprite\":
\"\"\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: "\uB0A8\uD0DC\uAC74"
Timestamp: 2025-05-13 16:44:24
JsonSnapshot: "{\n \"$\uAC1C\uC694\": [\n {\n \"\": \"\uC2DC\uD2B8 \uC0DD\uC131\"\n
}\n ],\n \"Food\": [\n {\n \"Id:string\": \"\uC2DD\uBCC4ID\",\n
\"Name:string\": \"\uC774\uB984\",\n \"Ingredient1:string\": \"\uC7AC\uB8CC1\",\n
\"Ingredient2:string\": \"\uC7AC\uB8CC2\",\n \"Taste1:Taste_Enum\": \"\uB9DB1\",\n
\"Taste2:Taste_Enum\": \"\uB9DB2\",\n \"Sprite:Sprite\": \"Addressable
\uC774\uBBF8\uC9C0 \uC774\uB984\"\n },\n {\n \"Id:string\": \"Food001\",\n
\"Name:string\": \"\uD587\uBE5B\uC218\uD504\",\n \"Ingredient1:string\":
\"\uADF9\uB77D\uC300\",\n \"Ingredient2:string\": \"\uD587\uBE5B\uB2F9\uADFC\",\n
\"Taste1:Taste_Enum\": \"Bitter\",\n \"Taste2:Taste_Enum\": \"Sweet\",\n
\"Sprite:Sprite\": \"Gold\"\n },\n {\n \"Id:string\": \"Food002\",\n
\"Name:string\": \"B\",\n \"Ingredient1:string\": 1,\n \"Ingredient2:string\":
8,\n \"Taste1:Taste_Enum\": \"Spicy\",\n \"Taste2:Taste_Enum\": \"Bitter\",\n
\"Sprite:Sprite\": \"\"\n },\n {\n \"Id:string\": \"Food003\",\n
\"Name:string\": \"C\",\n \"Ingredient1:string\": 2,\n \"Ingredient2:string\":
6,\n \"Taste1:Taste_Enum\": \"Fresh\",\n \"Taste2:Taste_Enum\": \"None\",\n
\"Sprite:Sprite\": \"\"\n },\n {\n \"Id:string\": \"Food004\",\n
\"Name:string\": \"D\",\n \"Ingredient1:string\": 3,\n \"Ingredient2:string\":
7,\n \"Taste1:Taste_Enum\": \"Sour\",\n \"Taste2:Taste_Enum\": \"Salty\",\n
\"Sprite:Sprite\": \"\"\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: "\uB0A8\uD0DC\uAC74"
Timestamp: 2025-05-13 16:46:54
JsonSnapshot: "{\n \"$\uAC1C\uC694\": [\n {\n \"\": \"\uC2DC\uD2B8 \uC0DD\uC131\"\n
}\n ],\n \"Food\": [\n {\n \"Id:string\": \"\uC2DD\uBCC4ID\",\n
\"Name:string\": \"\uC774\uB984\",\n \"Ingredient1:string\": \"\uC7AC\uB8CC1\",\n
\"Ingredient2:string\": \"\uC7AC\uB8CC2\",\n \"Taste1:Taste_Enum\": \"\uB9DB1\",\n
\"Taste2:Taste_Enum\": \"\uB9DB2\",\n \"Sprite:Sprite\": \"Addressable
\uC774\uBBF8\uC9C0 \uC774\uB984\"\n },\n {\n \"Id:string\": \"Food001\",\n
\"Name:string\": \"\uD587\uBE5B\uC218\uD504\",\n \"Ingredient1:string\":
\"\uADF9\uB77D\uC300\",\n \"Ingredient2:string\": \"\uD587\uBE5B\uB2F9\uADFC\",\n
\"Taste1:Taste_Enum\": \"Bitter\",\n \"Taste2:Taste_Enum\": \"Sweet\",\n
\"Sprite:Sprite\": \"Gold\"\n },\n {\n \"Id:string\": \"Food002\",\n
\"Name:string\": \"B\",\n \"Ingredient1:string\": 1,\n \"Ingredient2:string\":
123123,\n \"Taste1:Taste_Enum\": \"Spicy\",\n \"Taste2:Taste_Enum\":
\"Bitter\",\n \"Sprite:Sprite\": \"\"\n },\n {\n \"Id:string\":
\"Food003\",\n \"Name:string\": \"C\",\n \"Ingredient1:string\":
2,\n \"Ingredient2:string\": 123123,\n \"Taste1:Taste_Enum\": \"Fresh\",\n
\"Taste2:Taste_Enum\": \"None\",\n \"Sprite:Sprite\": \"\"\n },\n
{\n \"Id:string\": \"Food004\",\n \"Name:string\": \"D\",\n
\"Ingredient1:string\": 3,\n \"Ingredient2:string\": 123123,\n \"Taste1:Taste_Enum\":
\"Sour\",\n \"Taste2:Taste_Enum\": \"Salty\",\n \"Sprite:Sprite\":
\"\"\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: "\uB0A8\uD0DC\uAC74"
Timestamp: 2025-05-13 16:48:29
JsonSnapshot: "{\n \"$\uAC1C\uC694\": [\n {\n \"\": \"\uC2DC\uD2B8 \uC0DD\uC131\"\n
}\n ],\n \"Food\": [\n {\n \"Id:string\": \"\uC2DD\uBCC4ID\",\n
\"Name:string\": \"\uC774\uB984\",\n \"Ingredient1:string\": \"\uC7AC\uB8CC1\",\n
\"Ingredient2:string\": \"\uC7AC\uB8CC2\",\n \"Taste1:Taste_Enum\": \"\uB9DB1\",\n
\"Taste2:Taste_Enum\": \"\uB9DB2\",\n \"Sprite:Sprite\": \"Addressable
\uC774\uBBF8\uC9C0 \uC774\uB984\"\n },\n {\n \"Id:string\": \"Food001\",\n
\"Name:string\": \"\uD587\uBE5B\uC218\uD504\",\n \"Ingredient1:string\":
\"\uADF9\uB77D\uC300\",\n \"Ingredient2:string\": \"\uD587\uBE5B\uB2F9\uADFC\",\n
\"Taste1:Taste_Enum\": \"Bitter\",\n \"Taste2:Taste_Enum\": \"Sweet\",\n
\"Sprite:Sprite\": \"Gold\"\n },\n {\n \"Id:string\": \"Food002\",\n
\"Name:string\": \"B\",\n \"Ingredient1:string\": 1,\n \"Ingredient2:string\":
1,\n \"Taste1:Taste_Enum\": \"Spicy\",\n \"Taste2:Taste_Enum\": \"Bitter\",\n
\"Sprite:Sprite\": \"\"\n },\n {\n \"Id:string\": \"Food003\",\n
\"Name:string\": \"C\",\n \"Ingredient1:string\": 2,\n \"Ingredient2:string\":
1,\n \"Taste1:Taste_Enum\": \"Fresh\",\n \"Taste2:Taste_Enum\": \"None\",\n
\"Sprite:Sprite\": \"\"\n },\n {\n \"Id:string\": \"Food004\",\n
\"Name:string\": \"D\",\n \"Ingredient1:string\": 3,\n \"Ingredient2:string\":
1,\n \"Taste1:Taste_Enum\": \"Sour\",\n \"Taste2:Taste_Enum\": \"Salty\",\n
\"Sprite:Sprite\": \"\"\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}"
MaxLogs: 100

View File

@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: 0a3d0fe4e3a059c4eaaebf49f90ca899
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,19 +0,0 @@
// <auto-generated>
using System;
using UnityEngine;
[Serializable]
public class Monster
{
/// <summary>식별번호</summary>
[Tooltip("식별번호")]
public string Id;
/// <summary>이름</summary>
[Tooltip("이름")]
public string Name;
/// <summary>테스트1</summary>
[Tooltip("테스트1")]
public int T1;
}

View File

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: b11551a9f69d3d04aac796eeabead5bb

View File

@ -1,9 +0,0 @@
// <auto-generated> File: MonsterSo.cs
using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu(fileName = "MonsterSo", menuName = "GoogleSheet/MonsterSo")]
public class MonsterSo : ScriptableObject
{
public List<Monster> MonsterList;
}

View File

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: e06f0bd1faff18646b7597ddcf787856

View File

@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: 78153c2368c8af440ae01521a5ed015d
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,43 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 80338c211c1fbc44f9fc1827b83ce50f, type: 3}
m_Name: FoodSo
m_EditorClassIdentifier:
FoodList:
- Id: Food001
Name: "\uD587\uBE5B\uC218\uD504"
Ingredient1: "\uADF9\uB77D\uC300"
Ingredient2: "\uD587\uBE5B\uB2F9\uADFC"
Taste1: 1
Taste2: 2
Sprite: {fileID: 0}
- Id: Food002
Name: B
Ingredient1: 1
Ingredient2: 11
Taste1: 3
Taste2: 1
Sprite: {fileID: 0}
- Id: Food003
Name: C
Ingredient1: 2
Ingredient2: 22
Taste1: 4
Taste2: 0
Sprite: {fileID: 0}
- Id: Food004
Name: D
Ingredient1: 3
Ingredient2: 33
Taste1: 5
Taste2: 6
Sprite: {fileID: 0}

View File

@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: ccb6f7909b5ffd94499bbeaef45086be
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,27 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e06f0bd1faff18646b7597ddcf787856, type: 3}
m_Name: MonsterSo
m_EditorClassIdentifier:
MonsterList:
- 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,8 +0,0 @@
fileFormatVersion: 2
guid: 1542a7a4161005c4baf6262cdf5f4ac7
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -9,6 +9,7 @@
using UnityEngine; using UnityEngine;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using System.Linq; using System.Linq;
using JetBrains.Annotations;
using Sirenix.OdinInspector; using Sirenix.OdinInspector;
using UnityEditor; using UnityEditor;
using UnityEngine.AddressableAssets; using UnityEngine.AddressableAssets;
@ -33,7 +34,7 @@ public class GoogleSheetManager : Singleton<GoogleSheetManager>
private string _generateFolderPath = "/_Datas/02.Scripts/GenerateGoogleSheet/AutoCreated"; private string _generateFolderPath = "/_Datas/02.Scripts/GenerateGoogleSheet/AutoCreated";
[BoxGroup("버전 복구")] [BoxGroup("버전 복구")]
[SerializeField, Tooltip("현재 사용중인 버전"), ReadOnly] [SerializeField, Tooltip("현재 사용중인 버전"), ReadOnly, UsedImplicitly]
private string _currentVersion; private string _currentVersion;
#if UNITY_EDITOR #if UNITY_EDITOR
@ -79,7 +80,7 @@ public static async Task<T> LoadSo<T>() where T : ScriptableObject
#if UNITY_EDITOR || DEVELOPMENT_BUILD #if UNITY_EDITOR || DEVELOPMENT_BUILD
[BoxGroup("데이터 변경")] [BoxGroup("데이터 변경")]
[Button("데이터 최신화"), EnableIf(nameof(CanFetchData))] [Button("데이터 최신화"), EnableIf(nameof(CanFetchData))]
private async void FetchGoogleSheet() private async Task FetchGoogleSheet()
{ {
_availSheetArray = _availSheets.Split('/'); _availSheetArray = _availSheets.Split('/');
@ -147,8 +148,11 @@ private void SaveChangeLog(string json)
string logsDirectory = Path.GetDirectoryName(ChangeLogAssetPath); string logsDirectory = Path.GetDirectoryName(ChangeLogAssetPath);
if (!Directory.Exists(logsDirectory)) if (!Directory.Exists(logsDirectory))
{ {
Directory.CreateDirectory(logsDirectory); if (logsDirectory != null)
AssetDatabase.ImportAsset(logsDirectory); {
Directory.CreateDirectory(logsDirectory);
AssetDatabase.ImportAsset(logsDirectory);
}
} }
var log = AssetDatabase.LoadAssetAtPath<GoogleSheetChangeLog>(ChangeLogAssetPath); var log = AssetDatabase.LoadAssetAtPath<GoogleSheetChangeLog>(ChangeLogAssetPath);
@ -229,7 +233,7 @@ private void CompareWithSelectedVersion()
[BoxGroup("버전 복구")] [BoxGroup("버전 복구")]
[Button("선택한 버전으로 복구")] [Button("선택한 버전으로 복구")]
private async void RestoreSelectedVersion() private async Task RestoreSelectedVersion()
{ {
var log = AssetDatabase.LoadAssetAtPath<GoogleSheetChangeLog>(ChangeLogAssetPath); var log = AssetDatabase.LoadAssetAtPath<GoogleSheetChangeLog>(ChangeLogAssetPath);
if (log == null || _restoreIndex < 0 || _restoreIndex >= log.Logs.Count) if (log == null || _restoreIndex < 0 || _restoreIndex >= log.Logs.Count)
@ -239,7 +243,7 @@ private async void RestoreSelectedVersion()
} }
string restoreJson = log.Logs[_restoreIndex].JsonSnapshot; string restoreJson = log.Logs[_restoreIndex].JsonSnapshot;
string currentJson = File.Exists(JsonFullPath) ? File.ReadAllText(JsonFullPath) : ""; string currentJson = File.Exists(JsonFullPath) ? await File.ReadAllTextAsync(JsonFullPath) : "";
var diffs = GoogleSheetFetchHelper.CompareJsonDiff(currentJson, restoreJson); var diffs = GoogleSheetFetchHelper.CompareJsonDiff(currentJson, restoreJson);
if (diffs.Count > 0) if (diffs.Count > 0)
@ -274,18 +278,16 @@ private IEnumerable<ValueDropdownItem<int>> GetVersionOptions()
/// </summary> /// </summary>
private async Task<string> LoadDataGoogleSheet(string url) private async Task<string> LoadDataGoogleSheet(string url)
{ {
using (HttpClient client = new HttpClient()) using HttpClient client = new HttpClient();
try
{ {
try byte[] dataBytes = await client.GetByteArrayAsync(url);
{ return Encoding.UTF8.GetString(dataBytes);
byte[] dataBytes = await client.GetByteArrayAsync(url); }
return Encoding.UTF8.GetString(dataBytes); catch (HttpRequestException e)
} {
catch (HttpRequestException e) Debug.LogError($"Request error: {e.Message}");
{ return null;
Debug.LogError($"Request error: {e.Message}");
return null;
}
} }
} }
@ -311,7 +313,7 @@ private bool SaveFileOrSkip(string path, string contents)
string directoryPath = Path.GetDirectoryName(path); string directoryPath = Path.GetDirectoryName(path);
if (!Directory.Exists(directoryPath)) if (!Directory.Exists(directoryPath))
{ {
Directory.CreateDirectory(directoryPath); if (directoryPath != null) Directory.CreateDirectory(directoryPath);
} }
if (File.Exists(path) && File.ReadAllText(path).Equals(contents)) if (File.Exists(path) && File.ReadAllText(path).Equals(contents))
@ -361,14 +363,7 @@ private void GenerateClassFilesPerSheet(string jsonInput)
string enumType = null; string enumType = null;
if (rawName.EndsWith("_Enum")) if (rawName.EndsWith("_Enum"))
{ {
if (rawName.Contains(":")) enumType = rawName.Contains(":") ? rawName.Split(':')[1].Replace("_Enum", "") : rawName.Replace("_Enum", "");
{
enumType = rawName.Split(':')[1].Replace("_Enum", "");
}
else
{
enumType = rawName.Replace("_Enum", "");
}
} }
if (!string.IsNullOrEmpty(enumType)) if (!string.IsNullOrEmpty(enumType))
@ -517,7 +512,7 @@ private string GetCSharpType(JTokenType jsonType)
} }
} }
public async Task<bool> CreateGoogleSheetSoAsync() private async Task<bool> CreateGoogleSheetSoAsync()
{ {
await Addressables.InitializeAsync().Task; await Addressables.InitializeAsync().Task;
@ -532,30 +527,8 @@ public async Task<bool> CreateGoogleSheetSoAsync()
try try
{ {
var checkHandle = Addressables.CheckForCatalogUpdates(); // 🔁 카탈로그 업데이트 제거 (로컬 모드에서는 불필요)
await checkHandle.Task; Debug.Log("[GoogleSheetManager] 로컬 모드 - 카탈로그 업데이트 스킵");
bool succeeded = checkHandle.Status == AsyncOperationStatus.Succeeded;
List<string> catalogsToUpdate = succeeded ? new List<string>(checkHandle.Result) : null;
Addressables.Release(checkHandle); // ⛔ 이후 checkHandle 접근 금지!
if (catalogsToUpdate?.Count > 0)
{
var updateHandle = Addressables.UpdateCatalogs(catalogsToUpdate);
await updateHandle.Task;
if (updateHandle.Status == AsyncOperationStatus.Succeeded)
Debug.Log("카탈로그 업데이트 성공");
else
Debug.LogError("카탈로그 업데이트 실패");
Addressables.Release(updateHandle);
}
else
{
Debug.Log("[GoogleSheetManager] Addressables 카탈로그는 최신 상태입니다.");
}
result = await InternalCreateGoogleSheetSoAsync(); result = await InternalCreateGoogleSheetSoAsync();
} }
@ -570,8 +543,8 @@ public async Task<bool> CreateGoogleSheetSoAsync()
return result; return result;
} }
public async Task<bool> InternalCreateGoogleSheetSoAsync() private async Task<bool> InternalCreateGoogleSheetSoAsync()
{ {
JObject jsonObject = JObject.Parse(_json); JObject jsonObject = JObject.Parse(_json);
@ -664,7 +637,7 @@ public async Task<bool> InternalCreateGoogleSheetSoAsync()
try try
{ {
object value = null; object value;
// ✅ Sprite 처리 (주소로부터 비동기 로드) // ✅ Sprite 처리 (주소로부터 비동기 로드)
if (explicitType == "Sprite" && field.FieldType == typeof(Sprite)) if (explicitType == "Sprite" && field.FieldType == typeof(Sprite))
@ -704,10 +677,7 @@ public async Task<bool> InternalCreateGoogleSheetSoAsync()
// ✅ Color 처리 // ✅ Color 처리
else if (field.FieldType == typeof(Color)) else if (field.FieldType == typeof(Color))
{ {
if (ColorUtility.TryParseHtmlString(prop.Value.ToString(), out var color)) value = ColorUtility.TryParseHtmlString(prop.Value.ToString(), out var color) ? color : Color.white;
value = color;
else
value = Color.white;
} }
// ✅ 기본 타입 처리 // ✅ 기본 타입 처리
else else
@ -760,11 +730,11 @@ public async Task<bool> InternalCreateGoogleSheetSoAsync()
return allSuccess; return allSuccess;
} }
private Type FindTypeByName(string name) private Type FindTypeByName(string sheetName)
{ {
return AppDomain.CurrentDomain.GetAssemblies() return AppDomain.CurrentDomain.GetAssemblies()
.SelectMany(a => a.GetTypes()) .SelectMany(a => a.GetTypes())
.FirstOrDefault(t => t.Name == name); .FirstOrDefault(t => t.Name == sheetName);
} }
private string NormalizeEnumKey(string input) private string NormalizeEnumKey(string input)
@ -833,7 +803,7 @@ private IEnumerator ReloadRoutine()
} }
} }
public async void CreateSoAfterScriptReload() public async Task CreateSoAfterScriptReload()
{ {
if (_json != null) if (_json != null)
{ {

View File

@ -33,7 +33,7 @@ private void OnGUI()
EditorGUILayout.BeginHorizontal("box"); EditorGUILayout.BeginHorizontal("box");
EditorGUILayout.LabelField("시트", EditorStyles.boldLabel, GUILayout.Width(80)); EditorGUILayout.LabelField("시트", EditorStyles.boldLabel, GUILayout.Width(80));
EditorGUILayout.LabelField("행", EditorStyles.boldLabel, GUILayout.Width(40)); EditorGUILayout.LabelField("행", EditorStyles.boldLabel, GUILayout.Width(40));
EditorGUILayout.LabelField("필드", EditorStyles.boldLabel, GUILayout.Width(100)); EditorGUILayout.LabelField("필드", EditorStyles.boldLabel, GUILayout.Width(140));
GUIStyle oldStyle = new GUIStyle(EditorStyles.label); GUIStyle oldStyle = new GUIStyle(EditorStyles.label);
oldStyle.normal.textColor = Color.green; oldStyle.normal.textColor = Color.green;
@ -52,7 +52,7 @@ private void OnGUI()
EditorGUILayout.LabelField(diff.Sheet, GUILayout.Width(80)); EditorGUILayout.LabelField(diff.Sheet, GUILayout.Width(80));
EditorGUILayout.LabelField(diff.RowIndex.ToString(), GUILayout.Width(40)); EditorGUILayout.LabelField(diff.RowIndex.ToString(), GUILayout.Width(40));
EditorGUILayout.LabelField(diff.Field, GUILayout.Width(100)); EditorGUILayout.LabelField(diff.Field, GUILayout.Width(140));
string left = _isReversed ? diff.NewValue : diff.OldValue; string left = _isReversed ? diff.NewValue : diff.OldValue;
string right = _isReversed ? diff.OldValue : diff.NewValue; string right = _isReversed ? diff.OldValue : diff.NewValue;

View File

@ -11,7 +11,7 @@ private static void OnScriptsReloaded()
if (EditorPrefs.GetBool("GoogleSheetManager_ShouldCreateSO", false)) if (EditorPrefs.GetBool("GoogleSheetManager_ShouldCreateSO", false))
{ {
EditorPrefs.DeleteKey("GoogleSheetManager_ShouldCreateSO"); EditorPrefs.DeleteKey("GoogleSheetManager_ShouldCreateSO");
GoogleSheetManager.Instance.CreateSoAfterScriptReload(); _ = GoogleSheetManager.Instance.CreateSoAfterScriptReload();
} }
} }
} }

View File

@ -0,0 +1,2 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:Boolean x:Key="/Default/UserDictionary/Words/=addressables/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>