Compare commits
9
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5b2340c088 | ||
|
|
14affc5c6e | ||
|
|
6937a2d6e8 | ||
|
|
0ad5e29917 | ||
|
|
99f4dd67c2 | ||
|
|
0859251eca | ||
|
|
8ad13c296e | ||
|
|
8dbb14ca07 | ||
|
|
1272dff2c3 |
@@ -97,5 +97,3 @@ fmod_editor.log
|
||||
# 排除Sim的自动保存
|
||||
.history/*
|
||||
**/.history/*
|
||||
|
||||
.fake
|
||||
Vendored
-1
@@ -1,7 +1,6 @@
|
||||
{
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
|
||||
{
|
||||
"name": "Attach to Unity",
|
||||
"type": "vstuc",
|
||||
|
||||
@@ -15,7 +15,7 @@ MonoBehaviour:
|
||||
m_DefaultGroup: 09546aca93a801441859af2a811fe53b
|
||||
m_currentHash:
|
||||
serializedVersion: 2
|
||||
Hash: b53f304e2338ce70db1045411843d66c
|
||||
Hash: 00000000000000000000000000000000
|
||||
m_OptimizeCatalogSize: 0
|
||||
m_BuildRemoteCatalog: 0
|
||||
m_BundleLocalCatalog: 0
|
||||
@@ -46,20 +46,17 @@ MonoBehaviour:
|
||||
m_GroupAssets:
|
||||
- {fileID: 11400000, guid: ac71ee7888fd1754bb3280725ad0076b, type: 2}
|
||||
- {fileID: 11400000, guid: b9026802c7966cf4799a8df997d603e3, type: 2}
|
||||
- {fileID: 11400000, guid: d582f9080605ab34cbcde3249c980030, type: 2}
|
||||
- {fileID: 0}
|
||||
- {fileID: 0}
|
||||
- {fileID: 0}
|
||||
- {fileID: 11400000, guid: 46e5fd2db66266e4698be9ad1b299913, type: 2}
|
||||
- {fileID: 11400000, guid: 6ea418572850f5a4496b8bf2ea95ea43, type: 2}
|
||||
- {fileID: 11400000, guid: 2bd43310d2c9f7147948458ae24b7969, type: 2}
|
||||
- {fileID: 11400000, guid: cda52eeaeb664b94996e70b2b0e9ef69, type: 2}
|
||||
- {fileID: 11400000, guid: 1e521cfc13b314642b1e682e3be7ea17, type: 2}
|
||||
- {fileID: 11400000, guid: 62a92c74b9bd5bd439690727c1831500, type: 2}
|
||||
- {fileID: 11400000, guid: b593dc98ea11a484995123de77d9bf1a, type: 2}
|
||||
- {fileID: 11400000, guid: 54799118a585dda439cab043d56ec68c, type: 2}
|
||||
- {fileID: 11400000, guid: d582f9080605ab34cbcde3249c980030, type: 2}
|
||||
- {fileID: 11400000, guid: 724eed66b2d8eef4faf77a4bee4d2845, type: 2}
|
||||
- {fileID: 11400000, guid: aafc8258a2111e94d8339a3152cf50e0, type: 2}
|
||||
- {fileID: 11400000, guid: 7e4ab0de168458b43a21dc2f9e811ff5, type: 2}
|
||||
- {fileID: 11400000, guid: 87e1e3fa2e9ad1d4188cc368fdef2059, type: 2}
|
||||
- {fileID: 11400000, guid: cf2940a91bcc1604b90ce7598e03ffbe, type: 2}
|
||||
- {fileID: 11400000, guid: b593dc98ea11a484995123de77d9bf1a, type: 2}
|
||||
- {fileID: 11400000, guid: 62a92c74b9bd5bd439690727c1831500, type: 2}
|
||||
m_BuildSettings:
|
||||
m_CompileScriptsInVirtualMode: 0
|
||||
m_CleanupStreamingAssetsAfterBuilds: 1
|
||||
|
||||
@@ -82,36 +82,6 @@ MonoBehaviour:
|
||||
m_ReadOnly: 0
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: dc2e1a393256c414d88652162e05b699
|
||||
m_Address: "Animation/\u9152\u5427\u533B\u751F"
|
||||
m_ReadOnly: 0
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: af92c8803a884704093ca4bd3cdb30b8
|
||||
m_Address: "Animation/\u9152\u5427\u706B\u5C71"
|
||||
m_ReadOnly: 0
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 6df720d15b0ce4247b4481c891d2054a
|
||||
m_Address: "Animation/\u9152\u5427\u8C03\u9152\u59B9"
|
||||
m_ReadOnly: 0
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 7ba8eca4e18291341a10ef7c8c858bd9
|
||||
m_Address: "Animation/\u9152\u5427\u533B\u751F"
|
||||
m_ReadOnly: 0
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 5f26e5dcbc809104f92f908082de97d5
|
||||
m_Address: "Animation/\u8C03\u9152\u59B9\u6D4B\u8BD5"
|
||||
m_ReadOnly: 0
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 7985fcc6bb83afa43b21d52f4c463f81
|
||||
m_Address: "AnimationConfig/\u8C03\u9152\u59B9\u6D4B\u8BD5"
|
||||
m_ReadOnly: 0
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
m_ReadOnly: 0
|
||||
m_Settings: {fileID: 11400000, guid: 77169ce22e430f64fb36c771815a4a7b, type: 2}
|
||||
m_SchemaSet:
|
||||
|
||||
@@ -77,36 +77,6 @@ MonoBehaviour:
|
||||
m_ReadOnly: 0
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 467ca6472bd01724c8546cec9cc079d7
|
||||
m_Address: "CG/\u5F00\u573A1"
|
||||
m_ReadOnly: 0
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 441bc569aab15334e92b2a3232d9093c
|
||||
m_Address: "CG/\u5F00\u573A2"
|
||||
m_ReadOnly: 0
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: c0724ae6698e0454da14fa5f9e87918a
|
||||
m_Address: "BlockShape/\u6761\u72B6"
|
||||
m_ReadOnly: 0
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: f55dac113f9a76c44b13c06b35a5f1e8
|
||||
m_Address: "BlockPuzzle/\u65B9\u5757\u4E34\u65F6"
|
||||
m_ReadOnly: 0
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: df312fbc70840a04e82c04ac39efb188
|
||||
m_Address: "BlockPuzzle/\u793A\u4F8B"
|
||||
m_ReadOnly: 0
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 149e01175167ecd4da5d9e258cd2d37a
|
||||
m_Address: BlockPuzzle/Close
|
||||
m_ReadOnly: 0
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
m_ReadOnly: 0
|
||||
m_Settings: {fileID: 11400000, guid: 77169ce22e430f64fb36c771815a4a7b, type: 2}
|
||||
m_SchemaSet:
|
||||
|
||||
@@ -62,13 +62,8 @@ MonoBehaviour:
|
||||
m_ReadOnly: 0
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: f30bd88801730144fb8628e970058d3e
|
||||
m_Address: "\u9152\u5427\u573A\u666F"
|
||||
m_ReadOnly: 0
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 30073b2193480e3469efae4338cb89b6
|
||||
m_Address: "\u68A6\u5883"
|
||||
- m_GUID: d6c3173f84145714f908d4f8c45ab92a
|
||||
m_Address: YingliFixScene
|
||||
m_ReadOnly: 0
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
|
||||
-31
@@ -1,31 +0,0 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: bbb281ee3bf0b054c82ac2347e9e782c, type: 3}
|
||||
m_Name: Localization-Asset-Tables-Chinese (Simplified) (zh-Hans)
|
||||
m_EditorClassIdentifier:
|
||||
m_GroupName: Localization-Asset-Tables-Chinese (Simplified) (zh-Hans)
|
||||
m_Data:
|
||||
m_SerializedData: []
|
||||
m_GUID: 400397bf1b085a145baa334bad44785d
|
||||
m_SerializeEntries:
|
||||
- m_GUID: de4c589f11ea4fe4788deae4fa812d42
|
||||
m_Address: sprite_zh-Hans
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels:
|
||||
- Locale-zh-Hans
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
m_ReadOnly: 1
|
||||
m_Settings: {fileID: 11400000, guid: 77169ce22e430f64fb36c771815a4a7b, type: 2}
|
||||
m_SchemaSet:
|
||||
m_Schemas:
|
||||
- {fileID: 11400000, guid: fffc86e2fbf4ade43921cf63a4c8ecb6, type: 2}
|
||||
- {fileID: 11400000, guid: 71dd08da4a466da4e852541657c20d3e, type: 2}
|
||||
-8
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 724eed66b2d8eef4faf77a4bee4d2845
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,31 +0,0 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: bbb281ee3bf0b054c82ac2347e9e782c, type: 3}
|
||||
m_Name: Localization-Asset-Tables-English (en)
|
||||
m_EditorClassIdentifier:
|
||||
m_GroupName: Localization-Asset-Tables-English (en)
|
||||
m_Data:
|
||||
m_SerializedData: []
|
||||
m_GUID: 5a8ad9197340ae74b9108d350233652b
|
||||
m_SerializeEntries:
|
||||
- m_GUID: 8ba648392211f5f4a9a9d7678ca0d597
|
||||
m_Address: sprite_en
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels:
|
||||
- Locale-en
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
m_ReadOnly: 1
|
||||
m_Settings: {fileID: 11400000, guid: 77169ce22e430f64fb36c771815a4a7b, type: 2}
|
||||
m_SchemaSet:
|
||||
m_Schemas:
|
||||
- {fileID: 11400000, guid: 975b430517deeb2488e8f04f352bed31, type: 2}
|
||||
- {fileID: 11400000, guid: dcebae3aaf84c4640b3f5fd438f9067c, type: 2}
|
||||
-8
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1e521cfc13b314642b1e682e3be7ea17
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
-31
@@ -1,31 +0,0 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: bbb281ee3bf0b054c82ac2347e9e782c, type: 3}
|
||||
m_Name: Localization-Assets-Chinese (Simplified) (zh-Hans)
|
||||
m_EditorClassIdentifier:
|
||||
m_GroupName: Localization-Assets-Chinese (Simplified) (zh-Hans)
|
||||
m_Data:
|
||||
m_SerializedData: []
|
||||
m_GUID: b848f030a719ba04c9f1e343f17ddc0c
|
||||
m_SerializeEntries:
|
||||
- m_GUID: 6d8ee72f781acf64abfe82ab659f5771
|
||||
m_Address: 03_qq_symbol
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels:
|
||||
- Locale-zh-Hans
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
m_ReadOnly: 1
|
||||
m_Settings: {fileID: 11400000, guid: 77169ce22e430f64fb36c771815a4a7b, type: 2}
|
||||
m_SchemaSet:
|
||||
m_Schemas:
|
||||
- {fileID: 11400000, guid: 055e1a14dd45b2949a688bc4ab6c151d, type: 2}
|
||||
- {fileID: 11400000, guid: 6f2e1a0a238afe444932be27faa4579e, type: 2}
|
||||
-8
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7e4ab0de168458b43a21dc2f9e811ff5
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,31 +0,0 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: bbb281ee3bf0b054c82ac2347e9e782c, type: 3}
|
||||
m_Name: Localization-Assets-English (en)
|
||||
m_EditorClassIdentifier:
|
||||
m_GroupName: Localization-Assets-English (en)
|
||||
m_Data:
|
||||
m_SerializedData: []
|
||||
m_GUID: 50aef5699023b21459e68677a9449d80
|
||||
m_SerializeEntries:
|
||||
- m_GUID: 032b1b5e09139ae45b6de51d35baae79
|
||||
m_Address: discord-square-color-icon
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels:
|
||||
- Locale-en
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
m_ReadOnly: 1
|
||||
m_Settings: {fileID: 11400000, guid: 77169ce22e430f64fb36c771815a4a7b, type: 2}
|
||||
m_SchemaSet:
|
||||
m_Schemas:
|
||||
- {fileID: 11400000, guid: 895c7c97ef5802446a395377ef704940, type: 2}
|
||||
- {fileID: 11400000, guid: 8004f70cd10ce4a439cb9e822bb078c2, type: 2}
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: aafc8258a2111e94d8339a3152cf50e0
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -37,9 +37,8 @@ MonoBehaviour:
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 0cb567219be64c04b9552ecc61f8396a
|
||||
m_Address: Assets/Language/Dialog/Fiction_Day1_night/Fiction_Day1_night Shared
|
||||
Data.asset
|
||||
- m_GUID: c3bb987a03bd4284687e2e4bd17ef561
|
||||
m_Address: Assets/Language/Config/Config Shared Data.asset
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
@@ -84,7 +83,7 @@ MonoBehaviour:
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: da47117d0e2720c4a8dc0bac3acb3cac
|
||||
m_Address: Assets/Language/Dialog/Test/Test Shared Data.asset
|
||||
m_Address: Assets/Language/Dialog/Test_OP/Test_OP Shared Data.asset
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
@@ -98,6 +97,12 @@ MonoBehaviour:
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 29f3df93ff78c16479dd8db51e939090
|
||||
m_Address: Assets/Language/Dialog/Fiction_Day1_night/Fiction_Day1_night Shared
|
||||
Data.asset
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: f6d220fec7b888b4f89463b5da038e62
|
||||
m_Address: Assets/Language/Dialog/Fiction_Day1_mid/Fiction_Day1_mid Shared Data.asset
|
||||
m_ReadOnly: 1
|
||||
@@ -119,88 +124,6 @@ MonoBehaviour:
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 0ee8d3542a2395745b4ad6bf55e3b097
|
||||
m_Address: Assets/Language/Dialog/Fiction_Day2_mid/Fiction_Day2_mid Shared Data.asset
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 771ed3ef48efbb645827ce5c29d63754
|
||||
m_Address: Assets/Language/Dialog/Fiction_Day2_night/Fiction_Day2_night Shared
|
||||
Data.asset
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: aaa27d8b7dfc3fc4294bda026ae135f2
|
||||
m_Address: Assets/Language/Dialog/Fiction_Day3_mid/Fiction_Day3_mid Shared Data.asset
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 3c243fd229013b84e9c88091eaa74103
|
||||
m_Address: Assets/Language/Dialog/Fiction_Day3_night/Fiction_Day3_night Shared
|
||||
Data.asset
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: bb8e2763fb266ff4d8b9c0b0f37882e2
|
||||
m_Address: Assets/Language/Dialog/Fiction_Day4_mid/Fiction_Day4_mid Shared Data.asset
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: bb6fa95706f665c469e270567be5cfe9
|
||||
m_Address: Assets/Language/Dialog/Fiction_Huoshan1/New Table Shared Data.asset
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 042ab1d25056cbd4984621037ac848f0
|
||||
m_Address: Assets/Language/Dialog/Fiction_Yingli1/Fiction_Yingli1 Shared Data.asset
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 70f8ff033cddcd543a618974781d0bb0
|
||||
m_Address: Assets/Language/Dialog/FP_Day3_night/FP_Day3_night Shared Data.asset
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 08cb937dd06038b4486d6a3662539542
|
||||
m_Address: Assets/Language/Dialog/Test_GeneralEnd/New Table Shared Data.asset
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 9abdd56d318b1ec459c7e866748d6878
|
||||
m_Address: Assets/Language/Sprite/sprite Shared Data.asset
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 4b7004709baa3f942998e7994b48bd38
|
||||
m_Address: "\u7B7E\u540D\u5B57\u8FF9"
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels:
|
||||
- Locale-en
|
||||
- Locale-zh-Hans
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: dd4a0fe1d258fbc4384ab1db825d5ae3
|
||||
m_Address: Gts1/Fiction_Gts1 Shared Data.asset/Fiction_Gts1 Shared Data.asset
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 57cfa4d941133b840b4345cf815dda66
|
||||
m_Address: Assets/Language/Dialog/Fiction_Day2_begin/Fiction_Day2_begin Shared
|
||||
Data.asset
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: c3d23bd971e02d34cb356b2029523427
|
||||
m_Address: Assets/Language/Dialog/Fiction_Day1_sleep/Fiction_Day1_sleep Shared
|
||||
Data.asset
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: e3c75f951d9792449906a3a8010d2e74
|
||||
m_Address: Assets/Language/Dialog/Fiction_Day2_sleep/Fiction_Day2_sleep Shared
|
||||
Data.asset
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
m_ReadOnly: 1
|
||||
m_Settings: {fileID: 11400000, guid: 77169ce22e430f64fb36c771815a4a7b, type: 2}
|
||||
m_SchemaSet:
|
||||
|
||||
+15
-81
@@ -41,6 +41,12 @@ MonoBehaviour:
|
||||
m_SerializedLabels:
|
||||
- Locale-zh-Hans
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 780b504d9b462a746b7d00d64022773a
|
||||
m_Address: Config_zh-Hans
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels:
|
||||
- Locale-zh-Hans
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: d6149a0fedb6cc24ba2a318aedab1de0
|
||||
m_Address: FP_Day1_mid_zh-Hans
|
||||
m_ReadOnly: 1
|
||||
@@ -90,7 +96,7 @@ MonoBehaviour:
|
||||
- Locale-zh-Hans
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 533b33b4a1f64604c99fc25138b1a50a
|
||||
m_Address: Test_zh-Hans
|
||||
m_Address: Test_OP_zh-Hans
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels:
|
||||
- Locale-zh-Hans
|
||||
@@ -107,8 +113,8 @@ MonoBehaviour:
|
||||
m_SerializedLabels:
|
||||
- Locale-zh-Hans
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: fb51befc2226dfa44bbde7203364c019
|
||||
m_Address: Fiction_Day2_mid_zh-Hans
|
||||
- m_GUID: 72f4481345eb6c24594911deb872e0be
|
||||
m_Address: Fiction_Day1_night_zh-Hans
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels:
|
||||
- Locale-zh-Hans
|
||||
@@ -119,6 +125,12 @@ MonoBehaviour:
|
||||
m_SerializedLabels:
|
||||
- Locale-zh-Hans
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 999ab1a8772cb1a4cba0325144ff5488
|
||||
m_Address: Fiction_Day1_begin_zh-Hans
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels:
|
||||
- Locale-zh-Hans
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 72755a9b5a5ca5c4e92028ca44c66a6d
|
||||
m_Address: FP_Peipei3_zh-Hans
|
||||
m_ReadOnly: 1
|
||||
@@ -131,84 +143,6 @@ MonoBehaviour:
|
||||
m_SerializedLabels:
|
||||
- Locale-zh-Hans
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: a75bb4d4a30c22f40ad5c7d70c8276d4
|
||||
m_Address: Fiction_Day1_night_zh-Hans
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels:
|
||||
- Locale-zh-Hans
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: b2f0a2aa5e0b95346bf499980c2994d4
|
||||
m_Address: Fiction_Day2_night_zh-Hans
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels:
|
||||
- Locale-zh-Hans
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 6c498406bf979ca45b345e5bdbd3cc4b
|
||||
m_Address: Fiction_Day3_mid_zh-Hans
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels:
|
||||
- Locale-zh-Hans
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 8e5812f1d9f10a4488702f35405d197d
|
||||
m_Address: Fiction_Day3_night_zh-Hans
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels:
|
||||
- Locale-zh-Hans
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 35f017da97194574da316391464204b2
|
||||
m_Address: Fiction_Day4_mid_zh-Hans
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels:
|
||||
- Locale-zh-Hans
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 75ed4030af85d794f832919dbe427f51
|
||||
m_Address: Fiction_Huoshan1_zh-Hans
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels:
|
||||
- Locale-zh-Hans
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 4b181f70ec2e65f4cab1545662415306
|
||||
m_Address: Fiction_Yingli1_zh-Hans
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels:
|
||||
- Locale-zh-Hans
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: a525b6d2bcfeb2446b2f4d2b36b043c7
|
||||
m_Address: FP_Day3_night_zh-Hans
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels:
|
||||
- Locale-zh-Hans
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 1f031d78df49e5645a4ceaafa7283f91
|
||||
m_Address: Test_GeneralEnd_zh-Hans
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels:
|
||||
- Locale-zh-Hans
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 9cecc6d4b999d5c489b69406176bab99
|
||||
m_Address: Fiction_Gts1_zh-Hans
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels:
|
||||
- Locale-zh-Hans
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: fbfb0ced2ba1bf44e86964158ae53d72
|
||||
m_Address: Fiction_Day1_sleep_zh-Hans
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels:
|
||||
- Locale-zh-Hans
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 999ab1a8772cb1a4cba0325144ff5488
|
||||
m_Address: Fiction_Day1_begin_zh-Hans
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels:
|
||||
- Locale-zh-Hans
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 4d88b47f4a7e3f249b44203f411e4adf
|
||||
m_Address: Fiction_Day2_sleep_zh-Hans
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels:
|
||||
- Locale-zh-Hans
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
m_ReadOnly: 1
|
||||
m_Settings: {fileID: 11400000, guid: 77169ce22e430f64fb36c771815a4a7b, type: 2}
|
||||
m_SchemaSet:
|
||||
|
||||
-31
@@ -1,31 +0,0 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: bbb281ee3bf0b054c82ac2347e9e782c, type: 3}
|
||||
m_Name: Localization-String-Tables-Chinese (Simplified)
|
||||
m_EditorClassIdentifier:
|
||||
m_GroupName: Localization-String-Tables-Chinese (Simplified)
|
||||
m_Data:
|
||||
m_SerializedData: []
|
||||
m_GUID: 9348dd0a8788924488a90c1620b5c896
|
||||
m_SerializeEntries:
|
||||
- m_GUID: fb7e715498f89454486d42d98aebfec5
|
||||
m_Address: Fiction_Day2_begin_zh-Hans
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels:
|
||||
- Locale-zh-Hans
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
m_ReadOnly: 1
|
||||
m_Settings: {fileID: 11400000, guid: 77169ce22e430f64fb36c771815a4a7b, type: 2}
|
||||
m_SchemaSet:
|
||||
m_Schemas:
|
||||
- {fileID: 11400000, guid: 443ec58daf8fe0d4b8cfdb39efd4f3e5, type: 2}
|
||||
- {fileID: 11400000, guid: c0d471a5cc8ca8a4e85145f6af285176, type: 2}
|
||||
-8
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: cf2940a91bcc1604b90ce7598e03ffbe
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
+15
-81
@@ -41,6 +41,12 @@ MonoBehaviour:
|
||||
m_SerializedLabels:
|
||||
- Locale-en
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 02d98e7d7f864944d96d3b345224d9fa
|
||||
m_Address: Config_en
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels:
|
||||
- Locale-en
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 30ab319b5e0bafe46aa622bb93381c7e
|
||||
m_Address: FP_Day1_mid_en
|
||||
m_ReadOnly: 1
|
||||
@@ -90,7 +96,7 @@ MonoBehaviour:
|
||||
- Locale-en
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 58ce8964b8b71fd43989e4688bb56792
|
||||
m_Address: Test_en
|
||||
m_Address: Test_OP_en
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels:
|
||||
- Locale-en
|
||||
@@ -107,8 +113,8 @@ MonoBehaviour:
|
||||
m_SerializedLabels:
|
||||
- Locale-en
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: eb9ebf027dd4b564cb035d7167ff8099
|
||||
m_Address: Fiction_Day2_mid_en
|
||||
- m_GUID: d9da3ee8cbe1f3f40a93ee2c3042330d
|
||||
m_Address: Fiction_Day1_night_en
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels:
|
||||
- Locale-en
|
||||
@@ -119,6 +125,12 @@ MonoBehaviour:
|
||||
m_SerializedLabels:
|
||||
- Locale-en
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 30a0c1ae8c45da34f8e3f90692e96e11
|
||||
m_Address: Fiction_Day1_begin_en
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels:
|
||||
- Locale-en
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: fde90ade684482142af49533e4f4ed62
|
||||
m_Address: FP_Peipei3_en
|
||||
m_ReadOnly: 1
|
||||
@@ -131,84 +143,6 @@ MonoBehaviour:
|
||||
m_SerializedLabels:
|
||||
- Locale-en
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 0d2928a7d58c26a4ca78abf2f5da1373
|
||||
m_Address: Fiction_Day1_night_en
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels:
|
||||
- Locale-en
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 59fc388134f5d884c8d7ca28f2d7017e
|
||||
m_Address: Fiction_Day2_night_en
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels:
|
||||
- Locale-en
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 379ead226bea4f844b1c136c4f748633
|
||||
m_Address: Fiction_Day3_mid_en
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels:
|
||||
- Locale-en
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: aaf54fb66c2fa9d4ab68626ced632a7a
|
||||
m_Address: Fiction_Day3_night_en
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels:
|
||||
- Locale-en
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: c0c8b8aea11da444ea41eece5a698e5f
|
||||
m_Address: Fiction_Day4_mid_en
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels:
|
||||
- Locale-en
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 2a14b1d82f4aef94aac2b230392605fc
|
||||
m_Address: Fiction_Huoshan1_en
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels:
|
||||
- Locale-en
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 79ccbc35144b91a45bb9fdf9732d238a
|
||||
m_Address: Fiction_Yingli1_en
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels:
|
||||
- Locale-en
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 0e9bb0974017aa346a379b78126f6f7b
|
||||
m_Address: FP_Day3_night_en
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels:
|
||||
- Locale-en
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 27ad0341432ae0b46a8fe117eb5c73e2
|
||||
m_Address: Test_GeneralEnd_en
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels:
|
||||
- Locale-en
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 1adbe96b15171134584c9a2d7d69c045
|
||||
m_Address: Fiction_Gts1_en
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels:
|
||||
- Locale-en
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 9d72f86c018628e418747a7d0a66cb21
|
||||
m_Address: Fiction_Day1_sleep_en
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels:
|
||||
- Locale-en
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 30a0c1ae8c45da34f8e3f90692e96e11
|
||||
m_Address: Fiction_Day1_begin_en
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels:
|
||||
- Locale-en
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 36d94b46b4a12b54b8e084d8d275e675
|
||||
m_Address: Fiction_Day2_sleep_en
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels:
|
||||
- Locale-en
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
m_ReadOnly: 1
|
||||
m_Settings: {fileID: 11400000, guid: 77169ce22e430f64fb36c771815a4a7b, type: 2}
|
||||
m_SchemaSet:
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: bbb281ee3bf0b054c82ac2347e9e782c, type: 3}
|
||||
m_Name: Localization-String-Tables-English
|
||||
m_EditorClassIdentifier:
|
||||
m_GroupName: Localization-String-Tables-English
|
||||
m_Data:
|
||||
m_SerializedData: []
|
||||
m_GUID: 63ce97e1ddac4bc43807a808493c0a93
|
||||
m_SerializeEntries:
|
||||
- m_GUID: 3c43e9ea4ead9374490aa31c3778b299
|
||||
m_Address: Fiction_Day2_begin_en
|
||||
m_ReadOnly: 1
|
||||
m_SerializedLabels:
|
||||
- Locale-en
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
m_ReadOnly: 1
|
||||
m_Settings: {fileID: 11400000, guid: 77169ce22e430f64fb36c771815a4a7b, type: 2}
|
||||
m_SchemaSet:
|
||||
m_Schemas:
|
||||
- {fileID: 11400000, guid: e47bd2f8e7497a945bb6b80906bf1484, type: 2}
|
||||
- {fileID: 11400000, guid: 3b18c16658755cc4fb71ea6ad7abc855, type: 2}
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 87e1e3fa2e9ad1d4188cc368fdef2059
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -67,36 +67,6 @@ MonoBehaviour:
|
||||
m_ReadOnly: 0
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 89145aa76e4c0d340b560adaea8492ca
|
||||
m_Address: PipelinePrefab
|
||||
m_ReadOnly: 0
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 396b6acd14ffd2d46abab1fdb04af60c
|
||||
m_Address: Chapter Item
|
||||
m_ReadOnly: 0
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 003f8d83e417e6a44a58ed1929b4eafd
|
||||
m_Address: RecordItem
|
||||
m_ReadOnly: 0
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 03e5e9a1437535042ae48b2ba034dd93
|
||||
m_Address: BlockShape
|
||||
m_ReadOnly: 0
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: f0804046fd11f7a4a8f27886f2bd3cb0
|
||||
m_Address: ShapeCreateButton
|
||||
m_ReadOnly: 0
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 89fde357592cf2e44a0b73131b150869
|
||||
m_Address: ActorAnimaEx
|
||||
m_ReadOnly: 0
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
m_ReadOnly: 0
|
||||
m_Settings: {fileID: 11400000, guid: 77169ce22e430f64fb36c771815a4a7b, type: 2}
|
||||
m_SchemaSet:
|
||||
|
||||
-45
@@ -1,45 +0,0 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: e5d17a21594effb4e9591490b009e7aa, type: 3}
|
||||
m_Name: Localization-Asset-Tables-Chinese (Simplified) (zh-Hans)_BundledAssetGroupSchema
|
||||
m_EditorClassIdentifier:
|
||||
m_Group: {fileID: 11400000, guid: 724eed66b2d8eef4faf77a4bee4d2845, type: 2}
|
||||
m_InternalBundleIdMode: 1
|
||||
m_Compression: 1
|
||||
m_IncludeAddressInCatalog: 1
|
||||
m_IncludeGUIDInCatalog: 1
|
||||
m_IncludeLabelsInCatalog: 1
|
||||
m_InternalIdNamingMode: 0
|
||||
m_CacheClearBehavior: 0
|
||||
m_IncludeInBuild: 1
|
||||
m_BundledAssetProviderType:
|
||||
m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||
m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.BundledAssetProvider
|
||||
m_ForceUniqueProvider: 0
|
||||
m_UseAssetBundleCache: 1
|
||||
m_UseAssetBundleCrc: 1
|
||||
m_UseAssetBundleCrcForCachedBundles: 1
|
||||
m_UseUWRForLocalBundles: 0
|
||||
m_Timeout: 0
|
||||
m_ChunkedTransfer: 0
|
||||
m_RedirectLimit: -1
|
||||
m_RetryCount: 0
|
||||
m_BuildPath:
|
||||
m_Id: 2ae6a7549097a9b4caefe44b61b1fcc5
|
||||
m_LoadPath:
|
||||
m_Id: 631ec5c677ab8084fb9be9b9ee39c6ef
|
||||
m_BundleMode: 0
|
||||
m_AssetBundleProviderType:
|
||||
m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||
m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider
|
||||
m_BundleNaming: 1
|
||||
m_AssetLoadMode: 0
|
||||
-8
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: fffc86e2fbf4ade43921cf63a4c8ecb6
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
-16
@@ -1,16 +0,0 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 5834b5087d578d24c926ce20cd31e6d6, type: 3}
|
||||
m_Name: Localization-Asset-Tables-Chinese (Simplified) (zh-Hans)_ContentUpdateGroupSchema
|
||||
m_EditorClassIdentifier:
|
||||
m_Group: {fileID: 11400000, guid: 724eed66b2d8eef4faf77a4bee4d2845, type: 2}
|
||||
m_StaticContent: 0
|
||||
-8
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 71dd08da4a466da4e852541657c20d3e
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
-45
@@ -1,45 +0,0 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: e5d17a21594effb4e9591490b009e7aa, type: 3}
|
||||
m_Name: Localization-Asset-Tables-English (en)_BundledAssetGroupSchema
|
||||
m_EditorClassIdentifier:
|
||||
m_Group: {fileID: 11400000, guid: 1e521cfc13b314642b1e682e3be7ea17, type: 2}
|
||||
m_InternalBundleIdMode: 1
|
||||
m_Compression: 1
|
||||
m_IncludeAddressInCatalog: 1
|
||||
m_IncludeGUIDInCatalog: 1
|
||||
m_IncludeLabelsInCatalog: 1
|
||||
m_InternalIdNamingMode: 0
|
||||
m_CacheClearBehavior: 0
|
||||
m_IncludeInBuild: 1
|
||||
m_BundledAssetProviderType:
|
||||
m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||
m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.BundledAssetProvider
|
||||
m_ForceUniqueProvider: 0
|
||||
m_UseAssetBundleCache: 1
|
||||
m_UseAssetBundleCrc: 1
|
||||
m_UseAssetBundleCrcForCachedBundles: 1
|
||||
m_UseUWRForLocalBundles: 0
|
||||
m_Timeout: 0
|
||||
m_ChunkedTransfer: 0
|
||||
m_RedirectLimit: -1
|
||||
m_RetryCount: 0
|
||||
m_BuildPath:
|
||||
m_Id: 2ae6a7549097a9b4caefe44b61b1fcc5
|
||||
m_LoadPath:
|
||||
m_Id: 631ec5c677ab8084fb9be9b9ee39c6ef
|
||||
m_BundleMode: 0
|
||||
m_AssetBundleProviderType:
|
||||
m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||
m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider
|
||||
m_BundleNaming: 1
|
||||
m_AssetLoadMode: 0
|
||||
-8
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 975b430517deeb2488e8f04f352bed31
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
-16
@@ -1,16 +0,0 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 5834b5087d578d24c926ce20cd31e6d6, type: 3}
|
||||
m_Name: Localization-Asset-Tables-English (en)_ContentUpdateGroupSchema
|
||||
m_EditorClassIdentifier:
|
||||
m_Group: {fileID: 11400000, guid: 1e521cfc13b314642b1e682e3be7ea17, type: 2}
|
||||
m_StaticContent: 0
|
||||
-8
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: dcebae3aaf84c4640b3f5fd438f9067c
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
-45
@@ -1,45 +0,0 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: e5d17a21594effb4e9591490b009e7aa, type: 3}
|
||||
m_Name: Localization-Assets-Chinese (Simplified) (zh-Hans)_BundledAssetGroupSchema
|
||||
m_EditorClassIdentifier:
|
||||
m_Group: {fileID: 11400000, guid: 7e4ab0de168458b43a21dc2f9e811ff5, type: 2}
|
||||
m_InternalBundleIdMode: 1
|
||||
m_Compression: 1
|
||||
m_IncludeAddressInCatalog: 1
|
||||
m_IncludeGUIDInCatalog: 1
|
||||
m_IncludeLabelsInCatalog: 1
|
||||
m_InternalIdNamingMode: 0
|
||||
m_CacheClearBehavior: 0
|
||||
m_IncludeInBuild: 1
|
||||
m_BundledAssetProviderType:
|
||||
m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||
m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.BundledAssetProvider
|
||||
m_ForceUniqueProvider: 0
|
||||
m_UseAssetBundleCache: 1
|
||||
m_UseAssetBundleCrc: 1
|
||||
m_UseAssetBundleCrcForCachedBundles: 1
|
||||
m_UseUWRForLocalBundles: 0
|
||||
m_Timeout: 0
|
||||
m_ChunkedTransfer: 0
|
||||
m_RedirectLimit: -1
|
||||
m_RetryCount: 0
|
||||
m_BuildPath:
|
||||
m_Id: 2ae6a7549097a9b4caefe44b61b1fcc5
|
||||
m_LoadPath:
|
||||
m_Id: 631ec5c677ab8084fb9be9b9ee39c6ef
|
||||
m_BundleMode: 0
|
||||
m_AssetBundleProviderType:
|
||||
m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||
m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider
|
||||
m_BundleNaming: 1
|
||||
m_AssetLoadMode: 0
|
||||
-8
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 055e1a14dd45b2949a688bc4ab6c151d
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
-16
@@ -1,16 +0,0 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 5834b5087d578d24c926ce20cd31e6d6, type: 3}
|
||||
m_Name: Localization-Assets-Chinese (Simplified) (zh-Hans)_ContentUpdateGroupSchema
|
||||
m_EditorClassIdentifier:
|
||||
m_Group: {fileID: 11400000, guid: 7e4ab0de168458b43a21dc2f9e811ff5, type: 2}
|
||||
m_StaticContent: 0
|
||||
-8
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6f2e1a0a238afe444932be27faa4579e
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
-45
@@ -1,45 +0,0 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: e5d17a21594effb4e9591490b009e7aa, type: 3}
|
||||
m_Name: Localization-Assets-English (en)_BundledAssetGroupSchema
|
||||
m_EditorClassIdentifier:
|
||||
m_Group: {fileID: 11400000, guid: aafc8258a2111e94d8339a3152cf50e0, type: 2}
|
||||
m_InternalBundleIdMode: 1
|
||||
m_Compression: 1
|
||||
m_IncludeAddressInCatalog: 1
|
||||
m_IncludeGUIDInCatalog: 1
|
||||
m_IncludeLabelsInCatalog: 1
|
||||
m_InternalIdNamingMode: 0
|
||||
m_CacheClearBehavior: 0
|
||||
m_IncludeInBuild: 1
|
||||
m_BundledAssetProviderType:
|
||||
m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||
m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.BundledAssetProvider
|
||||
m_ForceUniqueProvider: 0
|
||||
m_UseAssetBundleCache: 1
|
||||
m_UseAssetBundleCrc: 1
|
||||
m_UseAssetBundleCrcForCachedBundles: 1
|
||||
m_UseUWRForLocalBundles: 0
|
||||
m_Timeout: 0
|
||||
m_ChunkedTransfer: 0
|
||||
m_RedirectLimit: -1
|
||||
m_RetryCount: 0
|
||||
m_BuildPath:
|
||||
m_Id: 2ae6a7549097a9b4caefe44b61b1fcc5
|
||||
m_LoadPath:
|
||||
m_Id: 631ec5c677ab8084fb9be9b9ee39c6ef
|
||||
m_BundleMode: 0
|
||||
m_AssetBundleProviderType:
|
||||
m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||
m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider
|
||||
m_BundleNaming: 1
|
||||
m_AssetLoadMode: 0
|
||||
-8
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 895c7c97ef5802446a395377ef704940
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
-16
@@ -1,16 +0,0 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 5834b5087d578d24c926ce20cd31e6d6, type: 3}
|
||||
m_Name: Localization-Assets-English (en)_ContentUpdateGroupSchema
|
||||
m_EditorClassIdentifier:
|
||||
m_Group: {fileID: 11400000, guid: aafc8258a2111e94d8339a3152cf50e0, type: 2}
|
||||
m_StaticContent: 0
|
||||
-8
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8004f70cd10ce4a439cb9e822bb078c2
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
-45
@@ -1,45 +0,0 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: e5d17a21594effb4e9591490b009e7aa, type: 3}
|
||||
m_Name: Localization-String-Tables-Chinese (Simplified)_BundledAssetGroupSchema
|
||||
m_EditorClassIdentifier:
|
||||
m_Group: {fileID: 11400000, guid: cf2940a91bcc1604b90ce7598e03ffbe, type: 2}
|
||||
m_InternalBundleIdMode: 1
|
||||
m_Compression: 1
|
||||
m_IncludeAddressInCatalog: 1
|
||||
m_IncludeGUIDInCatalog: 1
|
||||
m_IncludeLabelsInCatalog: 1
|
||||
m_InternalIdNamingMode: 0
|
||||
m_CacheClearBehavior: 0
|
||||
m_IncludeInBuild: 1
|
||||
m_BundledAssetProviderType:
|
||||
m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||
m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.BundledAssetProvider
|
||||
m_ForceUniqueProvider: 0
|
||||
m_UseAssetBundleCache: 1
|
||||
m_UseAssetBundleCrc: 1
|
||||
m_UseAssetBundleCrcForCachedBundles: 1
|
||||
m_UseUWRForLocalBundles: 0
|
||||
m_Timeout: 0
|
||||
m_ChunkedTransfer: 0
|
||||
m_RedirectLimit: -1
|
||||
m_RetryCount: 0
|
||||
m_BuildPath:
|
||||
m_Id: 2ae6a7549097a9b4caefe44b61b1fcc5
|
||||
m_LoadPath:
|
||||
m_Id: 631ec5c677ab8084fb9be9b9ee39c6ef
|
||||
m_BundleMode: 0
|
||||
m_AssetBundleProviderType:
|
||||
m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||
m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider
|
||||
m_BundleNaming: 1
|
||||
m_AssetLoadMode: 0
|
||||
-8
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 443ec58daf8fe0d4b8cfdb39efd4f3e5
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
-16
@@ -1,16 +0,0 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 5834b5087d578d24c926ce20cd31e6d6, type: 3}
|
||||
m_Name: Localization-String-Tables-Chinese (Simplified)_ContentUpdateGroupSchema
|
||||
m_EditorClassIdentifier:
|
||||
m_Group: {fileID: 11400000, guid: cf2940a91bcc1604b90ce7598e03ffbe, type: 2}
|
||||
m_StaticContent: 0
|
||||
-8
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c0d471a5cc8ca8a4e85145f6af285176
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
-45
@@ -1,45 +0,0 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: e5d17a21594effb4e9591490b009e7aa, type: 3}
|
||||
m_Name: Localization-String-Tables-English_BundledAssetGroupSchema
|
||||
m_EditorClassIdentifier:
|
||||
m_Group: {fileID: 11400000, guid: 87e1e3fa2e9ad1d4188cc368fdef2059, type: 2}
|
||||
m_InternalBundleIdMode: 1
|
||||
m_Compression: 1
|
||||
m_IncludeAddressInCatalog: 1
|
||||
m_IncludeGUIDInCatalog: 1
|
||||
m_IncludeLabelsInCatalog: 1
|
||||
m_InternalIdNamingMode: 0
|
||||
m_CacheClearBehavior: 0
|
||||
m_IncludeInBuild: 1
|
||||
m_BundledAssetProviderType:
|
||||
m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||
m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.BundledAssetProvider
|
||||
m_ForceUniqueProvider: 0
|
||||
m_UseAssetBundleCache: 1
|
||||
m_UseAssetBundleCrc: 1
|
||||
m_UseAssetBundleCrcForCachedBundles: 1
|
||||
m_UseUWRForLocalBundles: 0
|
||||
m_Timeout: 0
|
||||
m_ChunkedTransfer: 0
|
||||
m_RedirectLimit: -1
|
||||
m_RetryCount: 0
|
||||
m_BuildPath:
|
||||
m_Id: 2ae6a7549097a9b4caefe44b61b1fcc5
|
||||
m_LoadPath:
|
||||
m_Id: 631ec5c677ab8084fb9be9b9ee39c6ef
|
||||
m_BundleMode: 0
|
||||
m_AssetBundleProviderType:
|
||||
m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||
m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider
|
||||
m_BundleNaming: 1
|
||||
m_AssetLoadMode: 0
|
||||
-8
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e47bd2f8e7497a945bb6b80906bf1484
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
-16
@@ -1,16 +0,0 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 5834b5087d578d24c926ce20cd31e6d6, type: 3}
|
||||
m_Name: Localization-String-Tables-English_ContentUpdateGroupSchema
|
||||
m_EditorClassIdentifier:
|
||||
m_Group: {fileID: 11400000, guid: 87e1e3fa2e9ad1d4188cc368fdef2059, type: 2}
|
||||
m_StaticContent: 0
|
||||
-8
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3b18c16658755cc4fb71ea6ad7abc855
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -28,16 +28,6 @@ MonoBehaviour:
|
||||
m_ReadOnly: 0
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: d9e560aff5c70fb4dbeedb5ce64a0055
|
||||
m_Address: BubbleStyle
|
||||
m_ReadOnly: 0
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 9a92289d23953c445ba2d385f1698f30
|
||||
m_Address: BlockPuzzleValidtor
|
||||
m_ReadOnly: 0
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
m_ReadOnly: 0
|
||||
m_Settings: {fileID: 11400000, guid: 77169ce22e430f64fb36c771815a4a7b, type: 2}
|
||||
m_SchemaSet:
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 74 KiB |
@@ -1,127 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c1e857482a330e24a880d6543c7a379f
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 12
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
flipGreenChannel: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMipmapLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 1
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 8
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
swizzle: 50462976
|
||||
cookieLightType: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Server
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
nameFileIdTable: {}
|
||||
mipmapLimitGroupName:
|
||||
pSDRemoveMatte: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 75a25991cf429bd4aac957f77cfe911a
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,43 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEditor;
|
||||
|
||||
namespace AibisDream
|
||||
{
|
||||
[CustomEditor(typeof(BlockPuzzleSystem))]
|
||||
public class BlockPuzzleEditor : Editor
|
||||
{
|
||||
private string _shapeKey;
|
||||
|
||||
public override void OnInspectorGUI()
|
||||
{
|
||||
base.OnInspectorGUI();
|
||||
var example = (BlockPuzzleSystem)target;
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
if (GUILayout.Button("加载"))
|
||||
{
|
||||
example.LoadConfig();
|
||||
}
|
||||
if (GUILayout.Button("应用"))
|
||||
{
|
||||
example.ApplyConfig();
|
||||
}
|
||||
if (GUILayout.Button("保存"))
|
||||
{
|
||||
example.SaveConfig();
|
||||
}
|
||||
EditorGUILayout.EndHorizontal();
|
||||
|
||||
EditorGUILayout.Space();
|
||||
GUILayout.Label("创建图形");
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
_shapeKey = EditorGUILayout.TextField("形状名称", _shapeKey);
|
||||
if (GUILayout.Button("创建"))
|
||||
{
|
||||
example.CreateShapeInEditor(_shapeKey);
|
||||
}
|
||||
EditorGUILayout.EndHorizontal();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: fe1f9b10108e095408c3816b817d4980
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,43 +0,0 @@
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
namespace AibisDream.SystemEditor
|
||||
{
|
||||
[CustomEditor(typeof(BlockShape))]
|
||||
public class BlockShapeEditor : Editor
|
||||
{
|
||||
public override void OnInspectorGUI()
|
||||
{
|
||||
base.OnInspectorGUI();
|
||||
|
||||
var example = (BlockShape)target;
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
// 增加绘制形状和保存形状按钮
|
||||
if (GUILayout.Button("绘制"))
|
||||
{
|
||||
example.DrawShape();
|
||||
}
|
||||
if (GUILayout.Button("保存"))
|
||||
{
|
||||
example.SaveShape();
|
||||
}
|
||||
EditorGUILayout.EndHorizontal();
|
||||
|
||||
GUILayout.Label("编辑器下吸附");
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
if (GUILayout.Button("旋转"))
|
||||
{
|
||||
example.RotateClockwise();
|
||||
}
|
||||
if (GUILayout.Button("吸附"))
|
||||
{
|
||||
example.SnapToGrid();
|
||||
}
|
||||
if (GUILayout.Button("删除"))
|
||||
{
|
||||
example.DeleteShape();
|
||||
}
|
||||
EditorGUILayout.EndHorizontal();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 73fc356b22fa6a147be7a2eb9c78f123
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,19 +0,0 @@
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
namespace AibisDream.SystemEditor
|
||||
{
|
||||
[CustomEditor(typeof(GridVisualizer))]
|
||||
public class GridVisualizerEditor : Editor
|
||||
{
|
||||
public override void OnInspectorGUI()
|
||||
{
|
||||
base.OnInspectorGUI();
|
||||
|
||||
var example = (GridVisualizer)target;
|
||||
EditorGUILayout.LabelField("层级设置", EditorStyles.boldLabel);
|
||||
example.sortingLayer = EditorKit.SortingLayerField("目标层级", example.sortingLayer);
|
||||
example.sortingOrder = EditorGUILayout.IntField("层级顺序", example.sortingOrder);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 37faa5e9015d2ce4285ec9f35c871fe1
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d6d1e89d1670e074a9f74578cfc6bc00
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,27 +0,0 @@
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
namespace AibisDream.SystemEditor
|
||||
{
|
||||
public static class BlockPuzzleMenuItemCreator
|
||||
{
|
||||
private const string BLOCK_SHAPE_PREFAB_PATH = "Assets/Prefabs/BlockPuzzle/BlockShape.prefab";
|
||||
|
||||
[MenuItem("GameObject/Block Puzzle/Shape")]
|
||||
public static BlockShape CreateBlockPuzzleShape()
|
||||
{
|
||||
var prefabAsset =AssetDatabase.LoadAssetAtPath<GameObject>(BLOCK_SHAPE_PREFAB_PATH);
|
||||
if (prefabAsset == null)
|
||||
{
|
||||
throw new System.InvalidOperationException(
|
||||
$"Can't create a new Block Shape: Can't find the prefab to create a Block Shape from."
|
||||
);
|
||||
}
|
||||
|
||||
var instantiatedPrefab = (GameObject)PrefabUtility.InstantiatePrefab(prefabAsset);
|
||||
PrefabUtility.UnpackPrefabInstance(instantiatedPrefab, PrefabUnpackMode.Completely, InteractionMode.UserAction);
|
||||
return instantiatedPrefab.GetComponent<BlockShape>();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 71b77fc2d917b61489a45c2a36d5d049
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -287,12 +287,7 @@ namespace AibisDream.SystemEditor
|
||||
if (idx != -1)
|
||||
{
|
||||
var newClip = AssetDatabase.LoadAssetAtPath<AnimationClip>(_clipsCache[idx]);
|
||||
var oldClip = state.state.motion;
|
||||
|
||||
var settings = AnimationUtility.GetAnimationClipSettings(newClip);
|
||||
settings.loopTime = oldClip.isLooping;
|
||||
AnimationUtility.SetAnimationClipSettings(newClip, settings);
|
||||
|
||||
Debug.Log(_clipsCache[idx]);
|
||||
state.state.motion = newClip;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 349305695e512ac4aa4fa63995c55809
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,83 @@
|
||||
using UnityEditor;
|
||||
using UnityEditor.Animations;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UIElements;
|
||||
|
||||
public class SimpleCustomEditor : EditorWindow
|
||||
{
|
||||
[MenuItem("Window/UI Toolkit/MyCustomEditor")]
|
||||
public static void ShowExample()
|
||||
{
|
||||
SimpleCustomEditor wnd = GetWindow<SimpleCustomEditor>();
|
||||
wnd.titleContent = new GUIContent("MyCustomEditor");
|
||||
}
|
||||
|
||||
[SerializeField]
|
||||
private VisualTreeAsset m_UXMLTree = default;
|
||||
|
||||
private int m_ClickCount = 0;
|
||||
|
||||
private const string m_ButtonPrefix = "button";
|
||||
|
||||
public void CreateGUI()
|
||||
{
|
||||
// Each editor window contains a root VisualElement object
|
||||
VisualElement root = rootVisualElement;
|
||||
|
||||
// VisualElements objects can contain other VisualElement following a tree hierarchy.
|
||||
Label label = new Label("These controls were created using C# code.");
|
||||
root.Add(label);
|
||||
|
||||
Button button = new Button();
|
||||
button.name = "button3";
|
||||
button.text = "This is button3.";
|
||||
root.Add(button);
|
||||
|
||||
Toggle toggle = new Toggle();
|
||||
toggle.name = "toggle3";
|
||||
toggle.label = "Number?";
|
||||
root.Add(toggle);
|
||||
|
||||
// Instantiate UXML created automatically which is set as the default VisualTreeAsset.
|
||||
root.Add(m_UXMLTree.Instantiate());
|
||||
|
||||
// Import UXML created manually.
|
||||
var visualTree = AssetDatabase.LoadAssetAtPath<VisualTreeAsset>("Assets/Editor/UXML/Editor Simple/SimpleCustomEditor_uxml.uxml");
|
||||
VisualElement labelFromUXML_uxml = visualTree.Instantiate();
|
||||
root.Add(labelFromUXML_uxml);
|
||||
|
||||
//Call the event handler
|
||||
SetupButtonHandler();
|
||||
}
|
||||
|
||||
//Functions as the event handlers for your button click and number counts
|
||||
private void SetupButtonHandler()
|
||||
{
|
||||
VisualElement root = rootVisualElement;
|
||||
|
||||
var buttons = root.Query<Button>();
|
||||
buttons.ForEach(RegisterHandler);
|
||||
}
|
||||
|
||||
private void RegisterHandler(Button button)
|
||||
{
|
||||
button.RegisterCallback<ClickEvent>(PrintClickMessage);
|
||||
}
|
||||
|
||||
private void PrintClickMessage(ClickEvent evt)
|
||||
{
|
||||
VisualElement root = rootVisualElement;
|
||||
|
||||
++m_ClickCount;
|
||||
|
||||
//Because of the names we gave the buttons and toggles, we can use the
|
||||
//button name to find the toggle name.
|
||||
Button button = evt.currentTarget as Button;
|
||||
string buttonNumber = button.name.Substring(m_ButtonPrefix.Length);
|
||||
string toggleName = "toggle" + buttonNumber;
|
||||
Toggle toggle = root.Q<Toggle>(toggleName);
|
||||
|
||||
Debug.Log("Button was clicked!" +
|
||||
(toggle.value ? " Count: " + m_ClickCount : ""));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0465714253b841b4284cdd223157ac53
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences:
|
||||
- m_ViewDataDictionary: {instanceID: 0}
|
||||
- m_UXMLTree: {fileID: 9197481963319205126, guid: 070bb0363fb0b0f4c85a9c529a716276, type: 3}
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,5 @@
|
||||
<ui:UXML xmlns:ui="UnityEngine.UIElements" xmlns:uie="UnityEditor.UIElements" xsi="http://www.w3.org/2001/XMLSchema-instance" engine="UnityEngine.UIElements" editor="UnityEditor.UIElements" noNamespaceSchemaLocation="../../UIElementsSchema/UIElements.xsd" editor-extension-mode="False">
|
||||
<ui:Label text="These controls were created in UI Builder." />
|
||||
<ui:Button text="This is button1" name="button1"/>
|
||||
<ui:Toggle label="Number?" name="toggle1"/>
|
||||
</ui:UXML>
|
||||
@@ -0,0 +1,10 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 070bb0363fb0b0f4c85a9c529a716276
|
||||
ScriptedImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
script: {fileID: 13804, guid: 0000000000000000e000000000000000, type: 0}
|
||||
@@ -0,0 +1,5 @@
|
||||
<ui:UXML xmlns:ui="UnityEngine.UIElements" xmlns:uie="UnityEditor.UIElements" xsi="http://www.w3.org/2001/XMLSchema-instance" engine="UnityEngine.UIElements" editor="UnityEditor.UIElements" noNamespaceSchemaLocation="../../UIElementsSchema/UIElements.xsd" editor-extension-mode="False">
|
||||
<ui:Label text="These controls were created with UXML." />
|
||||
<ui:Button text="This is button2" name="button2"/>
|
||||
<ui:Toggle label="Number?" name="toggle2"/>
|
||||
</ui:UXML>
|
||||
@@ -0,0 +1,10 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 208c3b2cf9e22504689a630983c0b2bc
|
||||
ScriptedImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
script: {fileID: 13804, guid: 0000000000000000e000000000000000, type: 0}
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: cfd74cd0e7d421b41b6fb4fe5306d4c1
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,132 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace AibisDream.SystemEditor
|
||||
{
|
||||
// 帧数据
|
||||
[Serializable]
|
||||
public class FrameData
|
||||
{
|
||||
public string name;
|
||||
public int x;
|
||||
public int y;
|
||||
public int width;
|
||||
public int height;
|
||||
public float duration; // 毫秒
|
||||
}
|
||||
|
||||
// 动画片段数据
|
||||
[Serializable]
|
||||
public class AnimationData
|
||||
{
|
||||
public string name;
|
||||
public List<int> frameIndices;
|
||||
public bool loop;
|
||||
public float? frameDuration; // 可选的,覆盖全局frameDuration
|
||||
public int? sampleRate; // 可选的,覆盖全局sampleRate
|
||||
}
|
||||
|
||||
// Aseprite JSON格式的数据结构
|
||||
[Serializable]
|
||||
public class AsepriteFrameInfo
|
||||
{
|
||||
public AsepriteFrameRect frame;
|
||||
public bool rotated;
|
||||
public bool trimmed;
|
||||
public AsepriteFrameRect spriteSourceSize;
|
||||
public AsepriteSize sourceSize;
|
||||
public float duration; // 毫秒
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class AsepriteFrameRect
|
||||
{
|
||||
public int x;
|
||||
public int y;
|
||||
public int w;
|
||||
public int h;
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class AsepriteSize
|
||||
{
|
||||
public int w;
|
||||
public int h;
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class AsepriteFrameTag
|
||||
{
|
||||
public string name;
|
||||
public int from;
|
||||
public int to;
|
||||
public string direction;
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class AsepriteMeta
|
||||
{
|
||||
public string app;
|
||||
public string version;
|
||||
public string image;
|
||||
public string format;
|
||||
public AsepriteSize size;
|
||||
public string scale;
|
||||
public List<AsepriteFrameTag> frameTags;
|
||||
public List<object> layers;
|
||||
public List<object> slices;
|
||||
}
|
||||
|
||||
// Aseprite JSON的包装类(因为Unity JsonUtility不支持Dictionary)
|
||||
[Serializable]
|
||||
public class AsepriteFrameEntry
|
||||
{
|
||||
public string key;
|
||||
public AsepriteFrameInfo value;
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class AsepriteJsonData
|
||||
{
|
||||
public AsepriteMeta meta;
|
||||
// frames将通过手动解析处理
|
||||
}
|
||||
|
||||
// 手动JSON格式的数据结构
|
||||
[Serializable]
|
||||
public class ManualLayout
|
||||
{
|
||||
public int rows;
|
||||
public int columns;
|
||||
public int? frameCount; // 可选
|
||||
public string direction; // "horizontal" 或 "vertical"
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class ManualJsonData
|
||||
{
|
||||
public string type;
|
||||
public ManualLayout layout;
|
||||
public float frameDuration; // 毫秒
|
||||
public int sampleRate;
|
||||
public List<AnimationData> animations;
|
||||
}
|
||||
|
||||
// 统一的内部数据格式
|
||||
public class ProcessedAnimationData
|
||||
{
|
||||
public List<FrameData> frames;
|
||||
public List<ProcessedAnimationClip> animations;
|
||||
}
|
||||
|
||||
public class ProcessedAnimationClip
|
||||
{
|
||||
public string name;
|
||||
public List<int> frameIndices;
|
||||
public bool loop;
|
||||
public float frameDuration; // 毫秒(已应用覆盖逻辑)
|
||||
public int sampleRate; // 已应用覆盖逻辑
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5cd60e41866d0ec418dfc6fdce37a8ba
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,208 +0,0 @@
|
||||
using System.IO;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
namespace AibisDream.SystemEditor
|
||||
{
|
||||
public class AnimationClipGenerator : EditorWindow
|
||||
{
|
||||
private Texture2D selectedTexture;
|
||||
private TextAsset selectedJson;
|
||||
private DefaultAsset outputFolder;
|
||||
private string outputPath = "";
|
||||
|
||||
// 动画类型选项
|
||||
private enum AnimationTargetType
|
||||
{
|
||||
SpriteRenderer, // Sprite动画
|
||||
Image // UIImage动画
|
||||
}
|
||||
private AnimationTargetType animationType = AnimationTargetType.SpriteRenderer;
|
||||
|
||||
// Pivot 设置选项
|
||||
private enum PivotAlignment
|
||||
{
|
||||
Center, // 中心 (0.5, 0.5)
|
||||
TopLeft, // 左上 (0, 1)
|
||||
TopRight, // 右上 (1, 1)
|
||||
BottomLeft, // 左下 (0, 0)
|
||||
BottomRight, // 右下 (1, 0)
|
||||
TopCenter, // 上中 (0.5, 1)
|
||||
BottomCenter, // 下中 (0.5, 0)
|
||||
LeftCenter, // 左中 (0, 0.5)
|
||||
RightCenter, // 右中 (1, 0.5)
|
||||
Custom // 自定义
|
||||
}
|
||||
private PivotAlignment pivotAlignment = PivotAlignment.Center;
|
||||
private Vector2 customPivot = new Vector2(0.5f, 0.5f);
|
||||
|
||||
[MenuItem("Tools/动画片段生成器(Animation Clip Generator)")]
|
||||
public static void ShowWindow()
|
||||
{
|
||||
GetWindow<AnimationClipGenerator>("动画片段生成器(Animation Clip Generator)");
|
||||
}
|
||||
|
||||
private void OnGUI()
|
||||
{
|
||||
// 图片文件选择
|
||||
EditorGUILayout.LabelField("图片文件 (PNG/JPG)", EditorStyles.boldLabel);
|
||||
selectedTexture = (Texture2D)EditorGUILayout.ObjectField(
|
||||
"Texture", selectedTexture, typeof(Texture2D), false);
|
||||
|
||||
EditorGUILayout.Space();
|
||||
|
||||
// JSON文件选择
|
||||
EditorGUILayout.LabelField("JSON文件", EditorStyles.boldLabel);
|
||||
selectedJson = (TextAsset)EditorGUILayout.ObjectField(
|
||||
"JSON", selectedJson, typeof(TextAsset), false);
|
||||
|
||||
EditorGUILayout.Space();
|
||||
|
||||
// 动画类型选择
|
||||
EditorGUILayout.LabelField("动画类型", EditorStyles.boldLabel);
|
||||
animationType = (AnimationTargetType)EditorGUILayout.EnumPopup(
|
||||
"Animation Type", animationType);
|
||||
EditorGUILayout.HelpBox(
|
||||
animationType == AnimationTargetType.SpriteRenderer
|
||||
? "生成用于SpriteRenderer的动画(绑定到m_Sprite属性)"
|
||||
: "生成用于Unity UI Image的动画(绑定到m_Sprite属性)",
|
||||
MessageType.Info);
|
||||
|
||||
EditorGUILayout.Space();
|
||||
|
||||
// Pivot 设置
|
||||
EditorGUILayout.LabelField("Pivot 设置", EditorStyles.boldLabel);
|
||||
pivotAlignment = (PivotAlignment)EditorGUILayout.EnumPopup(
|
||||
"Pivot Alignment", pivotAlignment);
|
||||
|
||||
if (pivotAlignment == PivotAlignment.Custom)
|
||||
{
|
||||
customPivot = EditorGUILayout.Vector2Field("Custom Pivot", customPivot);
|
||||
// 限制 pivot 值在 0-1 范围内
|
||||
customPivot.x = Mathf.Clamp01(customPivot.x);
|
||||
customPivot.y = Mathf.Clamp01(customPivot.y);
|
||||
EditorGUILayout.HelpBox(
|
||||
"自定义 Pivot 值范围: X 和 Y 应在 0-1 之间\n" +
|
||||
"例如: (0, 0) = 左下角, (0.5, 0.5) = 中心, (1, 1) = 右上角",
|
||||
MessageType.Info);
|
||||
}
|
||||
else
|
||||
{
|
||||
Vector2 previewPivot = GetPivotFromAlignment(pivotAlignment);
|
||||
EditorGUILayout.HelpBox(
|
||||
$"当前 Pivot: ({previewPivot.x:F2}, {previewPivot.y:F2})",
|
||||
MessageType.Info);
|
||||
}
|
||||
|
||||
EditorGUILayout.Space();
|
||||
|
||||
// 输出目录选择
|
||||
EditorGUILayout.LabelField("输出目录", EditorStyles.boldLabel);
|
||||
outputFolder = (DefaultAsset)EditorGUILayout.ObjectField(
|
||||
"Output Folder", outputFolder, typeof(DefaultAsset), false);
|
||||
|
||||
// 显示输出路径
|
||||
if (outputFolder != null)
|
||||
{
|
||||
outputPath = AssetDatabase.GetAssetPath(outputFolder);
|
||||
EditorGUILayout.HelpBox($"输出路径: {outputPath}", MessageType.Info);
|
||||
}
|
||||
else
|
||||
{
|
||||
outputPath = "";
|
||||
}
|
||||
|
||||
EditorGUILayout.Space();
|
||||
|
||||
// 生成按钮
|
||||
GUI.enabled = selectedTexture != null && selectedJson != null && outputFolder != null;
|
||||
if (GUILayout.Button("生成 AnimationClip", GUILayout.Height(30)))
|
||||
{
|
||||
GenerateAnimationClips();
|
||||
}
|
||||
GUI.enabled = true;
|
||||
|
||||
EditorGUILayout.Space();
|
||||
|
||||
// 说明信息
|
||||
EditorGUILayout.HelpBox(
|
||||
"使用说明:\n" +
|
||||
"1. 选择PNG或JPG图片文件\n" +
|
||||
"2. 选择JSON文件(Aseprite格式或手动格式)\n" +
|
||||
"3. 选择输出目录\n" +
|
||||
"4. 点击生成按钮\n\n" +
|
||||
"注意: 如果图片的SpriteMode是Single,工具会自动根据JSON切图。",
|
||||
MessageType.Info);
|
||||
}
|
||||
|
||||
private void GenerateAnimationClips()
|
||||
{
|
||||
if (selectedTexture == null || selectedJson == null || outputFolder == null)
|
||||
{
|
||||
EditorUtility.DisplayDialog("错误", "请选择图片文件、JSON文件和输出目录", "确定");
|
||||
return;
|
||||
}
|
||||
|
||||
string texturePath = AssetDatabase.GetAssetPath(selectedTexture);
|
||||
string jsonPath = AssetDatabase.GetAssetPath(selectedJson);
|
||||
|
||||
// 验证文件扩展名
|
||||
string textureExt = Path.GetExtension(texturePath).ToLower();
|
||||
if (textureExt != ".png" && textureExt != ".jpg" && textureExt != ".jpeg")
|
||||
{
|
||||
EditorUtility.DisplayDialog("错误", "图片文件必须是PNG或JPG格式", "确定");
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
bool isImageAnimation = animationType == AnimationTargetType.Image;
|
||||
Vector2 pivot = pivotAlignment == PivotAlignment.Custom
|
||||
? customPivot
|
||||
: GetPivotFromAlignment(pivotAlignment);
|
||||
// 确保 pivot 值在有效范围内
|
||||
pivot.x = Mathf.Clamp01(pivot.x);
|
||||
pivot.y = Mathf.Clamp01(pivot.y);
|
||||
AnimationClipGeneratorCore.GenerateClips(texturePath, jsonPath, outputPath, isImageAnimation, pivot);
|
||||
EditorUtility.DisplayDialog("成功", $"AnimationClip已生成到: {outputPath}", "确定");
|
||||
|
||||
// 刷新资源数据库
|
||||
AssetDatabase.Refresh();
|
||||
}
|
||||
catch (System.Exception e)
|
||||
{
|
||||
EditorUtility.DisplayDialog("错误", $"生成失败: {e.Message}", "确定");
|
||||
Debug.LogError(e);
|
||||
}
|
||||
}
|
||||
|
||||
private Vector2 GetPivotFromAlignment(PivotAlignment alignment)
|
||||
{
|
||||
switch (alignment)
|
||||
{
|
||||
case PivotAlignment.Center:
|
||||
return new Vector2(0.5f, 0.5f);
|
||||
case PivotAlignment.TopLeft:
|
||||
return new Vector2(0f, 1f);
|
||||
case PivotAlignment.TopRight:
|
||||
return new Vector2(1f, 1f);
|
||||
case PivotAlignment.BottomLeft:
|
||||
return new Vector2(0f, 0f);
|
||||
case PivotAlignment.BottomRight:
|
||||
return new Vector2(1f, 0f);
|
||||
case PivotAlignment.TopCenter:
|
||||
return new Vector2(0.5f, 1f);
|
||||
case PivotAlignment.BottomCenter:
|
||||
return new Vector2(0.5f, 0f);
|
||||
case PivotAlignment.LeftCenter:
|
||||
return new Vector2(0f, 0.5f);
|
||||
case PivotAlignment.RightCenter:
|
||||
return new Vector2(1f, 0.5f);
|
||||
case PivotAlignment.Custom:
|
||||
return customPivot;
|
||||
default:
|
||||
return new Vector2(0.5f, 0.5f);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7472aae8191639b47af5d9ba115b39b5
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,668 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using UnityEditor;
|
||||
using UnityEditor.U2D.Sprites;
|
||||
using UnityEngine;
|
||||
|
||||
namespace AibisDream.SystemEditor
|
||||
{
|
||||
public static class AnimationClipGeneratorCore
|
||||
{
|
||||
// 检查SpriteMode
|
||||
public static SpriteImportMode CheckSpriteMode(string texturePath)
|
||||
{
|
||||
TextureImporter textureImporter = AssetImporter.GetAtPath(texturePath) as TextureImporter;
|
||||
if (textureImporter == null)
|
||||
{
|
||||
throw new Exception($"无法加载纹理导入器: {texturePath}");
|
||||
}
|
||||
return textureImporter.spriteImportMode;
|
||||
}
|
||||
|
||||
// 解析Aseprite JSON
|
||||
public static ProcessedAnimationData ParseAsepriteJson(string jsonPath, string texturePath)
|
||||
{
|
||||
string jsonContent = File.ReadAllText(jsonPath);
|
||||
|
||||
// Unity的JsonUtility不支持Dictionary,需要手动解析frames对象
|
||||
// 使用SimpleJSON或手动解析
|
||||
ProcessedAnimationData result = ParseAsepriteJsonManual(jsonContent);
|
||||
|
||||
if (result.frames == null || result.frames.Count == 0)
|
||||
{
|
||||
throw new Exception("无效的Aseprite JSON格式:无法解析frames");
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private static ProcessedAnimationData ParseAsepriteJsonManual(string jsonContent)
|
||||
{
|
||||
List<FrameData> frames = new List<FrameData>();
|
||||
List<ProcessedAnimationClip> animations = new List<ProcessedAnimationClip>();
|
||||
|
||||
try
|
||||
{
|
||||
// 解析meta部分
|
||||
int metaStart = jsonContent.IndexOf("\"meta\":");
|
||||
if (metaStart == -1)
|
||||
{
|
||||
throw new Exception("找不到meta部分");
|
||||
}
|
||||
|
||||
// 找到meta对象的结束位置
|
||||
int metaBraceStart = jsonContent.IndexOf('{', metaStart);
|
||||
int metaBraceEnd = FindMatchingBrace(jsonContent, metaBraceStart);
|
||||
string metaJson = jsonContent.Substring(metaBraceStart, metaBraceEnd - metaBraceStart + 1);
|
||||
|
||||
// 移除可能的尾随逗号
|
||||
metaJson = metaJson.TrimEnd(',', ' ', '\n', '\r');
|
||||
|
||||
AsepriteMeta meta = JsonUtility.FromJson<AsepriteMeta>(metaJson);
|
||||
|
||||
// 解析frameTags
|
||||
if (meta.frameTags != null)
|
||||
{
|
||||
foreach (var tag in meta.frameTags)
|
||||
{
|
||||
List<int> frameIndices = new List<int>();
|
||||
int start = tag.from;
|
||||
int end = tag.to;
|
||||
|
||||
if (tag.direction == "forward" || tag.direction == "pingpong" || string.IsNullOrEmpty(tag.direction))
|
||||
{
|
||||
for (int i = start; i <= end; i++)
|
||||
{
|
||||
frameIndices.Add(i);
|
||||
}
|
||||
}
|
||||
else if (tag.direction == "reverse")
|
||||
{
|
||||
for (int i = end; i >= start; i--)
|
||||
{
|
||||
frameIndices.Add(i);
|
||||
}
|
||||
}
|
||||
|
||||
animations.Add(new ProcessedAnimationClip
|
||||
{
|
||||
name = tag.name,
|
||||
frameIndices = frameIndices,
|
||||
loop = true,
|
||||
frameDuration = 0,
|
||||
sampleRate = 100
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// 解析frames对象 - 使用正则表达式或手动解析
|
||||
int framesStart = jsonContent.IndexOf("\"frames\":");
|
||||
if (framesStart == -1)
|
||||
{
|
||||
throw new Exception("找不到frames部分");
|
||||
}
|
||||
|
||||
// 找到frames对象的开始和结束
|
||||
int framesBraceStart = jsonContent.IndexOf('{', framesStart);
|
||||
int framesBraceEnd = FindMatchingBrace(jsonContent, framesBraceStart);
|
||||
string framesContent = jsonContent.Substring(framesBraceStart + 1, framesBraceEnd - framesBraceStart - 1);
|
||||
|
||||
// 解析每个帧条目
|
||||
ParseFramesContent(framesContent, frames);
|
||||
|
||||
// 按名称排序帧(确保顺序正确)
|
||||
frames = frames.OrderBy(f => ExtractFrameNumber(f.name)).ThenBy(f => f.name).ToList();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new Exception($"解析Aseprite JSON失败: {e.Message}\n{e.StackTrace}");
|
||||
}
|
||||
|
||||
return new ProcessedAnimationData
|
||||
{
|
||||
frames = frames,
|
||||
animations = animations
|
||||
};
|
||||
}
|
||||
|
||||
private static void ParseFramesContent(string framesContent, List<FrameData> frames)
|
||||
{
|
||||
int pos = 0;
|
||||
while (pos < framesContent.Length)
|
||||
{
|
||||
// 跳过空白字符和逗号
|
||||
while (pos < framesContent.Length && (char.IsWhiteSpace(framesContent[pos]) || framesContent[pos] == ','))
|
||||
pos++;
|
||||
|
||||
if (pos >= framesContent.Length) break;
|
||||
|
||||
// 查找帧名称(在引号中)
|
||||
if (framesContent[pos] != '"')
|
||||
{
|
||||
pos++;
|
||||
continue;
|
||||
}
|
||||
|
||||
int nameStart = pos + 1;
|
||||
int nameEnd = framesContent.IndexOf('"', nameStart);
|
||||
if (nameEnd == -1) break;
|
||||
|
||||
string frameName = framesContent.Substring(nameStart, nameEnd - nameStart);
|
||||
pos = nameEnd + 1;
|
||||
|
||||
// 跳过冒号和空白
|
||||
while (pos < framesContent.Length && (char.IsWhiteSpace(framesContent[pos]) || framesContent[pos] == ':'))
|
||||
pos++;
|
||||
|
||||
if (pos >= framesContent.Length) break;
|
||||
|
||||
// 查找帧数据对象
|
||||
if (framesContent[pos] != '{')
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
int dataStart = pos;
|
||||
int dataEnd = FindMatchingBrace(framesContent, dataStart);
|
||||
if (dataEnd == -1) break;
|
||||
|
||||
string frameDataJson = framesContent.Substring(dataStart, dataEnd - dataStart + 1);
|
||||
pos = dataEnd + 1;
|
||||
|
||||
try
|
||||
{
|
||||
AsepriteFrameInfo frameInfo = JsonUtility.FromJson<AsepriteFrameInfo>(frameDataJson);
|
||||
if (frameInfo.frame != null)
|
||||
{
|
||||
frames.Add(new FrameData
|
||||
{
|
||||
name = frameName,
|
||||
x = frameInfo.frame.x,
|
||||
y = frameInfo.frame.y,
|
||||
width = frameInfo.frame.w,
|
||||
height = frameInfo.frame.h,
|
||||
duration = frameInfo.duration
|
||||
});
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Debug.LogWarning($"解析帧数据失败: {frameName}, 错误: {e.Message}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static int ExtractFrameNumber(string frameName)
|
||||
{
|
||||
// 尝试从帧名称中提取数字(例如 "调酒妹侧头 0.aseprite" -> 0)
|
||||
int lastSpace = frameName.LastIndexOf(' ');
|
||||
if (lastSpace >= 0 && lastSpace < frameName.Length - 1)
|
||||
{
|
||||
string numberPart = frameName.Substring(lastSpace + 1);
|
||||
int dotIndex = numberPart.IndexOf('.');
|
||||
if (dotIndex > 0)
|
||||
{
|
||||
numberPart = numberPart.Substring(0, dotIndex);
|
||||
}
|
||||
|
||||
if (int.TryParse(numberPart, out int number))
|
||||
{
|
||||
return number;
|
||||
}
|
||||
}
|
||||
return int.MaxValue; // 如果无法解析,放在最后
|
||||
}
|
||||
|
||||
private static int FindMatchingBrace(string str, int startIndex)
|
||||
{
|
||||
if (startIndex < 0 || startIndex >= str.Length) return -1;
|
||||
|
||||
int braceCount = 0;
|
||||
bool foundStart = false;
|
||||
|
||||
for (int i = startIndex; i < str.Length; i++)
|
||||
{
|
||||
if (str[i] == '{')
|
||||
{
|
||||
braceCount++;
|
||||
foundStart = true;
|
||||
}
|
||||
else if (str[i] == '}')
|
||||
{
|
||||
braceCount--;
|
||||
if (braceCount == 0 && foundStart)
|
||||
{
|
||||
return i;
|
||||
}
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
// 解析手动JSON
|
||||
public static ProcessedAnimationData ParseManualJson(string jsonPath, string texturePath)
|
||||
{
|
||||
string jsonContent = File.ReadAllText(jsonPath);
|
||||
ManualJsonData manualData = JsonUtility.FromJson<ManualJsonData>(jsonContent);
|
||||
|
||||
if (manualData.layout == null || manualData.animations == null)
|
||||
{
|
||||
throw new Exception("无效的手动JSON格式");
|
||||
}
|
||||
|
||||
// 验证layout参数
|
||||
if (manualData.layout.rows <= 0 || manualData.layout.columns <= 0)
|
||||
{
|
||||
throw new Exception("rows和columns必须大于0");
|
||||
}
|
||||
|
||||
// 读取图片尺寸
|
||||
TextureImporter textureImporter = AssetImporter.GetAtPath(texturePath) as TextureImporter;
|
||||
if (textureImporter == null)
|
||||
{
|
||||
throw new Exception($"无法加载纹理导入器: {texturePath}");
|
||||
}
|
||||
|
||||
Texture2D texture = AssetDatabase.LoadAssetAtPath<Texture2D>(texturePath);
|
||||
if (texture == null)
|
||||
{
|
||||
throw new Exception($"无法加载纹理: {texturePath}");
|
||||
}
|
||||
|
||||
int imageWidth = texture.width;
|
||||
int imageHeight = texture.height;
|
||||
|
||||
// 计算sprite尺寸
|
||||
int spriteWidth = imageWidth / manualData.layout.columns;
|
||||
int spriteHeight = imageHeight / manualData.layout.rows;
|
||||
|
||||
// 验证图片尺寸能被行列数整除
|
||||
if (imageWidth % manualData.layout.columns != 0 || imageHeight % manualData.layout.rows != 0)
|
||||
{
|
||||
throw new Exception($"图片尺寸({imageWidth}x{imageHeight})无法被行列数({manualData.layout.columns}x{manualData.layout.rows})整除");
|
||||
}
|
||||
|
||||
// 计算总帧数
|
||||
int totalFrames = manualData.layout.frameCount ?? (manualData.layout.rows * manualData.layout.columns);
|
||||
if (totalFrames > manualData.layout.rows * manualData.layout.columns)
|
||||
{
|
||||
throw new Exception($"frameCount({totalFrames})不能超过rows*columns({manualData.layout.rows * manualData.layout.columns})");
|
||||
}
|
||||
|
||||
// 生成帧数据
|
||||
List<FrameData> frames = new List<FrameData>();
|
||||
bool isHorizontal = manualData.layout.direction == "horizontal";
|
||||
|
||||
for (int frameIndex = 0; frameIndex < totalFrames; frameIndex++)
|
||||
{
|
||||
int row, column;
|
||||
if (isHorizontal)
|
||||
{
|
||||
// 横向排列:按行扫描,从左到右,从上到下
|
||||
row = frameIndex / manualData.layout.columns;
|
||||
column = frameIndex % manualData.layout.columns;
|
||||
}
|
||||
else
|
||||
{
|
||||
// 纵向排列:按列扫描,从上到下,从左到右
|
||||
column = frameIndex / manualData.layout.rows;
|
||||
row = frameIndex % manualData.layout.rows;
|
||||
}
|
||||
|
||||
// 使用左上角为(0,0)的坐标系,向右向下为正轴
|
||||
// 在SliceSprites中会统一转换为Unity的左下角坐标系
|
||||
int x = column * spriteWidth;
|
||||
int y = row * spriteHeight;
|
||||
|
||||
frames.Add(new FrameData
|
||||
{
|
||||
name = $"frame_{frameIndex}",
|
||||
x = x,
|
||||
y = y,
|
||||
width = spriteWidth,
|
||||
height = spriteHeight,
|
||||
duration = manualData.frameDuration
|
||||
});
|
||||
}
|
||||
|
||||
// 处理动画片段
|
||||
List<ProcessedAnimationClip> animations = new List<ProcessedAnimationClip>();
|
||||
foreach (var anim in manualData.animations)
|
||||
{
|
||||
// 应用参数覆盖逻辑
|
||||
float frameDuration = anim.frameDuration ?? manualData.frameDuration;
|
||||
int sampleRate = anim.sampleRate ?? manualData.sampleRate;
|
||||
|
||||
animations.Add(new ProcessedAnimationClip
|
||||
{
|
||||
name = anim.name,
|
||||
frameIndices = anim.frameIndices,
|
||||
loop = anim.loop,
|
||||
frameDuration = frameDuration,
|
||||
sampleRate = sampleRate
|
||||
});
|
||||
}
|
||||
|
||||
return new ProcessedAnimationData
|
||||
{
|
||||
frames = frames,
|
||||
animations = animations
|
||||
};
|
||||
}
|
||||
|
||||
// 根据JSON信息切图
|
||||
public static void SliceSprites(string texturePath, List<FrameData> frames, Vector2 pivot)
|
||||
{
|
||||
TextureImporter textureImporter = AssetImporter.GetAtPath(texturePath) as TextureImporter;
|
||||
if (textureImporter == null)
|
||||
{
|
||||
throw new Exception($"无法加载纹理导入器: {texturePath}");
|
||||
}
|
||||
|
||||
// 获取纹理尺寸
|
||||
Texture2D texture = AssetDatabase.LoadAssetAtPath<Texture2D>(texturePath);
|
||||
if (texture == null)
|
||||
{
|
||||
throw new Exception($"无法加载纹理: {texturePath}");
|
||||
}
|
||||
int textureHeight = texture.height;
|
||||
|
||||
// 设置spriteMode为Multiple
|
||||
textureImporter.spriteImportMode = SpriteImportMode.Multiple;
|
||||
|
||||
// 使用新的Sprite Editor Data Provider API (Unity 2020.2+)
|
||||
var spriteDataProviderFactories = new SpriteDataProviderFactories();
|
||||
spriteDataProviderFactories.Init();
|
||||
var dataProvider = spriteDataProviderFactories.GetSpriteEditorDataProviderFromObject(textureImporter);
|
||||
|
||||
if (dataProvider == null)
|
||||
{
|
||||
throw new Exception($"无法获取Sprite Editor Data Provider: {texturePath}");
|
||||
}
|
||||
|
||||
dataProvider.InitSpriteEditorDataProvider();
|
||||
|
||||
// 创建SpriteRect数组
|
||||
// 注意:JSON中的坐标是以左上角为(0,0),向右向下为正轴
|
||||
// Unity的纹理坐标系统是左下角为(0,0),向上为正轴
|
||||
// 需要将Y坐标从左上角坐标系转换为Unity的左下角坐标系
|
||||
var spriteRects = new SpriteRect[frames.Count];
|
||||
for (int i = 0; i < frames.Count; i++)
|
||||
{
|
||||
var frame = frames[i];
|
||||
|
||||
// 坐标转换:从左上角(0,0)坐标系转换为Unity左下角(0,0)坐标系
|
||||
// Unity Y = 纹理高度 - (原始Y + 高度)
|
||||
float unityY = textureHeight - (frame.y + frame.height);
|
||||
|
||||
// 根据 pivot 值确定 alignment
|
||||
SpriteAlignment alignment = SpriteAlignment.Custom;
|
||||
if (pivot == new Vector2(0.5f, 0.5f))
|
||||
alignment = SpriteAlignment.Center;
|
||||
else if (pivot == new Vector2(0f, 1f))
|
||||
alignment = SpriteAlignment.TopLeft;
|
||||
else if (pivot == new Vector2(1f, 1f))
|
||||
alignment = SpriteAlignment.TopRight;
|
||||
else if (pivot == new Vector2(0f, 0f))
|
||||
alignment = SpriteAlignment.BottomLeft;
|
||||
else if (pivot == new Vector2(1f, 0f))
|
||||
alignment = SpriteAlignment.BottomRight;
|
||||
else if (pivot == new Vector2(0.5f, 1f))
|
||||
alignment = SpriteAlignment.TopCenter;
|
||||
else if (pivot == new Vector2(0.5f, 0f))
|
||||
alignment = SpriteAlignment.BottomCenter;
|
||||
else if (pivot == new Vector2(0f, 0.5f))
|
||||
alignment = SpriteAlignment.LeftCenter;
|
||||
else if (pivot == new Vector2(1f, 0.5f))
|
||||
alignment = SpriteAlignment.RightCenter;
|
||||
|
||||
spriteRects[i] = new SpriteRect
|
||||
{
|
||||
name = frame.name,
|
||||
rect = new Rect(frame.x, unityY, frame.width, frame.height),
|
||||
pivot = pivot,
|
||||
alignment = alignment
|
||||
};
|
||||
}
|
||||
|
||||
dataProvider.SetSpriteRects(spriteRects);
|
||||
dataProvider.Apply();
|
||||
|
||||
AssetDatabase.ImportAsset(texturePath, ImportAssetOptions.ForceUpdate);
|
||||
}
|
||||
|
||||
// 创建或更新 AnimationClip(若已存在则在原资源上就地更新,避免引用丢失)
|
||||
public static AnimationClip CreateAnimationClip(
|
||||
ProcessedAnimationClip animationData,
|
||||
List<FrameData> frames,
|
||||
Sprite[] sprites,
|
||||
string outputPath,
|
||||
bool isImageAnimation = false)
|
||||
{
|
||||
// 先计算目标资源路径
|
||||
string fullPath = Path.Combine(outputPath, $"{animationData.name}.anim");
|
||||
string assetPath = fullPath.Replace('\\', '/');
|
||||
if (!assetPath.StartsWith("Assets/"))
|
||||
{
|
||||
// 转换为相对路径
|
||||
string projectPath = Application.dataPath.Replace("Assets", "");
|
||||
if (assetPath.StartsWith(projectPath))
|
||||
{
|
||||
assetPath = assetPath.Substring(projectPath.Length);
|
||||
}
|
||||
}
|
||||
|
||||
// 如果已经存在同名 AnimationClip,则复用该资源,在其上就地更新
|
||||
AnimationClip clip = AssetDatabase.LoadAssetAtPath<AnimationClip>(assetPath);
|
||||
bool isNewClip = false;
|
||||
if (clip == null)
|
||||
{
|
||||
clip = new AnimationClip();
|
||||
isNewClip = true;
|
||||
}
|
||||
|
||||
clip.name = animationData.name;
|
||||
|
||||
// 设置采样率
|
||||
AnimationClipSettings settings = AnimationUtility.GetAnimationClipSettings(clip);
|
||||
clip.frameRate = animationData.sampleRate;
|
||||
|
||||
// 创建Sprite关键帧
|
||||
List<ObjectReferenceKeyframe> keyframes = new List<ObjectReferenceKeyframe>();
|
||||
float currentTime = 0f;
|
||||
|
||||
foreach (int frameIndex in animationData.frameIndices)
|
||||
{
|
||||
if (frameIndex < 0 || frameIndex >= sprites.Length)
|
||||
{
|
||||
Debug.LogWarning($"帧索引{frameIndex}超出范围,跳过");
|
||||
continue;
|
||||
}
|
||||
|
||||
Sprite sprite = sprites[frameIndex];
|
||||
if (sprite == null)
|
||||
{
|
||||
Debug.LogWarning($"帧索引{frameIndex}的Sprite为空,跳过");
|
||||
continue;
|
||||
}
|
||||
|
||||
// 使用帧的duration(如果是Aseprite格式)或动画的frameDuration(手动格式)
|
||||
float frameDuration = frames[frameIndex].duration > 0
|
||||
? frames[frameIndex].duration / 1000f // 毫秒转秒
|
||||
: animationData.frameDuration / 1000f;
|
||||
|
||||
keyframes.Add(new ObjectReferenceKeyframe
|
||||
{
|
||||
time = currentTime,
|
||||
value = sprite
|
||||
});
|
||||
|
||||
currentTime += frameDuration;
|
||||
}
|
||||
|
||||
if (keyframes.Count == 0)
|
||||
{
|
||||
throw new Exception($"动画片段{animationData.name}没有有效的关键帧");
|
||||
}
|
||||
|
||||
// 设置循环
|
||||
if (animationData.loop && keyframes.Count > 1)
|
||||
{
|
||||
// 添加最后一帧的重复,确保循环
|
||||
keyframes.Add(new ObjectReferenceKeyframe
|
||||
{
|
||||
time = currentTime,
|
||||
value = keyframes[0].value
|
||||
});
|
||||
}
|
||||
|
||||
// 创建EditorCurveBinding - 根据动画类型选择不同的组件
|
||||
EditorCurveBinding curveBinding = new EditorCurveBinding
|
||||
{
|
||||
path = "",
|
||||
type = isImageAnimation ? typeof(UnityEngine.UI.Image) : typeof(SpriteRenderer),
|
||||
propertyName = "m_Sprite"
|
||||
};
|
||||
|
||||
// 设置曲线
|
||||
AnimationUtility.SetObjectReferenceCurve(clip, curveBinding, keyframes.ToArray());
|
||||
|
||||
// 设置循环
|
||||
settings.loopTime = animationData.loop;
|
||||
AnimationUtility.SetAnimationClipSettings(clip, settings);
|
||||
|
||||
// 保存 / 更新 AnimationClip 资源
|
||||
if (isNewClip)
|
||||
{
|
||||
// 不存在则创建新资源
|
||||
AssetDatabase.CreateAsset(clip, assetPath);
|
||||
}
|
||||
else
|
||||
{
|
||||
// 已存在则标记为已修改,保持原 GUID 与引用
|
||||
EditorUtility.SetDirty(clip);
|
||||
}
|
||||
|
||||
AssetDatabase.SaveAssets();
|
||||
|
||||
return clip;
|
||||
}
|
||||
|
||||
// 主流程:生成AnimationClip
|
||||
public static void GenerateClips(string texturePath, string jsonPath, string outputPath, bool isImageAnimation = false, Vector2 pivot = default)
|
||||
{
|
||||
// 如果没有提供 pivot,使用默认值(中心)
|
||||
if (pivot == default)
|
||||
{
|
||||
pivot = new Vector2(0.5f, 0.5f);
|
||||
}
|
||||
// 确保 pivot 值在有效范围内
|
||||
pivot.x = Mathf.Clamp01(pivot.x);
|
||||
pivot.y = Mathf.Clamp01(pivot.y);
|
||||
try
|
||||
{
|
||||
EditorUtility.DisplayProgressBar("生成AnimationClip", "检查SpriteMode...", 0f);
|
||||
|
||||
// 检查SpriteMode
|
||||
SpriteImportMode spriteMode = CheckSpriteMode(texturePath);
|
||||
if (spriteMode == SpriteImportMode.Multiple)
|
||||
{
|
||||
Debug.Log("图片的SpriteMode已经是Multiple,将使用现有的Sprite切图");
|
||||
}
|
||||
|
||||
EditorUtility.DisplayProgressBar("生成AnimationClip", "解析JSON...", 0.2f);
|
||||
|
||||
// 判断JSON类型并解析
|
||||
ProcessedAnimationData processedData;
|
||||
string jsonContent = File.ReadAllText(jsonPath);
|
||||
|
||||
if (jsonContent.Contains("\"type\":\"manual\"") || jsonContent.Contains("\"type\": \"manual\""))
|
||||
{
|
||||
// 手动格式
|
||||
processedData = ParseManualJson(jsonPath, texturePath);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Aseprite格式
|
||||
processedData = ParseAsepriteJson(jsonPath, texturePath);
|
||||
}
|
||||
|
||||
EditorUtility.DisplayProgressBar("生成AnimationClip", "切图...", 0.4f);
|
||||
|
||||
// 如果是Single模式,需要切图
|
||||
if (spriteMode == SpriteImportMode.Single)
|
||||
{
|
||||
SliceSprites(texturePath, processedData.frames, pivot);
|
||||
// 重新加载以确保sprites可用
|
||||
AssetDatabase.Refresh();
|
||||
}
|
||||
|
||||
EditorUtility.DisplayProgressBar("生成AnimationClip", "加载Sprites...", 0.6f);
|
||||
|
||||
// 加载所有Sprites
|
||||
Sprite[] allSpritesArray = AssetDatabase.LoadAllAssetsAtPath(texturePath)
|
||||
.OfType<Sprite>()
|
||||
.ToArray();
|
||||
|
||||
if (allSpritesArray.Length == 0)
|
||||
{
|
||||
throw new Exception("无法加载任何Sprite,请检查切图设置");
|
||||
}
|
||||
|
||||
// 创建Sprite字典以便快速查找
|
||||
Dictionary<string, Sprite> spriteDict = allSpritesArray.ToDictionary(s => s.name, s => s);
|
||||
|
||||
// 按照frames列表的顺序创建Sprite数组
|
||||
Sprite[] allSprites = new Sprite[processedData.frames.Count];
|
||||
for (int i = 0; i < processedData.frames.Count; i++)
|
||||
{
|
||||
string frameName = processedData.frames[i].name;
|
||||
if (spriteDict.TryGetValue(frameName, out Sprite sprite))
|
||||
{
|
||||
allSprites[i] = sprite;
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogWarning($"找不到名为{frameName}的Sprite");
|
||||
// 尝试使用索引查找
|
||||
if (i < allSpritesArray.Length)
|
||||
{
|
||||
allSprites[i] = allSpritesArray[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 确保输出目录存在
|
||||
if (!Directory.Exists(outputPath))
|
||||
{
|
||||
Directory.CreateDirectory(outputPath);
|
||||
}
|
||||
|
||||
EditorUtility.DisplayProgressBar("生成AnimationClip", "创建AnimationClip...", 0.8f);
|
||||
|
||||
// 为每个动画片段创建AnimationClip
|
||||
int animationCount = processedData.animations.Count;
|
||||
for (int i = 0; i < animationCount; i++)
|
||||
{
|
||||
var anim = processedData.animations[i];
|
||||
EditorUtility.DisplayProgressBar("生成AnimationClip",
|
||||
$"创建动画片段: {anim.name}", 0.8f + (i / (float)animationCount) * 0.2f);
|
||||
|
||||
CreateAnimationClip(anim, processedData.frames, allSprites, outputPath, isImageAnimation);
|
||||
}
|
||||
|
||||
EditorUtility.ClearProgressBar();
|
||||
Debug.Log($"成功生成{animationCount}个AnimationClip到: {outputPath}");
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
EditorUtility.ClearProgressBar();
|
||||
Debug.LogError($"生成AnimationClip失败: {e.Message}");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c7abb40962ba935419bb10c937b8b2c7
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,269 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using AibisDream.Framework;
|
||||
using Newtonsoft.Json;
|
||||
using UnityEditor;
|
||||
using UnityEditor.Animations;
|
||||
using UnityEngine;
|
||||
|
||||
namespace AibisDream.SystemEditor
|
||||
{
|
||||
public class AnimatorBlendTreeParserWindow : EditorWindow
|
||||
{
|
||||
private AnimatorController _selectedController;
|
||||
private List<BlendTreeInfo> _blendTreeInfos;
|
||||
private Vector2 _scrollPosition;
|
||||
private string _resultText = "";
|
||||
private bool _includeNested = false; // 是否包含嵌套混合树,默认不提取
|
||||
private string _defaultStateName = ""; // 控制器默认 State 名称
|
||||
|
||||
[MenuItem("Tools/Animator BlendTree Parser")]
|
||||
public static void ShowWindow()
|
||||
{
|
||||
GetWindow<AnimatorBlendTreeParserWindow>("BlendTree Parser");
|
||||
}
|
||||
|
||||
private void OnGUI()
|
||||
{
|
||||
EditorGUILayout.Space(10);
|
||||
|
||||
// AnimatorController 选择区域
|
||||
EditorGUILayout.LabelField("AnimatorController", EditorStyles.boldLabel);
|
||||
_selectedController = (AnimatorController)EditorGUILayout.ObjectField(
|
||||
"Controller", _selectedController, typeof(AnimatorController), false);
|
||||
|
||||
EditorGUILayout.Space(10);
|
||||
|
||||
// 解析选项
|
||||
EditorGUILayout.LabelField("解析选项", EditorStyles.boldLabel);
|
||||
_includeNested = EditorGUILayout.Toggle("包含嵌套混合树", _includeNested);
|
||||
EditorGUILayout.HelpBox(
|
||||
_includeNested
|
||||
? "将提取所有层级的混合树(包括嵌套在子混合树中的混合树)"
|
||||
: "仅提取第一层混合树(不包含嵌套在子混合树中的混合树)",
|
||||
MessageType.Info);
|
||||
|
||||
EditorGUILayout.Space(10);
|
||||
|
||||
// 解析按钮
|
||||
EditorGUI.BeginDisabledGroup(_selectedController == null);
|
||||
if (GUILayout.Button("解析混合树", GUILayout.Height(30)))
|
||||
{
|
||||
ParseBlendTree();
|
||||
}
|
||||
EditorGUI.EndDisabledGroup();
|
||||
|
||||
EditorGUILayout.Space(10);
|
||||
|
||||
// 结果显示区域
|
||||
if (_blendTreeInfos != null && _blendTreeInfos.Count > 0)
|
||||
{
|
||||
EditorGUILayout.LabelField("解析结果", EditorStyles.boldLabel);
|
||||
|
||||
// 显示统计信息
|
||||
EditorGUILayout.HelpBox(
|
||||
$"共找到 {_blendTreeInfos.Count} 个混合树",
|
||||
MessageType.Info);
|
||||
|
||||
// 可滚动的文本区域
|
||||
_scrollPosition = EditorGUILayout.BeginScrollView(_scrollPosition, GUILayout.ExpandHeight(true));
|
||||
EditorGUILayout.TextArea(_resultText, GUILayout.ExpandHeight(true));
|
||||
EditorGUILayout.EndScrollView();
|
||||
|
||||
EditorGUILayout.Space(10);
|
||||
|
||||
// 保存 JSON 按钮
|
||||
if (GUILayout.Button("保存为 JSON", GUILayout.Height(30)))
|
||||
{
|
||||
SaveToJson();
|
||||
}
|
||||
}
|
||||
else if (_blendTreeInfos != null && _blendTreeInfos.Count == 0)
|
||||
{
|
||||
EditorGUILayout.HelpBox(
|
||||
"未找到混合树",
|
||||
MessageType.Warning);
|
||||
}
|
||||
}
|
||||
|
||||
private void ParseBlendTree()
|
||||
{
|
||||
if (_selectedController == null)
|
||||
{
|
||||
EditorUtility.DisplayDialog("错误", "请先选择 AnimatorController", "确定");
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
// 解析默认 State 名称(默认使用第 0 层的默认状态)
|
||||
if (_selectedController.layers != null && _selectedController.layers.Length > 0)
|
||||
{
|
||||
var baseLayer = _selectedController.layers[0];
|
||||
_defaultStateName = baseLayer.stateMachine?.defaultState != null
|
||||
? baseLayer.stateMachine.defaultState.name
|
||||
: string.Empty;
|
||||
}
|
||||
else
|
||||
{
|
||||
_defaultStateName = string.Empty;
|
||||
}
|
||||
|
||||
// 调用解析方法,传入 includeNested 选项
|
||||
_blendTreeInfos = AnimatorKit.ParseBlendTree(_selectedController, _includeNested);
|
||||
|
||||
// 格式化结果显示文本
|
||||
FormatResultText();
|
||||
|
||||
Debug.Log(
|
||||
$"解析完成: 找到 {_blendTreeInfos.Count} 个混合树 (包含嵌套: {_includeNested}),默认 State: {_defaultStateName}");
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
EditorUtility.DisplayDialog("解析失败", e.Message, "确定");
|
||||
Debug.LogError($"解析失败: {e}");
|
||||
_blendTreeInfos = null;
|
||||
_resultText = "";
|
||||
}
|
||||
}
|
||||
|
||||
private void FormatResultText()
|
||||
{
|
||||
if (_blendTreeInfos == null || _blendTreeInfos.Count == 0)
|
||||
{
|
||||
_resultText = "未找到混合树";
|
||||
return;
|
||||
}
|
||||
|
||||
var lines = new List<string>();
|
||||
lines.Add($"=== 控制器 {_selectedController.name} 的混合树信息 ===");
|
||||
lines.Add($"默认 State: {_defaultStateName}");
|
||||
lines.Add($"共找到 {_blendTreeInfos.Count} 个混合树\n");
|
||||
|
||||
for (int i = 0; i < _blendTreeInfos.Count; i++)
|
||||
{
|
||||
var info = _blendTreeInfos[i];
|
||||
lines.Add($"[{i + 1}] 混合树名称: {info.name}");
|
||||
lines.Add($" 类型: {info.type}");
|
||||
|
||||
if (info.type == "1D")
|
||||
{
|
||||
lines.Add($" 动画片段数量: {info.clipCount}");
|
||||
lines.Add($" 混合参数: {info.blendParameter}");
|
||||
lines.Add($" 参数范围: [{info.minThreshold}, {info.maxThreshold}]");
|
||||
lines.Add($" 动画片段列表 ({info.clips?.Count ?? 0} 个):");
|
||||
if (info.clips != null)
|
||||
{
|
||||
for (int j = 0; j < info.clips.Count; j++)
|
||||
{
|
||||
var clip = info.clips[j];
|
||||
lines.Add($" [{j + 1}] {clip.clipName} (Threshold: {clip.threshold})");
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (info.type == "2D")
|
||||
{
|
||||
lines.Add($" 混合参数 X: {info.blendParameter}");
|
||||
lines.Add($" 混合参数 Y: {info.blendParameterY}");
|
||||
lines.Add($" 参数范围: [{info.minThreshold}, {info.maxThreshold}]");
|
||||
lines.Add($" 动画片段列表 ({info.clips?.Count ?? 0} 个):");
|
||||
if (info.clips != null)
|
||||
{
|
||||
for (int j = 0; j < info.clips.Count; j++)
|
||||
{
|
||||
var clip = info.clips[j];
|
||||
lines.Add($" [{j + 1}] {clip.clipName} (位置: {clip.position})");
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
lines.Add($" 动画片段数量: {info.clipCount}");
|
||||
}
|
||||
|
||||
if (i < _blendTreeInfos.Count - 1)
|
||||
{
|
||||
lines.Add("");
|
||||
}
|
||||
}
|
||||
|
||||
_resultText = string.Join("\n", lines);
|
||||
}
|
||||
|
||||
private void SaveToJson()
|
||||
{
|
||||
if (_selectedController == null || _blendTreeInfos == null || _blendTreeInfos.Count == 0)
|
||||
{
|
||||
EditorUtility.DisplayDialog("错误", "没有可保存的数据", "确定");
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
// 获取 AnimatorController 的资产路径
|
||||
string controllerPath = AssetDatabase.GetAssetPath(_selectedController);
|
||||
if (string.IsNullOrEmpty(controllerPath))
|
||||
{
|
||||
EditorUtility.DisplayDialog("错误", "无法获取 AnimatorController 的路径", "确定");
|
||||
return;
|
||||
}
|
||||
|
||||
// 生成 JSON 文件路径(与 .controller 文件同名同路径,扩展名为 .json)
|
||||
string directory = Path.GetDirectoryName(controllerPath);
|
||||
string fileName = Path.GetFileNameWithoutExtension(controllerPath);
|
||||
string jsonPath = Path.Combine(directory, $"{fileName}.json");
|
||||
|
||||
// 转换为 Unity 资源路径格式
|
||||
jsonPath = jsonPath.Replace("\\", "/");
|
||||
if (!jsonPath.StartsWith("Assets/"))
|
||||
{
|
||||
// 如果不是 Assets 路径,尝试转换
|
||||
string fullPath = Path.GetFullPath(jsonPath);
|
||||
string assetsPath = Path.GetFullPath(Application.dataPath);
|
||||
if (fullPath.StartsWith(assetsPath))
|
||||
{
|
||||
jsonPath = "Assets" + fullPath.Substring(assetsPath.Length).Replace("\\", "/");
|
||||
}
|
||||
else
|
||||
{
|
||||
EditorUtility.DisplayDialog("错误", "JSON 文件路径必须在 Assets 目录下", "确定");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// 配置序列化设置,忽略循环引用
|
||||
var settings = new JsonSerializerSettings
|
||||
{
|
||||
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
|
||||
Formatting = Formatting.Indented
|
||||
};
|
||||
|
||||
// 组装配置对象(包含默认 State 名称和混合树列表)
|
||||
var config = new BlendTreeConfig
|
||||
{
|
||||
defaultStateName = _defaultStateName,
|
||||
blendTrees = _blendTreeInfos
|
||||
};
|
||||
|
||||
// 序列化为 JSON
|
||||
string jsonContent = JsonConvert.SerializeObject(config, settings);
|
||||
|
||||
// 写入文件(如果已存在则覆盖)
|
||||
File.WriteAllText(jsonPath, jsonContent, System.Text.Encoding.UTF8);
|
||||
|
||||
// 刷新资源数据库
|
||||
AssetDatabase.Refresh();
|
||||
|
||||
EditorUtility.DisplayDialog("保存成功", $"JSON 文件已保存到:\n{jsonPath}", "确定");
|
||||
Debug.Log($"JSON 文件已保存: {jsonPath}");
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
EditorUtility.DisplayDialog("保存失败", e.Message, "确定");
|
||||
Debug.LogError($"保存 JSON 失败: {e}");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7376797afa65fb549b5347e5d570dc46
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 29e5bfa8c0e3cf74fab38b400eb5946e
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user