4.7 KiB
4.7 KiB
Tower CSV Importer Guide
Overview
The tower CSV importer allows you to create tower prefabs from CSV data in one step, similar to the monster importer.
Files Created
- TowerDataComponent.cs - Component that applies TowerData to a GameObject
- TowerPrefabSetup.cs - Implementation of IPrefabSetup for tower prefab generation
- CSVToSOImporter.cs - Generic CSV importer that works with any data type
How to Use
Step 1: Ensure Tower Template Exists
If you haven't created the TowerTemplate yet:
- In Unity, go to
Tools > Data > Create Tower Template - This creates
Assets/Data/Templates/TowerTemplate.prefabwith all required components:- NetworkObject
- Building
- TowerDataComponent
- MeshFilter & MeshRenderer
- BoxCollider
- NavMeshObstacle
Step 2: Update Tower.csv
Edit GameData/Tower.csv with your tower data. The CSV uses camelCase field names matching TowerData class:
id,memo,mana,manpower,sizeX,sizeY,maxHp,atkRange,atkDamage,atkIntervalSec,modelPath
1,타워,25,10,3,3,50,10,5,2,Assets/Meshes/building_tower_B_blue.fbx
2,벽,5,5,1,1,30,0,0,0,Assets/Meshes/building_tower_B_blue.fbx
Field Descriptions:
id: Unique tower IDmemo: Tower name/descriptionmana: Mana cost to buildmanpower: Construction work requiredsizeX: Grid widthsizeY: Grid lengthmaxHp: Maximum healthatkRange: Attack rangeatkDamage: Attack damageatkIntervalSec: Attack interval in secondsmodelPath: Path to FBX model or mesh asset
Step 3: Import CSV
In Unity, go to Tools > Data > Import All CSV
The importer will:
- Create ScriptableObject files in
Assets/Data/ScriptableObjects/Tower/ - Create/Update prefabs in
Assets/Prefabs/Tower/ - Apply models from
modelPathcolumn - Configure components based on CSV data
- Link TowerData to TowerDataComponent
Step 4: Use Tower Prefabs
Your generated tower prefabs are ready to use in the BuildingManager system!
File Structure After Import
Assets/
├── Data/
│ ├── ScriptableObjects/
│ │ └── Tower/ # SO files (generated from CSV)
│ │ ├── Tower1.asset
│ │ └── Tower2.asset
│ └── Templates/ # Template prefabs (created once)
│ └── TowerTemplate.prefab
├── Prefabs/
│ └── Tower/ # Generated tower prefabs
│ ├── Tower1.prefab
│ └── Tower2.prefab
└── GameData/
└── Tower.csv # Source data (editable)
How It Works
CSV Import Pipeline
Tower.csv (CSV data)
↓ CSVToSOImporter
TowerData (ScriptableObject)
↓ TowerPrefabSetup
Tower.prefab (GameObject with components)
TowerPrefabSetup Logic
- TowerDataComponent: Links TowerData SO to the prefab
- Model Application: Loads and applies FBX model from modelPath
- Collider Setup: Creates BoxCollider sized to tower dimensions
- Building Integration: Converts TowerData to BuildingData for Building component
Benefits
- ✅ One-click import: Import all towers from CSV at once
- ✅ Consistent structure: All towers have the same components
- ✅ Easy updates: Edit CSV and re-import to update all towers
- ✅ Designer-friendly: Non-programmers can add new towers
- ✅ Type-safe: TowerData class ensures data integrity
Troubleshooting
"No prefab setup found for Tower"
- Make sure TowerPrefabSetup.cs is in the Assets/Scripts/Editor folder
- Restart Unity Editor to ensure the script is compiled
"Template not found"
- Run
Tools > Data > Create Tower Templatefirst - Verify TowerTemplate.prefab exists in Assets/Data/Templates/
Prefabs not created
- Check the Console for error messages
- Verify Tower.csv exists in GameData folder
- Ensure modelPath in CSV points to valid assets
Model not showing
- Verify modelPath in CSV is correct
- Check that the FBX file exists at the specified path
- Ensure the model has valid materials assigned
Customization
Adding New Components to All Towers
- Open
Assets/Data/Templates/TowerTemplate.prefab - Add the component
- Configure defaults
- Save template
- Re-import CSV to apply changes to new towers
Modifying Existing Towers
- Edit the prefab directly (changes persist on next import)
- OR modify Tower.csv and re-import (will update SO link and model)
Notes
- TowerDataComponent converts TowerData to BuildingData for compatibility with the existing Building system
- The importer creates prefabs if they don't exist, or updates existing ones
- Prefab edits (other than SO and model) are preserved on re-import
- CSV field names must match TowerData class property names exactly (case-sensitive, camelCase)