구글 시트 수정 중
This commit is contained in:
parent
ce4c1d27bf
commit
6c9283ed6e
@ -15,13 +15,13 @@ MonoBehaviour:
|
||||
m_GroupName: GoogleSheetSo_Group
|
||||
m_GUID: 7fe0c33d351391a45a0ea3c93ecef42e
|
||||
m_SerializeEntries:
|
||||
- m_GUID: 2a1b86f3356293441bcfca705fff3b85
|
||||
- m_GUID: 1542a7a4161005c4baf6262cdf5f4ac7
|
||||
m_Address: MonsterSo
|
||||
m_ReadOnly: 0
|
||||
m_SerializedLabels:
|
||||
- GoogleSheetSo
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 8f6a170dcd0a88d47939e70db303af14
|
||||
- m_GUID: ccb6f7909b5ffd94499bbeaef45086be
|
||||
m_Address: FoodSo
|
||||
m_ReadOnly: 0
|
||||
m_SerializedLabels:
|
||||
|
@ -290,7 +290,7 @@ MonoBehaviour:
|
||||
_googleSheetUrl: https://script.google.com/macros/s/AKfycbw8TRSl_OuY2S-RX0yvOJi1SqNqoflG0R3pWxk9GC9u_wvGQeuABZc0VH7YJ5lMrAl4/exec
|
||||
_availSheets: Food/Monster
|
||||
_generateFolderPath: /_Datas/02.Scripts/GenerateGoogleSheet/AutoCreated
|
||||
_currentVersion: "0 - 2025-05-13 15:02:17 by \uB0A8\uD0DC\uAC74"
|
||||
_currentVersion: "7 - 2025-05-13 16:44:24 by \uB0A8\uD0DC\uAC74"
|
||||
_restoreIndex: 0
|
||||
_editorName:
|
||||
_refreshTrigger: 1
|
||||
|
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: fb4a8c3ebcd8b9040b65650bcb10ed6c
|
||||
guid: 68c35d02b1414b34f87d8c3169f743e5
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
|
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: eca79fbd6ba923849bafc170520d87c1
|
||||
guid: 46bf69576c1d1b24ebce48222bcb0a4d
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
|
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1cf6b1e28051e1f418882d448a258c13
|
||||
guid: 07e7795754f7da943976cb3e16c363d8
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
@ -0,0 +1,81 @@
|
||||
{
|
||||
"$개요": [
|
||||
{
|
||||
"": "시트 생성"
|
||||
}
|
||||
],
|
||||
"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
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2f85d1030505c1a46b9c4b296dfd1213
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,81 @@
|
||||
{
|
||||
"$개요": [
|
||||
{
|
||||
"": "시트 생성"
|
||||
}
|
||||
],
|
||||
"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
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f7e7c66cf0ba20d4f9f69ec1de7247c7
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,81 @@
|
||||
{
|
||||
"$개요": [
|
||||
{
|
||||
"": "시트 생성"
|
||||
}
|
||||
],
|
||||
"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
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: fd833067e5a7f804baef09baccca5d35
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,81 @@
|
||||
{
|
||||
"$개요": [
|
||||
{
|
||||
"": "시트 생성"
|
||||
}
|
||||
],
|
||||
"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
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9fabf60774f9a7941b5c170871ca941c
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,81 @@
|
||||
{
|
||||
"$개요": [
|
||||
{
|
||||
"": "시트 생성"
|
||||
}
|
||||
],
|
||||
"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
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2252c8d797af75e49adb65a24069c094
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,81 @@
|
||||
{
|
||||
"$개요": [
|
||||
{
|
||||
"": "시트 생성"
|
||||
}
|
||||
],
|
||||
"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
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: cd40e1a2187a0764e8770d553ae71bd4
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,81 @@
|
||||
{
|
||||
"$개요": [
|
||||
{
|
||||
"": "시트 생성"
|
||||
}
|
||||
],
|
||||
"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
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d2ca60b3390812642a7c5d3f4f2315a5
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,81 @@
|
||||
{
|
||||
"$개요": [
|
||||
{
|
||||
"": "시트 생성"
|
||||
}
|
||||
],
|
||||
"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
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 310fc35bc8fc3fb4d8428fde47834a19
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,81 @@
|
||||
{
|
||||
"$개요": [
|
||||
{
|
||||
"": "시트 생성"
|
||||
}
|
||||
],
|
||||
"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
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e554e55047455884493dac8eadb77222
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,2 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2714e362cc5f51346a94b6da1f2a68f8
|
||||
guid: ba9b1a4c8af1e73408126a6a97be8423
|
@ -1,2 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8693b42dca1bad640aad102399faa440
|
||||
guid: dce45c629bff82849ae40a08e605ce13
|
@ -1,2 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d9a7e15d3d3df5f4a989d1e2e92682e6
|
||||
guid: 80338c211c1fbc44f9fc1827b83ce50f
|
@ -27,7 +27,7 @@
|
||||
"Id:string": "Food002",
|
||||
"Name:string": "B",
|
||||
"Ingredient1:string": 1,
|
||||
"Ingredient2:string": 4,
|
||||
"Ingredient2:string": 1,
|
||||
"Taste1:Taste_Enum": "Spicy",
|
||||
"Taste2:Taste_Enum": "Bitter",
|
||||
"Sprite:Sprite": ""
|
||||
@ -36,7 +36,7 @@
|
||||
"Id:string": "Food003",
|
||||
"Name:string": "C",
|
||||
"Ingredient1:string": 2,
|
||||
"Ingredient2:string": 5,
|
||||
"Ingredient2:string": 1,
|
||||
"Taste1:Taste_Enum": "Fresh",
|
||||
"Taste2:Taste_Enum": "None",
|
||||
"Sprite:Sprite": ""
|
||||
@ -45,7 +45,7 @@
|
||||
"Id:string": "Food004",
|
||||
"Name:string": "D",
|
||||
"Ingredient1:string": 3,
|
||||
"Ingredient2:string": 6,
|
||||
"Ingredient2:string": 1,
|
||||
"Taste1:Taste_Enum": "Sour",
|
||||
"Taste2:Taste_Enum": "Salty",
|
||||
"Sprite:Sprite": ""
|
||||
|
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 70eea4fed7f314a4492ac4a97380d4b1
|
||||
guid: 76740917292abb542b69fe09178e5bfa
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 593c063d566ca254c88f17d5d7ed1b36
|
||||
guid: 53d86386d682bb445ba3b231e83086c6
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
|
@ -14,7 +14,7 @@ MonoBehaviour:
|
||||
m_EditorClassIdentifier:
|
||||
_logs:
|
||||
- Editor: "\uB0A8\uD0DC\uAC74"
|
||||
Timestamp: 2025-05-13 15:02:17
|
||||
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
|
||||
@ -40,4 +40,251 @@ MonoBehaviour:
|
||||
\"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
|
||||
|
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ddcf1da52a823a242be56998cd210903
|
||||
guid: 0a3d0fe4e3a059c4eaaebf49f90ca899
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
|
@ -1,2 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 26a6429de94146a43826ee8860767011
|
||||
guid: b11551a9f69d3d04aac796eeabead5bb
|
@ -1,2 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8a377050a15fa114cb0d0bd8d0f6bafc
|
||||
guid: e06f0bd1faff18646b7597ddcf787856
|
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d30016576075fac4e84ec728aaeb2806
|
||||
guid: 78153c2368c8af440ae01521a5ed015d
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
|
@ -9,7 +9,7 @@ MonoBehaviour:
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d9a7e15d3d3df5f4a989d1e2e92682e6, type: 3}
|
||||
m_Script: {fileID: 11500000, guid: 80338c211c1fbc44f9fc1827b83ce50f, type: 3}
|
||||
m_Name: FoodSo
|
||||
m_EditorClassIdentifier:
|
||||
FoodList:
|
||||
@ -19,25 +19,25 @@ MonoBehaviour:
|
||||
Ingredient2: "\uD587\uBE5B\uB2F9\uADFC"
|
||||
Taste1: 1
|
||||
Taste2: 2
|
||||
Sprite: {fileID: 21300000, guid: e15933f76da90e742866563b5cd9e45f, type: 3}
|
||||
Sprite: {fileID: 0}
|
||||
- Id: Food002
|
||||
Name: B
|
||||
Ingredient1: 1
|
||||
Ingredient2: 4
|
||||
Ingredient2: 11
|
||||
Taste1: 3
|
||||
Taste2: 1
|
||||
Sprite: {fileID: 0}
|
||||
- Id: Food003
|
||||
Name: C
|
||||
Ingredient1: 2
|
||||
Ingredient2: 5
|
||||
Ingredient2: 22
|
||||
Taste1: 4
|
||||
Taste2: 0
|
||||
Sprite: {fileID: 0}
|
||||
- Id: Food004
|
||||
Name: D
|
||||
Ingredient1: 3
|
||||
Ingredient2: 6
|
||||
Ingredient2: 33
|
||||
Taste1: 5
|
||||
Taste2: 6
|
||||
Sprite: {fileID: 0}
|
||||
|
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8f6a170dcd0a88d47939e70db303af14
|
||||
guid: ccb6f7909b5ffd94499bbeaef45086be
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
|
@ -9,7 +9,7 @@ MonoBehaviour:
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 8a377050a15fa114cb0d0bd8d0f6bafc, type: 3}
|
||||
m_Script: {fileID: 11500000, guid: e06f0bd1faff18646b7597ddcf787856, type: 3}
|
||||
m_Name: MonsterSo
|
||||
m_EditorClassIdentifier:
|
||||
MonsterList:
|
||||
|
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2a1b86f3356293441bcfca705fff3b85
|
||||
guid: 1542a7a4161005c4baf6262cdf5f4ac7
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
|
@ -54,6 +54,7 @@ public class GoogleSheetManager : Singleton<GoogleSheetManager>
|
||||
|
||||
private string[] _availSheetArray;
|
||||
private string _json;
|
||||
private bool _isCreatingSo;
|
||||
|
||||
[SerializeField, ReadOnly]
|
||||
private bool _refreshTrigger;
|
||||
@ -113,7 +114,16 @@ private async void FetchGoogleSheet()
|
||||
GoogleSheetDiffViewer.ShowWindow(diffs);
|
||||
|
||||
bool isJsonSaved = SaveFileOrSkip(JsonFullPath, _json);
|
||||
|
||||
try
|
||||
{
|
||||
GenerateClassFilesPerSheet(_json);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Debug.LogError($"[GoogleSheetManager] 클래스 파일 생성 중 오류: {e.Message}");
|
||||
return;
|
||||
}
|
||||
|
||||
if (isJsonSaved)
|
||||
{
|
||||
@ -219,7 +229,7 @@ private void CompareWithSelectedVersion()
|
||||
|
||||
[BoxGroup("버전 복구")]
|
||||
[Button("선택한 버전으로 복구")]
|
||||
private void RestoreSelectedVersion()
|
||||
private async void RestoreSelectedVersion()
|
||||
{
|
||||
var log = AssetDatabase.LoadAssetAtPath<GoogleSheetChangeLog>(ChangeLogAssetPath);
|
||||
if (log == null || _restoreIndex < 0 || _restoreIndex >= log.Logs.Count)
|
||||
@ -231,21 +241,19 @@ private void RestoreSelectedVersion()
|
||||
string restoreJson = log.Logs[_restoreIndex].JsonSnapshot;
|
||||
string currentJson = File.Exists(JsonFullPath) ? File.ReadAllText(JsonFullPath) : "";
|
||||
|
||||
List<GoogleSheetDiff> diffs = GoogleSheetFetchHelper.CompareJsonDiff(currentJson, restoreJson);
|
||||
|
||||
var diffs = GoogleSheetFetchHelper.CompareJsonDiff(currentJson, restoreJson);
|
||||
if (diffs.Count > 0)
|
||||
GoogleSheetDiffViewer.ShowWindow(diffs); // 변경 전 → 변경 후
|
||||
GoogleSheetDiffViewer.ShowWindow(diffs);
|
||||
|
||||
// 복원 처리
|
||||
_json = restoreJson;
|
||||
|
||||
SaveFileOrSkip(JsonFullPath, _json);
|
||||
CreateGoogleSheetSo();
|
||||
_currentVersion = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
||||
await CreateGoogleSheetSoAsync();
|
||||
|
||||
_currentVersion = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
||||
Debug.Log($"[{log.Logs[_restoreIndex].Editor}]의 버전으로 복원 완료");
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 버전 로그 드롭다운 함수
|
||||
/// </summary>
|
||||
@ -509,9 +517,70 @@ private string GetCSharpType(JTokenType jsonType)
|
||||
}
|
||||
}
|
||||
|
||||
private bool CreateGoogleSheetSo()
|
||||
public async Task<bool> CreateGoogleSheetSoAsync()
|
||||
{
|
||||
await Addressables.InitializeAsync().Task;
|
||||
|
||||
if (_isCreatingSo)
|
||||
{
|
||||
Debug.LogWarning("[GoogleSheetManager] 이미 SO 생성 중입니다. 중복 호출 방지");
|
||||
return false;
|
||||
}
|
||||
|
||||
_isCreatingSo = true;
|
||||
bool result = false;
|
||||
|
||||
try
|
||||
{
|
||||
var checkHandle = Addressables.CheckForCatalogUpdates();
|
||||
await checkHandle.Task;
|
||||
|
||||
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();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Debug.LogError($"[GoogleSheetManager] SO 생성 중 예외 발생: {e}");
|
||||
}
|
||||
finally
|
||||
{
|
||||
_isCreatingSo = false;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public async Task<bool> InternalCreateGoogleSheetSoAsync()
|
||||
{
|
||||
JObject jsonObject = JObject.Parse(_json);
|
||||
|
||||
if (string.IsNullOrEmpty(_json))
|
||||
{
|
||||
Debug.LogError("[GoogleSheetManager] JSON 데이터가 비어있어 SO 생성을 중단합니다.");
|
||||
return false;
|
||||
}
|
||||
|
||||
bool allSuccess = true;
|
||||
|
||||
foreach (var sheetPair in jsonObject)
|
||||
@ -539,14 +608,25 @@ private bool CreateGoogleSheetSo()
|
||||
|
||||
string soPath = $"{soDirectory}/{sheetName}So.asset";
|
||||
ScriptableObject soInstance = AssetDatabase.LoadAssetAtPath<ScriptableObject>(soPath);
|
||||
|
||||
// 💡 잘못된 asset이면 삭제 후 새로 생성
|
||||
if (soInstance == null)
|
||||
{
|
||||
soInstance = ScriptableObject.CreateInstance(soType);
|
||||
AssetDatabase.CreateAsset(soInstance, soPath);
|
||||
if (File.Exists(soPath))
|
||||
{
|
||||
Debug.LogWarning($"[GoogleSheetManager] 잘못된 SO 파일 제거: {soPath}");
|
||||
AssetDatabase.DeleteAsset(soPath);
|
||||
}
|
||||
|
||||
GoogleSheetAddressableAutoSetup.AutoRegisterSo(soPath);
|
||||
soInstance = ScriptableObject.CreateInstance(soType);
|
||||
AssetDatabase.CreateAsset(soInstance, soPath);
|
||||
AssetDatabase.SaveAssets();
|
||||
AssetDatabase.ImportAsset(soPath, ImportAssetOptions.ForceSynchronousImport);
|
||||
await Task.Delay(100); // meta 확정 시간 확보
|
||||
AssetDatabase.Refresh();
|
||||
}
|
||||
|
||||
// 🧠 Sprite나 Enum 값을 반영한 List<T> 생성
|
||||
IList list = (IList)Activator.CreateInstance(typeof(List<>).MakeGenericType(dataType));
|
||||
var dataArray = (JArray)sheetPair.Value;
|
||||
|
||||
@ -584,41 +664,33 @@ private bool CreateGoogleSheetSo()
|
||||
|
||||
try
|
||||
{
|
||||
object value;
|
||||
object value = null;
|
||||
|
||||
// ✅ Sprite 처리
|
||||
// ✅ Sprite 처리 (주소로부터 비동기 로드)
|
||||
if (explicitType == "Sprite" && field.FieldType == typeof(Sprite))
|
||||
{
|
||||
string key = prop.Value.ToString().Trim();
|
||||
if (string.IsNullOrEmpty(key))
|
||||
string spriteKey = prop.Value.ToString().Trim();
|
||||
if (string.IsNullOrEmpty(spriteKey))
|
||||
continue;
|
||||
|
||||
if (!AddressableManager.HasLabel(spriteKey, "GoogleSheetSprite"))
|
||||
{
|
||||
Debug.Log($"[GoogleSheetManager] Sprite 키가 비어 있어 {fieldName} 건너뜀");
|
||||
Debug.LogWarning($"[GoogleSheetManager] Sprite 라벨 없음: {spriteKey}");
|
||||
continue;
|
||||
}
|
||||
|
||||
#if UNITY_EDITOR
|
||||
if (!AddressableManager.HasLabel(key, "GoogleSheetSprite"))
|
||||
var handle = Addressables.LoadAssetAsync<Sprite>(spriteKey);
|
||||
await handle.Task;
|
||||
|
||||
if (handle.Status != AsyncOperationStatus.Succeeded || handle.Result == null)
|
||||
{
|
||||
Debug.LogWarning($"[GoogleSheetManager] '{key}'는 GoogleSheetSprite 라벨 없음");
|
||||
Debug.LogWarning($"[GoogleSheetManager] Sprite 로드 실패 또는 null: {spriteKey}");
|
||||
continue;
|
||||
}
|
||||
|
||||
var handle = Addressables.LoadAssetAsync<Sprite>(key);
|
||||
var sprite = handle.WaitForCompletion();
|
||||
|
||||
Debug.Log($"[GoogleSheetManager] '{key}' 로딩 결과: {sprite} / 상태: {handle.Status}");
|
||||
|
||||
if (handle.Status == AsyncOperationStatus.Succeeded && sprite != null)
|
||||
{
|
||||
field.SetValue(dataInstance, sprite);
|
||||
Debug.Log($"[GoogleSheetManager] {fieldName} <- {sprite.name} 반영됨");
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogWarning($"[GoogleSheetManager] Sprite 로드 실패 또는 null: {key}");
|
||||
}
|
||||
#endif
|
||||
continue;
|
||||
value = handle.Result;
|
||||
field.SetValue(dataInstance, value);
|
||||
continue; // 이후 변환 스킵
|
||||
}
|
||||
|
||||
// ✅ Enum 처리
|
||||
@ -655,6 +727,7 @@ private bool CreateGoogleSheetSo()
|
||||
list.Add(dataInstance);
|
||||
}
|
||||
|
||||
// ✅ 리스트 필드에 값 설정
|
||||
FieldInfo listField = soType.GetField($"{sheetName}List",
|
||||
BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
|
||||
|
||||
@ -671,9 +744,19 @@ private bool CreateGoogleSheetSo()
|
||||
|
||||
AssetDatabase.SaveAssets();
|
||||
AssetDatabase.Refresh();
|
||||
|
||||
// ✅ Addressables 등록은 마지막에, 유효한 경우만
|
||||
if (AssetDatabase.LoadAssetAtPath<ScriptableObject>(soPath) != null)
|
||||
{
|
||||
GoogleSheetAddressableAutoSetup.AutoRegisterSo(soPath);
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogWarning($"[GoogleSheetManager] Addressables 등록 생략: {soPath} 불완전");
|
||||
}
|
||||
}
|
||||
|
||||
Debug.Log("✅ 시트별 ScriptableObject 생성 및 데이터 반영 완료");
|
||||
Debug.Log("✅ [CreateGoogleSheetSoAsync] 시트별 ScriptableObject 생성 및 반영 완료");
|
||||
return allSuccess;
|
||||
}
|
||||
|
||||
@ -694,29 +777,28 @@ private string NormalizeEnumKey(string input)
|
||||
|
||||
private void OnValidate()
|
||||
{
|
||||
if (_refreshTrigger && !_alreadyCreatedSo)
|
||||
if (_refreshTrigger && !_alreadyCreatedSo && EditorPrefs.GetBool("GoogleSheetManager_ShouldCreateSO"))
|
||||
{
|
||||
if (string.IsNullOrEmpty(_json))
|
||||
{
|
||||
Debug.LogWarning("[GoogleSheetManager] _json이 null이므로 SO 생성을 건너뜁니다.");
|
||||
return;
|
||||
}
|
||||
|
||||
_refreshTrigger = false;
|
||||
_alreadyCreatedSo = true;
|
||||
DelayedSoCreation();
|
||||
|
||||
EditorPrefs.SetBool("GoogleSheetManager_ShouldCreateSO", false); // 재실행 방지
|
||||
|
||||
EditorApplication.delayCall += () =>
|
||||
{
|
||||
_ = DelayAndCreateSo(); // 무시 가능한 비동기
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
private void DelayedSoCreation()
|
||||
private async Task DelayAndCreateSo()
|
||||
{
|
||||
if (CreateGoogleSheetSo())
|
||||
await Task.Delay(300); // 300ms 지연 (너무 짧으면 반영 안됨)
|
||||
|
||||
if (!string.IsNullOrEmpty(_json))
|
||||
{
|
||||
Debug.Log("Fetch done. SO 업데이트 완료");
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogWarning("[GoogleSheetManager] SO 생성 실패. 수동으로 Fetch를 다시 시도하세요.");
|
||||
bool success = await CreateGoogleSheetSoAsync();
|
||||
Debug.Log(success ? "Fetch done. SO 업데이트 완료" : "SO 생성 실패. 수동으로 Fetch를 다시 시도하세요.");
|
||||
}
|
||||
}
|
||||
|
||||
@ -744,17 +826,19 @@ private IEnumerator ReloadRoutine()
|
||||
|
||||
if (!string.IsNullOrEmpty(_json))
|
||||
{
|
||||
CreateGoogleSheetSo();
|
||||
var soTask = CreateGoogleSheetSoAsync();
|
||||
yield return new WaitUntil(() => soTask.IsCompleted);
|
||||
|
||||
Debug.Log("런타임 데이터 재적용 완료");
|
||||
}
|
||||
}
|
||||
|
||||
public void CreateSoAfterScriptReload()
|
||||
public async void CreateSoAfterScriptReload()
|
||||
{
|
||||
if (_json != null)
|
||||
{
|
||||
Debug.Log("[GoogleSheetManager] Script Reload 이후 SO 생성 실행");
|
||||
CreateGoogleSheetSo();
|
||||
await CreateGoogleSheetSoAsync();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user