139 lines
4.7 KiB
Markdown
139 lines
4.7 KiB
Markdown
# 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
|
|
1. **TowerDataComponent.cs** - Component that applies TowerData to a GameObject
|
|
2. **TowerPrefabSetup.cs** - Implementation of IPrefabSetup for tower prefab generation
|
|
3. **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:
|
|
1. In Unity, go to `Tools > Data > Create Tower Template`
|
|
2. This creates `Assets/Data/Templates/TowerTemplate.prefab` with 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:
|
|
|
|
```csv
|
|
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 ID
|
|
- `memo`: Tower name/description
|
|
- `mana`: Mana cost to build
|
|
- `manpower`: Construction work required
|
|
- `sizeX`: Grid width
|
|
- `sizeY`: Grid length
|
|
- `maxHp`: Maximum health
|
|
- `atkRange`: Attack range
|
|
- `atkDamage`: Attack damage
|
|
- `atkIntervalSec`: Attack interval in seconds
|
|
- `modelPath`: Path to FBX model or mesh asset
|
|
|
|
### Step 3: Import CSV
|
|
In Unity, go to `Tools > Data > Import All CSV`
|
|
|
|
The importer will:
|
|
1. Create ScriptableObject files in `Assets/Data/ScriptableObjects/Tower/`
|
|
2. Create/Update prefabs in `Assets/Prefabs/Tower/`
|
|
3. Apply models from `modelPath` column
|
|
4. Configure components based on CSV data
|
|
5. 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
|
|
1. **TowerDataComponent**: Links TowerData SO to the prefab
|
|
2. **Model Application**: Loads and applies FBX model from modelPath
|
|
3. **Collider Setup**: Creates BoxCollider sized to tower dimensions
|
|
4. **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 Template` first
|
|
- 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
|
|
1. Open `Assets/Data/Templates/TowerTemplate.prefab`
|
|
2. Add the component
|
|
3. Configure defaults
|
|
4. Save template
|
|
5. 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)
|