UnityExcelImporterX - Unity Excel數據導入工具
自動將Excel文件(.xls, .xlsx)中的數據轉換為Unity的ScriptableObject資源。
項目基于unity-excel-importer,增加了一些新特性。項目地址:github.com/nayaku/UnityExcelImporterX
? 核心特性
- 🤖 零代碼生成:無需手動編寫實體類腳本,自動生成完整代碼
- 🔄 實時同步:Excel修改后自動更新Unity資源
- 📝 智能注釋:支持注釋行/列,設置數據邊界
- 🎯 類型豐富:支持基本類型、枚舉、數組、字典、日期時間和自定義類型
- 📊 多表支持:一次性導入Excel中的所有工作表
📦 安裝方法
💡 通過 .unitypackage 文件安裝(推薦)- 訪問 GitHub Releases頁面
- 下載最新的
.unitypackage
文件 - 雙擊文件或在Unity中通過 Assets → Import Package → Custom Package 導入
🚀 快速開始
步驟1:創建Excel文件
創建一個Excel文件,按以下格式組織數據:
行號 | 內容說明 | 示例 |
---|---|---|
第1行 | 列名(字段名) | id , name , price |
第2行 | C#數據類型 | int , string , float |
第3行 | 注釋說明 | 編號 , 物品名 , 售價 |
第4行+ | 實際數據 | 1 , 物品名1 , 99.5 |
📋 示例表格結構:
🎯 將Excel文件放入Unity項目的任意文件夾中
步驟2:自動生成代碼
- 在Unity中選中Excel文件
- 右鍵 → Create → ExcelAssetScript(或在頂部菜單選擇 Assets → Create → ExcelAssetScript)
- 系統將自動個實體類腳本(如
MstItems.cs
)
📊 生成的代碼示例:
// 實體類 - 對應表格的每一行數據
[Serializable]
public class MstItemsEntity
{/// <summary>/// 編號/// </summary>public int id; // 自動匹配Excel第1列/// <summary>/// 物品名/// </summary>public string name; // 自動匹配Excel第2列 /// <summary>/// 售價/// </summary>public float price; // 自動匹配Excel第3列
}// 容器類 - 存儲所有表格數據
[ExcelAsset]
public class MstItems : ScriptableObject
{public List<MstItemsEntity> Entities; // 所有行數據
}
?? 重要提醒:當Excel表格結構發生變化時(如添加/刪除列),需要重新執行此步驟生成最新代碼。
步驟3:自動導入數據
💡 只需簡單操作:
- 保存Excel文件(Ctrl+S)
- 回到Unity,系統將自動檢測變更并導入數據
- 在相同目錄下會生成與Excel同名的
.asset
文件
如果沒有自動生成,可以手動重新導入Excel文件來觸發自動生成:
? 完成! 現在您可以在Unity中直接查看和編輯導入的數據:
🎯 高級功能詳解
注釋功能
單行注釋
在行的第一個單元格輸入 #
,整行將被忽略。
單列注釋
在列的第一行輸入 #
,整列將被忽略。
Excel表格:
生成的代碼和數據:
[Serializable]
public class SummaryExampleEntity
{public int id; // 只導入A、B列,C列被忽略/// <summary>/// name of item/// </summary>public string name;
}[ExcelAsset]
public class SummaryExample : ScriptableObject
{public List<SummaryExampleEntity> item;
}
數據邊界
- 列邊界:第一行出現空單元格時,右側所有列將被忽略
- 行邊界:第一列出現空單元格時,下方所有行將被忽略
枚舉類型
步驟1:創建枚舉定義
// 創建 ColorEnum.cs 文件
public enum ColorEnum
{RED, // 紅色GREEN, // 綠色 BLUE // 藍色
}
步驟2:Excel中填寫枚舉值
步驟3:生成的代碼和數據
[Serializable]
public class EnumExampleEntity
{public int id;/// <summary>/// 名字/// </summary>public string name;/// <summary>/// 顏色/// </summary>public ColorEnum color; // 自動匹配枚舉類型
}
復雜類型
支持數組類型、日期時間類型、字典類型和自定義類型
使用數組類型的時候,可省略方括號。
生成的代碼和數據:
創建自定義類型CustomType
[Serializable]
public class CustomType
{public int x;public string s;
}
自定義資源路徑
通過 AssetPath
參數控制生成的 .asset
文件位置:
[ExcelAsset(AssetPath = "Assets/Resources/MasterData")]
public class MstItems : ScriptableObject
{public List<MstItemsEntity> Entities;
}
調試日志
開啟導入日志:
[ExcelAsset(LogOnImport = true)] // 導入時輸出詳細日志
public class MstItems : ScriptableObject
{public List<MstItemsEntity> Entities;
}
自定義文件關聯
當Excel文件名與ScriptableObject類名不一致時使用:
// Excel文件名為 "ItemData.xlsx"
// ScriptableObject類名為 "MstItems"[ExcelAsset(ExcelName = "ItemData")] // 指定關聯的Excel文件名
public class MstItems : ScriptableObject
{public List<MstItemsEntity> Entities;
}
🔧 常見問題
Q: Excel修改后沒有自動更新? **解決方法**:- 確保Excel文件已保存
- 在Unity中右鍵點擊Excel文件 → Reimport
- 檢查控制臺是否有錯誤信息
📄 許可證
本庫采用 MIT許可證。
如果本工具對您有幫助,請給個?Star支持一下!