DDD-33 에셋 매니저 구현
This commit is contained in:
parent
8fd305f106
commit
32cf8177e8
@ -15,7 +15,7 @@ MonoBehaviour:
|
||||
m_DefaultGroup: 30e7f67fe9aaa7849a34c9b6e2bc53ae
|
||||
m_currentHash:
|
||||
serializedVersion: 2
|
||||
Hash: b999ffdad28e71d51bc1ab0c8e9efbfa
|
||||
Hash: 00000000000000000000000000000000
|
||||
m_OptimizeCatalogSize: 0
|
||||
m_BuildRemoteCatalog: 1
|
||||
m_CatalogRequestsTimeout: 0
|
||||
|
@ -15,20 +15,14 @@ MonoBehaviour:
|
||||
m_GroupName: GoogleSheetSo_Group
|
||||
m_GUID: 7fe0c33d351391a45a0ea3c93ecef42e
|
||||
m_SerializeEntries:
|
||||
- m_GUID: 3dee12c6902e0644fab1d0e2693857a8
|
||||
m_Address: ItemSo
|
||||
- m_GUID: 8261ff435a6e2484086e02e556c0ba93
|
||||
m_Address: FoodDataSo
|
||||
m_ReadOnly: 0
|
||||
m_SerializedLabels:
|
||||
- GoogleSheetSo
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: b7e176e1cb8d76941af3b6344a4e1401
|
||||
m_Address: FoodSo
|
||||
m_ReadOnly: 0
|
||||
m_SerializedLabels:
|
||||
- GoogleSheetSo
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: f38617ba14522db4d87bb7e10c280a2d
|
||||
m_Address: MonsterSo
|
||||
- m_GUID: c2be393a39588b647bacdd69f47f677d
|
||||
m_Address: ItemDataSo
|
||||
m_ReadOnly: 0
|
||||
m_SerializedLabels:
|
||||
- GoogleSheetSo
|
||||
|
@ -48,7 +48,7 @@ MonoBehaviour:
|
||||
_isAccessGoogleSheet: 1
|
||||
_googleSheetUrl: https://script.google.com/macros/s/AKfycbw8TRSl_OuY2S-RX0yvOJi1SqNqoflG0R3pWxk9GC9u_wvGQeuABZc0VH7YJ5lMrAl4/exec
|
||||
_namespace: DDD
|
||||
_availSheets: Food/Monster/Item
|
||||
_availSheets: FoodData/ItemData
|
||||
_generateFolderPath: /_DDD/_Scripts/GenerateGoogleSheet/AutoCreated
|
||||
_currentVersion: "1 - 2025-07-04 16:18:02 by \uB0A8\uD0DC\uAC74"
|
||||
_restoreIndex: 0
|
||||
|
@ -4692,6 +4692,18 @@ PrefabInstance:
|
||||
propertyPath: m_Name
|
||||
value: GoogleSheetManager
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6289760680591803305, guid: 05aeb8078f8dc7c489b71a0ce5bc4fac, type: 3}
|
||||
propertyPath: _editorName
|
||||
value:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6289760680591803305, guid: 05aeb8078f8dc7c489b71a0ce5bc4fac, type: 3}
|
||||
propertyPath: _currentVersion
|
||||
value: "2 - 2025-07-10 14:06:48 by \uB0A8\uD0DC\uAC74"
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6289760680591803305, guid: 05aeb8078f8dc7c489b71a0ce5bc4fac, type: 3}
|
||||
propertyPath: _refreshTrigger
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
@ -19573,7 +19585,7 @@ SpriteRenderer:
|
||||
m_Size: {x: 6.84, y: 4.86}
|
||||
m_AdaptiveModeThreshold: 0.5
|
||||
m_SpriteTileMode: 0
|
||||
m_WasSpriteAssigned: 1
|
||||
m_WasSpriteAssigned: 0
|
||||
m_MaskInteraction: 0
|
||||
m_SpriteSortPoint: 0
|
||||
--- !u!4 &1555910286334263882
|
||||
@ -30976,7 +30988,7 @@ SpriteRenderer:
|
||||
m_Size: {x: 8, y: 3}
|
||||
m_AdaptiveModeThreshold: 0.5
|
||||
m_SpriteTileMode: 0
|
||||
m_WasSpriteAssigned: 1
|
||||
m_WasSpriteAssigned: 0
|
||||
m_MaskInteraction: 0
|
||||
m_SpriteSortPoint: 0
|
||||
--- !u!210 &2810339226026076516
|
||||
@ -43140,7 +43152,7 @@ SpriteRenderer:
|
||||
m_Size: {x: 14.44, y: 8.6}
|
||||
m_AdaptiveModeThreshold: 0.5
|
||||
m_SpriteTileMode: 0
|
||||
m_WasSpriteAssigned: 1
|
||||
m_WasSpriteAssigned: 0
|
||||
m_MaskInteraction: 0
|
||||
m_SpriteSortPoint: 0
|
||||
--- !u!210 &4335431399105516519
|
||||
@ -47226,7 +47238,7 @@ SpriteRenderer:
|
||||
m_Size: {x: 28.7, y: 5.6}
|
||||
m_AdaptiveModeThreshold: 0.5
|
||||
m_SpriteTileMode: 0
|
||||
m_WasSpriteAssigned: 1
|
||||
m_WasSpriteAssigned: 0
|
||||
m_MaskInteraction: 0
|
||||
m_SpriteSortPoint: 0
|
||||
--- !u!4 &4774839203087077672
|
||||
|
@ -149,7 +149,7 @@ MonoBehaviour:
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
_persistent: 1
|
||||
_managerDefinition: {fileID: 11400000, guid: a98ebd2611b2e4e80a867f57fdc91fc9, type: 2}
|
||||
_managerDefinitionSo: {fileID: 11400000, guid: d8346bac7a0fdab419cca3193df2ca34, type: 2}
|
||||
--- !u!4 &1415192492
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -159,7 +159,7 @@ Transform:
|
||||
m_GameObject: {fileID: 1415192490}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 721.5473, y: 0, z: 201.61682}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
|
@ -1,4 +1,4 @@
|
||||
using System.Collections.Generic;
|
||||
using System;
|
||||
using UnityEngine;
|
||||
using UnityEngine.AddressableAssets;
|
||||
using UnityEngine.ResourceManagement.AsyncOperations;
|
||||
@ -12,25 +12,27 @@ public void Init()
|
||||
|
||||
}
|
||||
|
||||
public void PostInit()
|
||||
public async void PostInit()
|
||||
{
|
||||
|
||||
try
|
||||
{
|
||||
await Addressables.InitializeAsync().Task;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Debug.Assert(false, "Addressables initialization failed");
|
||||
}
|
||||
}
|
||||
|
||||
public static async Awaitable<T> LoadAsset<T>(string key) where T : UnityEngine.Object
|
||||
{
|
||||
var handle = Addressables.LoadAssetAsync<T>(key);
|
||||
await handle.Task;
|
||||
if (handle.Status == AsyncOperationStatus.Succeeded)
|
||||
return handle.Result;
|
||||
|
||||
Debug.LogError($"Addressable load failed : {key}");
|
||||
return null;
|
||||
}
|
||||
|
||||
// public AsyncOperationHandle LoadAsset(AssetReference assetRef)
|
||||
// {
|
||||
//
|
||||
// var handle = assetRef.LoadAssetAsync<ScriptableObject>();
|
||||
// }
|
||||
//
|
||||
// private void OnAssetLoaded(AsyncOperationHandle obj)
|
||||
// {
|
||||
//
|
||||
// }
|
||||
//
|
||||
// public void ReleaseAsset()
|
||||
// {
|
||||
// TestRef.ReleaseAsset();
|
||||
// }
|
||||
}
|
||||
}
|
@ -1,21 +1,39 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
|
||||
namespace DDD
|
||||
{
|
||||
public class DataManager : Singleton<DataManager>, IManager
|
||||
{
|
||||
public ItemDataSo ItemDataSo { get; private set; }
|
||||
|
||||
public void Init()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void PostInit()
|
||||
public async void PostInit()
|
||||
{
|
||||
|
||||
try
|
||||
{
|
||||
ItemDataSo = await AssetManager.LoadAsset<ItemDataSo>("ItemDataSo");
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Debug.LogError($"So bind failed\n{e.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// TODO : So가 늘어나는 경우 관리 방법 변경 필요성이 있음
|
||||
// GetItemType(id)
|
||||
// GetItemImage
|
||||
// GetItemName
|
||||
|
||||
public ItemType GetItemType(string key)
|
||||
{
|
||||
ItemData itemData = ItemDataSo.ItemDataList.FirstOrDefault(item => item.Id == key);
|
||||
return itemData?.ItemType ?? ItemType.None;
|
||||
}
|
||||
}
|
||||
}
|
47
Assets/_DDD/_Scripts/GameData/DataManager.prefab
Normal file
47
Assets/_DDD/_Scripts/GameData/DataManager.prefab
Normal file
@ -0,0 +1,47 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &4251080669997520799
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 9003561875116500446}
|
||||
- component: {fileID: 4889131746858770208}
|
||||
m_Layer: 0
|
||||
m_Name: DataManager
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &9003561875116500446
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4251080669997520799}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 1
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &4889131746858770208
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4251080669997520799}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 07beed0d64f351c4e9b01784eebf0498, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
_persistent: 1
|
7
Assets/_DDD/_Scripts/GameData/DataManager.prefab.meta
Normal file
7
Assets/_DDD/_Scripts/GameData/DataManager.prefab.meta
Normal file
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d90fdb17f0162334daadc6fc93e9a0e3
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
14
Assets/_DDD/_Scripts/GameFlow/GameFlowAssetsSo.asset
Normal file
14
Assets/_DDD/_Scripts/GameFlow/GameFlowAssetsSo.asset
Normal file
@ -0,0 +1,14 @@
|
||||
%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: 0}
|
||||
m_Name: GameFlowAssetsSo
|
||||
m_EditorClassIdentifier: Assembly-CSharp:DDD:GameFlowAssetsSo
|
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b7e176e1cb8d76941af3b6344a4e1401
|
||||
guid: 4fca93ffece40ff48973532398011d84
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
@ -1,9 +1,11 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using Sirenix.OdinInspector;
|
||||
using UnityEngine;
|
||||
using UnityEngine.AddressableAssets;
|
||||
using UnityEngine.SceneManagement;
|
||||
using UnityEngine.Serialization;
|
||||
|
||||
namespace DDD
|
||||
{
|
||||
@ -16,33 +18,37 @@ public enum GameFlowState
|
||||
SettlementRestaurant = 3,
|
||||
}
|
||||
|
||||
public class GameFlowData : ScriptableObject
|
||||
public class GameFlowDataSo : ScriptableObject
|
||||
{
|
||||
public GameFlowState CurrentGameState;
|
||||
}
|
||||
|
||||
[CreateAssetMenu(fileName = "GameFlowAssets", menuName = "GameFlow/GameFlowAssets")]
|
||||
public class GameFlowAssets : ScriptableObject
|
||||
[CreateAssetMenu(fileName = "GameFlowAssetsSo", menuName = "GameFlow/GameFlowAssetsSo")]
|
||||
public class GameFlowAssetsSo : ScriptableObject
|
||||
{
|
||||
[ShowInInspector]
|
||||
public Dictionary<GameFlowState, List<string>> FlowItems = new();
|
||||
|
||||
[ShowInInspector]
|
||||
public Dictionary<GameFlowState, List<AssetReference>> FlowAssets = new();
|
||||
}
|
||||
|
||||
[CreateAssetMenu(fileName = "GameFlowSceneMapping", menuName = "GameFlow/GameFlowSceneMapping")]
|
||||
public class GameFlowSceneMapping : ScriptableObject
|
||||
[CreateAssetMenu(fileName = "GameFlowSceneMappingSo", menuName = "GameFlow/GameFlowSceneMappingSo")]
|
||||
public class GameFlowSceneMappingSo : ScriptableObject
|
||||
{
|
||||
[ShowInInspector]
|
||||
public Dictionary<GameFlowState, Scene> FlowToSceneMapping = new();
|
||||
}
|
||||
|
||||
public class GameFlowManager : Singleton<GameFlowManager>, IManager
|
||||
{
|
||||
private GameFlowData _gameFlowData = null;
|
||||
public GameFlowAssets GameFlowAssets = null;
|
||||
public GameFlowSceneMapping GameFlowSceneMapping;
|
||||
private GameFlowDataSo _gameFlowDataSo;
|
||||
public GameFlowAssetsSo GameFlowAssetsSo;
|
||||
public GameFlowSceneMappingSo GameFlowSceneMappingSo;
|
||||
|
||||
public void Init()
|
||||
{
|
||||
_gameFlowData = new GameFlowData();
|
||||
_gameFlowDataSo = ScriptableObject.CreateInstance<GameFlowDataSo>();
|
||||
}
|
||||
|
||||
public void PostInit()
|
||||
@ -55,7 +61,7 @@ public void PostInit()
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsGameStarted() => _gameFlowData.CurrentGameState != GameFlowState.None;
|
||||
public bool IsGameStarted() => _gameFlowDataSo.CurrentGameState != GameFlowState.None;
|
||||
|
||||
protected override void Awake()
|
||||
{
|
||||
@ -99,16 +105,16 @@ public IEnumerator ReadyNewFlow(GameFlowState newFlowState)
|
||||
OpenFlowScene(newFlowState);
|
||||
|
||||
// Ready Assets
|
||||
if (GameFlowAssets.FlowItems.ContainsKey(newFlowState))
|
||||
if (GameFlowAssetsSo.FlowItems.ContainsKey(newFlowState))
|
||||
{
|
||||
List<string> Items = GameFlowAssets.FlowItems[newFlowState];
|
||||
List<string> Items = GameFlowAssetsSo.FlowItems[newFlowState];
|
||||
// Addressables.LoadAssetsAsync(Items, null);
|
||||
// TODO : 여러 에셋 로드하고, 콜백 받을때까지 기다리기
|
||||
|
||||
// Wait
|
||||
}
|
||||
|
||||
if (GameFlowAssets.FlowAssets.ContainsKey(newFlowState))
|
||||
if (GameFlowAssetsSo.FlowAssets.ContainsKey(newFlowState))
|
||||
{
|
||||
//List<AssetReference> Assets = GameFlowAssets.FlowItems[newFlowState];
|
||||
// Addressables.LoadAssetsAsync(Assets, )
|
||||
@ -144,7 +150,7 @@ public void OnFlowSceneOpened(Scene newScene)
|
||||
|
||||
public bool GetFlowScene(GameFlowState flowState, out Scene scene)
|
||||
{
|
||||
if (GameFlowSceneMapping.FlowToSceneMapping.TryGetValue(flowState, out scene))
|
||||
if (GameFlowSceneMappingSo.FlowToSceneMapping.TryGetValue(flowState, out scene))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
14
Assets/_DDD/_Scripts/GameFlow/GameFlowSceneMappingSo.asset
Normal file
14
Assets/_DDD/_Scripts/GameFlow/GameFlowSceneMappingSo.asset
Normal file
@ -0,0 +1,14 @@
|
||||
%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: 0}
|
||||
m_Name: GameFlowSceneMappingSo
|
||||
m_EditorClassIdentifier: Assembly-CSharp:DDD:GameFlowSceneMappingSo
|
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a98ebd2611b2e4e80a867f57fdc91fc9
|
||||
guid: 11d1c2609268ac14fa627958ee097fac
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
@ -1,21 +1,20 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Unity.VisualScripting;
|
||||
using UnityEngine;
|
||||
using Object = UnityEngine.Object;
|
||||
|
||||
namespace DDD
|
||||
{
|
||||
[CreateAssetMenu(fileName = "ManagerDefinition", menuName = "GameFramework/ManagerDefinition")]
|
||||
public class ManagerDefinition : ScriptableObject
|
||||
[CreateAssetMenu(fileName = "ManagerDefinitionSo", menuName = "GameFramework/ManagerDefinitionSo")]
|
||||
public class ManagerDefinitionSo : ScriptableObject
|
||||
{
|
||||
public List<Singleton> ManagerClasses;
|
||||
}
|
||||
|
||||
public class GameManager : Singleton<GameManager>
|
||||
{
|
||||
public ManagerDefinition _managerDefinition;
|
||||
public List<Singleton> _ManagerInstances;
|
||||
[SerializeField]
|
||||
private ManagerDefinitionSo _managerDefinitionSo;
|
||||
|
||||
private List<Singleton> _managerInstances;
|
||||
|
||||
protected override void OnAwake()
|
||||
{
|
||||
@ -24,16 +23,18 @@ protected override void OnAwake()
|
||||
|
||||
// Entry Scene에서 뭘 해야할까?
|
||||
// 매니저 초기화
|
||||
foreach (var managerObject in _managerDefinition.ManagerClasses)
|
||||
_managerInstances = new List<Singleton>(_managerDefinitionSo.ManagerClasses.Count);
|
||||
|
||||
foreach (var managerObject in _managerDefinitionSo.ManagerClasses)
|
||||
{
|
||||
var managerInstance = Instantiate(managerObject);
|
||||
_ManagerInstances.Add(managerInstance);
|
||||
_managerInstances.Add(managerInstance);
|
||||
if (managerInstance is IManager manager)
|
||||
{
|
||||
manager.Init();
|
||||
}
|
||||
}
|
||||
foreach (var managerInstance in _ManagerInstances)
|
||||
foreach (var managerInstance in _managerInstances)
|
||||
{
|
||||
if (managerInstance is IManager manager)
|
||||
{
|
||||
|
@ -10,8 +10,9 @@ MonoBehaviour:
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 0}
|
||||
m_Name: ManagerDefinition
|
||||
m_EditorClassIdentifier: Assembly-CSharp:DDD:ManagerDefinition
|
||||
m_Name: ManagerDefinitionSo
|
||||
m_EditorClassIdentifier: Assembly-CSharp:DDD:ManagerDefinitionSo
|
||||
ManagerClasses:
|
||||
- {fileID: 6471498998539637564, guid: fa2ad62c75b1549f09597e47ed5f7cfb, type: 3}
|
||||
- {fileID: 7665229218737596710, guid: 71b177c2a18314c588da30429451666a, type: 3}
|
||||
- {fileID: 6471498998539637564, guid: fa2ad62c75b1549f09597e47ed5f7cfb, type: 3}
|
||||
- {fileID: 4889131746858770208, guid: d90fdb17f0162334daadc6fc93e9a0e3, type: 3}
|
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3dee12c6902e0644fab1d0e2693857a8
|
||||
guid: d8346bac7a0fdab419cca3193df2ca34
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
@ -0,0 +1,77 @@
|
||||
{
|
||||
"$개요": [
|
||||
{
|
||||
"": "시트 생성"
|
||||
}
|
||||
],
|
||||
"FoodData": [
|
||||
{
|
||||
"Id:string": "식별ID",
|
||||
"Name:string": "이름",
|
||||
"Cookware_Enum": "요리도구",
|
||||
"Ingredient1:string": "재료1",
|
||||
"Ingredient2:string": "재료2",
|
||||
"Taste1:Taste_Enum": "맛1",
|
||||
"Taste2:Taste_Enum": "맛2",
|
||||
"Sprite:Sprite": "Addressable 이미지 이름"
|
||||
},
|
||||
{
|
||||
"Id:string": "Food001",
|
||||
"Name:string": "햇빛수프",
|
||||
"Cookware_Enum": "Pot",
|
||||
"Ingredient1:string": "극락쌀",
|
||||
"Ingredient2:string": "햇빛당근",
|
||||
"Taste1:Taste_Enum": "Bitter",
|
||||
"Taste2:Taste_Enum": "Sweet",
|
||||
"Sprite:Sprite": "Gold"
|
||||
},
|
||||
{
|
||||
"Id:string": "Food002",
|
||||
"Name:string": "B",
|
||||
"Cookware_Enum": "FryingPan",
|
||||
"Ingredient1:string": 1,
|
||||
"Ingredient2:string": 1,
|
||||
"Taste1:Taste_Enum": "Spicy",
|
||||
"Taste2:Taste_Enum": "Bitter",
|
||||
"Sprite:Sprite": ""
|
||||
},
|
||||
{
|
||||
"Id:string": "Food003",
|
||||
"Name:string": "C",
|
||||
"Cookware_Enum": "Pot",
|
||||
"Ingredient1:string": 2,
|
||||
"Ingredient2:string": 2,
|
||||
"Taste1:Taste_Enum": "Fresh",
|
||||
"Taste2:Taste_Enum": "None",
|
||||
"Sprite:Sprite": ""
|
||||
},
|
||||
{
|
||||
"Id:string": "Food004",
|
||||
"Name:string": "D",
|
||||
"Cookware_Enum": "Plating",
|
||||
"Ingredient1:string": 3,
|
||||
"Ingredient2:string": 3,
|
||||
"Taste1:Taste_Enum": " ",
|
||||
"Taste2:Taste_Enum": "Salty",
|
||||
"Sprite:Sprite": "Gold"
|
||||
}
|
||||
],
|
||||
"ItemData": [
|
||||
{
|
||||
"Id": "식별번호",
|
||||
"ItemType_Enum": "아이템타입"
|
||||
},
|
||||
{
|
||||
"Id": "Item001",
|
||||
"ItemType_Enum": "Food"
|
||||
},
|
||||
{
|
||||
"Id": "Item002",
|
||||
"ItemType_Enum": "Prop"
|
||||
},
|
||||
{
|
||||
"Id": "Item003",
|
||||
"ItemType_Enum": "Interactable"
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5a1f5fa4ff4feee4e91087c012fd82bf
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -5,7 +5,7 @@
|
||||
namespace DDD
|
||||
{
|
||||
[Serializable]
|
||||
public class Food
|
||||
public class FoodData
|
||||
{
|
||||
/// <summary>식별ID</summary>
|
||||
[Tooltip("식별ID")]
|
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 75468224b7088a34b861c056d4528fec
|
@ -0,0 +1,12 @@
|
||||
// <auto-generated> File: FoodDataSo.cs
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace DDD
|
||||
{
|
||||
[CreateAssetMenu(fileName = "FoodDataSo", menuName = "GoogleSheet/FoodDataSo")]
|
||||
public class FoodDataSo : ScriptableObject
|
||||
{
|
||||
public List<FoodData> FoodDataList;
|
||||
}
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 23d26ce5ffaf3e44bb79a4d77ead320d
|
@ -5,27 +5,15 @@
|
||||
namespace DDD
|
||||
{
|
||||
[Serializable]
|
||||
public class Item
|
||||
public class ItemData
|
||||
{
|
||||
/// <summary>식별번호</summary>
|
||||
[Tooltip("식별번호")]
|
||||
public string Id;
|
||||
|
||||
/// <summary>이름</summary>
|
||||
[Tooltip("이름")]
|
||||
public string Name;
|
||||
|
||||
/// <summary>아이템타입</summary>
|
||||
[Tooltip("아이템타입")]
|
||||
public ItemType ItemType;
|
||||
|
||||
/// <summary>셀크기X</summary>
|
||||
[Tooltip("셀크기X")]
|
||||
public int CellSizeX;
|
||||
|
||||
/// <summary>셀크기Y</summary>
|
||||
[Tooltip("셀크기Y")]
|
||||
public int CellSizeY;
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b45493673e890264c89efa652ddd00da
|
@ -0,0 +1,12 @@
|
||||
// <auto-generated> File: ItemDataSo.cs
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace DDD
|
||||
{
|
||||
[CreateAssetMenu(fileName = "ItemDataSo", menuName = "GoogleSheet/ItemDataSo")]
|
||||
public class ItemDataSo : ScriptableObject
|
||||
{
|
||||
public List<ItemData> ItemDataList;
|
||||
}
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a9a45b736c555724bbc4b3a46116b356
|
@ -26,9 +26,9 @@ public enum Taste
|
||||
public enum ItemType
|
||||
{
|
||||
None = 0,
|
||||
Floor = 1,
|
||||
Furniture = 2,
|
||||
WallMount = 3,
|
||||
Food = 1,
|
||||
Prop = 2,
|
||||
Interactable = 3,
|
||||
}
|
||||
|
||||
}
|
@ -4,7 +4,7 @@
|
||||
"": "시트 생성"
|
||||
}
|
||||
],
|
||||
"Food": [
|
||||
"FoodData": [
|
||||
{
|
||||
"Id:string": "식별ID",
|
||||
"Name:string": "이름",
|
||||
@ -56,61 +56,22 @@
|
||||
"Sprite:Sprite": "Gold"
|
||||
}
|
||||
],
|
||||
"Monster": [
|
||||
"ItemData": [
|
||||
{
|
||||
"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
|
||||
}
|
||||
],
|
||||
"Item": [
|
||||
{
|
||||
"Id": "식별번호",
|
||||
"Name": "이름",
|
||||
"ItemType_Enum": "아이템타입",
|
||||
"CellSizeX:int": "셀크기X",
|
||||
"CellSizeY:int": "셀크기Y"
|
||||
"ItemType_Enum": "아이템타입"
|
||||
},
|
||||
{
|
||||
"Id": "Item001",
|
||||
"Name": "나무장판",
|
||||
"ItemType_Enum": "Floor",
|
||||
"CellSizeX:int": 1,
|
||||
"CellSizeY:int": 1
|
||||
"ItemType_Enum": "Food"
|
||||
},
|
||||
{
|
||||
"Id": "Item002",
|
||||
"Name": "테이블",
|
||||
"ItemType_Enum": "Furniture",
|
||||
"CellSizeX:int": 2,
|
||||
"CellSizeY:int": 2
|
||||
"ItemType_Enum": "Prop"
|
||||
},
|
||||
{
|
||||
"Id": "Item003",
|
||||
"Name": "전등",
|
||||
"ItemType_Enum": "WallMount",
|
||||
"CellSizeX:int": "",
|
||||
"CellSizeY:int": ""
|
||||
"ItemType_Enum": "Interactable"
|
||||
}
|
||||
]
|
||||
}
|
@ -91,4 +91,32 @@ MonoBehaviour:
|
||||
2\n },\n {\n \"Id\": \"Item003\",\n \"Name\": \"\uC804\uB4F1\",\n
|
||||
\"ItemType_Enum\": \"WallMount\",\n \"CellSizeX:int\": \"\",\n \"CellSizeY:int\":
|
||||
\"\"\n }\n ]\n}"
|
||||
- Editor: "\uB0A8\uD0DC\uAC74"
|
||||
Timestamp: 2025-07-10 14:06:48
|
||||
JsonSnapshot: "{\n \"$\uAC1C\uC694\": [\n {\n \"\": \"\uC2DC\uD2B8 \uC0DD\uC131\"\n
|
||||
}\n ],\n \"FoodData\": [\n {\n \"Id:string\": \"\uC2DD\uBCC4ID\",\n
|
||||
\"Name:string\": \"\uC774\uB984\",\n \"Cookware_Enum\": \"\uC694\uB9AC\uB3C4\uAD6C\",\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
|
||||
\"Cookware_Enum\": \"Pot\",\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 \"Cookware_Enum\": \"FryingPan\",\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
|
||||
\"Cookware_Enum\": \"Pot\",\n \"Ingredient1:string\": 2,\n \"Ingredient2:string\":
|
||||
2,\n \"Taste1:Taste_Enum\": \"Fresh\",\n \"Taste2:Taste_Enum\": \"None\",\n
|
||||
\"Sprite:Sprite\": \"\"\n },\n {\n \"Id:string\": \"Food004\",\n
|
||||
\"Name:string\": \"D\",\n \"Cookware_Enum\": \"Plating\",\n \"Ingredient1:string\":
|
||||
3,\n \"Ingredient2:string\": 3,\n \"Taste1:Taste_Enum\": \" \",\n
|
||||
\"Taste2:Taste_Enum\": \"Salty\",\n \"Sprite:Sprite\": \"Gold\"\n }\n
|
||||
],\n \"ItemData\": [\n {\n \"Id\": \"\uC2DD\uBCC4\uBC88\uD638\",\n
|
||||
\"ItemType_Enum\": \"\uC544\uC774\uD15C\uD0C0\uC785\"\n },\n {\n
|
||||
\"Id\": \"Item001\",\n \"ItemType_Enum\": \"Food\"\n },\n {\n
|
||||
\"Id\": \"Item002\",\n \"ItemType_Enum\": \"Prop\"\n },\n {\n
|
||||
\"Id\": \"Item003\",\n \"ItemType_Enum\": \"Interactable\"\n }\n ]\n}"
|
||||
MaxLogs: 100
|
@ -9,10 +9,10 @@ MonoBehaviour:
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 68f7086db4e68fc4d913633d06d803f0, type: 3}
|
||||
m_Name: FoodSo
|
||||
m_Script: {fileID: 11500000, guid: 23d26ce5ffaf3e44bb79a4d77ead320d, type: 3}
|
||||
m_Name: FoodDataSo
|
||||
m_EditorClassIdentifier:
|
||||
FoodList:
|
||||
FoodDataList:
|
||||
- Id: Food001
|
||||
Name: "\uD587\uBE5B\uC218\uD504"
|
||||
Cookware: 1
|
||||
@ -20,7 +20,7 @@ MonoBehaviour:
|
||||
Ingredient2: "\uD587\uBE5B\uB2F9\uADFC"
|
||||
Taste1: 1
|
||||
Taste2: 2
|
||||
Sprite: {fileID: 21300000, guid: e15933f76da90e742866563b5cd9e45f, type: 3}
|
||||
Sprite: {fileID: 0}
|
||||
- Id: Food002
|
||||
Name: B
|
||||
Cookware: 2
|
||||
@ -44,4 +44,4 @@ MonoBehaviour:
|
||||
Ingredient2: 3
|
||||
Taste1: 5
|
||||
Taste2: 6
|
||||
Sprite: {fileID: 21300000, guid: e15933f76da90e742866563b5cd9e45f, type: 3}
|
||||
Sprite: {fileID: 0}
|
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f38617ba14522db4d87bb7e10c280a2d
|
||||
guid: 8261ff435a6e2484086e02e556c0ba93
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
@ -9,22 +9,13 @@ MonoBehaviour:
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 7b5deaa05a95b394fb6f6fd6a450e445, type: 3}
|
||||
m_Name: ItemSo
|
||||
m_Script: {fileID: 11500000, guid: a9a45b736c555724bbc4b3a46116b356, type: 3}
|
||||
m_Name: ItemDataSo
|
||||
m_EditorClassIdentifier:
|
||||
ItemList:
|
||||
ItemDataList:
|
||||
- Id: Item001
|
||||
Name: "\uB098\uBB34\uC7A5\uD310"
|
||||
ItemType: 1
|
||||
CellSizeX: 1
|
||||
CellSizeY: 1
|
||||
- Id: Item002
|
||||
Name: "\uD14C\uC774\uBE14"
|
||||
ItemType: 2
|
||||
CellSizeX: 2
|
||||
CellSizeY: 2
|
||||
- Id: Item003
|
||||
Name: "\uC804\uB4F1"
|
||||
ItemType: 3
|
||||
CellSizeX: 0
|
||||
CellSizeY: 0
|
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c2be393a39588b647bacdd69f47f677d
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,2 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 07d32adeac9e96e4ca9cc90de1b3fa4b
|
@ -1,12 +0,0 @@
|
||||
// <auto-generated> File: FoodSo.cs
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace DDD
|
||||
{
|
||||
[CreateAssetMenu(fileName = "FoodSo", menuName = "GoogleSheet/FoodSo")]
|
||||
public class FoodSo : ScriptableObject
|
||||
{
|
||||
public List<Food> FoodList;
|
||||
}
|
||||
}
|
@ -1,2 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 68f7086db4e68fc4d913633d06d803f0
|
@ -1,2 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ae55dc0aec9727b4a8cfbb29172ad176
|
@ -1,12 +0,0 @@
|
||||
// <auto-generated> File: ItemSo.cs
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace DDD
|
||||
{
|
||||
[CreateAssetMenu(fileName = "ItemSo", menuName = "GoogleSheet/ItemSo")]
|
||||
public class ItemSo : ScriptableObject
|
||||
{
|
||||
public List<Item> ItemList;
|
||||
}
|
||||
}
|
@ -1,2 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7b5deaa05a95b394fb6f6fd6a450e445
|
@ -1,23 +0,0 @@
|
||||
// <auto-generated>
|
||||
using System;
|
||||
using UnityEngine;
|
||||
|
||||
namespace DDD
|
||||
{
|
||||
[Serializable]
|
||||
public class Monster
|
||||
{
|
||||
/// <summary>식별번호</summary>
|
||||
[Tooltip("식별번호")]
|
||||
public string Id;
|
||||
|
||||
/// <summary>이름</summary>
|
||||
[Tooltip("이름")]
|
||||
public string Name;
|
||||
|
||||
/// <summary>테스트1</summary>
|
||||
[Tooltip("테스트1")]
|
||||
public int T1;
|
||||
|
||||
}
|
||||
}
|
@ -1,2 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0b53849f7f9a9ad4f85656f3563afb61
|
@ -1,12 +0,0 @@
|
||||
// <auto-generated> File: MonsterSo.cs
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace DDD
|
||||
{
|
||||
[CreateAssetMenu(fileName = "MonsterSo", menuName = "GoogleSheet/MonsterSo")]
|
||||
public class MonsterSo : ScriptableObject
|
||||
{
|
||||
public List<Monster> MonsterList;
|
||||
}
|
||||
}
|
@ -1,2 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7e1500a3fc388674fa8ef2759d5d1c95
|
@ -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: 7e1500a3fc388674fa8ef2759d5d1c95, 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
|
Loading…
Reference in New Issue
Block a user