├── ProjectSettings
├── ProjectVersion.txt
├── ClusterInputManager.asset
├── NetworkManager.asset
├── TimeManager.asset
├── EditorBuildSettings.asset
├── VFXManager.asset
├── AudioManager.asset
├── TagManager.asset
├── EditorSettings.asset
├── PresetManager.asset
├── UnityConnectSettings.asset
├── DynamicsManager.asset
├── Physics2DSettings.asset
├── NavMeshAreas.asset
├── GraphicsSettings.asset
├── QualitySettings.asset
├── InputManager.asset
└── ProjectSettings.asset
├── Readme
├── p1.jpg
├── p2.jpg
└── p3.jpg
├── Assets
├── ExcelTool
│ ├── lib
│ │ ├── ExcelDataReader.dll
│ │ ├── Newtonsoft.Json.dll
│ │ ├── ExcelDataReader.DataSet.dll
│ │ ├── ExcelDataReader.dll.meta
│ │ ├── Newtonsoft.Json.dll.meta
│ │ └── ExcelDataReader.DataSet.dll.meta
│ ├── Demo
│ │ ├── SrcTables
│ │ │ ├── Example1.xlsx
│ │ │ ├── Example2.xlsx
│ │ │ ├── Sub
│ │ │ │ ├── Example3.xls
│ │ │ │ └── Example3.xls.meta
│ │ │ ├── Example1.xlsx.meta
│ │ │ ├── Example2.xlsx.meta
│ │ │ └── Sub.meta
│ │ ├── OutTables
│ │ │ ├── TableClass
│ │ │ │ ├── TSet_Example1.cs
│ │ │ │ ├── TSet_Example2.cs
│ │ │ │ ├── TSet_Example1.cs.meta
│ │ │ │ ├── TSet_Example2.cs.meta
│ │ │ │ ├── Table_Example1.cs.meta
│ │ │ │ ├── Table_Example2.cs.meta
│ │ │ │ ├── Table_Example2.cs
│ │ │ │ └── Table_Example1.cs
│ │ │ ├── TableJson
│ │ │ │ ├── Example1.json.meta
│ │ │ │ ├── Example2.json.meta
│ │ │ │ ├── Example2.json
│ │ │ │ └── Example1.json
│ │ │ ├── TableAssets.meta
│ │ │ ├── TableClass.meta
│ │ │ ├── TableJson.meta
│ │ │ └── TableAssets
│ │ │ │ ├── TSet_Example1.asset.meta
│ │ │ │ ├── TSet_Example2.asset.meta
│ │ │ │ ├── TSet_Example2.asset
│ │ │ │ └── TSet_Example1.asset
│ │ ├── ExcelToolDemo.unity.meta
│ │ ├── OutTables.meta
│ │ ├── SrcTables.meta
│ │ ├── ExcelToolDemo.cs.meta
│ │ ├── ExcelToolDemo.cs
│ │ └── ExcelToolDemo.unity
│ ├── Demo.meta
│ ├── lib.meta
│ ├── scripts.meta
│ └── scripts
│ │ ├── Editor.meta
│ │ ├── TableSet.cs.meta
│ │ ├── Editor
│ │ ├── ExcelWindow.cs.meta
│ │ ├── FileExporter.cs.meta
│ │ ├── ExcelWindow.cs
│ │ └── FileExporter.cs
│ │ └── TableSet.cs
├── Plugins.meta
├── ExcelTool.meta
└── Plugins
│ └── Editor.meta
├── .gitignore
├── Logs
└── Packages-Update.log
├── Packages
└── manifest.json
└── README.MD
/ProjectSettings/ProjectVersion.txt:
--------------------------------------------------------------------------------
1 | m_EditorVersion: 2018.3.0f2
2 |
--------------------------------------------------------------------------------
/Readme/p1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/byfine/UnityExcelTool/HEAD/Readme/p1.jpg
--------------------------------------------------------------------------------
/Readme/p2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/byfine/UnityExcelTool/HEAD/Readme/p2.jpg
--------------------------------------------------------------------------------
/Readme/p3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/byfine/UnityExcelTool/HEAD/Readme/p3.jpg
--------------------------------------------------------------------------------
/Assets/ExcelTool/lib/ExcelDataReader.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/byfine/UnityExcelTool/HEAD/Assets/ExcelTool/lib/ExcelDataReader.dll
--------------------------------------------------------------------------------
/Assets/ExcelTool/lib/Newtonsoft.Json.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/byfine/UnityExcelTool/HEAD/Assets/ExcelTool/lib/Newtonsoft.Json.dll
--------------------------------------------------------------------------------
/Assets/ExcelTool/Demo/SrcTables/Example1.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/byfine/UnityExcelTool/HEAD/Assets/ExcelTool/Demo/SrcTables/Example1.xlsx
--------------------------------------------------------------------------------
/Assets/ExcelTool/Demo/SrcTables/Example2.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/byfine/UnityExcelTool/HEAD/Assets/ExcelTool/Demo/SrcTables/Example2.xlsx
--------------------------------------------------------------------------------
/Assets/ExcelTool/Demo/SrcTables/Sub/Example3.xls:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/byfine/UnityExcelTool/HEAD/Assets/ExcelTool/Demo/SrcTables/Sub/Example3.xls
--------------------------------------------------------------------------------
/Assets/ExcelTool/lib/ExcelDataReader.DataSet.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/byfine/UnityExcelTool/HEAD/Assets/ExcelTool/lib/ExcelDataReader.DataSet.dll
--------------------------------------------------------------------------------
/ProjectSettings/ClusterInputManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!236 &1
4 | ClusterInputManager:
5 | m_ObjectHideFlags: 0
6 | m_Inputs: []
7 |
--------------------------------------------------------------------------------
/Assets/Plugins.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a193d20abbaea7b41ac470bfc455a813
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/ExcelTool.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 34bc1602e7e39b241ae55aff14cd9db3
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/ExcelTool/Demo/OutTables/TableClass/TSet_Example1.cs:
--------------------------------------------------------------------------------
1 | ///
2 | /// Auto Generated ScriptableObject TableSet.
3 | ///
4 | public class TSet_Example1 : TableSet
5 | {
6 | }
7 |
--------------------------------------------------------------------------------
/ProjectSettings/NetworkManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!149 &1
4 | NetworkManager:
5 | m_ObjectHideFlags: 0
6 | m_DebugLevel: 0
7 | m_Sendrate: 15
8 | m_AssetToPrefab: {}
9 |
--------------------------------------------------------------------------------
/Assets/ExcelTool/Demo.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: e92c5af0d1d6cd142963fa3adfcd8270
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/ExcelTool/Demo/ExcelToolDemo.unity.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 73e3d6c8fde716b4a817c8997bd21a72
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/ExcelTool/Demo/OutTables/TableClass/TSet_Example2.cs:
--------------------------------------------------------------------------------
1 | ///
2 | /// Auto Generated ScriptableObject TableSet.
3 | ///
4 | public class TSet_Example2 : TableSet
5 | {
6 | }
7 |
--------------------------------------------------------------------------------
/Assets/ExcelTool/Demo/SrcTables/Example1.xlsx.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: b8f73910425c02b49a16d84a7400bf06
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/ExcelTool/Demo/SrcTables/Example2.xlsx.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 37b265f5dc411284784e01c96fa0c406
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/ExcelTool/lib.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 9005baf105ed80c42937669fafa45a6b
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/ExcelTool/scripts.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: fac1aada0386610438b0ba3edc6c62d7
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Plugins/Editor.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: f1012ead400fbe64b8f247a79d8b0d7e
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/ExcelTool/Demo/SrcTables/Sub/Example3.xls.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: c5e2fc631b80d4b488e0b3d588570819
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/ExcelTool/Demo/OutTables.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 48e24c9dd4b02d04abf2ecdbf85b071b
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/ExcelTool/Demo/SrcTables.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 60a3114a5884ae2409f2f6614ef7a215
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/ExcelTool/scripts/Editor.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d8a7ee8a13ca62248bae23579c4cb8aa
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/ExcelTool/Demo/OutTables/TableJson/Example1.json.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: fbe47ec4ce0569b4b817acdafc63bc6a
3 | TextScriptImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/ExcelTool/Demo/OutTables/TableJson/Example2.json.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: f740d4cf8e5a3964c96ed2d1ced2f28b
3 | TextScriptImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/ExcelTool/Demo/SrcTables/Sub.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: ae68d7974abdefe40a9ad21331289ed0
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/ExcelTool/Demo/OutTables/TableAssets.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 56a5270c26442114a8d12b185895ce31
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/ExcelTool/Demo/OutTables/TableClass.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 33a52880929bc7848a89569db0694508
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/ExcelTool/Demo/OutTables/TableJson.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: ae3b419fb011a634cb7916940c0f6813
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/ProjectSettings/TimeManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!5 &1
4 | TimeManager:
5 | m_ObjectHideFlags: 0
6 | Fixed Timestep: 0.02
7 | Maximum Allowed Timestep: 0.1
8 | m_TimeScale: 1
9 | Maximum Particle Timestep: 0.03
10 |
--------------------------------------------------------------------------------
/Assets/ExcelTool/Demo/OutTables/TableAssets/TSet_Example1.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 79773bcd9d255824089e1e72d393d294
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/ExcelTool/Demo/OutTables/TableAssets/TSet_Example2.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: ec083cfeabb199946912d31629c30d57
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/ProjectSettings/EditorBuildSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!1045 &1
4 | EditorBuildSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | m_Scenes:
8 | - enabled: 0
9 | path:
10 | guid: 00000000000000000000000000000000
11 | m_configObjects: {}
12 |
--------------------------------------------------------------------------------
/Assets/ExcelTool/Demo/ExcelToolDemo.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 55a11fe02f44b9d48bd2f239e1f331c2
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/ExcelTool/scripts/TableSet.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 2d8a39dcfd08de0468f84ecd5ad1e940
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/ExcelTool/scripts/Editor/ExcelWindow.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 1cb2e3712f0be6344986f3eef99a1798
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/ExcelTool/scripts/Editor/FileExporter.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a6593b75251bb5342be30fa359fd9685
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/ExcelTool/Demo/OutTables/TableClass/TSet_Example1.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 09812a0950d933b429bcd2493578dbd2
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/ExcelTool/Demo/OutTables/TableClass/TSet_Example2.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: b796d750cbc3357408ad40b1fb756c54
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/ProjectSettings/VFXManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!937362698 &1
4 | VFXManager:
5 | m_ObjectHideFlags: 0
6 | m_IndirectShader: {fileID: 0}
7 | m_CopyBufferShader: {fileID: 0}
8 | m_SortShader: {fileID: 0}
9 | m_RenderPipeSettingsPath:
10 | m_FixedTimeStep: 0.016666668
11 | m_MaxDeltaTime: 0.05
12 |
--------------------------------------------------------------------------------
/Assets/ExcelTool/Demo/OutTables/TableClass/Table_Example1.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: ebdb0940219bcd0499c86a857ee9beeb
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/ExcelTool/Demo/OutTables/TableClass/Table_Example2.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: fc31a0adc37e50246ae4e0664345858f
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/ExcelTool/Demo/OutTables/TableClass/Table_Example2.cs:
--------------------------------------------------------------------------------
1 | ///
2 | /// Auto Generated Class by ExcelTool. From Table: Example2
3 | ///
4 | public class Table_Example2 : TableBase
5 | {
6 | public Animal ID; // 编号
7 | public string Name; // 名称
8 | public string AssetName; // 资源编号
9 | public int Type; // 食肉/食草
10 | public int Speed; // 速度
11 | }
12 |
--------------------------------------------------------------------------------
/Assets/ExcelTool/Demo/OutTables/TableClass/Table_Example1.cs:
--------------------------------------------------------------------------------
1 | ///
2 | /// Auto Generated Class by ExcelTool. From Table: Example1
3 | ///
4 | public class Table_Example1 : TableBase
5 | {
6 | public int ID; // 编号
7 | public string Name; // 名称
8 | public string AssetName; // 资源编号
9 | public int HP; // 血
10 | public int Attack; // 攻击
11 | public int Defence; // 防御
12 | }
13 |
--------------------------------------------------------------------------------
/ProjectSettings/AudioManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!11 &1
4 | AudioManager:
5 | m_ObjectHideFlags: 0
6 | m_Volume: 1
7 | Rolloff Scale: 1
8 | Doppler Factor: 1
9 | Default Speaker Mode: 2
10 | m_SampleRate: 0
11 | m_DSPBufferSize: 1024
12 | m_VirtualVoiceCount: 512
13 | m_RealVoiceCount: 32
14 | m_SpatializerPlugin:
15 | m_AmbisonicDecoderPlugin:
16 | m_DisableAudio: 0
17 | m_VirtualizeEffects: 1
18 |
--------------------------------------------------------------------------------
/Assets/ExcelTool/Demo/OutTables/TableJson/Example2.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "ID": "Rabbit",
4 | "Name": "兔子",
5 | "AssetName": "Animal01",
6 | "Type": 1.0,
7 | "Speed": 15.0
8 | },
9 | {
10 | "ID": "Tiger",
11 | "Name": "老虎",
12 | "AssetName": "Animal02",
13 | "Type": 2.0,
14 | "Speed": 22.0
15 | },
16 | {
17 | "ID": "Lion",
18 | "Name": "狮子",
19 | "AssetName": "Animal03",
20 | "Type": 2.0,
21 | "Speed": 3.0
22 | }
23 | ]
--------------------------------------------------------------------------------
/Assets/ExcelTool/Demo/OutTables/TableJson/Example1.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "ID": 1.0,
4 | "Name": "小明",
5 | "AssetName": "Hero01",
6 | "HP": 100.0,
7 | "Attack": 15.0,
8 | "Defence": 0.0
9 | },
10 | {
11 | "ID": 2.0,
12 | "Name": "小红",
13 | "AssetName": "Hero02",
14 | "HP": 352.0,
15 | "Attack": 22.0,
16 | "Defence": 3.0
17 | },
18 | {
19 | "ID": 3.0,
20 | "Name": "小刚",
21 | "AssetName": "Hero03",
22 | "HP": 332.0,
23 | "Attack": 3.0,
24 | "Defence": 44.0
25 | }
26 | ]
--------------------------------------------------------------------------------
/ProjectSettings/TagManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!78 &1
4 | TagManager:
5 | serializedVersion: 2
6 | tags: []
7 | layers:
8 | - Default
9 | - TransparentFX
10 | - Ignore Raycast
11 | -
12 | - Water
13 | - UI
14 | -
15 | -
16 | - PostProcessing
17 | -
18 | -
19 | -
20 | -
21 | -
22 | -
23 | -
24 | -
25 | -
26 | -
27 | -
28 | -
29 | -
30 | -
31 | -
32 | -
33 | -
34 | -
35 | -
36 | -
37 | -
38 | -
39 | -
40 | m_SortingLayers:
41 | - name: Default
42 | uniqueID: 0
43 | locked: 0
44 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | /UnityExcelTool/[Ll]ibrary/
2 | /UnityExcelTool/[Tt]emp/
3 | /UnityExcelTool/[Oo]bj/
4 | [Ll]ibrary/
5 | [Tt]emp/
6 | [Oo]bj/
7 | .vs/
8 | .idea/
9 |
10 | # Autogenerated VS/MD solution and project files
11 | *.svd
12 | *.userprefs
13 | /*.csproj
14 | *.pidb
15 | *.suo
16 | /*.sln
17 | *.user
18 | *.unityproj
19 | *.booproj
20 |
21 | .DS_Store
22 | .DS_Store?
23 | ._*
24 | .Spotlight-V100
25 | .Trashes
26 | ehthumbs.db
27 | Thumbs.db
28 | /Assets/Plugins/Editor/JetBrains.meta
29 | /Assets/Plugins/Editor/JetBrains/JetBrains.Rider.Unity.Editor.Plugin.Repacked.dll
30 | /Assets/Plugins/Editor/JetBrains/JetBrains.Rider.Unity.Editor.Plugin.Repacked.dll.meta
31 |
--------------------------------------------------------------------------------
/Assets/ExcelTool/lib/ExcelDataReader.dll.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: bee5b1ed168e174469dc30e0f26c033d
3 | PluginImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | iconMap: {}
7 | executionOrder: {}
8 | defineConstraints: []
9 | isPreloaded: 0
10 | isOverridable: 0
11 | isExplicitlyReferenced: 0
12 | platformData:
13 | - first:
14 | Any:
15 | second:
16 | enabled: 1
17 | settings: {}
18 | - first:
19 | Editor: Editor
20 | second:
21 | enabled: 0
22 | settings:
23 | DefaultValueInitialized: true
24 | - first:
25 | Windows Store Apps: WindowsStoreApps
26 | second:
27 | enabled: 0
28 | settings:
29 | CPU: AnyCPU
30 | userData:
31 | assetBundleName:
32 | assetBundleVariant:
33 |
--------------------------------------------------------------------------------
/Assets/ExcelTool/lib/Newtonsoft.Json.dll.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: af59bad4292fe77429cb6c1dd2a09993
3 | PluginImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | iconMap: {}
7 | executionOrder: {}
8 | defineConstraints: []
9 | isPreloaded: 0
10 | isOverridable: 0
11 | isExplicitlyReferenced: 0
12 | platformData:
13 | - first:
14 | Any:
15 | second:
16 | enabled: 1
17 | settings: {}
18 | - first:
19 | Editor: Editor
20 | second:
21 | enabled: 0
22 | settings:
23 | DefaultValueInitialized: true
24 | - first:
25 | Windows Store Apps: WindowsStoreApps
26 | second:
27 | enabled: 0
28 | settings:
29 | CPU: AnyCPU
30 | userData:
31 | assetBundleName:
32 | assetBundleVariant:
33 |
--------------------------------------------------------------------------------
/Assets/ExcelTool/lib/ExcelDataReader.DataSet.dll.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: f9315afb1504606489086730b3de4f74
3 | PluginImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | iconMap: {}
7 | executionOrder: {}
8 | defineConstraints: []
9 | isPreloaded: 0
10 | isOverridable: 0
11 | isExplicitlyReferenced: 0
12 | platformData:
13 | - first:
14 | Any:
15 | second:
16 | enabled: 1
17 | settings: {}
18 | - first:
19 | Editor: Editor
20 | second:
21 | enabled: 0
22 | settings:
23 | DefaultValueInitialized: true
24 | - first:
25 | Windows Store Apps: WindowsStoreApps
26 | second:
27 | enabled: 0
28 | settings:
29 | CPU: AnyCPU
30 | userData:
31 | assetBundleName:
32 | assetBundleVariant:
33 |
--------------------------------------------------------------------------------
/ProjectSettings/EditorSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!159 &1
4 | EditorSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 7
7 | m_ExternalVersionControlSupport: Visible Meta Files
8 | m_SerializationMode: 2
9 | m_LineEndingsForNewScripts: 2
10 | m_DefaultBehaviorMode: 0
11 | m_PrefabRegularEnvironment: {fileID: 0}
12 | m_PrefabUIEnvironment: {fileID: 0}
13 | m_SpritePackerMode: 0
14 | m_SpritePackerPaddingPower: 1
15 | m_EtcTextureCompressorBehavior: 1
16 | m_EtcTextureFastCompressor: 1
17 | m_EtcTextureNormalCompressor: 2
18 | m_EtcTextureBestCompressor: 4
19 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef
20 | m_ProjectGenerationRootNamespace:
21 | m_CollabEditorSettings:
22 | inProgressEnabled: 1
23 | m_EnableTextureStreamingInPlayMode: 1
24 |
--------------------------------------------------------------------------------
/ProjectSettings/PresetManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!1386491679 &1
4 | PresetManager:
5 | m_ObjectHideFlags: 0
6 | m_DefaultList:
7 | - type:
8 | m_NativeTypeID: 108
9 | m_ManagedTypePPtr: {fileID: 0}
10 | m_ManagedTypeFallback:
11 | defaultPresets:
12 | - m_Preset: {fileID: 2655988077585873504, guid: c1cf8506f04ef2c4a88b64b6c4202eea,
13 | type: 2}
14 | - type:
15 | m_NativeTypeID: 1020
16 | m_ManagedTypePPtr: {fileID: 0}
17 | m_ManagedTypeFallback:
18 | defaultPresets:
19 | - m_Preset: {fileID: 2655988077585873504, guid: 0cd792cc87e492d43b4e95b205fc5cc6,
20 | type: 2}
21 | - type:
22 | m_NativeTypeID: 1006
23 | m_ManagedTypePPtr: {fileID: 0}
24 | m_ManagedTypeFallback:
25 | defaultPresets:
26 | - m_Preset: {fileID: 2655988077585873504, guid: 7a99f8aa944efe94cb9bd74562b7d5f9,
27 | type: 2}
28 |
--------------------------------------------------------------------------------
/Assets/ExcelTool/Demo/ExcelToolDemo.cs:
--------------------------------------------------------------------------------
1 | using System.Collections;
2 | using System.Collections.Generic;
3 | using UnityEngine;
4 |
5 | public enum Animal
6 | {
7 | Rabbit,
8 | Tiger,
9 | Lion
10 | }
11 |
12 | public class ExcelToolDemo : MonoBehaviour
13 | {
14 | public TSet_Example1 Table1;
15 | public TSet_Example2 Table2;
16 |
17 | void Start()
18 | {
19 | Debug.Log("Table1 Count: " + Table1.Count);
20 | foreach (var kv in Table1)
21 | {
22 | Debug.Log("Table1 Data: " + kv.Key + " : " + kv.Value);
23 | }
24 |
25 |
26 | Debug.Log("Table1 Data 1: Name:" + Table1[1].Name + ", HP:" + Table1[1].HP + ", Attack:" + Table1[1].Attack);
27 |
28 | Debug.Log("Table2: Name:" + Table2[Animal.Rabbit].Name + ", Asset:" + Table2[Animal.Rabbit].AssetName + ", Type:" + Table2[Animal.Rabbit].Type);
29 |
30 |
31 | }
32 |
33 | void Update()
34 | {
35 |
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/ProjectSettings/UnityConnectSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!310 &1
4 | UnityConnectSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 1
7 | m_Enabled: 0
8 | m_TestMode: 0
9 | m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events
10 | m_EventUrl: https://cdp.cloud.unity3d.com/v1/events
11 | m_ConfigUrl: https://config.uca.cloud.unity3d.com
12 | m_TestInitMode: 0
13 | CrashReportingSettings:
14 | m_EventUrl: https://perf-events.cloud.unity3d.com
15 | m_Enabled: 0
16 | m_LogBufferSize: 10
17 | m_CaptureEditorExceptions: 1
18 | UnityPurchasingSettings:
19 | m_Enabled: 0
20 | m_TestMode: 0
21 | UnityAnalyticsSettings:
22 | m_Enabled: 0
23 | m_TestMode: 0
24 | m_InitializeOnStartup: 1
25 | UnityAdsSettings:
26 | m_Enabled: 0
27 | m_InitializeOnStartup: 1
28 | m_TestMode: 0
29 | m_IosGameId:
30 | m_AndroidGameId:
31 | m_GameIds: {}
32 | m_GameId:
33 | PerformanceReportingSettings:
34 | m_Enabled: 0
35 |
--------------------------------------------------------------------------------
/ProjectSettings/DynamicsManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!55 &1
4 | PhysicsManager:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 8
7 | m_Gravity: {x: 0, y: -9.81, z: 0}
8 | m_DefaultMaterial: {fileID: 0}
9 | m_BounceThreshold: 2
10 | m_SleepThreshold: 0.005
11 | m_DefaultContactOffset: 0.01
12 | m_DefaultSolverIterations: 6
13 | m_DefaultSolverVelocityIterations: 1
14 | m_QueriesHitBackfaces: 0
15 | m_QueriesHitTriggers: 1
16 | m_EnableAdaptiveForce: 0
17 | m_ClothInterCollisionDistance: 0
18 | m_ClothInterCollisionStiffness: 0
19 | m_ContactsGeneration: 1
20 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
21 | m_AutoSimulation: 1
22 | m_AutoSyncTransforms: 0
23 | m_ReuseCollisionCallbacks: 1
24 | m_ClothInterCollisionSettingsToggle: 0
25 | m_ContactPairsMode: 0
26 | m_BroadphaseType: 0
27 | m_WorldBounds:
28 | m_Center: {x: 0, y: 0, z: 0}
29 | m_Extent: {x: 250, y: 250, z: 250}
30 | m_WorldSubdivisions: 8
31 |
--------------------------------------------------------------------------------
/Logs/Packages-Update.log:
--------------------------------------------------------------------------------
1 |
2 | === Sun Dec 23 11:34:27 2018
3 |
4 | Packages were changed.
5 | Update Mode: mergeDefaultDependencies
6 |
7 | The following packages were added:
8 | com.unity.analytics@3.2.2
9 | com.unity.purchasing@2.0.3
10 | com.unity.ads@2.3.1
11 | com.unity.textmeshpro@1.3.0
12 | com.unity.package-manager-ui@2.0.3
13 | com.unity.collab-proxy@1.2.15
14 | com.unity.modules.ai@1.0.0
15 | com.unity.modules.animation@1.0.0
16 | com.unity.modules.assetbundle@1.0.0
17 | com.unity.modules.audio@1.0.0
18 | com.unity.modules.cloth@1.0.0
19 | com.unity.modules.director@1.0.0
20 | com.unity.modules.imageconversion@1.0.0
21 | com.unity.modules.imgui@1.0.0
22 | com.unity.modules.jsonserialize@1.0.0
23 | com.unity.modules.particlesystem@1.0.0
24 | com.unity.modules.physics@1.0.0
25 | com.unity.modules.physics2d@1.0.0
26 | com.unity.modules.screencapture@1.0.0
27 | com.unity.modules.terrain@1.0.0
28 | com.unity.modules.terrainphysics@1.0.0
29 | com.unity.modules.tilemap@1.0.0
30 | com.unity.modules.ui@1.0.0
31 | com.unity.modules.uielements@1.0.0
32 | com.unity.modules.umbra@1.0.0
33 | com.unity.modules.unityanalytics@1.0.0
34 | com.unity.modules.unitywebrequest@1.0.0
35 | com.unity.modules.unitywebrequestassetbundle@1.0.0
36 | com.unity.modules.unitywebrequestaudio@1.0.0
37 | com.unity.modules.unitywebrequesttexture@1.0.0
38 | com.unity.modules.unitywebrequestwww@1.0.0
39 | com.unity.modules.vehicles@1.0.0
40 | com.unity.modules.video@1.0.0
41 | com.unity.modules.vr@1.0.0
42 | com.unity.modules.wind@1.0.0
43 | com.unity.modules.xr@1.0.0
44 |
--------------------------------------------------------------------------------
/ProjectSettings/Physics2DSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!19 &1
4 | Physics2DSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 4
7 | m_Gravity: {x: 0, y: -9.81}
8 | m_DefaultMaterial: {fileID: 0}
9 | m_VelocityIterations: 8
10 | m_PositionIterations: 3
11 | m_VelocityThreshold: 1
12 | m_MaxLinearCorrection: 0.2
13 | m_MaxAngularCorrection: 8
14 | m_MaxTranslationSpeed: 100
15 | m_MaxRotationSpeed: 360
16 | m_BaumgarteScale: 0.2
17 | m_BaumgarteTimeOfImpactScale: 0.75
18 | m_TimeToSleep: 0.5
19 | m_LinearSleepTolerance: 0.01
20 | m_AngularSleepTolerance: 2
21 | m_DefaultContactOffset: 0.01
22 | m_AutoSimulation: 1
23 | m_QueriesHitTriggers: 1
24 | m_QueriesStartInColliders: 1
25 | m_ChangeStopsCallbacks: 0
26 | m_CallbacksOnDisable: 1
27 | m_ReuseCollisionCallbacks: 1
28 | m_AutoSyncTransforms: 0
29 | m_AlwaysShowColliders: 0
30 | m_ShowColliderSleep: 1
31 | m_ShowColliderContacts: 0
32 | m_ShowColliderAABB: 0
33 | m_ContactArrowScale: 0.2
34 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412}
35 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432}
36 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745}
37 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804}
38 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
39 |
--------------------------------------------------------------------------------
/Packages/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "dependencies": {
3 | "com.unity.ads": "2.3.1",
4 | "com.unity.analytics": "3.2.2",
5 | "com.unity.collab-proxy": "1.2.15",
6 | "com.unity.package-manager-ui": "2.0.3",
7 | "com.unity.purchasing": "2.0.3",
8 | "com.unity.textmeshpro": "1.3.0",
9 | "com.unity.modules.ai": "1.0.0",
10 | "com.unity.modules.animation": "1.0.0",
11 | "com.unity.modules.assetbundle": "1.0.0",
12 | "com.unity.modules.audio": "1.0.0",
13 | "com.unity.modules.cloth": "1.0.0",
14 | "com.unity.modules.director": "1.0.0",
15 | "com.unity.modules.imageconversion": "1.0.0",
16 | "com.unity.modules.imgui": "1.0.0",
17 | "com.unity.modules.jsonserialize": "1.0.0",
18 | "com.unity.modules.particlesystem": "1.0.0",
19 | "com.unity.modules.physics": "1.0.0",
20 | "com.unity.modules.physics2d": "1.0.0",
21 | "com.unity.modules.screencapture": "1.0.0",
22 | "com.unity.modules.terrain": "1.0.0",
23 | "com.unity.modules.terrainphysics": "1.0.0",
24 | "com.unity.modules.tilemap": "1.0.0",
25 | "com.unity.modules.ui": "1.0.0",
26 | "com.unity.modules.uielements": "1.0.0",
27 | "com.unity.modules.umbra": "1.0.0",
28 | "com.unity.modules.unityanalytics": "1.0.0",
29 | "com.unity.modules.unitywebrequest": "1.0.0",
30 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0",
31 | "com.unity.modules.unitywebrequestaudio": "1.0.0",
32 | "com.unity.modules.unitywebrequesttexture": "1.0.0",
33 | "com.unity.modules.unitywebrequestwww": "1.0.0",
34 | "com.unity.modules.vehicles": "1.0.0",
35 | "com.unity.modules.video": "1.0.0",
36 | "com.unity.modules.vr": "1.0.0",
37 | "com.unity.modules.wind": "1.0.0",
38 | "com.unity.modules.xr": "1.0.0"
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/ProjectSettings/NavMeshAreas.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!126 &1
4 | NavMeshProjectSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | areas:
8 | - name: Walkable
9 | cost: 1
10 | - name: Not Walkable
11 | cost: 1
12 | - name: Jump
13 | cost: 2
14 | - name:
15 | cost: 1
16 | - name:
17 | cost: 1
18 | - name:
19 | cost: 1
20 | - name:
21 | cost: 1
22 | - name:
23 | cost: 1
24 | - name:
25 | cost: 1
26 | - name:
27 | cost: 1
28 | - name:
29 | cost: 1
30 | - name:
31 | cost: 1
32 | - name:
33 | cost: 1
34 | - name:
35 | cost: 1
36 | - name:
37 | cost: 1
38 | - name:
39 | cost: 1
40 | - name:
41 | cost: 1
42 | - name:
43 | cost: 1
44 | - name:
45 | cost: 1
46 | - name:
47 | cost: 1
48 | - name:
49 | cost: 1
50 | - name:
51 | cost: 1
52 | - name:
53 | cost: 1
54 | - name:
55 | cost: 1
56 | - name:
57 | cost: 1
58 | - name:
59 | cost: 1
60 | - name:
61 | cost: 1
62 | - name:
63 | cost: 1
64 | - name:
65 | cost: 1
66 | - name:
67 | cost: 1
68 | - name:
69 | cost: 1
70 | - name:
71 | cost: 1
72 | m_LastAgentTypeID: -887442657
73 | m_Settings:
74 | - serializedVersion: 2
75 | agentTypeID: 0
76 | agentRadius: 0.5
77 | agentHeight: 2
78 | agentSlope: 45
79 | agentClimb: 0.75
80 | ledgeDropHeight: 0
81 | maxJumpAcrossDistance: 0
82 | minRegionArea: 2
83 | manualCellSize: 0
84 | cellSize: 0.16666667
85 | manualTileSize: 0
86 | tileSize: 256
87 | accuratePlacement: 0
88 | debug:
89 | m_Flags: 0
90 | m_SettingNames:
91 | - Humanoid
92 |
--------------------------------------------------------------------------------
/Assets/ExcelTool/Demo/OutTables/TableAssets/TSet_Example2.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_GameObject: {fileID: 0}
10 | m_Enabled: 1
11 | m_EditorHideFlags: 0
12 | m_Script: {fileID: 11500000, guid: b796d750cbc3357408ad40b1fb756c54, type: 3}
13 | m_Name: TSet_Example2
14 | m_EditorClassIdentifier:
15 | values:
16 | - {fileID: 114014265183241228}
17 | - {fileID: 114648744716444986}
18 | - {fileID: 114313755086102142}
19 | --- !u!114 &114014265183241228
20 | MonoBehaviour:
21 | m_ObjectHideFlags: 0
22 | m_CorrespondingSourceObject: {fileID: 0}
23 | m_PrefabInstance: {fileID: 0}
24 | m_PrefabAsset: {fileID: 0}
25 | m_GameObject: {fileID: 0}
26 | m_Enabled: 1
27 | m_EditorHideFlags: 0
28 | m_Script: {fileID: 11500000, guid: fc31a0adc37e50246ae4e0664345858f, type: 3}
29 | m_Name: Table_Example2_Rabbit
30 | m_EditorClassIdentifier:
31 | tKey: 0
32 | ID: 0
33 | Name: "\u5154\u5B50"
34 | AssetName: Animal01
35 | Type: 1
36 | Speed: 15
37 | --- !u!114 &114313755086102142
38 | MonoBehaviour:
39 | m_ObjectHideFlags: 0
40 | m_CorrespondingSourceObject: {fileID: 0}
41 | m_PrefabInstance: {fileID: 0}
42 | m_PrefabAsset: {fileID: 0}
43 | m_GameObject: {fileID: 0}
44 | m_Enabled: 1
45 | m_EditorHideFlags: 0
46 | m_Script: {fileID: 11500000, guid: fc31a0adc37e50246ae4e0664345858f, type: 3}
47 | m_Name: Table_Example2_Lion
48 | m_EditorClassIdentifier:
49 | tKey: 2
50 | ID: 2
51 | Name: "\u72EE\u5B50"
52 | AssetName: Animal03
53 | Type: 2
54 | Speed: 3
55 | --- !u!114 &114648744716444986
56 | MonoBehaviour:
57 | m_ObjectHideFlags: 0
58 | m_CorrespondingSourceObject: {fileID: 0}
59 | m_PrefabInstance: {fileID: 0}
60 | m_PrefabAsset: {fileID: 0}
61 | m_GameObject: {fileID: 0}
62 | m_Enabled: 1
63 | m_EditorHideFlags: 0
64 | m_Script: {fileID: 11500000, guid: fc31a0adc37e50246ae4e0664345858f, type: 3}
65 | m_Name: Table_Example2_Tiger
66 | m_EditorClassIdentifier:
67 | tKey: 1
68 | ID: 1
69 | Name: "\u8001\u864E"
70 | AssetName: Animal02
71 | Type: 2
72 | Speed: 22
73 |
--------------------------------------------------------------------------------
/Assets/ExcelTool/scripts/TableSet.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using UnityEngine;
3 |
4 |
5 | public class TableBase : ScriptableObject
6 | {
7 | public T tKey;
8 | }
9 |
10 |
11 | public class TableSet : ScriptableObject where TValue : TableBase
12 | {
13 | [SerializeField] private List values = new List();
14 |
15 | private Dictionary dict = new Dictionary();
16 |
17 | public void UpdateDic()
18 | {
19 | if (dict != null && dict.Count > 0) return;
20 | dict = new Dictionary();
21 |
22 | if (values == null)
23 | {
24 | values = new List();
25 | return;
26 | }
27 |
28 | foreach (var v in values)
29 | {
30 | dict[v.tKey] = v;
31 | }
32 | }
33 |
34 | public TValue this[TKey key]
35 | {
36 | get
37 | {
38 | UpdateDic();
39 | return dict[key];
40 | }
41 | }
42 |
43 | public ICollection Keys
44 | {
45 | get
46 | {
47 | UpdateDic();
48 | return dict.Keys;
49 | }
50 | }
51 |
52 | public ICollection Values
53 | {
54 | get
55 | {
56 | UpdateDic();
57 | return dict.Values;
58 | }
59 | }
60 |
61 | public Dictionary.Enumerator GetEnumerator()
62 | {
63 | UpdateDic();
64 | return dict.GetEnumerator();
65 | }
66 |
67 | public void Add(TKey key, TValue value)
68 | {
69 | if (dict == null)
70 | dict = new Dictionary();
71 |
72 | if (values == null)
73 | values = new List();
74 |
75 | values.Add(value);
76 | dict.Add(key, value);
77 | }
78 |
79 | public int Count
80 | {
81 | get
82 | {
83 | UpdateDic();
84 | return dict?.Count ?? 0;
85 | }
86 | }
87 |
88 | public bool ContainsKey(TKey key)
89 | {
90 | UpdateDic();
91 | return dict.ContainsKey(key);
92 | }
93 |
94 | }
95 |
--------------------------------------------------------------------------------
/Assets/ExcelTool/Demo/OutTables/TableAssets/TSet_Example1.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_GameObject: {fileID: 0}
10 | m_Enabled: 1
11 | m_EditorHideFlags: 0
12 | m_Script: {fileID: 11500000, guid: 09812a0950d933b429bcd2493578dbd2, type: 3}
13 | m_Name: TSet_Example1
14 | m_EditorClassIdentifier:
15 | values:
16 | - {fileID: 114863161785676634}
17 | - {fileID: 114476506423439652}
18 | - {fileID: 114921003356810632}
19 | --- !u!114 &114476506423439652
20 | MonoBehaviour:
21 | m_ObjectHideFlags: 0
22 | m_CorrespondingSourceObject: {fileID: 0}
23 | m_PrefabInstance: {fileID: 0}
24 | m_PrefabAsset: {fileID: 0}
25 | m_GameObject: {fileID: 0}
26 | m_Enabled: 1
27 | m_EditorHideFlags: 0
28 | m_Script: {fileID: 11500000, guid: ebdb0940219bcd0499c86a857ee9beeb, type: 3}
29 | m_Name: Table_Example1_2
30 | m_EditorClassIdentifier:
31 | tKey: 2
32 | ID: 2
33 | Name: "\u5C0F\u7EA2"
34 | AssetName: Hero02
35 | HP: 352
36 | Attack: 22
37 | Defence: 3
38 | --- !u!114 &114863161785676634
39 | MonoBehaviour:
40 | m_ObjectHideFlags: 0
41 | m_CorrespondingSourceObject: {fileID: 0}
42 | m_PrefabInstance: {fileID: 0}
43 | m_PrefabAsset: {fileID: 0}
44 | m_GameObject: {fileID: 0}
45 | m_Enabled: 1
46 | m_EditorHideFlags: 0
47 | m_Script: {fileID: 11500000, guid: ebdb0940219bcd0499c86a857ee9beeb, type: 3}
48 | m_Name: Table_Example1_1
49 | m_EditorClassIdentifier:
50 | tKey: 1
51 | ID: 1
52 | Name: "\u5C0F\u660E"
53 | AssetName: Hero01
54 | HP: 100
55 | Attack: 15
56 | Defence: 0
57 | --- !u!114 &114921003356810632
58 | MonoBehaviour:
59 | m_ObjectHideFlags: 0
60 | m_CorrespondingSourceObject: {fileID: 0}
61 | m_PrefabInstance: {fileID: 0}
62 | m_PrefabAsset: {fileID: 0}
63 | m_GameObject: {fileID: 0}
64 | m_Enabled: 1
65 | m_EditorHideFlags: 0
66 | m_Script: {fileID: 11500000, guid: ebdb0940219bcd0499c86a857ee9beeb, type: 3}
67 | m_Name: Table_Example1_3
68 | m_EditorClassIdentifier:
69 | tKey: 3
70 | ID: 3
71 | Name: "\u5C0F\u521A"
72 | AssetName: Hero03
73 | HP: 332
74 | Attack: 3
75 | Defence: 44
76 |
--------------------------------------------------------------------------------
/README.MD:
--------------------------------------------------------------------------------
1 | # UnityExcelTool
2 | A Unity Excel Tool, which can convert excel files to json, and auto generate table class and ScriptableObjects.
3 |
4 | 
5 | 
6 | 
7 |
8 | ## How to use:
9 | "Window -> Excel Tool Window" to open it.
10 |
11 | 1. Choose source file folder.
12 | 2. Choose output folder.
13 | 3. If you don't see any excel files, click refresh button.
14 | 4. Click Json button to Generate Json Files.
15 | 5. Click Class button to Generate Table Class Files.
16 | 6. Click Asset button to Generate ScriptableObjects Files.
17 | 7. Sheet Count means how many sheet you want to conver in every table. If this number is 1, the auto generated class will be named same as table filename, otherwise, it will be named TableName_SheetName.
18 |
19 | ## Notes:
20 | 1. In every table, the first 3 rows have a special purpose.
21 | 1. First row : name of data.
22 | 2. Second row : type of data, only support base type and Enum(not recommend).
23 | 3. Third row : comment of data, could be empty.
24 | 2. First column data will be the key to find table.
25 | 3. All Excel filenames cannot be duplicated (even though they are not in same folders).
26 |
27 | ## Environment:
28 | Unity 2018.3.0f2, .Net 4.x, if you are using .Net 2.x, maybe you need to replace dlls in lib to proper version.
29 | [ExcelDataReader](https://github.com/ExcelDataReader/ExcelDataReader), [Newtonsoft.Json](https://github.com/JamesNK/Newtonsoft.Json)
30 |
31 | -------
32 |
33 | # UnityExcelTool
34 | 一个Unity Excel工具,可以把excel表格转换为Json文件,并且可以自动生成表格类和ScriptableObject文件。
35 |
36 | ## 使用:
37 | "Window -> Excel Tool Window" 打开窗口.
38 |
39 | 1. 选择源文件夹.
40 | 2. 选择目标文件夹.
41 | 3. 如果没有看到表格列表,点击 Refresh按钮.
42 | 4. 点击 Json按钮 生成 Json文件.
43 | 5. 点击 Class按钮 生成 类文件.
44 | 6. 点击 Asset按钮 生成 ScriptableObject文件.
45 | 7. Sheet Count 指每个表格要读几个sheet. 如果这个数是 1, 生成的文件会自动命名为表格的名字, 否则会命名为 表格名_Sheet名.
46 |
47 | ## 注意:
48 | 1. 对于每个表,前三行都有特殊意义
49 | 1. 表格第一行:数据名称
50 | 2. 表格第二行:数据类型, 仅支持基本类型和Enum(不推荐)
51 | 3. 表格第三行:注释,可以为空
52 | 2. 第一列数据将被用作查找表的Key
53 | 3. 表格名不能重复 (即使文件在不同的目录).
54 |
55 | ## 开发环境:
56 | Unity 2018.3.0f2, .Net 4.x, 如果你是用的是 .Net 2.x, 可能要更换lib文件夹下dlls到对应的版本.
57 | [ExcelDataReader](https://github.com/ExcelDataReader/ExcelDataReader), [Newtonsoft.Json](https://github.com/JamesNK/Newtonsoft.Json)
58 |
--------------------------------------------------------------------------------
/ProjectSettings/GraphicsSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!30 &1
4 | GraphicsSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 12
7 | m_Deferred:
8 | m_Mode: 1
9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0}
10 | m_DeferredReflections:
11 | m_Mode: 1
12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0}
13 | m_ScreenSpaceShadows:
14 | m_Mode: 1
15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0}
16 | m_LegacyDeferred:
17 | m_Mode: 1
18 | m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0}
19 | m_DepthNormals:
20 | m_Mode: 1
21 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0}
22 | m_MotionVectors:
23 | m_Mode: 1
24 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0}
25 | m_LightHalo:
26 | m_Mode: 1
27 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0}
28 | m_LensFlare:
29 | m_Mode: 1
30 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0}
31 | m_AlwaysIncludedShaders:
32 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0}
33 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0}
34 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0}
35 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0}
36 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0}
37 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0}
38 | - {fileID: 10783, guid: 0000000000000000f000000000000000, type: 0}
39 | m_PreloadedShaders: []
40 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000,
41 | type: 0}
42 | m_CustomRenderPipeline: {fileID: 0}
43 | m_TransparencySortMode: 0
44 | m_TransparencySortAxis: {x: 0, y: 0, z: 1}
45 | m_DefaultRenderingPath: 1
46 | m_DefaultMobileRenderingPath: 1
47 | m_TierSettings: []
48 | m_LightmapStripping: 0
49 | m_FogStripping: 0
50 | m_InstancingStripping: 0
51 | m_LightmapKeepPlain: 1
52 | m_LightmapKeepDirCombined: 1
53 | m_LightmapKeepDynamicPlain: 1
54 | m_LightmapKeepDynamicDirCombined: 1
55 | m_LightmapKeepShadowMask: 1
56 | m_LightmapKeepSubtractive: 1
57 | m_FogKeepLinear: 1
58 | m_FogKeepExp: 1
59 | m_FogKeepExp2: 1
60 | m_AlbedoSwatchInfos: []
61 | m_LightsUseLinearIntensity: 0
62 | m_LightsUseColorTemperature: 0
63 |
--------------------------------------------------------------------------------
/ProjectSettings/QualitySettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!47 &1
4 | QualitySettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 5
7 | m_CurrentQuality: 4
8 | m_QualitySettings:
9 | - serializedVersion: 2
10 | name: Very Low
11 | pixelLightCount: 0
12 | shadows: 0
13 | shadowResolution: 0
14 | shadowProjection: 1
15 | shadowCascades: 1
16 | shadowDistance: 15
17 | shadowNearPlaneOffset: 3
18 | shadowCascade2Split: 0.33333334
19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
20 | shadowmaskMode: 0
21 | blendWeights: 1
22 | textureQuality: 1
23 | anisotropicTextures: 0
24 | antiAliasing: 0
25 | softParticles: 0
26 | softVegetation: 0
27 | realtimeReflectionProbes: 0
28 | billboardsFaceCameraPosition: 0
29 | vSyncCount: 0
30 | lodBias: 0.3
31 | maximumLODLevel: 0
32 | particleRaycastBudget: 4
33 | asyncUploadTimeSlice: 2
34 | asyncUploadBufferSize: 16
35 | resolutionScalingFixedDPIFactor: 1
36 | excludedTargetPlatforms: []
37 | - serializedVersion: 2
38 | name: Low
39 | pixelLightCount: 0
40 | shadows: 0
41 | shadowResolution: 0
42 | shadowProjection: 1
43 | shadowCascades: 1
44 | shadowDistance: 20
45 | shadowNearPlaneOffset: 3
46 | shadowCascade2Split: 0.33333334
47 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
48 | shadowmaskMode: 0
49 | blendWeights: 2
50 | textureQuality: 0
51 | anisotropicTextures: 0
52 | antiAliasing: 0
53 | softParticles: 0
54 | softVegetation: 0
55 | realtimeReflectionProbes: 0
56 | billboardsFaceCameraPosition: 0
57 | vSyncCount: 0
58 | lodBias: 0.4
59 | maximumLODLevel: 0
60 | particleRaycastBudget: 16
61 | asyncUploadTimeSlice: 2
62 | asyncUploadBufferSize: 16
63 | resolutionScalingFixedDPIFactor: 1
64 | excludedTargetPlatforms: []
65 | - serializedVersion: 2
66 | name: Medium
67 | pixelLightCount: 1
68 | shadows: 1
69 | shadowResolution: 0
70 | shadowProjection: 1
71 | shadowCascades: 1
72 | shadowDistance: 20
73 | shadowNearPlaneOffset: 3
74 | shadowCascade2Split: 0.33333334
75 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
76 | shadowmaskMode: 0
77 | blendWeights: 2
78 | textureQuality: 0
79 | anisotropicTextures: 1
80 | antiAliasing: 0
81 | softParticles: 0
82 | softVegetation: 0
83 | realtimeReflectionProbes: 0
84 | billboardsFaceCameraPosition: 0
85 | vSyncCount: 1
86 | lodBias: 0.7
87 | maximumLODLevel: 0
88 | particleRaycastBudget: 64
89 | asyncUploadTimeSlice: 2
90 | asyncUploadBufferSize: 16
91 | resolutionScalingFixedDPIFactor: 1
92 | excludedTargetPlatforms: []
93 | - serializedVersion: 2
94 | name: High
95 | pixelLightCount: 2
96 | shadows: 2
97 | shadowResolution: 1
98 | shadowProjection: 1
99 | shadowCascades: 2
100 | shadowDistance: 40
101 | shadowNearPlaneOffset: 3
102 | shadowCascade2Split: 0.33333334
103 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
104 | shadowmaskMode: 1
105 | blendWeights: 2
106 | textureQuality: 0
107 | anisotropicTextures: 1
108 | antiAliasing: 2
109 | softParticles: 0
110 | softVegetation: 1
111 | realtimeReflectionProbes: 1
112 | billboardsFaceCameraPosition: 1
113 | vSyncCount: 1
114 | lodBias: 1
115 | maximumLODLevel: 0
116 | particleRaycastBudget: 256
117 | asyncUploadTimeSlice: 2
118 | asyncUploadBufferSize: 16
119 | resolutionScalingFixedDPIFactor: 1
120 | excludedTargetPlatforms: []
121 | - serializedVersion: 2
122 | name: Very High
123 | pixelLightCount: 3
124 | shadows: 2
125 | shadowResolution: 2
126 | shadowProjection: 1
127 | shadowCascades: 2
128 | shadowDistance: 40
129 | shadowNearPlaneOffset: 3
130 | shadowCascade2Split: 0.33333334
131 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
132 | shadowmaskMode: 1
133 | blendWeights: 4
134 | textureQuality: 0
135 | anisotropicTextures: 1
136 | antiAliasing: 4
137 | softParticles: 1
138 | softVegetation: 1
139 | realtimeReflectionProbes: 1
140 | billboardsFaceCameraPosition: 1
141 | vSyncCount: 1
142 | lodBias: 1.5
143 | maximumLODLevel: 0
144 | particleRaycastBudget: 1024
145 | asyncUploadTimeSlice: 2
146 | asyncUploadBufferSize: 16
147 | resolutionScalingFixedDPIFactor: 1
148 | excludedTargetPlatforms: []
149 | - serializedVersion: 2
150 | name: Ultra
151 | pixelLightCount: 4
152 | shadows: 2
153 | shadowResolution: 2
154 | shadowProjection: 1
155 | shadowCascades: 4
156 | shadowDistance: 150
157 | shadowNearPlaneOffset: 3
158 | shadowCascade2Split: 0.33333334
159 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
160 | shadowmaskMode: 1
161 | blendWeights: 4
162 | textureQuality: 0
163 | anisotropicTextures: 1
164 | antiAliasing: 4
165 | softParticles: 1
166 | softVegetation: 1
167 | realtimeReflectionProbes: 1
168 | billboardsFaceCameraPosition: 1
169 | vSyncCount: 1
170 | lodBias: 2
171 | maximumLODLevel: 0
172 | particleRaycastBudget: 4096
173 | asyncUploadTimeSlice: 2
174 | asyncUploadBufferSize: 16
175 | resolutionScalingFixedDPIFactor: 1
176 | excludedTargetPlatforms: []
177 | m_PerPlatformDefaultQuality:
178 | Android: 2
179 | Nintendo 3DS: 5
180 | Nintendo Switch: 5
181 | PS4: 5
182 | PSP2: 2
183 | Standalone: 5
184 | Tizen: 2
185 | WebGL: 3
186 | WiiU: 5
187 | Windows Store Apps: 5
188 | XboxOne: 5
189 | iPhone: 2
190 | tvOS: 2
191 |
--------------------------------------------------------------------------------
/ProjectSettings/InputManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!13 &1
4 | InputManager:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | m_Axes:
8 | - serializedVersion: 3
9 | m_Name: Horizontal
10 | descriptiveName:
11 | descriptiveNegativeName:
12 | negativeButton: left
13 | positiveButton: right
14 | altNegativeButton: a
15 | altPositiveButton: d
16 | gravity: 3
17 | dead: 0.001
18 | sensitivity: 3
19 | snap: 1
20 | invert: 0
21 | type: 0
22 | axis: 0
23 | joyNum: 0
24 | - serializedVersion: 3
25 | m_Name: Vertical
26 | descriptiveName:
27 | descriptiveNegativeName:
28 | negativeButton: down
29 | positiveButton: up
30 | altNegativeButton: s
31 | altPositiveButton: w
32 | gravity: 3
33 | dead: 0.001
34 | sensitivity: 3
35 | snap: 1
36 | invert: 0
37 | type: 0
38 | axis: 0
39 | joyNum: 0
40 | - serializedVersion: 3
41 | m_Name: Fire1
42 | descriptiveName:
43 | descriptiveNegativeName:
44 | negativeButton:
45 | positiveButton: left ctrl
46 | altNegativeButton:
47 | altPositiveButton: mouse 0
48 | gravity: 1000
49 | dead: 0.001
50 | sensitivity: 1000
51 | snap: 0
52 | invert: 0
53 | type: 0
54 | axis: 0
55 | joyNum: 0
56 | - serializedVersion: 3
57 | m_Name: Fire2
58 | descriptiveName:
59 | descriptiveNegativeName:
60 | negativeButton:
61 | positiveButton: left alt
62 | altNegativeButton:
63 | altPositiveButton: mouse 1
64 | gravity: 1000
65 | dead: 0.001
66 | sensitivity: 1000
67 | snap: 0
68 | invert: 0
69 | type: 0
70 | axis: 0
71 | joyNum: 0
72 | - serializedVersion: 3
73 | m_Name: Fire3
74 | descriptiveName:
75 | descriptiveNegativeName:
76 | negativeButton:
77 | positiveButton: left shift
78 | altNegativeButton:
79 | altPositiveButton: mouse 2
80 | gravity: 1000
81 | dead: 0.001
82 | sensitivity: 1000
83 | snap: 0
84 | invert: 0
85 | type: 0
86 | axis: 0
87 | joyNum: 0
88 | - serializedVersion: 3
89 | m_Name: Jump
90 | descriptiveName:
91 | descriptiveNegativeName:
92 | negativeButton:
93 | positiveButton: space
94 | altNegativeButton:
95 | altPositiveButton:
96 | gravity: 1000
97 | dead: 0.001
98 | sensitivity: 1000
99 | snap: 0
100 | invert: 0
101 | type: 0
102 | axis: 0
103 | joyNum: 0
104 | - serializedVersion: 3
105 | m_Name: Mouse X
106 | descriptiveName:
107 | descriptiveNegativeName:
108 | negativeButton:
109 | positiveButton:
110 | altNegativeButton:
111 | altPositiveButton:
112 | gravity: 0
113 | dead: 0
114 | sensitivity: 0.1
115 | snap: 0
116 | invert: 0
117 | type: 1
118 | axis: 0
119 | joyNum: 0
120 | - serializedVersion: 3
121 | m_Name: Mouse Y
122 | descriptiveName:
123 | descriptiveNegativeName:
124 | negativeButton:
125 | positiveButton:
126 | altNegativeButton:
127 | altPositiveButton:
128 | gravity: 0
129 | dead: 0
130 | sensitivity: 0.1
131 | snap: 0
132 | invert: 0
133 | type: 1
134 | axis: 1
135 | joyNum: 0
136 | - serializedVersion: 3
137 | m_Name: Mouse ScrollWheel
138 | descriptiveName:
139 | descriptiveNegativeName:
140 | negativeButton:
141 | positiveButton:
142 | altNegativeButton:
143 | altPositiveButton:
144 | gravity: 0
145 | dead: 0
146 | sensitivity: 0.1
147 | snap: 0
148 | invert: 0
149 | type: 1
150 | axis: 2
151 | joyNum: 0
152 | - serializedVersion: 3
153 | m_Name: Horizontal
154 | descriptiveName:
155 | descriptiveNegativeName:
156 | negativeButton:
157 | positiveButton:
158 | altNegativeButton:
159 | altPositiveButton:
160 | gravity: 0
161 | dead: 0.19
162 | sensitivity: 1
163 | snap: 0
164 | invert: 0
165 | type: 2
166 | axis: 0
167 | joyNum: 0
168 | - serializedVersion: 3
169 | m_Name: Vertical
170 | descriptiveName:
171 | descriptiveNegativeName:
172 | negativeButton:
173 | positiveButton:
174 | altNegativeButton:
175 | altPositiveButton:
176 | gravity: 0
177 | dead: 0.19
178 | sensitivity: 1
179 | snap: 0
180 | invert: 1
181 | type: 2
182 | axis: 1
183 | joyNum: 0
184 | - serializedVersion: 3
185 | m_Name: Fire1
186 | descriptiveName:
187 | descriptiveNegativeName:
188 | negativeButton:
189 | positiveButton: joystick button 0
190 | altNegativeButton:
191 | altPositiveButton:
192 | gravity: 1000
193 | dead: 0.001
194 | sensitivity: 1000
195 | snap: 0
196 | invert: 0
197 | type: 0
198 | axis: 0
199 | joyNum: 0
200 | - serializedVersion: 3
201 | m_Name: Fire2
202 | descriptiveName:
203 | descriptiveNegativeName:
204 | negativeButton:
205 | positiveButton: joystick button 1
206 | altNegativeButton:
207 | altPositiveButton:
208 | gravity: 1000
209 | dead: 0.001
210 | sensitivity: 1000
211 | snap: 0
212 | invert: 0
213 | type: 0
214 | axis: 0
215 | joyNum: 0
216 | - serializedVersion: 3
217 | m_Name: Fire3
218 | descriptiveName:
219 | descriptiveNegativeName:
220 | negativeButton:
221 | positiveButton: joystick button 2
222 | altNegativeButton:
223 | altPositiveButton:
224 | gravity: 1000
225 | dead: 0.001
226 | sensitivity: 1000
227 | snap: 0
228 | invert: 0
229 | type: 0
230 | axis: 0
231 | joyNum: 0
232 | - serializedVersion: 3
233 | m_Name: Jump
234 | descriptiveName:
235 | descriptiveNegativeName:
236 | negativeButton:
237 | positiveButton: joystick button 3
238 | altNegativeButton:
239 | altPositiveButton:
240 | gravity: 1000
241 | dead: 0.001
242 | sensitivity: 1000
243 | snap: 0
244 | invert: 0
245 | type: 0
246 | axis: 0
247 | joyNum: 0
248 | - serializedVersion: 3
249 | m_Name: Submit
250 | descriptiveName:
251 | descriptiveNegativeName:
252 | negativeButton:
253 | positiveButton: return
254 | altNegativeButton:
255 | altPositiveButton: joystick button 0
256 | gravity: 1000
257 | dead: 0.001
258 | sensitivity: 1000
259 | snap: 0
260 | invert: 0
261 | type: 0
262 | axis: 0
263 | joyNum: 0
264 | - serializedVersion: 3
265 | m_Name: Submit
266 | descriptiveName:
267 | descriptiveNegativeName:
268 | negativeButton:
269 | positiveButton: enter
270 | altNegativeButton:
271 | altPositiveButton: space
272 | gravity: 1000
273 | dead: 0.001
274 | sensitivity: 1000
275 | snap: 0
276 | invert: 0
277 | type: 0
278 | axis: 0
279 | joyNum: 0
280 | - serializedVersion: 3
281 | m_Name: Cancel
282 | descriptiveName:
283 | descriptiveNegativeName:
284 | negativeButton:
285 | positiveButton: escape
286 | altNegativeButton:
287 | altPositiveButton: joystick button 1
288 | gravity: 1000
289 | dead: 0.001
290 | sensitivity: 1000
291 | snap: 0
292 | invert: 0
293 | type: 0
294 | axis: 0
295 | joyNum: 0
296 |
--------------------------------------------------------------------------------
/Assets/ExcelTool/Demo/ExcelToolDemo.unity:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!29 &1
4 | OcclusionCullingSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | m_OcclusionBakeSettings:
8 | smallestOccluder: 5
9 | smallestHole: 0.25
10 | backfaceThreshold: 100
11 | m_SceneGUID: 00000000000000000000000000000000
12 | m_OcclusionCullingData: {fileID: 0}
13 | --- !u!104 &2
14 | RenderSettings:
15 | m_ObjectHideFlags: 0
16 | serializedVersion: 9
17 | m_Fog: 0
18 | m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
19 | m_FogMode: 3
20 | m_FogDensity: 0.01
21 | m_LinearFogStart: 0
22 | m_LinearFogEnd: 300
23 | m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
24 | m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
25 | m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
26 | m_AmbientIntensity: 1
27 | m_AmbientMode: 0
28 | m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
29 | m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
30 | m_HaloStrength: 0.5
31 | m_FlareStrength: 1
32 | m_FlareFadeSpeed: 3
33 | m_HaloTexture: {fileID: 0}
34 | m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
35 | m_DefaultReflectionMode: 0
36 | m_DefaultReflectionResolution: 128
37 | m_ReflectionBounces: 1
38 | m_ReflectionIntensity: 1
39 | m_CustomReflection: {fileID: 0}
40 | m_Sun: {fileID: 0}
41 | m_IndirectSpecularColor: {r: 0.44657898, g: 0.4964133, b: 0.5748178, a: 1}
42 | m_UseRadianceAmbientProbe: 0
43 | --- !u!157 &3
44 | LightmapSettings:
45 | m_ObjectHideFlags: 0
46 | serializedVersion: 11
47 | m_GIWorkflowMode: 0
48 | m_GISettings:
49 | serializedVersion: 2
50 | m_BounceScale: 1
51 | m_IndirectOutputScale: 1
52 | m_AlbedoBoost: 1
53 | m_EnvironmentLightingMode: 0
54 | m_EnableBakedLightmaps: 1
55 | m_EnableRealtimeLightmaps: 1
56 | m_LightmapEditorSettings:
57 | serializedVersion: 10
58 | m_Resolution: 2
59 | m_BakeResolution: 40
60 | m_AtlasSize: 1024
61 | m_AO: 0
62 | m_AOMaxDistance: 1
63 | m_CompAOExponent: 1
64 | m_CompAOExponentDirect: 0
65 | m_Padding: 2
66 | m_LightmapParameters: {fileID: 0}
67 | m_LightmapsBakeMode: 1
68 | m_TextureCompression: 1
69 | m_FinalGather: 0
70 | m_FinalGatherFiltering: 1
71 | m_FinalGatherRayCount: 256
72 | m_ReflectionCompression: 2
73 | m_MixedBakeMode: 2
74 | m_BakeBackend: 1
75 | m_PVRSampling: 1
76 | m_PVRDirectSampleCount: 32
77 | m_PVRSampleCount: 500
78 | m_PVRBounces: 2
79 | m_PVRFilterTypeDirect: 0
80 | m_PVRFilterTypeIndirect: 0
81 | m_PVRFilterTypeAO: 0
82 | m_PVRFilteringMode: 1
83 | m_PVRCulling: 1
84 | m_PVRFilteringGaussRadiusDirect: 1
85 | m_PVRFilteringGaussRadiusIndirect: 5
86 | m_PVRFilteringGaussRadiusAO: 2
87 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5
88 | m_PVRFilteringAtrousPositionSigmaIndirect: 2
89 | m_PVRFilteringAtrousPositionSigmaAO: 1
90 | m_ShowResolutionOverlay: 1
91 | m_LightingDataAsset: {fileID: 0}
92 | m_UseShadowmask: 1
93 | --- !u!196 &4
94 | NavMeshSettings:
95 | serializedVersion: 2
96 | m_ObjectHideFlags: 0
97 | m_BuildSettings:
98 | serializedVersion: 2
99 | agentTypeID: 0
100 | agentRadius: 0.5
101 | agentHeight: 2
102 | agentSlope: 45
103 | agentClimb: 0.4
104 | ledgeDropHeight: 0
105 | maxJumpAcrossDistance: 0
106 | minRegionArea: 2
107 | manualCellSize: 0
108 | cellSize: 0.16666667
109 | manualTileSize: 0
110 | tileSize: 256
111 | accuratePlacement: 0
112 | debug:
113 | m_Flags: 0
114 | m_NavMeshData: {fileID: 0}
115 | --- !u!1 &833537790
116 | GameObject:
117 | m_ObjectHideFlags: 0
118 | m_CorrespondingSourceObject: {fileID: 0}
119 | m_PrefabInstance: {fileID: 0}
120 | m_PrefabAsset: {fileID: 0}
121 | serializedVersion: 6
122 | m_Component:
123 | - component: {fileID: 833537791}
124 | - component: {fileID: 833537792}
125 | m_Layer: 0
126 | m_Name: ExcelDemo
127 | m_TagString: Untagged
128 | m_Icon: {fileID: 0}
129 | m_NavMeshLayer: 0
130 | m_StaticEditorFlags: 0
131 | m_IsActive: 1
132 | --- !u!4 &833537791
133 | Transform:
134 | m_ObjectHideFlags: 0
135 | m_CorrespondingSourceObject: {fileID: 0}
136 | m_PrefabInstance: {fileID: 0}
137 | m_PrefabAsset: {fileID: 0}
138 | m_GameObject: {fileID: 833537790}
139 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
140 | m_LocalPosition: {x: 0, y: 0, z: 0}
141 | m_LocalScale: {x: 1, y: 1, z: 1}
142 | m_Children: []
143 | m_Father: {fileID: 0}
144 | m_RootOrder: 2
145 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
146 | --- !u!114 &833537792
147 | MonoBehaviour:
148 | m_ObjectHideFlags: 0
149 | m_CorrespondingSourceObject: {fileID: 0}
150 | m_PrefabInstance: {fileID: 0}
151 | m_PrefabAsset: {fileID: 0}
152 | m_GameObject: {fileID: 833537790}
153 | m_Enabled: 1
154 | m_EditorHideFlags: 0
155 | m_Script: {fileID: 11500000, guid: 55a11fe02f44b9d48bd2f239e1f331c2, type: 3}
156 | m_Name:
157 | m_EditorClassIdentifier:
158 | Table1: {fileID: 11400000, guid: 79773bcd9d255824089e1e72d393d294, type: 2}
159 | Table2: {fileID: 11400000, guid: ec083cfeabb199946912d31629c30d57, type: 2}
160 | --- !u!1 &2052876394
161 | GameObject:
162 | m_ObjectHideFlags: 0
163 | m_CorrespondingSourceObject: {fileID: 0}
164 | m_PrefabInstance: {fileID: 0}
165 | m_PrefabAsset: {fileID: 0}
166 | serializedVersion: 6
167 | m_Component:
168 | - component: {fileID: 2052876398}
169 | - component: {fileID: 2052876397}
170 | - component: {fileID: 2052876396}
171 | m_Layer: 0
172 | m_Name: Main Camera
173 | m_TagString: MainCamera
174 | m_Icon: {fileID: 0}
175 | m_NavMeshLayer: 0
176 | m_StaticEditorFlags: 0
177 | m_IsActive: 1
178 | --- !u!81 &2052876396
179 | AudioListener:
180 | m_ObjectHideFlags: 0
181 | m_CorrespondingSourceObject: {fileID: 0}
182 | m_PrefabInstance: {fileID: 0}
183 | m_PrefabAsset: {fileID: 0}
184 | m_GameObject: {fileID: 2052876394}
185 | m_Enabled: 1
186 | --- !u!20 &2052876397
187 | Camera:
188 | m_ObjectHideFlags: 0
189 | m_CorrespondingSourceObject: {fileID: 0}
190 | m_PrefabInstance: {fileID: 0}
191 | m_PrefabAsset: {fileID: 0}
192 | m_GameObject: {fileID: 2052876394}
193 | m_Enabled: 1
194 | serializedVersion: 2
195 | m_ClearFlags: 1
196 | m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
197 | m_projectionMatrixMode: 1
198 | m_SensorSize: {x: 36, y: 24}
199 | m_LensShift: {x: 0, y: 0}
200 | m_GateFitMode: 2
201 | m_FocalLength: 50
202 | m_NormalizedViewPortRect:
203 | serializedVersion: 2
204 | x: 0
205 | y: 0
206 | width: 1
207 | height: 1
208 | near clip plane: 0.3
209 | far clip plane: 1000
210 | field of view: 60
211 | orthographic: 0
212 | orthographic size: 5
213 | m_Depth: -1
214 | m_CullingMask:
215 | serializedVersion: 2
216 | m_Bits: 4294967295
217 | m_RenderingPath: -1
218 | m_TargetTexture: {fileID: 0}
219 | m_TargetDisplay: 0
220 | m_TargetEye: 3
221 | m_HDR: 1
222 | m_AllowMSAA: 1
223 | m_AllowDynamicResolution: 0
224 | m_ForceIntoRT: 0
225 | m_OcclusionCulling: 1
226 | m_StereoConvergence: 10
227 | m_StereoSeparation: 0.022
228 | --- !u!4 &2052876398
229 | Transform:
230 | m_ObjectHideFlags: 0
231 | m_CorrespondingSourceObject: {fileID: 0}
232 | m_PrefabInstance: {fileID: 0}
233 | m_PrefabAsset: {fileID: 0}
234 | m_GameObject: {fileID: 2052876394}
235 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
236 | m_LocalPosition: {x: 0, y: 1, z: -10}
237 | m_LocalScale: {x: 1, y: 1, z: 1}
238 | m_Children: []
239 | m_Father: {fileID: 0}
240 | m_RootOrder: 0
241 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
242 | --- !u!1 &2125043472
243 | GameObject:
244 | m_ObjectHideFlags: 0
245 | m_CorrespondingSourceObject: {fileID: 0}
246 | m_PrefabInstance: {fileID: 0}
247 | m_PrefabAsset: {fileID: 0}
248 | serializedVersion: 6
249 | m_Component:
250 | - component: {fileID: 2125043474}
251 | - component: {fileID: 2125043473}
252 | m_Layer: 0
253 | m_Name: Directional Light
254 | m_TagString: Untagged
255 | m_Icon: {fileID: 0}
256 | m_NavMeshLayer: 0
257 | m_StaticEditorFlags: 0
258 | m_IsActive: 1
259 | --- !u!108 &2125043473
260 | Light:
261 | m_ObjectHideFlags: 0
262 | m_CorrespondingSourceObject: {fileID: 0}
263 | m_PrefabInstance: {fileID: 0}
264 | m_PrefabAsset: {fileID: 0}
265 | m_GameObject: {fileID: 2125043472}
266 | m_Enabled: 1
267 | serializedVersion: 8
268 | m_Type: 1
269 | m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
270 | m_Intensity: 1
271 | m_Range: 10
272 | m_SpotAngle: 30
273 | m_CookieSize: 10
274 | m_Shadows:
275 | m_Type: 2
276 | m_Resolution: -1
277 | m_CustomResolution: -1
278 | m_Strength: 1
279 | m_Bias: 0.05
280 | m_NormalBias: 0.4
281 | m_NearPlane: 0.2
282 | m_Cookie: {fileID: 0}
283 | m_DrawHalo: 0
284 | m_Flare: {fileID: 0}
285 | m_RenderMode: 0
286 | m_CullingMask:
287 | serializedVersion: 2
288 | m_Bits: 4294967295
289 | m_Lightmapping: 4
290 | m_LightShadowCasterMode: 0
291 | m_AreaSize: {x: 1, y: 1}
292 | m_BounceIntensity: 1
293 | m_ColorTemperature: 6570
294 | m_UseColorTemperature: 0
295 | m_ShadowRadius: 0
296 | m_ShadowAngle: 0
297 | --- !u!4 &2125043474
298 | Transform:
299 | m_ObjectHideFlags: 0
300 | m_CorrespondingSourceObject: {fileID: 0}
301 | m_PrefabInstance: {fileID: 0}
302 | m_PrefabAsset: {fileID: 0}
303 | m_GameObject: {fileID: 2125043472}
304 | m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
305 | m_LocalPosition: {x: 0, y: 3, z: 0}
306 | m_LocalScale: {x: 1, y: 1, z: 1}
307 | m_Children: []
308 | m_Father: {fileID: 0}
309 | m_RootOrder: 1
310 | m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
311 |
--------------------------------------------------------------------------------
/Assets/ExcelTool/scripts/Editor/ExcelWindow.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.IO;
4 | using System.Linq;
5 | using UnityEditor;
6 | using UnityEngine;
7 |
8 | [Serializable]
9 | public class ExcelWindow : EditorWindow
10 | {
11 | private const string KeyFilePath = "Excel_FilePath";
12 | private const string KeyOutPath = "Excel_OutPath";
13 | private const string KeySheetCount = "Excel_SheetCount";
14 | private const string KeyIncSub = "Excel_IncSub";
15 |
16 | private string filePath; // source excel file path
17 | private string outPath; // output path
18 | private bool isIncSub; // whether include subdirectories
19 | private int sheetCount = 1; // load sheet count. 0 means all.
20 |
21 | private int excelFileCount;
22 | private List excelFiles;
23 | private List isUseFiles;
24 |
25 | private const int H1 = 140;
26 | private const int H2 = 160;
27 | private const int H3 = 90;
28 |
29 | private int genResult;
30 |
31 | enum LogState
32 | {
33 | None,
34 | NoSrcFolder,
35 | NoOutFolder,
36 | NoExcelFiles,
37 | WaitngOperate,
38 | GenSuccess,
39 | GenFailed,
40 | NameDuplicated
41 | }
42 | private static LogState curLogState;
43 |
44 |
45 | [MenuItem("Window/Excel Tool Window")]
46 | public static void ShowWindow()
47 | {
48 | //GetWindowWithRect(typeof(ExcelWindow), new Rect(50, 100, 600, 600));
49 | GetWindow(typeof(ExcelWindow), false, "Excel Tool");
50 | }
51 |
52 | private void OnEnable()
53 | {
54 | filePath = EditorPrefs.GetString(KeyFilePath, Application.dataPath);
55 | outPath = EditorPrefs.GetString(KeyOutPath, Application.dataPath + "/Tables");
56 | sheetCount = EditorPrefs.GetInt(KeySheetCount, 1);
57 | isIncSub = EditorPrefs.GetBool(KeyIncSub, false);
58 |
59 | LoadExcelFiles();
60 | }
61 |
62 |
63 | void OnGUI()
64 | {
65 | DrawPath();
66 |
67 | DrawFileInfos();
68 |
69 | DrawExcelFiles();
70 |
71 | DrawInfo();
72 |
73 | DrawLogArea();
74 | }
75 |
76 | ///
77 | /// browse excel file path and output file path
78 | ///
79 | void DrawPath()
80 | {
81 | EditorGUILayout.LabelField("Settings", EditorStyles.boldLabel);
82 |
83 | GUIStyle tfstyle = new GUIStyle(GUI.skin.textField){alignment = TextAnchor.MiddleLeft, fixedHeight = 19};
84 |
85 | // choose excel path
86 | GUILayout.Space(5);
87 | EditorGUILayout.BeginHorizontal();
88 | EditorGUIUtility.labelWidth = 80;
89 | filePath = EditorGUILayout.TextField ("Excel Path:", filePath, tfstyle);
90 |
91 | if (GUILayout.Button("Browse", GUILayout.Width(80)))
92 | {
93 | string tmpPath = EditorUtility.OpenFolderPanel("Choose Excel Files Forlder", "", "");
94 | if (!string.IsNullOrEmpty(tmpPath) && tmpPath != filePath)
95 | {
96 | filePath = tmpPath;
97 | LoadExcelFiles();
98 | }
99 | }
100 | EditorGUILayout.EndHorizontal();
101 |
102 | // choose output path
103 | GUILayout.Space(5);
104 | EditorGUILayout.BeginHorizontal();
105 | EditorGUIUtility.labelWidth = 80;
106 | outPath = EditorGUILayout.TextField ("Output Path:", outPath, tfstyle);
107 |
108 | if (GUILayout.Button("Browse", GUILayout.Width(80)))
109 | {
110 | outPath = EditorUtility.OpenFolderPanel("Choose Excel Files Forlder", "", "");
111 | EditorPrefs.SetString(KeyOutPath, outPath);
112 | }
113 | EditorGUILayout.EndHorizontal();
114 | }
115 |
116 |
117 | ///
118 | /// file count, checkbox of whether scan subdir, and refresh button
119 | ///
120 | void DrawFileInfos()
121 | {
122 | GUILayout.Space(20);
123 | EditorGUILayout.LabelField("Excel Files", EditorStyles.boldLabel, GUILayout.Width(100));
124 |
125 | GUILayout.Space(5);
126 | EditorGUILayout.BeginHorizontal();
127 | EditorGUILayout.LabelField("File count: " + excelFileCount, GUILayout.Width(85));
128 | bool _isIncSub = GUILayout.Toggle(isIncSub, "Include subdirectories");
129 |
130 | if (_isIncSub != isIncSub)
131 | {
132 | isIncSub = _isIncSub;
133 | EditorPrefs.SetBool(KeyIncSub, isIncSub);
134 | LoadExcelFiles();
135 | }
136 |
137 | GUILayout.Space(20);
138 | if (GUILayout.Button("Refresh", GUILayout.Width(80)))
139 | {
140 | LoadExcelFiles();
141 | }
142 | GUILayout.FlexibleSpace();
143 | EditorGUILayout.EndHorizontal();
144 | }
145 |
146 | ///
147 | /// list of excle tables
148 | ///
149 | void DrawExcelFiles()
150 | {
151 | Rect rect = new Rect(5, H1, position.width - 10, position.height - H1 - H2 - H3 - 30);
152 | EditorGUI.DrawRect(rect, new Color(0.8f, 0.8f, 0.8f));
153 | GUILayout.BeginArea(new Rect(rect.x + 5, rect.y + 5, rect.width - 10, rect.height - 10));
154 |
155 | if (string.IsNullOrEmpty(filePath))
156 | {
157 | curLogState = LogState.NoSrcFolder;
158 | }
159 | else if(excelFiles == null || excelFiles.Count < 1)
160 | {
161 | curLogState = LogState.NoExcelFiles;
162 | }
163 | else
164 | {
165 | for (int i = 0; i < excelFileCount; i++)
166 | {
167 | isUseFiles[i] = GUILayout.Toggle(isUseFiles[i], excelFiles[i].FullName);
168 | }
169 |
170 | if (string.IsNullOrEmpty(outPath))
171 | {
172 | curLogState = LogState.NoOutFolder;
173 | }
174 | else if (curLogState != LogState.GenSuccess && curLogState != LogState.GenFailed && curLogState != LogState.NameDuplicated)
175 | {
176 | curLogState = LogState.WaitngOperate;
177 | }
178 | }
179 |
180 | GUILayout.EndArea();
181 | }
182 |
183 | void DrawInfo()
184 | {
185 | Rect rect = new Rect(5, position.height - H2 - H3 - 20, position.width - 10, H2);
186 | EditorGUI.DrawRect(rect, new Color(0.7f, 0.7f, 0.7f));
187 | GUILayout.BeginArea(rect);
188 |
189 | EditorGUILayout.LabelField("Notes:", EditorStyles.boldLabel);
190 | EditorGUILayout.LabelField("1. First row of table: name of data (表格第一行:数据名称)", new GUIStyle {fontSize = 12});
191 | EditorGUILayout.LabelField("2. Second row of table: type of data, only support base type and Enum \n(表格第二行:数据类型, 仅支持基本类型和Enum)", new GUIStyle {fontSize = 12}, GUILayout.Height(30));
192 | EditorGUILayout.LabelField("3. Third row of table: comment of data, could be empty (表格第三行:注释,可以为空)", new GUIStyle {fontSize = 12});
193 | EditorGUILayout.LabelField("4. First column data will be the key to find table (第一列数据将被用作查找表的Key)", new GUIStyle {fontSize = 12});
194 | EditorGUILayout.LabelField("5. All Excel filenames cannot be duplicated (表格名不能重复)", new GUIStyle {fontSize = 12});
195 |
196 | EditorGUILayout.LabelField("6. If you want to generate Asset, you must have auot generated class first! \n(如果要生成SO资源文件,必须先有自动生成的类文件)", new GUIStyle {richText = true, fontSize = 12}, GUILayout.Height(40));
197 |
198 | GUILayout.EndArea();
199 | }
200 |
201 |
202 | void DrawLogArea()
203 | {
204 | //EditorGUI.DrawRect(new Rect(5, position.height - H3 - 10, position.width - 10, H3), Color.green);
205 | GUILayout.BeginArea(new Rect(5, position.height - H3 - 10, position.width - 10, H3));
206 |
207 | GUILayout.Space(5);
208 |
209 | GUILayout.BeginHorizontal();
210 | EditorGUILayout.LabelField("Sheet Count (0 means all): ", GUILayout.Width(170));
211 | string sheetNum = EditorGUILayout.TextField("", sheetCount.ToString(), GUILayout.Width(40));
212 | int.TryParse(sheetNum, out sheetCount);
213 | EditorPrefs.SetInt(KeySheetCount, sheetCount);
214 | GUILayout.FlexibleSpace();
215 | GUILayout.EndHorizontal();
216 |
217 | GUILayout.Space(5);
218 |
219 | EditorGUILayout.BeginHorizontal();
220 | GUI.backgroundColor = new Color(0.85f, 1f, 1f);
221 |
222 | if (GUILayout.Button("Json", GUILayout.Width(80), GUILayout.Height(30)))
223 | {
224 | GenerateJson();
225 | }
226 | GUILayout.Space(10);
227 |
228 | GUI.backgroundColor = new Color(0.7f, 1f, 0.7f);
229 | if (GUILayout.Button("Class", GUILayout.Width(80), GUILayout.Height(30)))
230 | {
231 | GenerateClass();
232 | }
233 | GUILayout.Space(10);
234 |
235 | if (GUILayout.Button("Asset", GUILayout.Width(80), GUILayout.Height(30)))
236 | {
237 | GenerateAsset();
238 | }
239 |
240 | EditorGUILayout.EndHorizontal();
241 |
242 | GUILayout.Space(10);
243 |
244 | string logInfo = "";
245 | switch (curLogState)
246 | {
247 | case LogState.None:
248 | break;
249 | case LogState.NoSrcFolder:
250 | logInfo = "Please select a Folder of excel files!";
251 | break;
252 | case LogState.NoOutFolder:
253 | logInfo = "Please select an output Folder!";
254 | break;
255 | case LogState.NoExcelFiles:
256 | logInfo = "No Excel Files! Click refresh button to load files.";
257 | break;
258 | case LogState.WaitngOperate:
259 | logInfo = "Click Button to Start";
260 | break;
261 | case LogState.GenSuccess:
262 | logInfo = $"Sucdcess! Generated {genResult} Files.";
263 | break;
264 | case LogState.GenFailed:
265 | logInfo = "Generate Failed!";
266 | break;
267 | case LogState.NameDuplicated:
268 | logInfo = "Error: Name Duplicated!";
269 | break;
270 | }
271 |
272 | EditorGUILayout.LabelField(logInfo, new GUIStyle(){richText = true});
273 | GUILayout.EndArea();
274 | }
275 |
276 | void LoadExcelFiles()
277 | {
278 | if(string.IsNullOrEmpty(filePath)) return;
279 |
280 | EditorPrefs.SetString(KeyFilePath, filePath);
281 |
282 | excelFiles = new List();
283 | GetFolderFiles(excelFiles, filePath, isIncSub);
284 | excelFileCount = excelFiles.Count;
285 |
286 | isUseFiles = new List(Enumerable.Repeat(true, excelFileCount));
287 | curLogState = HaveDuplicatedName() ? LogState.NameDuplicated : LogState.None;
288 | genResult = 0;
289 | }
290 |
291 | void GetFolderFiles(List files, string path, bool incSub = false)
292 | {
293 | DirectoryInfo folder = new DirectoryInfo(path);
294 | if (!folder.Exists) return;
295 |
296 | files.AddRange(GetFilesByExtensions(folder, ".xlsx", ".xls"));
297 |
298 | if (incSub)
299 | {
300 | foreach (var info in folder.GetDirectories())
301 | {
302 | GetFolderFiles(files, info.FullName, true);
303 | }
304 | }
305 | }
306 |
307 |
308 | IEnumerable GetFilesByExtensions(DirectoryInfo dir, params string[] extensions)
309 | {
310 | if (extensions == null) return null;
311 |
312 | IEnumerable files = dir.EnumerateFiles();
313 | return files.Where(f => extensions.Contains(f.Extension.ToLower()));
314 | }
315 |
316 |
317 | bool HaveDuplicatedName()
318 | {
319 | if (excelFiles == null || excelFiles.Count <= 0) return false;
320 |
321 | List names = new List();
322 | foreach (var file in excelFiles)
323 | {
324 | string fileName = Path.GetFileNameWithoutExtension(file.FullName);
325 | if (names.Contains(fileName))
326 | {
327 | return true;
328 | }
329 | names.Add(fileName);
330 | }
331 | return false;
332 | }
333 |
334 | bool CanGenerate()
335 | {
336 | if (curLogState == LogState.NameDuplicated || curLogState == LogState.NoExcelFiles ||
337 | curLogState == LogState.NoOutFolder || curLogState == LogState.NoSrcFolder) return false;
338 | if (excelFiles == null || excelFiles.Count <= 0)
339 | {
340 | Debug.LogError("Error! No Excel Files!");
341 | return false;
342 | }
343 |
344 | if (string.IsNullOrEmpty(outPath))
345 | {
346 | Debug.LogError("Error! No Output Folder!");
347 | return false;
348 | }
349 |
350 | return true;
351 | }
352 |
353 | void GenerateJson()
354 | {
355 | if(!CanGenerate()) return;
356 |
357 | FileExporter exporter = new FileExporter(excelFiles, isUseFiles, outPath, sheetCount, 3);
358 | genResult = exporter.SaveJsonFiles();
359 | curLogState = genResult > 0 ? LogState.GenSuccess : LogState.GenFailed;
360 | AssetDatabase.Refresh();
361 | }
362 |
363 | void GenerateClass()
364 | {
365 | if(!CanGenerate()) return;
366 |
367 | FileExporter exporter = new FileExporter(excelFiles, isUseFiles, outPath, sheetCount, 3);
368 | genResult = exporter.SaveCsFiles();
369 | curLogState = genResult > 0 ? LogState.GenSuccess : LogState.GenFailed;
370 | AssetDatabase.Refresh();
371 | }
372 |
373 | void GenerateAsset()
374 | {
375 | if(!CanGenerate()) return;
376 |
377 | FileExporter exporter = new FileExporter(excelFiles, isUseFiles, outPath, sheetCount, 3);
378 | genResult = exporter.SaveSOFiles();
379 | curLogState = genResult > 0 ? LogState.GenSuccess : LogState.GenFailed;
380 | AssetDatabase.Refresh();
381 | }
382 |
383 |
384 | void ClearDir(string path)
385 | {
386 | if (!Directory.Exists(path))
387 | {
388 | Directory.CreateDirectory(path);
389 | }
390 |
391 | DirectoryInfo dir = new DirectoryInfo(path);
392 | FileInfo[] files = dir.GetFiles();
393 |
394 | foreach (var item in files)
395 | {
396 | File.Delete(item.FullName);
397 | }
398 | if (dir.GetDirectories().Length != 0)
399 | {
400 | foreach (var item in dir.GetDirectories())
401 | {
402 | if (!item.ToString().Contains("$") && (!item.ToString().Contains("Boot")))
403 | {
404 | ClearDir(Path.Combine(dir.ToString(), item.ToString()));
405 | }
406 | }
407 | }
408 | }
409 |
410 |
411 | }
412 |
--------------------------------------------------------------------------------
/Assets/ExcelTool/scripts/Editor/FileExporter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Data;
4 | using System.IO;
5 | using System.Linq;
6 | using System.Reflection;
7 | using System.Text;
8 | using UnityEngine;
9 | using ExcelDataReader;
10 | using Newtonsoft.Json;
11 | using UnityEditor;
12 |
13 | public class FileExporter
14 | {
15 | private readonly List srcFiles;
16 | private readonly List isUseFiles;
17 | private readonly string savePath;
18 | private readonly int sheetCount;
19 | private readonly int headerRows;
20 |
21 | public FileExporter(List _srcFiles, List _isUseFiles, string _savePath, int _sheetCount,
22 | int _headerRows)
23 | {
24 | srcFiles = _srcFiles;
25 | isUseFiles = _isUseFiles;
26 | savePath = _savePath;
27 | sheetCount = _sheetCount;
28 | headerRows = _headerRows;
29 | }
30 |
31 | public int SaveJsonFiles()
32 | {
33 | return ReadAllTables(SaveSheetJson);
34 | }
35 |
36 | public int SaveCsFiles()
37 | {
38 | return ReadAllTables(SaveSheetCs);
39 | }
40 |
41 | public int SaveSOFiles()
42 | {
43 | return ReadAllTables(SaveTableAsset);
44 | }
45 |
46 |
47 | #region Read Table
48 |
49 | int ReadAllTables(Func exportFunc)
50 | {
51 | if (srcFiles == null || srcFiles.Count <= 0)
52 | {
53 | Debug.LogError("Error! No Excel Files!");
54 | return -1;
55 | }
56 |
57 | int result = 0;
58 | for (var i = 0; i < srcFiles.Count; i++)
59 | {
60 | if (isUseFiles[i])
61 | {
62 | var file = srcFiles[i];
63 | result += ReadTable(file.FullName, FileNameNoExt(file.Name), exportFunc);
64 | }
65 | }
66 |
67 | return result;
68 | }
69 |
70 | int ReadTable(string path, string fileName, Func exportFunc)
71 | {
72 | int result = 0;
73 | using (var stream = File.Open(path, FileMode.Open, FileAccess.Read))
74 | {
75 | using (var reader = ExcelReaderFactory.CreateReader(stream))
76 | {
77 | int tableSheetNum = reader.ResultsCount;
78 | if (tableSheetNum < 1)
79 | {
80 | Debug.LogError("Excel file is empty: " + path);
81 | return -1;
82 | }
83 |
84 | var dataSet = reader.AsDataSet();
85 |
86 | int checkCount = sheetCount <= 0 ? tableSheetNum : sheetCount;
87 | for (int i = 0; i < checkCount; i++)
88 | {
89 | if (i < tableSheetNum)
90 | {
91 | string name = checkCount == 1 ?
92 | fileName :
93 | fileName + "_" + dataSet.Tables[i].TableName;
94 | //result += SaveJson(dataSet.Tables[i], name);
95 | result += exportFunc(dataSet.Tables[i], name);
96 | }
97 | }
98 | }
99 | }
100 | return result;
101 | }
102 |
103 | #endregion
104 |
105 |
106 | #region Save Json Files
107 |
108 | int SaveSheetJson(DataTable sheet, string fileName)
109 | {
110 | if (sheet.Rows.Count <= 0)
111 | {
112 | Debug.LogError("Excel Sheet is empty: " + sheet.TableName);
113 | return -1;
114 | }
115 |
116 | int columns = sheet.Columns.Count;
117 | int rows = sheet.Rows.Count;
118 |
119 | List> tData = new List>();
120 |
121 | for (int i = headerRows; i < rows; i++)
122 | {
123 | Dictionary rowData = new Dictionary();
124 | for (int j = 0; j < columns; j++)
125 | {
126 | string key = sheet.Rows[0][j].ToString();
127 | rowData[key] = sheet.Rows[i][j];
128 | }
129 |
130 | tData.Add(rowData);
131 | }
132 |
133 | string json = JsonConvert.SerializeObject(tData, Formatting.Indented);
134 |
135 | // save to file
136 | string dstFolder = savePath + "/TableJson/";
137 | if (!Directory.Exists(dstFolder))
138 | {
139 | Directory.CreateDirectory(dstFolder);
140 | }
141 |
142 | string path = dstFolder + fileName + ".json";
143 | using (FileStream fileStream = new FileStream(path, FileMode.Create, FileAccess.Write))
144 | {
145 | using (TextWriter textWriter = new StreamWriter(fileStream, Encoding.UTF8))
146 | {
147 | textWriter.Write(json);
148 | Debug.Log("File saved: " + path);
149 | return 1;
150 | }
151 | }
152 | }
153 |
154 | #endregion
155 |
156 |
157 |
158 | #region Save Class File
159 |
160 | int SaveSheetCs(DataTable sheet, string fileName)
161 | {
162 | if (sheet.Rows.Count < 2)
163 | {
164 | Debug.LogError("Excel Sheet is empty: " + sheet.TableName);
165 | return -1;
166 | }
167 |
168 | // write table data class
169 | int r1 = SaveTableClass(sheet, fileName);
170 |
171 | // write scriptable object TableSet class
172 | if (r1 > 0)
173 | {
174 | int r2 = SaveTableSet(sheet, fileName);
175 | return r2;
176 | }
177 |
178 | return -1;
179 | }
180 |
181 | int SaveTableClass(DataTable sheet, string fileName)
182 | {
183 | StringBuilder sb = new StringBuilder();
184 | sb.AppendLine("/// ");
185 | sb.AppendLine($"/// Auto Generated Class by ExcelTool. From Table: {fileName}");
186 | sb.AppendLine("/// ");
187 |
188 | string keyType = sheet.Rows[1][0].ToString();
189 | fileName = "Table_" + fileName;
190 |
191 | sb.AppendFormat("public class {0} : TableBase<{1}>\r\n{{", fileName, keyType);
192 | sb.AppendLine();
193 |
194 | foreach (DataColumn column in sheet.Columns)
195 | {
196 | string name = sheet.Rows[0][column].ToString();
197 | string type = sheet.Rows[1][column].ToString();
198 | string comment = sheet.Rows[2][column].ToString();
199 |
200 | if (string.IsNullOrEmpty(name)) continue;
201 | if (string.IsNullOrEmpty(type)) type = "string";
202 | if (!string.IsNullOrEmpty(comment))
203 | {
204 | comment = comment.Replace("\n", ",").Replace("\r", ",");
205 | }
206 |
207 | sb.AppendFormat("\tpublic {0} {1}; // {2}", type, name, comment);
208 | sb.AppendLine();
209 | }
210 |
211 | sb.Append('}');
212 | sb.AppendLine();
213 |
214 | // save to file
215 | string dstFolder = savePath + "/TableClass/";
216 | if (!Directory.Exists(dstFolder))
217 | {
218 | Directory.CreateDirectory(dstFolder);
219 | }
220 |
221 | string path = dstFolder + fileName + ".cs";
222 | using (FileStream fileStream = new FileStream(path, FileMode.Create, FileAccess.Write))
223 | {
224 | using (TextWriter textWriter = new StreamWriter(fileStream, Encoding.UTF8))
225 | {
226 | textWriter.Write(sb.ToString());
227 | Debug.Log("Table saved: " + path);
228 | return 1;
229 | }
230 | }
231 | }
232 |
233 |
234 | int SaveTableSet(DataTable sheet, string fileName)
235 | {
236 | StringBuilder sb = new StringBuilder();
237 | sb.AppendLine("/// ");
238 | sb.AppendLine($"/// Auto Generated ScriptableObject TableSet.");
239 | sb.AppendLine("/// ");
240 |
241 | string keyType = sheet.Rows[1][0].ToString();
242 | string tSetName = "TSet_" + fileName;
243 | string tClassName = "Table_" + fileName;
244 |
245 | sb.AppendFormat("public class {0} : TableSet<{1}, {2}>\r\n{{", tSetName, keyType, tClassName);
246 | sb.AppendLine();
247 | sb.Append('}');
248 | sb.AppendLine();
249 |
250 | // save to file
251 | string dstFolder = savePath + "/TableClass/";
252 | if (!Directory.Exists(dstFolder))
253 | {
254 | Directory.CreateDirectory(dstFolder);
255 | }
256 |
257 | string path = dstFolder + tSetName + ".cs";
258 | using (FileStream fileStream = new FileStream(path, FileMode.Create, FileAccess.Write))
259 | {
260 | using (TextWriter textWriter = new StreamWriter(fileStream, Encoding.UTF8))
261 | {
262 | textWriter.Write(sb.ToString());
263 | Debug.Log("Table Set saved: " + path);
264 | return 1;
265 | }
266 | }
267 | }
268 |
269 | #endregion
270 |
271 |
272 | #region Save ScriptableObject
273 |
274 | int SaveTableAsset(DataTable sheet, string fileName)
275 | {
276 | if (sheet.Rows.Count < 2)
277 | {
278 | Debug.LogError("Excel Sheet is empty: " + sheet.TableName);
279 | return -1;
280 | }
281 |
282 | string tClassName = "Table_" + fileName;
283 | string tSetName = "TSet_" + fileName;
284 |
285 | // create Main Asset of table Set type by reflection
286 | var methods = typeof(ScriptableObject).GetMethods().Where(m => m.Name == "CreateInstance");
287 | var methodInfo = methods.First(m => m.IsGenericMethod);
288 |
289 | Assembly assembly = Assembly.Load("Assembly-CSharp");
290 | var tSetType = assembly.GetType(tSetName);
291 | if (tSetType == null) return -1;
292 | MethodInfo createMethod = methodInfo.MakeGenericMethod(tSetType);
293 |
294 | UnityEngine.Object assetObj = (UnityEngine.Object) Activator.CreateInstance(tSetType);
295 | createMethod.Invoke(assetObj, null);
296 |
297 | // save to file
298 | string dstFolder = savePath + "/TableAssets/";
299 | if (!Directory.Exists(dstFolder))
300 | {
301 | Directory.CreateDirectory(dstFolder);
302 | }
303 |
304 | int idx = dstFolder.IndexOf("Assets/", StringComparison.Ordinal);
305 | string path = dstFolder.Substring(idx) + tSetName + ".asset";
306 | AssetDatabase.CreateAsset(assetObj, path);
307 | Debug.Log("Main Asset saved: " + path);
308 |
309 | // create asset of every row data, and add them to main asset
310 | for (int i = headerRows; i < sheet.Rows.Count; i++)
311 | {
312 | var tableType = assembly.GetType(tClassName);
313 |
314 | UnityEngine.Object dataObj = (UnityEngine.Object) Activator.CreateInstance(tableType);
315 | createMethod.Invoke(dataObj, null);
316 |
317 | // set every field data
318 | object keyVal = null;
319 | for (var j = 0; j < sheet.Columns.Count; j++)
320 | {
321 | string name = sheet.Rows[0][j].ToString();
322 | string type = sheet.Rows[1][j].ToString();
323 | string val = sheet.Rows[i][j].ToString();
324 |
325 | if (string.IsNullOrEmpty(name)) continue;
326 | if (string.IsNullOrEmpty(type)) type = "string";
327 |
328 | object o = SetObjectFiled(dataObj, tableType.GetField(name), type, val);
329 | if (j == 0)
330 | {
331 | keyVal = o;
332 | }
333 | }
334 |
335 | // set key data with first column value
336 | tableType.GetField("tKey").SetValue(dataObj, keyVal);
337 |
338 | // add data asset to main asset
339 | var methodAdd = tSetType.GetMethod("Add");
340 | methodAdd.Invoke(assetObj, new[] {keyVal, dataObj});
341 |
342 | dataObj.name = tClassName + "_" + keyVal;
343 | AssetDatabase.AddObjectToAsset(dataObj, path);
344 | }
345 |
346 | EditorUtility.SetDirty(assetObj);
347 | AssetDatabase.SaveAssets();
348 | AssetDatabase.Refresh();
349 |
350 | return 1;
351 | }
352 |
353 |
354 | object SetObjectFiled(object obj, FieldInfo field, string type, string param)
355 | {
356 | object pObj = param;
357 | switch (type.ToLower())
358 | {
359 | case "string":
360 | field.SetValue(obj, param);
361 | break;
362 | case "bool":
363 | pObj = bool.Parse(param);
364 | field.SetValue(obj, bool.Parse(param));
365 | break;
366 | case "byte":
367 | pObj = byte.Parse(param);
368 | field.SetValue(obj, byte.Parse(param));
369 | break;
370 | case "int":
371 | pObj = int.Parse(param);
372 | field.SetValue(obj, int.Parse(param));
373 | break;
374 | case "short":
375 | pObj = short.Parse(param);
376 | field.SetValue(obj, short.Parse(param));
377 | break;
378 | case "long":
379 | pObj = long.Parse(param);
380 | field.SetValue(obj, long.Parse(param));
381 | break;
382 | case "float":
383 | pObj = float.Parse(param);
384 | field.SetValue(obj, float.Parse(param));
385 | break;
386 | case "double":
387 | pObj = double.Parse(param);
388 | field.SetValue(obj, double.Parse(param));
389 | break;
390 | case "decimal":
391 | pObj = decimal.Parse(param);
392 | field.SetValue(obj, decimal.Parse(param));
393 | break;
394 | default:
395 | Assembly assembly = Assembly.Load("Assembly-CSharp");
396 | var t = assembly.GetType(type);
397 | if (t != null)
398 | {
399 | if (t.IsEnum)
400 | {
401 | pObj = Enum.Parse(t, param);
402 | field.SetValue(obj, Enum.Parse(t, param));
403 | }
404 | }
405 | else
406 | {
407 | field.SetValue(obj, param);
408 | }
409 | break;
410 | }
411 |
412 | return pObj;
413 | }
414 |
415 | #endregion
416 |
417 |
418 |
419 |
420 |
421 | string FileNameNoExt(string filename)
422 | {
423 | int length;
424 | if ((length = filename.LastIndexOf('.')) == -1)
425 | return filename;
426 | return filename.Substring(0, length);
427 | }
428 |
429 | }
430 |
--------------------------------------------------------------------------------
/ProjectSettings/ProjectSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!129 &1
4 | PlayerSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 15
7 | productGUID: 18e8547e055c6c944b36d56cc73eb092
8 | AndroidProfiler: 0
9 | AndroidFilterTouchesWhenObscured: 0
10 | AndroidEnableSustainedPerformanceMode: 0
11 | defaultScreenOrientation: 4
12 | targetDevice: 2
13 | useOnDemandResources: 0
14 | accelerometerFrequency: 60
15 | companyName: DefaultCompany
16 | productName: UnityExcelTool
17 | defaultCursor: {fileID: 0}
18 | cursorHotspot: {x: 0, y: 0}
19 | m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1}
20 | m_ShowUnitySplashScreen: 1
21 | m_ShowUnitySplashLogo: 1
22 | m_SplashScreenOverlayOpacity: 1
23 | m_SplashScreenAnimation: 1
24 | m_SplashScreenLogoStyle: 1
25 | m_SplashScreenDrawMode: 0
26 | m_SplashScreenBackgroundAnimationZoom: 1
27 | m_SplashScreenLogoAnimationZoom: 1
28 | m_SplashScreenBackgroundLandscapeAspect: 1
29 | m_SplashScreenBackgroundPortraitAspect: 1
30 | m_SplashScreenBackgroundLandscapeUvs:
31 | serializedVersion: 2
32 | x: 0
33 | y: 0
34 | width: 1
35 | height: 1
36 | m_SplashScreenBackgroundPortraitUvs:
37 | serializedVersion: 2
38 | x: 0
39 | y: 0
40 | width: 1
41 | height: 1
42 | m_SplashScreenLogos: []
43 | m_VirtualRealitySplashScreen: {fileID: 0}
44 | m_HolographicTrackingLossScreen: {fileID: 0}
45 | defaultScreenWidth: 1024
46 | defaultScreenHeight: 768
47 | defaultScreenWidthWeb: 960
48 | defaultScreenHeightWeb: 600
49 | m_StereoRenderingPath: 0
50 | m_ActiveColorSpace: 0
51 | m_MTRendering: 1
52 | m_StackTraceTypes: 010000000100000001000000010000000100000001000000
53 | iosShowActivityIndicatorOnLoading: -1
54 | androidShowActivityIndicatorOnLoading: -1
55 | iosAppInBackgroundBehavior: 0
56 | displayResolutionDialog: 1
57 | iosAllowHTTPDownload: 1
58 | allowedAutorotateToPortrait: 1
59 | allowedAutorotateToPortraitUpsideDown: 1
60 | allowedAutorotateToLandscapeRight: 1
61 | allowedAutorotateToLandscapeLeft: 1
62 | useOSAutorotation: 1
63 | use32BitDisplayBuffer: 1
64 | preserveFramebufferAlpha: 0
65 | disableDepthAndStencilBuffers: 0
66 | androidStartInFullscreen: 1
67 | androidRenderOutsideSafeArea: 0
68 | androidBlitType: 0
69 | defaultIsNativeResolution: 1
70 | macRetinaSupport: 1
71 | runInBackground: 1
72 | captureSingleScreen: 0
73 | muteOtherAudioSources: 0
74 | Prepare IOS For Recording: 0
75 | Force IOS Speakers When Recording: 0
76 | deferSystemGesturesMode: 0
77 | hideHomeButton: 0
78 | submitAnalytics: 1
79 | usePlayerLog: 1
80 | bakeCollisionMeshes: 0
81 | forceSingleInstance: 0
82 | resizableWindow: 0
83 | useMacAppStoreValidation: 0
84 | macAppStoreCategory: public.app-category.games
85 | gpuSkinning: 1
86 | graphicsJobs: 0
87 | xboxPIXTextureCapture: 0
88 | xboxEnableAvatar: 0
89 | xboxEnableKinect: 0
90 | xboxEnableKinectAutoTracking: 0
91 | xboxEnableFitness: 0
92 | visibleInBackground: 1
93 | allowFullscreenSwitch: 1
94 | graphicsJobMode: 0
95 | fullscreenMode: 1
96 | xboxSpeechDB: 0
97 | xboxEnableHeadOrientation: 0
98 | xboxEnableGuest: 0
99 | xboxEnablePIXSampling: 0
100 | metalFramebufferOnly: 0
101 | xboxOneResolution: 0
102 | xboxOneSResolution: 0
103 | xboxOneXResolution: 3
104 | xboxOneMonoLoggingLevel: 0
105 | xboxOneLoggingLevel: 1
106 | xboxOneDisableEsram: 0
107 | xboxOnePresentImmediateThreshold: 0
108 | switchQueueCommandMemory: 0
109 | vulkanEnableSetSRGBWrite: 0
110 | m_SupportedAspectRatios:
111 | 4:3: 1
112 | 5:4: 1
113 | 16:10: 1
114 | 16:9: 1
115 | Others: 1
116 | bundleVersion: 0.1
117 | preloadedAssets: []
118 | metroInputSource: 0
119 | wsaTransparentSwapchain: 0
120 | m_HolographicPauseOnTrackingLoss: 1
121 | xboxOneDisableKinectGpuReservation: 0
122 | xboxOneEnable7thCore: 0
123 | isWsaHolographicRemotingEnabled: 0
124 | vrSettings:
125 | cardboard:
126 | depthFormat: 0
127 | enableTransitionView: 0
128 | daydream:
129 | depthFormat: 0
130 | useSustainedPerformanceMode: 0
131 | enableVideoLayer: 0
132 | useProtectedVideoMemory: 0
133 | minimumSupportedHeadTracking: 0
134 | maximumSupportedHeadTracking: 1
135 | hololens:
136 | depthFormat: 1
137 | depthBufferSharingEnabled: 0
138 | oculus:
139 | sharedDepthBuffer: 1
140 | dashSupport: 1
141 | enable360StereoCapture: 0
142 | protectGraphicsMemory: 0
143 | enableFrameTimingStats: 0
144 | useHDRDisplay: 0
145 | m_ColorGamuts: 00000000
146 | targetPixelDensity: 30
147 | resolutionScalingMode: 0
148 | androidSupportedAspectRatio: 1
149 | androidMaxAspectRatio: 2.1
150 | applicationIdentifier: {}
151 | buildNumber: {}
152 | AndroidBundleVersionCode: 1
153 | AndroidMinSdkVersion: 16
154 | AndroidTargetSdkVersion: 0
155 | AndroidPreferredInstallLocation: 1
156 | aotOptions:
157 | stripEngineCode: 1
158 | iPhoneStrippingLevel: 0
159 | iPhoneScriptCallOptimization: 0
160 | ForceInternetPermission: 0
161 | ForceSDCardPermission: 0
162 | CreateWallpaper: 0
163 | APKExpansionFiles: 0
164 | keepLoadedShadersAlive: 0
165 | StripUnusedMeshComponents: 1
166 | VertexChannelCompressionMask: 4054
167 | iPhoneSdkVersion: 988
168 | iOSTargetOSVersionString: 9.0
169 | tvOSSdkVersion: 0
170 | tvOSRequireExtendedGameController: 0
171 | tvOSTargetOSVersionString: 9.0
172 | uIPrerenderedIcon: 0
173 | uIRequiresPersistentWiFi: 0
174 | uIRequiresFullScreen: 1
175 | uIStatusBarHidden: 1
176 | uIExitOnSuspend: 0
177 | uIStatusBarStyle: 0
178 | iPhoneSplashScreen: {fileID: 0}
179 | iPhoneHighResSplashScreen: {fileID: 0}
180 | iPhoneTallHighResSplashScreen: {fileID: 0}
181 | iPhone47inSplashScreen: {fileID: 0}
182 | iPhone55inPortraitSplashScreen: {fileID: 0}
183 | iPhone55inLandscapeSplashScreen: {fileID: 0}
184 | iPhone58inPortraitSplashScreen: {fileID: 0}
185 | iPhone58inLandscapeSplashScreen: {fileID: 0}
186 | iPadPortraitSplashScreen: {fileID: 0}
187 | iPadHighResPortraitSplashScreen: {fileID: 0}
188 | iPadLandscapeSplashScreen: {fileID: 0}
189 | iPadHighResLandscapeSplashScreen: {fileID: 0}
190 | appleTVSplashScreen: {fileID: 0}
191 | appleTVSplashScreen2x: {fileID: 0}
192 | tvOSSmallIconLayers: []
193 | tvOSSmallIconLayers2x: []
194 | tvOSLargeIconLayers: []
195 | tvOSLargeIconLayers2x: []
196 | tvOSTopShelfImageLayers: []
197 | tvOSTopShelfImageLayers2x: []
198 | tvOSTopShelfImageWideLayers: []
199 | tvOSTopShelfImageWideLayers2x: []
200 | iOSLaunchScreenType: 0
201 | iOSLaunchScreenPortrait: {fileID: 0}
202 | iOSLaunchScreenLandscape: {fileID: 0}
203 | iOSLaunchScreenBackgroundColor:
204 | serializedVersion: 2
205 | rgba: 0
206 | iOSLaunchScreenFillPct: 100
207 | iOSLaunchScreenSize: 100
208 | iOSLaunchScreenCustomXibPath:
209 | iOSLaunchScreeniPadType: 0
210 | iOSLaunchScreeniPadImage: {fileID: 0}
211 | iOSLaunchScreeniPadBackgroundColor:
212 | serializedVersion: 2
213 | rgba: 0
214 | iOSLaunchScreeniPadFillPct: 100
215 | iOSLaunchScreeniPadSize: 100
216 | iOSLaunchScreeniPadCustomXibPath:
217 | iOSUseLaunchScreenStoryboard: 0
218 | iOSLaunchScreenCustomStoryboardPath:
219 | iOSDeviceRequirements: []
220 | iOSURLSchemes: []
221 | iOSBackgroundModes: 0
222 | iOSMetalForceHardShadows: 0
223 | metalEditorSupport: 1
224 | metalAPIValidation: 1
225 | iOSRenderExtraFrameOnPause: 0
226 | appleDeveloperTeamID:
227 | iOSManualSigningProvisioningProfileID:
228 | tvOSManualSigningProvisioningProfileID:
229 | iOSManualSigningProvisioningProfileType: 0
230 | tvOSManualSigningProvisioningProfileType: 0
231 | appleEnableAutomaticSigning: 0
232 | iOSRequireARKit: 0
233 | appleEnableProMotion: 0
234 | clonedFromGUID: c0afd0d1d80e3634a9dac47e8a0426ea
235 | templatePackageId: com.unity.template.3d@1.0.4
236 | templateDefaultScene: Assets/Scenes/SampleScene.unity
237 | AndroidTargetArchitectures: 5
238 | AndroidSplashScreenScale: 0
239 | androidSplashScreen: {fileID: 0}
240 | AndroidKeystoreName:
241 | AndroidKeyaliasName:
242 | AndroidBuildApkPerCpuArchitecture: 0
243 | AndroidTVCompatibility: 1
244 | AndroidIsGame: 1
245 | AndroidEnableTango: 0
246 | androidEnableBanner: 1
247 | androidUseLowAccuracyLocation: 0
248 | m_AndroidBanners:
249 | - width: 320
250 | height: 180
251 | banner: {fileID: 0}
252 | androidGamepadSupportLevel: 0
253 | resolutionDialogBanner: {fileID: 0}
254 | m_BuildTargetIcons: []
255 | m_BuildTargetPlatformIcons: []
256 | m_BuildTargetBatching:
257 | - m_BuildTarget: Standalone
258 | m_StaticBatching: 1
259 | m_DynamicBatching: 0
260 | - m_BuildTarget: tvOS
261 | m_StaticBatching: 1
262 | m_DynamicBatching: 0
263 | - m_BuildTarget: Android
264 | m_StaticBatching: 1
265 | m_DynamicBatching: 0
266 | - m_BuildTarget: iPhone
267 | m_StaticBatching: 1
268 | m_DynamicBatching: 0
269 | - m_BuildTarget: WebGL
270 | m_StaticBatching: 0
271 | m_DynamicBatching: 0
272 | m_BuildTargetGraphicsAPIs:
273 | - m_BuildTarget: AndroidPlayer
274 | m_APIs: 0b00000008000000
275 | m_Automatic: 1
276 | - m_BuildTarget: iOSSupport
277 | m_APIs: 10000000
278 | m_Automatic: 1
279 | - m_BuildTarget: AppleTVSupport
280 | m_APIs: 10000000
281 | m_Automatic: 0
282 | - m_BuildTarget: WebGLSupport
283 | m_APIs: 0b000000
284 | m_Automatic: 1
285 | m_BuildTargetVRSettings:
286 | - m_BuildTarget: Standalone
287 | m_Enabled: 0
288 | m_Devices:
289 | - Oculus
290 | - OpenVR
291 | m_BuildTargetEnableVuforiaSettings: []
292 | openGLRequireES31: 0
293 | openGLRequireES31AEP: 0
294 | m_TemplateCustomTags: {}
295 | mobileMTRendering:
296 | Android: 1
297 | iPhone: 1
298 | tvOS: 1
299 | m_BuildTargetGroupLightmapEncodingQuality: []
300 | m_BuildTargetGroupLightmapSettings: []
301 | playModeTestRunnerEnabled: 0
302 | runPlayModeTestAsEditModeTest: 0
303 | actionOnDotNetUnhandledException: 1
304 | enableInternalProfiler: 0
305 | logObjCUncaughtExceptions: 1
306 | enableCrashReportAPI: 0
307 | cameraUsageDescription:
308 | locationUsageDescription:
309 | microphoneUsageDescription:
310 | switchNetLibKey:
311 | switchSocketMemoryPoolSize: 6144
312 | switchSocketAllocatorPoolSize: 128
313 | switchSocketConcurrencyLimit: 14
314 | switchScreenResolutionBehavior: 2
315 | switchUseCPUProfiler: 0
316 | switchApplicationID: 0x01004b9000490000
317 | switchNSODependencies:
318 | switchTitleNames_0:
319 | switchTitleNames_1:
320 | switchTitleNames_2:
321 | switchTitleNames_3:
322 | switchTitleNames_4:
323 | switchTitleNames_5:
324 | switchTitleNames_6:
325 | switchTitleNames_7:
326 | switchTitleNames_8:
327 | switchTitleNames_9:
328 | switchTitleNames_10:
329 | switchTitleNames_11:
330 | switchTitleNames_12:
331 | switchTitleNames_13:
332 | switchTitleNames_14:
333 | switchPublisherNames_0:
334 | switchPublisherNames_1:
335 | switchPublisherNames_2:
336 | switchPublisherNames_3:
337 | switchPublisherNames_4:
338 | switchPublisherNames_5:
339 | switchPublisherNames_6:
340 | switchPublisherNames_7:
341 | switchPublisherNames_8:
342 | switchPublisherNames_9:
343 | switchPublisherNames_10:
344 | switchPublisherNames_11:
345 | switchPublisherNames_12:
346 | switchPublisherNames_13:
347 | switchPublisherNames_14:
348 | switchIcons_0: {fileID: 0}
349 | switchIcons_1: {fileID: 0}
350 | switchIcons_2: {fileID: 0}
351 | switchIcons_3: {fileID: 0}
352 | switchIcons_4: {fileID: 0}
353 | switchIcons_5: {fileID: 0}
354 | switchIcons_6: {fileID: 0}
355 | switchIcons_7: {fileID: 0}
356 | switchIcons_8: {fileID: 0}
357 | switchIcons_9: {fileID: 0}
358 | switchIcons_10: {fileID: 0}
359 | switchIcons_11: {fileID: 0}
360 | switchIcons_12: {fileID: 0}
361 | switchIcons_13: {fileID: 0}
362 | switchIcons_14: {fileID: 0}
363 | switchSmallIcons_0: {fileID: 0}
364 | switchSmallIcons_1: {fileID: 0}
365 | switchSmallIcons_2: {fileID: 0}
366 | switchSmallIcons_3: {fileID: 0}
367 | switchSmallIcons_4: {fileID: 0}
368 | switchSmallIcons_5: {fileID: 0}
369 | switchSmallIcons_6: {fileID: 0}
370 | switchSmallIcons_7: {fileID: 0}
371 | switchSmallIcons_8: {fileID: 0}
372 | switchSmallIcons_9: {fileID: 0}
373 | switchSmallIcons_10: {fileID: 0}
374 | switchSmallIcons_11: {fileID: 0}
375 | switchSmallIcons_12: {fileID: 0}
376 | switchSmallIcons_13: {fileID: 0}
377 | switchSmallIcons_14: {fileID: 0}
378 | switchManualHTML:
379 | switchAccessibleURLs:
380 | switchLegalInformation:
381 | switchMainThreadStackSize: 1048576
382 | switchPresenceGroupId:
383 | switchLogoHandling: 0
384 | switchReleaseVersion: 0
385 | switchDisplayVersion: 1.0.0
386 | switchStartupUserAccount: 0
387 | switchTouchScreenUsage: 0
388 | switchSupportedLanguagesMask: 0
389 | switchLogoType: 0
390 | switchApplicationErrorCodeCategory:
391 | switchUserAccountSaveDataSize: 0
392 | switchUserAccountSaveDataJournalSize: 0
393 | switchApplicationAttribute: 0
394 | switchCardSpecSize: -1
395 | switchCardSpecClock: -1
396 | switchRatingsMask: 0
397 | switchRatingsInt_0: 0
398 | switchRatingsInt_1: 0
399 | switchRatingsInt_2: 0
400 | switchRatingsInt_3: 0
401 | switchRatingsInt_4: 0
402 | switchRatingsInt_5: 0
403 | switchRatingsInt_6: 0
404 | switchRatingsInt_7: 0
405 | switchRatingsInt_8: 0
406 | switchRatingsInt_9: 0
407 | switchRatingsInt_10: 0
408 | switchRatingsInt_11: 0
409 | switchLocalCommunicationIds_0:
410 | switchLocalCommunicationIds_1:
411 | switchLocalCommunicationIds_2:
412 | switchLocalCommunicationIds_3:
413 | switchLocalCommunicationIds_4:
414 | switchLocalCommunicationIds_5:
415 | switchLocalCommunicationIds_6:
416 | switchLocalCommunicationIds_7:
417 | switchParentalControl: 0
418 | switchAllowsScreenshot: 1
419 | switchAllowsVideoCapturing: 1
420 | switchAllowsRuntimeAddOnContentInstall: 0
421 | switchDataLossConfirmation: 0
422 | switchUserAccountLockEnabled: 0
423 | switchSupportedNpadStyles: 3
424 | switchNativeFsCacheSize: 32
425 | switchIsHoldTypeHorizontal: 0
426 | switchSupportedNpadCount: 8
427 | switchSocketConfigEnabled: 0
428 | switchTcpInitialSendBufferSize: 32
429 | switchTcpInitialReceiveBufferSize: 64
430 | switchTcpAutoSendBufferSizeMax: 256
431 | switchTcpAutoReceiveBufferSizeMax: 256
432 | switchUdpSendBufferSize: 9
433 | switchUdpReceiveBufferSize: 42
434 | switchSocketBufferEfficiency: 4
435 | switchSocketInitializeEnabled: 1
436 | switchNetworkInterfaceManagerInitializeEnabled: 1
437 | switchPlayerConnectionEnabled: 1
438 | ps4NPAgeRating: 12
439 | ps4NPTitleSecret:
440 | ps4NPTrophyPackPath:
441 | ps4ParentalLevel: 11
442 | ps4ContentID: ED1633-NPXX51362_00-0000000000000000
443 | ps4Category: 0
444 | ps4MasterVersion: 01.00
445 | ps4AppVersion: 01.00
446 | ps4AppType: 0
447 | ps4ParamSfxPath:
448 | ps4VideoOutPixelFormat: 0
449 | ps4VideoOutInitialWidth: 1920
450 | ps4VideoOutBaseModeInitialWidth: 1920
451 | ps4VideoOutReprojectionRate: 60
452 | ps4PronunciationXMLPath:
453 | ps4PronunciationSIGPath:
454 | ps4BackgroundImagePath:
455 | ps4StartupImagePath:
456 | ps4StartupImagesFolder:
457 | ps4IconImagesFolder:
458 | ps4SaveDataImagePath:
459 | ps4SdkOverride:
460 | ps4BGMPath:
461 | ps4ShareFilePath:
462 | ps4ShareOverlayImagePath:
463 | ps4PrivacyGuardImagePath:
464 | ps4NPtitleDatPath:
465 | ps4RemotePlayKeyAssignment: -1
466 | ps4RemotePlayKeyMappingDir:
467 | ps4PlayTogetherPlayerCount: 0
468 | ps4EnterButtonAssignment: 1
469 | ps4ApplicationParam1: 0
470 | ps4ApplicationParam2: 0
471 | ps4ApplicationParam3: 0
472 | ps4ApplicationParam4: 0
473 | ps4DownloadDataSize: 0
474 | ps4GarlicHeapSize: 2048
475 | ps4ProGarlicHeapSize: 2560
476 | ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ
477 | ps4pnSessions: 1
478 | ps4pnPresence: 1
479 | ps4pnFriends: 1
480 | ps4pnGameCustomData: 1
481 | playerPrefsSupport: 0
482 | enableApplicationExit: 0
483 | resetTempFolder: 1
484 | restrictedAudioUsageRights: 0
485 | ps4UseResolutionFallback: 0
486 | ps4ReprojectionSupport: 0
487 | ps4UseAudio3dBackend: 0
488 | ps4SocialScreenEnabled: 0
489 | ps4ScriptOptimizationLevel: 0
490 | ps4Audio3dVirtualSpeakerCount: 14
491 | ps4attribCpuUsage: 0
492 | ps4PatchPkgPath:
493 | ps4PatchLatestPkgPath:
494 | ps4PatchChangeinfoPath:
495 | ps4PatchDayOne: 0
496 | ps4attribUserManagement: 0
497 | ps4attribMoveSupport: 0
498 | ps4attrib3DSupport: 0
499 | ps4attribShareSupport: 0
500 | ps4attribExclusiveVR: 0
501 | ps4disableAutoHideSplash: 0
502 | ps4videoRecordingFeaturesUsed: 0
503 | ps4contentSearchFeaturesUsed: 0
504 | ps4attribEyeToEyeDistanceSettingVR: 0
505 | ps4IncludedModules: []
506 | monoEnv:
507 | splashScreenBackgroundSourceLandscape: {fileID: 0}
508 | splashScreenBackgroundSourcePortrait: {fileID: 0}
509 | spritePackerPolicy:
510 | webGLMemorySize: 256
511 | webGLExceptionSupport: 1
512 | webGLNameFilesAsHashes: 0
513 | webGLDataCaching: 1
514 | webGLDebugSymbols: 0
515 | webGLEmscriptenArgs:
516 | webGLModulesDirectory:
517 | webGLTemplate: APPLICATION:Default
518 | webGLAnalyzeBuildSize: 0
519 | webGLUseEmbeddedResources: 0
520 | webGLCompressionFormat: 1
521 | webGLLinkerTarget: 1
522 | webGLThreadsSupport: 0
523 | scriptingDefineSymbols:
524 | 1: RHSD
525 | platformArchitecture: {}
526 | scriptingBackend: {}
527 | il2cppCompilerConfiguration: {}
528 | managedStrippingLevel: {}
529 | incrementalIl2cppBuild: {}
530 | allowUnsafeCode: 0
531 | additionalIl2CppArgs:
532 | scriptingRuntimeVersion: 1
533 | apiCompatibilityLevelPerPlatform: {}
534 | m_RenderingPath: 1
535 | m_MobileRenderingPath: 1
536 | metroPackageName: Template_3D
537 | metroPackageVersion:
538 | metroCertificatePath:
539 | metroCertificatePassword:
540 | metroCertificateSubject:
541 | metroCertificateIssuer:
542 | metroCertificateNotAfter: 0000000000000000
543 | metroApplicationDescription: Template_3D
544 | wsaImages: {}
545 | metroTileShortName:
546 | metroTileShowName: 0
547 | metroMediumTileShowName: 0
548 | metroLargeTileShowName: 0
549 | metroWideTileShowName: 0
550 | metroSupportStreamingInstall: 0
551 | metroLastRequiredScene: 0
552 | metroDefaultTileSize: 1
553 | metroTileForegroundText: 2
554 | metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0}
555 | metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628,
556 | a: 1}
557 | metroSplashScreenUseBackgroundColor: 0
558 | platformCapabilities: {}
559 | metroTargetDeviceFamilies: {}
560 | metroFTAName:
561 | metroFTAFileTypes: []
562 | metroProtocolName:
563 | metroCompilationOverrides: 1
564 | XboxOneProductId:
565 | XboxOneUpdateKey:
566 | XboxOneSandboxId:
567 | XboxOneContentId:
568 | XboxOneTitleId:
569 | XboxOneSCId:
570 | XboxOneGameOsOverridePath:
571 | XboxOnePackagingOverridePath:
572 | XboxOneAppManifestOverridePath:
573 | XboxOneVersion: 1.0.0.0
574 | XboxOnePackageEncryption: 0
575 | XboxOnePackageUpdateGranularity: 2
576 | XboxOneDescription:
577 | XboxOneLanguage:
578 | - enus
579 | XboxOneCapability: []
580 | XboxOneGameRating: {}
581 | XboxOneIsContentPackage: 0
582 | XboxOneEnableGPUVariability: 0
583 | XboxOneSockets: {}
584 | XboxOneSplashScreen: {fileID: 0}
585 | XboxOneAllowedProductIds: []
586 | XboxOnePersistentLocalStorageSize: 0
587 | XboxOneXTitleMemory: 8
588 | xboxOneScriptCompiler: 0
589 | XboxOneOverrideIdentityName:
590 | vrEditorSettings:
591 | daydream:
592 | daydreamIconForeground: {fileID: 0}
593 | daydreamIconBackground: {fileID: 0}
594 | cloudServicesEnabled:
595 | UNet: 1
596 | luminIcon:
597 | m_Name:
598 | m_ModelFolderPath:
599 | m_PortalFolderPath:
600 | luminCert:
601 | m_CertPath:
602 | m_PrivateKeyPath:
603 | luminIsChannelApp: 0
604 | luminVersion:
605 | m_VersionCode: 1
606 | m_VersionName:
607 | facebookSdkVersion: 7.9.4
608 | facebookAppId:
609 | facebookCookies: 1
610 | facebookLogging: 1
611 | facebookStatus: 1
612 | facebookXfbml: 0
613 | facebookFrictionlessRequests: 1
614 | apiCompatibilityLevel: 6
615 | cloudProjectId:
616 | framebufferDepthMemorylessMode: 0
617 | projectName:
618 | organizationId:
619 | cloudEnabled: 0
620 | enableNativePlatformBackendsForNewInputSystem: 0
621 | disableOldInputManagerSupport: 0
622 | legacyClampBlendShapeWeights: 0
623 |
--------------------------------------------------------------------------------