웨이브, 몬스터 데이터 스키마 변경
- waveMaster, monsterMaster 테이블 관련 파일 제거 - monster 테이블 추가 - 데이터 작업 가이드 txt 파일 추가
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 25ab0c46cf6af334daf6817ed418e178
|
||||
guid: feb45c3991f6f154a85c05158e784171
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
@@ -9,10 +9,10 @@ MonoBehaviour:
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: eb34e2098ca7d654a81d495ad6e6f21b, type: 3}
|
||||
m_Name: Data_Row1
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.MonsterMasterData
|
||||
monsterId: 101
|
||||
m_Script: {fileID: 11500000, guid: 71f75742bf2af604ba55221e30379f4a, type: 3}
|
||||
m_Name: Monster101
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.MonsterData
|
||||
id: 101
|
||||
memo: "Grunt(\uAE30\uBCF8)"
|
||||
moveSpeed: 2.6
|
||||
maxHp: 30
|
||||
@@ -20,3 +20,5 @@ MonoBehaviour:
|
||||
atkDamage: 3
|
||||
atkIntervalSec: 1.2
|
||||
prefabPath: Assets/Prefabs/EnemyTest
|
||||
cost: 1
|
||||
weight: 1
|
||||
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4566aa20a775cd04bac99329bb560b07
|
||||
guid: cec2336a0be4b6c4eb954ac3d08aa8d9
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
@@ -9,10 +9,10 @@ MonoBehaviour:
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: eb34e2098ca7d654a81d495ad6e6f21b, type: 3}
|
||||
m_Name: Data_Row2
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.MonsterMasterData
|
||||
monsterId: 102
|
||||
m_Script: {fileID: 11500000, guid: 71f75742bf2af604ba55221e30379f4a, type: 3}
|
||||
m_Name: Monster102
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.MonsterData
|
||||
id: 102
|
||||
memo: "Fast(\uBE60\uB984/\uC57D\uD568)"
|
||||
moveSpeed: 3.4
|
||||
maxHp: 18
|
||||
@@ -20,3 +20,5 @@ MonoBehaviour:
|
||||
atkDamage: 2
|
||||
atkIntervalSec: 1
|
||||
prefabPath: Assets/Prefabs/MonsterTest
|
||||
cost: 2
|
||||
weight: 0.5
|
||||
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0dc5ffa309a736b4a95faeb0ba9a9870
|
||||
guid: fde07a19ade09f044aca9151f407d073
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
@@ -9,10 +9,10 @@ MonoBehaviour:
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: eb34e2098ca7d654a81d495ad6e6f21b, type: 3}
|
||||
m_Name: Data_Row3
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.MonsterMasterData
|
||||
monsterId: 103
|
||||
m_Script: {fileID: 11500000, guid: 71f75742bf2af604ba55221e30379f4a, type: 3}
|
||||
m_Name: Monster103
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.MonsterData
|
||||
id: 103
|
||||
memo: "Tank(\uB290\uB9BC/\uB2E8\uB2E8)"
|
||||
moveSpeed: 2
|
||||
maxHp: 70
|
||||
@@ -20,3 +20,5 @@ MonoBehaviour:
|
||||
atkDamage: 4
|
||||
atkIntervalSec: 1.5
|
||||
prefabPath: Assets/Prefabs/Core
|
||||
cost: 5
|
||||
weight: 0.2
|
||||
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a7b8bd34df6e81441afcbac36c0a1340
|
||||
guid: 5687251677f89394fbdc083ff34e06d0
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
@@ -9,10 +9,10 @@ MonoBehaviour:
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: eb34e2098ca7d654a81d495ad6e6f21b, type: 3}
|
||||
m_Name: Data_Row4
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.MonsterMasterData
|
||||
monsterId: 104
|
||||
m_Script: {fileID: 11500000, guid: 71f75742bf2af604ba55221e30379f4a, type: 3}
|
||||
m_Name: Monster104
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.MonsterData
|
||||
id: 104
|
||||
memo: "Ranged(\uC6D0\uAC70\uB9AC/\uC57D\uD568)"
|
||||
moveSpeed: 2.4
|
||||
maxHp: 22
|
||||
@@ -20,3 +20,5 @@ MonoBehaviour:
|
||||
atkDamage: 2
|
||||
atkIntervalSec: 1.4
|
||||
prefabPath: Assets/Prefabs/Resource
|
||||
cost: 3
|
||||
weight: 0.333
|
||||
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e003d9bc04014834b8d4e6bead723568
|
||||
guid: 3663ac7b7b070cb4bad5f4d05e73899d
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
@@ -9,10 +9,10 @@ MonoBehaviour:
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: eb34e2098ca7d654a81d495ad6e6f21b, type: 3}
|
||||
m_Name: Data_Row5
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.MonsterMasterData
|
||||
monsterId: 105
|
||||
m_Script: {fileID: 11500000, guid: 71f75742bf2af604ba55221e30379f4a, type: 3}
|
||||
m_Name: Monster105
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.MonsterData
|
||||
id: 105
|
||||
memo: "Elite(\uC18C\uC218 \uC815\uC608)"
|
||||
moveSpeed: 2.8
|
||||
maxHp: 120
|
||||
@@ -20,3 +20,5 @@ MonoBehaviour:
|
||||
atkDamage: 7
|
||||
atkIntervalSec: 1.3
|
||||
prefabPath: Assets/Prefabs/ResourcePickup
|
||||
cost: 10
|
||||
weight: 0.1
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 329fdb6e92ee4064bb41ca8e0fa4c86c
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5b634a7c580ad824381bcbcaaa1d7047
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 47db706e7f90d914f8b05b88b626b406
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,20 +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: b0f6af2548b6a6049b54c1d50e7a6c53, type: 3}
|
||||
m_Name: Data_Row1
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.WaveMasterData
|
||||
waveId: 1
|
||||
waveKey: WAVE_001
|
||||
memo:
|
||||
durationSec: 90
|
||||
monsterIdList: 101
|
||||
monsterCountList: 10
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 916cc5c2dde7f79408a2ec3a8830f1f6
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,20 +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: b0f6af2548b6a6049b54c1d50e7a6c53, type: 3}
|
||||
m_Name: Data_Row2
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.WaveMasterData
|
||||
waveId: 2
|
||||
waveKey: WAVE_002
|
||||
memo:
|
||||
durationSec: 90
|
||||
monsterIdList: 102
|
||||
monsterCountList: 20
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0d5315e12bb9dc440ae593ab703891d6
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,20 +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: b0f6af2548b6a6049b54c1d50e7a6c53, type: 3}
|
||||
m_Name: Data_Row3
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.WaveMasterData
|
||||
waveId: 3
|
||||
waveKey: WAVE_003
|
||||
memo:
|
||||
durationSec: 90
|
||||
monsterIdList: 103
|
||||
monsterCountList: 5
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 97dc48f8cf531c847942d3eef6dc615c
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,20 +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: b0f6af2548b6a6049b54c1d50e7a6c53, type: 3}
|
||||
m_Name: Data_Row4
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.WaveMasterData
|
||||
waveId: 4
|
||||
waveKey: WAVE_004
|
||||
memo:
|
||||
durationSec: 90
|
||||
monsterIdList: 104
|
||||
monsterCountList: 3
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f555b6db60f636d40b24efeb999fd200
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,20 +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: b0f6af2548b6a6049b54c1d50e7a6c53, type: 3}
|
||||
m_Name: Data_Row5
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.WaveMasterData
|
||||
waveId: 5
|
||||
waveKey: WAVE_005
|
||||
memo:
|
||||
durationSec: 90
|
||||
monsterIdList: 105
|
||||
monsterCountList: 2
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 820652adf90840e45a832fd8985615b9
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -2,15 +2,16 @@
|
||||
// 생성 스크립트: DataTools/generate_csharp_classes.py
|
||||
|
||||
using UnityEngine;
|
||||
using System.Collections.Generic; // 리스트 지원을 위해 추가
|
||||
|
||||
namespace Northbound.Data
|
||||
{
|
||||
[CreateAssetMenu(fileName = "MonsterMasterData", menuName = "DigAndDefend/MonsterMaster Data")]
|
||||
public class MonsterMasterData : ScriptableObject
|
||||
[CreateAssetMenu(fileName = "MonsterData", menuName = "DigAndDefend/Monster Data")]
|
||||
public class MonsterData : ScriptableObject
|
||||
{
|
||||
[Header("기본 정보")]
|
||||
/// <summary>몬스터 고유 ID</summary>
|
||||
public int monsterId;
|
||||
public int id;
|
||||
/// <summary>메모</summary>
|
||||
public string memo;
|
||||
/// <summary>이동속도</summary>
|
||||
@@ -25,6 +26,10 @@ namespace Northbound.Data
|
||||
public float atkIntervalSec;
|
||||
/// <summary>프리팹/리소스 경로</summary>
|
||||
public string prefabPath;
|
||||
/// <summary>몬스터 난이도 점수</summary>
|
||||
public int cost;
|
||||
/// <summary>등장 가중치</summary>
|
||||
public float weight;
|
||||
|
||||
}
|
||||
}
|
||||
2
Assets/Data/Scripts/DataClasses/MonsterData.cs.meta
Normal file
2
Assets/Data/Scripts/DataClasses/MonsterData.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 71f75742bf2af604ba55221e30379f4a
|
||||
@@ -1,2 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: eb34e2098ca7d654a81d495ad6e6f21b
|
||||
@@ -1,26 +0,0 @@
|
||||
// 이 파일은 자동 생성되었습니다. 직접 수정하지 마세요!
|
||||
// 생성 스크립트: DataTools/generate_csharp_classes.py
|
||||
|
||||
using UnityEngine;
|
||||
|
||||
namespace Northbound.Data
|
||||
{
|
||||
[CreateAssetMenu(fileName = "WaveMasterData", menuName = "DigAndDefend/WaveMaster Data")]
|
||||
public class WaveMasterData : ScriptableObject
|
||||
{
|
||||
[Header("기본 정보")]
|
||||
/// <summary>웨이브 고유 ID</summary>
|
||||
public int waveId;
|
||||
/// <summary>사람이 읽는 고정 키 (예: WAVE_001)</summary>
|
||||
public string waveKey;
|
||||
/// <summary>기획/개발 메모(비출력)</summary>
|
||||
public string memo;
|
||||
/// <summary>웨이브 주기(초). 기본 90</summary>
|
||||
public int durationSec;
|
||||
/// <summary>해당 웨이브에서 소환할 몬스터 ID 목록</summary>
|
||||
public string monsterIdList;
|
||||
/// <summary>해당 웨이브에서 소환할 몬스터 ID 별 소환 개수</summary>
|
||||
public string monsterCountList;
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,2 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b0f6af2548b6a6049b54c1d50e7a6c53
|
||||
@@ -1,6 +1,6 @@
|
||||
[
|
||||
{
|
||||
"name": "monster_id",
|
||||
"name": "id",
|
||||
"type": "int",
|
||||
"condition": null,
|
||||
"description": "몬스터 고유 ID"
|
||||
@@ -46,5 +46,17 @@
|
||||
"type": "string",
|
||||
"condition": null,
|
||||
"description": "프리팹/리소스 경로"
|
||||
},
|
||||
{
|
||||
"name": "cost",
|
||||
"type": "int",
|
||||
"condition": null,
|
||||
"description": "몬스터 난이도 점수"
|
||||
},
|
||||
{
|
||||
"name": "weight",
|
||||
"type": "float",
|
||||
"condition": null,
|
||||
"description": "등장 가중치"
|
||||
}
|
||||
]
|
||||
@@ -1,38 +0,0 @@
|
||||
[
|
||||
{
|
||||
"name": "wave_id",
|
||||
"type": "int",
|
||||
"condition": null,
|
||||
"description": "웨이브 고유 ID"
|
||||
},
|
||||
{
|
||||
"name": "wave_key",
|
||||
"type": "string",
|
||||
"condition": null,
|
||||
"description": "사람이 읽는 고정 키 (예: WAVE_001)"
|
||||
},
|
||||
{
|
||||
"name": "memo",
|
||||
"type": "string",
|
||||
"condition": null,
|
||||
"description": "기획/개발 메모(비출력)"
|
||||
},
|
||||
{
|
||||
"name": "duration_sec",
|
||||
"type": "int",
|
||||
"condition": null,
|
||||
"description": "웨이브 주기(초). 기본 90"
|
||||
},
|
||||
{
|
||||
"name": "monster_id_list",
|
||||
"type": "string",
|
||||
"condition": null,
|
||||
"description": "해당 웨이브에서 소환할 몬스터 ID 목록"
|
||||
},
|
||||
{
|
||||
"name": "monster_count_list",
|
||||
"type": "string",
|
||||
"condition": null,
|
||||
"description": "해당 웨이브에서 소환할 몬스터 ID 별 소환 개수"
|
||||
}
|
||||
]
|
||||
6
GameData/Monster.csv
Normal file
6
GameData/Monster.csv
Normal file
@@ -0,0 +1,6 @@
|
||||
id,memo,move_speed,max_hp,atk_range,atk_damage,atk_interval_sec,prefab_path,cost,weight
|
||||
101,Grunt(기본),2.6,30,1,3,1.2,Assets/Prefabs/EnemyTest,1,1
|
||||
102,Fast(빠름/약함),3.4,18,1,2,1,Assets/Prefabs/MonsterTest,2,0.5
|
||||
103,Tank(느림/단단),2,70,1,4,1.5,Assets/Prefabs/Core,5,0.2
|
||||
104,Ranged(원거리/약함),2.4,22,5,2,1.4,Assets/Prefabs/Resource,3,0.333
|
||||
105,Elite(소수 정예),2.8,120,1,7,1.3,Assets/Prefabs/ResourcePickup,10,0.1
|
||||
|
@@ -1,6 +0,0 @@
|
||||
monster_id,memo,move_speed,max_hp,atk_range,atk_damage,atk_interval_sec,prefab_path
|
||||
101,Grunt(기본),2.6,30,1,3,1.2,Assets/Prefabs/EnemyTest
|
||||
102,Fast(빠름/약함),3.4,18,1,2,1,Assets/Prefabs/MonsterTest
|
||||
103,Tank(느림/단단),2,70,1,4,1.5,Assets/Prefabs/Core
|
||||
104,Ranged(원거리/약함),2.4,22,5,2,1.4,Assets/Prefabs/Resource
|
||||
105,Elite(소수 정예),2.8,120,1,7,1.3,Assets/Prefabs/ResourcePickup
|
||||
|
@@ -1,6 +0,0 @@
|
||||
wave_id,wave_key,memo,duration_sec,monster_id_list,monster_count_list
|
||||
1,WAVE_001,,90,101,10
|
||||
2,WAVE_002,,90,102,20
|
||||
3,WAVE_003,,90,103,5
|
||||
4,WAVE_004,,90,104,3
|
||||
5,WAVE_005,,90,105,2
|
||||
|
26
데이터 작업 가이드.txt
Normal file
26
데이터 작업 가이드.txt
Normal file
@@ -0,0 +1,26 @@
|
||||
|
||||
Step 1: 프로그램 실행
|
||||
프로젝트 폴더에서 PowerShell 실행 후
|
||||
.\sync-from-notion.ps1
|
||||
|
||||
Step 2: 스키마 선택
|
||||
동기화할 스키마:
|
||||
1. Towers
|
||||
2. Enemies
|
||||
3. 전체
|
||||
|
||||
선택: 1
|
||||
|
||||
Step 3: 결과 확인
|
||||
📋 Towers 동기화
|
||||
✅ 11개 필드 로드
|
||||
💾 백업: Towers_20260122_143022.xlsx
|
||||
✅ 저장 완료: GameData\Towers.xlsx
|
||||
|
||||
Step 4: Excel등에서 csv파일의 데이터 입력/수정
|
||||
|
||||
Step 5: Unity 에디터 상단의 Northbound 탭 => Data Importer 메뉴 실행
|
||||
|
||||
Step 6: Unity ScriptableObject(프리팹, 애셋) 생성 (자동)
|
||||
|
||||
Step 7: 수정한 csv 파일과 생성된 SO 파일을 모두 commit & push
|
||||
Reference in New Issue
Block a user