Compare commits

..
Author SHA1 Message Date
dingyuntian 5b2340c088 Merge branch 'bugfix/master' into 'master'
Bugfix/master

See merge request aibis-dream/aibis-dream!520
2025-07-24 09:38:08 +00:00
dingyuntian 14affc5c6e Bugfix/master 2025-07-24 09:38:08 +00:00
dingyuntian 6937a2d6e8 Merge branch 'master_merge' into 'master'
Ver.0.3.0.33

See merge request aibis-dream/aibis-dream!506
2025-07-08 08:32:46 +00:00
dingyuntian 0ad5e29917 Ver.0.3.0.33 2025-07-08 08:32:46 +00:00
dingyuntian 99f4dd67c2 Merge branch 'bugfix/icon' into 'master'
Bugfix/icon

See merge request aibis-dream/aibis-dream!357
2025-03-24 11:06:38 +00:00
dingyuntian 0859251eca logo 2025-03-24 18:57:44 +08:00
dingyuntian 8ad13c296e 换Logo 2025-03-24 18:56:35 +08:00
dingyuntian 8dbb14ca07 Merge branch 'develop' into 'master'
3月问题修复

See merge request aibis-dream/aibis-dream!355
2025-03-21 12:51:27 +00:00
dingyuntian 1272dff2c3 3月问题修复 2025-03-21 12:51:27 +00:00
4188 changed files with 85770 additions and 904986 deletions
-2
View File
@@ -97,5 +97,3 @@ fmod_editor.log
# 排除Sim的自动保存
.history/*
**/.history/*
.fake
-1
View File
@@ -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
@@ -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}
@@ -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}
@@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: 1e521cfc13b314642b1e682e3be7ea17
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-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}
@@ -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:
@@ -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:
@@ -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}
@@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: cf2940a91bcc1604b90ce7598e03ffbe
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
@@ -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:
@@ -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
@@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: fffc86e2fbf4ade43921cf63a4c8ecb6
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
@@ -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
@@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: 71dd08da4a466da4e852541657c20d3e
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
@@ -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
@@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: 975b430517deeb2488e8f04f352bed31
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
@@ -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
@@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: dcebae3aaf84c4640b3f5fd438f9067c
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
@@ -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
@@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: 055e1a14dd45b2949a688bc4ab6c151d
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
@@ -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
@@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: 6f2e1a0a238afe444932be27faa4579e
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
@@ -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
@@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: 895c7c97ef5802446a395377ef704940
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
@@ -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
@@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: 8004f70cd10ce4a439cb9e822bb078c2
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
@@ -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
@@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: 443ec58daf8fe0d4b8cfdb39efd4f3e5
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
@@ -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
@@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: c0d471a5cc8ca8a4e85145f6af285176
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
@@ -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
@@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: e47bd2f8e7497a945bb6b80906bf1484
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
@@ -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
@@ -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:
+8
View File
@@ -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:
-8
View File
@@ -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;
}
}
+8
View File
@@ -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}
-8
View File
@@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: cfd74cd0e7d421b41b6fb4fe5306d4c1
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
-132
View File
@@ -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