feat(huoshan): 接入表达界面序列帧与本地化文字
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4c8fb9b5f91b4e35a9d61cc6307b3ab7
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4c05bc7d223b4f41b37b289cda62ce31
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,454 @@
|
||||
{ "frames": {
|
||||
"火山释放log界面 0.aseprite": {
|
||||
"frame": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 300
|
||||
},
|
||||
"火山释放log界面 1.aseprite": {
|
||||
"frame": { "x": 384, "y": 0, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 2.aseprite": {
|
||||
"frame": { "x": 768, "y": 0, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 3.aseprite": {
|
||||
"frame": { "x": 1152, "y": 0, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 4.aseprite": {
|
||||
"frame": { "x": 1536, "y": 0, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 5.aseprite": {
|
||||
"frame": { "x": 1920, "y": 0, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 6.aseprite": {
|
||||
"frame": { "x": 0, "y": 216, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 7.aseprite": {
|
||||
"frame": { "x": 384, "y": 216, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 8.aseprite": {
|
||||
"frame": { "x": 768, "y": 216, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 9.aseprite": {
|
||||
"frame": { "x": 1152, "y": 216, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 10.aseprite": {
|
||||
"frame": { "x": 1536, "y": 216, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 11.aseprite": {
|
||||
"frame": { "x": 1920, "y": 216, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 12.aseprite": {
|
||||
"frame": { "x": 0, "y": 432, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 13.aseprite": {
|
||||
"frame": { "x": 384, "y": 432, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 14.aseprite": {
|
||||
"frame": { "x": 768, "y": 432, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 15.aseprite": {
|
||||
"frame": { "x": 1152, "y": 432, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 16.aseprite": {
|
||||
"frame": { "x": 1536, "y": 432, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 50
|
||||
},
|
||||
"火山释放log界面 17.aseprite": {
|
||||
"frame": { "x": 1920, "y": 432, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 50
|
||||
},
|
||||
"火山释放log界面 18.aseprite": {
|
||||
"frame": { "x": 0, "y": 648, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 19.aseprite": {
|
||||
"frame": { "x": 384, "y": 648, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 20.aseprite": {
|
||||
"frame": { "x": 768, "y": 648, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 21.aseprite": {
|
||||
"frame": { "x": 1152, "y": 648, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 50
|
||||
},
|
||||
"火山释放log界面 22.aseprite": {
|
||||
"frame": { "x": 1536, "y": 648, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 23.aseprite": {
|
||||
"frame": { "x": 1920, "y": 648, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 24.aseprite": {
|
||||
"frame": { "x": 0, "y": 864, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 25.aseprite": {
|
||||
"frame": { "x": 384, "y": 864, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 50
|
||||
},
|
||||
"火山释放log界面 26.aseprite": {
|
||||
"frame": { "x": 768, "y": 864, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 27.aseprite": {
|
||||
"frame": { "x": 1152, "y": 864, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 28.aseprite": {
|
||||
"frame": { "x": 1536, "y": 864, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 29.aseprite": {
|
||||
"frame": { "x": 1920, "y": 864, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 300
|
||||
},
|
||||
"火山释放log界面 30.aseprite": {
|
||||
"frame": { "x": 0, "y": 1080, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 31.aseprite": {
|
||||
"frame": { "x": 384, "y": 1080, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 32.aseprite": {
|
||||
"frame": { "x": 768, "y": 1080, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 33.aseprite": {
|
||||
"frame": { "x": 1152, "y": 1080, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 34.aseprite": {
|
||||
"frame": { "x": 1536, "y": 1080, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 35.aseprite": {
|
||||
"frame": { "x": 1920, "y": 1080, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 36.aseprite": {
|
||||
"frame": { "x": 0, "y": 1296, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 37.aseprite": {
|
||||
"frame": { "x": 384, "y": 1296, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 38.aseprite": {
|
||||
"frame": { "x": 768, "y": 1296, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 39.aseprite": {
|
||||
"frame": { "x": 1152, "y": 1296, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 40.aseprite": {
|
||||
"frame": { "x": 1536, "y": 1296, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 41.aseprite": {
|
||||
"frame": { "x": 1920, "y": 1296, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 42.aseprite": {
|
||||
"frame": { "x": 0, "y": 1512, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 43.aseprite": {
|
||||
"frame": { "x": 384, "y": 1512, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 44.aseprite": {
|
||||
"frame": { "x": 768, "y": 1512, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 45.aseprite": {
|
||||
"frame": { "x": 1152, "y": 1512, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 46.aseprite": {
|
||||
"frame": { "x": 1536, "y": 1512, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 47.aseprite": {
|
||||
"frame": { "x": 1920, "y": 1512, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 300
|
||||
},
|
||||
"火山释放log界面 48.aseprite": {
|
||||
"frame": { "x": 0, "y": 1728, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 300
|
||||
},
|
||||
"火山释放log界面 49.aseprite": {
|
||||
"frame": { "x": 384, "y": 1728, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 50
|
||||
},
|
||||
"火山释放log界面 50.aseprite": {
|
||||
"frame": { "x": 768, "y": 1728, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 50
|
||||
},
|
||||
"火山释放log界面 51.aseprite": {
|
||||
"frame": { "x": 1152, "y": 1728, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 50
|
||||
},
|
||||
"火山释放log界面 52.aseprite": {
|
||||
"frame": { "x": 1536, "y": 1728, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 50
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"app": "https://www.aseprite.org/",
|
||||
"version": "1.3.17.2-x64",
|
||||
"image": "火山释放log界面.png",
|
||||
"format": "RGBA8888",
|
||||
"size": { "w": 2304, "h": 1944 },
|
||||
"scale": "1",
|
||||
"frameTags": [
|
||||
{ "name": "deep", "from": 0, "to": 14, "direction": "forward", "color": "#000000ff" },
|
||||
{ "name": "UI flash", "from": 15, "to": 29, "direction": "forward", "color": "#000000ff" },
|
||||
{ "name": "huan", "from": 30, "to": 40, "direction": "forward", "color": "#000000ff" },
|
||||
{ "name": "output", "from": 41, "to": 47, "direction": "forward", "color": "#000000ff" },
|
||||
{ "name": "Floating", "from": 48, "to": 48, "direction": "forward", "color": "#000000ff" },
|
||||
{ "name": "Click", "from": 49, "to": 52, "direction": "forward", "color": "#000000ff" }
|
||||
],
|
||||
"layers": [
|
||||
{ "name": "Layer", "opacity": 255, "blendMode": "normal" },
|
||||
{ "name": "图层 3", "opacity": 255, "blendMode": "addition" },
|
||||
{ "name": "组 2" },
|
||||
{ "name": "Layer", "group": "组 2", "opacity": 255, "blendMode": "normal" },
|
||||
{ "name": "图层 1", "group": "组 2", "opacity": 255, "blendMode": "normal" },
|
||||
{ "name": "output", "opacity": 255, "blendMode": "normal" },
|
||||
{ "name": "fade in", "opacity": 255, "blendMode": "normal" }
|
||||
],
|
||||
"slices": [
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 228a3f5c649244e3b8ae027756a00fb8
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -243,6 +243,22 @@ MonoBehaviour:
|
||||
m_Key: memory_index_label
|
||||
m_Metadata:
|
||||
m_Items: []
|
||||
- m_Id: 200000000000000001
|
||||
m_Key: huoshan_expression_objective
|
||||
m_Metadata:
|
||||
m_Items: []
|
||||
- m_Id: 200000000000000002
|
||||
m_Key: huoshan_expression_output
|
||||
m_Metadata:
|
||||
m_Items: []
|
||||
- m_Id: 200000000000000003
|
||||
m_Key: huoshan_expression_integration
|
||||
m_Metadata:
|
||||
m_Items: []
|
||||
- m_Id: 200000000000000004
|
||||
m_Key: huoshan_expression_interference
|
||||
m_Metadata:
|
||||
m_Items: []
|
||||
m_Metadata:
|
||||
m_Items: []
|
||||
m_KeyGenerator:
|
||||
|
||||
@@ -257,6 +257,22 @@ MonoBehaviour:
|
||||
m_Localized: Memory Index @VIS
|
||||
m_Metadata:
|
||||
m_Items: []
|
||||
- m_Id: 200000000000000001
|
||||
m_Localized: "\u76EE\u6807\uFF1A\u5265\u79BB\u7EA2\u8272\u7684\u5E72\u6270\u8BED\u8A00\uFF0C\u805A\u96C6\u84DD\u8272\u7684\u771F\u5B9E\u8868\u8FBE"
|
||||
m_Metadata:
|
||||
m_Items: []
|
||||
- m_Id: 200000000000000002
|
||||
m_Localized: "\u8F93\u51FA"
|
||||
m_Metadata:
|
||||
m_Items: []
|
||||
- m_Id: 200000000000000003
|
||||
m_Localized: "{0}% \u8BED\u8A00\u6574\u5408\u5B8C\u6210\u5EA6"
|
||||
m_Metadata:
|
||||
m_Items: []
|
||||
- m_Id: 200000000000000004
|
||||
m_Localized: "{0} \u5904\u5F02\u5E38\u601D\u7EEA\u4ECD\u5728\u5E72\u6270\u8868\u8FBE"
|
||||
m_Metadata:
|
||||
m_Items: []
|
||||
references:
|
||||
version: 2
|
||||
RefIds:
|
||||
|
||||
@@ -246,6 +246,22 @@ MonoBehaviour:
|
||||
m_Localized: "\u8A18\u61B6\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9@VIS"
|
||||
m_Metadata:
|
||||
m_Items: []
|
||||
- m_Id: 200000000000000001
|
||||
m_Localized: "\u76EE\u6807\uFF1A\u5265\u79BB\u7EA2\u8272\u7684\u5E72\u6270\u8BED\u8A00\uFF0C\u805A\u96C6\u84DD\u8272\u7684\u771F\u5B9E\u8868\u8FBE"
|
||||
m_Metadata:
|
||||
m_Items: []
|
||||
- m_Id: 200000000000000002
|
||||
m_Localized: "\u8F93\u51FA"
|
||||
m_Metadata:
|
||||
m_Items: []
|
||||
- m_Id: 200000000000000003
|
||||
m_Localized: "{0}% \u8BED\u8A00\u6574\u5408\u5B8C\u6210\u5EA6"
|
||||
m_Metadata:
|
||||
m_Items: []
|
||||
- m_Id: 200000000000000004
|
||||
m_Localized: "{0} \u5904\u5F02\u5E38\u601D\u7EEA\u4ECD\u5728\u5E72\u6270\u8868\u8FBE"
|
||||
m_Metadata:
|
||||
m_Items: []
|
||||
references:
|
||||
version: 2
|
||||
RefIds: []
|
||||
|
||||
@@ -250,6 +250,22 @@ MonoBehaviour:
|
||||
m_Localized: "\u8BB0\u5FC6\u7D22\u5F15@VIS"
|
||||
m_Metadata:
|
||||
m_Items: []
|
||||
- m_Id: 200000000000000001
|
||||
m_Localized: "\u76EE\u6807\uFF1A\u5265\u79BB\u7EA2\u8272\u7684\u5E72\u6270\u8BED\u8A00\uFF0C\u805A\u96C6\u84DD\u8272\u7684\u771F\u5B9E\u8868\u8FBE"
|
||||
m_Metadata:
|
||||
m_Items: []
|
||||
- m_Id: 200000000000000002
|
||||
m_Localized: "\u8F93\u51FA"
|
||||
m_Metadata:
|
||||
m_Items: []
|
||||
- m_Id: 200000000000000003
|
||||
m_Localized: "{0}% \u8BED\u8A00\u6574\u5408\u5B8C\u6210\u5EA6"
|
||||
m_Metadata:
|
||||
m_Items: []
|
||||
- m_Id: 200000000000000004
|
||||
m_Localized: "{0} \u5904\u5F02\u5E38\u601D\u7EEA\u4ECD\u5728\u5E72\u6270\u8868\u8FBE"
|
||||
m_Metadata:
|
||||
m_Items: []
|
||||
references:
|
||||
version: 2
|
||||
RefIds:
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 48b918d0fbb84d84eb3d3a6469578703
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,454 @@
|
||||
{ "frames": {
|
||||
"火山释放log界面 0.aseprite": {
|
||||
"frame": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 300
|
||||
},
|
||||
"火山释放log界面 1.aseprite": {
|
||||
"frame": { "x": 384, "y": 0, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 2.aseprite": {
|
||||
"frame": { "x": 768, "y": 0, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 3.aseprite": {
|
||||
"frame": { "x": 1152, "y": 0, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 4.aseprite": {
|
||||
"frame": { "x": 1536, "y": 0, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 5.aseprite": {
|
||||
"frame": { "x": 1920, "y": 0, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 6.aseprite": {
|
||||
"frame": { "x": 0, "y": 216, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 7.aseprite": {
|
||||
"frame": { "x": 384, "y": 216, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 8.aseprite": {
|
||||
"frame": { "x": 768, "y": 216, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 9.aseprite": {
|
||||
"frame": { "x": 1152, "y": 216, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 10.aseprite": {
|
||||
"frame": { "x": 1536, "y": 216, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 11.aseprite": {
|
||||
"frame": { "x": 1920, "y": 216, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 12.aseprite": {
|
||||
"frame": { "x": 0, "y": 432, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 13.aseprite": {
|
||||
"frame": { "x": 384, "y": 432, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 14.aseprite": {
|
||||
"frame": { "x": 768, "y": 432, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 15.aseprite": {
|
||||
"frame": { "x": 1152, "y": 432, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 16.aseprite": {
|
||||
"frame": { "x": 1536, "y": 432, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 50
|
||||
},
|
||||
"火山释放log界面 17.aseprite": {
|
||||
"frame": { "x": 1920, "y": 432, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 50
|
||||
},
|
||||
"火山释放log界面 18.aseprite": {
|
||||
"frame": { "x": 0, "y": 648, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 19.aseprite": {
|
||||
"frame": { "x": 384, "y": 648, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 20.aseprite": {
|
||||
"frame": { "x": 768, "y": 648, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 21.aseprite": {
|
||||
"frame": { "x": 1152, "y": 648, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 50
|
||||
},
|
||||
"火山释放log界面 22.aseprite": {
|
||||
"frame": { "x": 1536, "y": 648, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 23.aseprite": {
|
||||
"frame": { "x": 1920, "y": 648, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 24.aseprite": {
|
||||
"frame": { "x": 0, "y": 864, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 25.aseprite": {
|
||||
"frame": { "x": 384, "y": 864, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 50
|
||||
},
|
||||
"火山释放log界面 26.aseprite": {
|
||||
"frame": { "x": 768, "y": 864, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 27.aseprite": {
|
||||
"frame": { "x": 1152, "y": 864, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 28.aseprite": {
|
||||
"frame": { "x": 1536, "y": 864, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 29.aseprite": {
|
||||
"frame": { "x": 1920, "y": 864, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 300
|
||||
},
|
||||
"火山释放log界面 30.aseprite": {
|
||||
"frame": { "x": 0, "y": 1080, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 31.aseprite": {
|
||||
"frame": { "x": 384, "y": 1080, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 32.aseprite": {
|
||||
"frame": { "x": 768, "y": 1080, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 33.aseprite": {
|
||||
"frame": { "x": 1152, "y": 1080, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 34.aseprite": {
|
||||
"frame": { "x": 1536, "y": 1080, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 35.aseprite": {
|
||||
"frame": { "x": 1920, "y": 1080, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 36.aseprite": {
|
||||
"frame": { "x": 0, "y": 1296, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 37.aseprite": {
|
||||
"frame": { "x": 384, "y": 1296, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 38.aseprite": {
|
||||
"frame": { "x": 768, "y": 1296, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 39.aseprite": {
|
||||
"frame": { "x": 1152, "y": 1296, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 40.aseprite": {
|
||||
"frame": { "x": 1536, "y": 1296, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 41.aseprite": {
|
||||
"frame": { "x": 1920, "y": 1296, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 42.aseprite": {
|
||||
"frame": { "x": 0, "y": 1512, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 43.aseprite": {
|
||||
"frame": { "x": 384, "y": 1512, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 44.aseprite": {
|
||||
"frame": { "x": 768, "y": 1512, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 45.aseprite": {
|
||||
"frame": { "x": 1152, "y": 1512, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 46.aseprite": {
|
||||
"frame": { "x": 1536, "y": 1512, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 100
|
||||
},
|
||||
"火山释放log界面 47.aseprite": {
|
||||
"frame": { "x": 1920, "y": 1512, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 300
|
||||
},
|
||||
"火山释放log界面 48.aseprite": {
|
||||
"frame": { "x": 0, "y": 1728, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 300
|
||||
},
|
||||
"火山释放log界面 49.aseprite": {
|
||||
"frame": { "x": 384, "y": 1728, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 50
|
||||
},
|
||||
"火山释放log界面 50.aseprite": {
|
||||
"frame": { "x": 768, "y": 1728, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 50
|
||||
},
|
||||
"火山释放log界面 51.aseprite": {
|
||||
"frame": { "x": 1152, "y": 1728, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 50
|
||||
},
|
||||
"火山释放log界面 52.aseprite": {
|
||||
"frame": { "x": 1536, "y": 1728, "w": 384, "h": 216 },
|
||||
"rotated": false,
|
||||
"trimmed": false,
|
||||
"spriteSourceSize": { "x": 0, "y": 0, "w": 384, "h": 216 },
|
||||
"sourceSize": { "w": 384, "h": 216 },
|
||||
"duration": 50
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"app": "https://www.aseprite.org/",
|
||||
"version": "1.3.17.2-x64",
|
||||
"image": "火山释放log界面.png",
|
||||
"format": "RGBA8888",
|
||||
"size": { "w": 2304, "h": 1944 },
|
||||
"scale": "1",
|
||||
"frameTags": [
|
||||
{ "name": "deep", "from": 0, "to": 14, "direction": "forward", "color": "#000000ff" },
|
||||
{ "name": "UI flash", "from": 15, "to": 29, "direction": "forward", "color": "#000000ff" },
|
||||
{ "name": "huan", "from": 30, "to": 40, "direction": "forward", "color": "#000000ff" },
|
||||
{ "name": "output", "from": 41, "to": 47, "direction": "forward", "color": "#000000ff" },
|
||||
{ "name": "Floating", "from": 48, "to": 48, "direction": "forward", "color": "#000000ff" },
|
||||
{ "name": "Click", "from": 49, "to": 52, "direction": "forward", "color": "#000000ff" }
|
||||
],
|
||||
"layers": [
|
||||
{ "name": "Layer", "opacity": 255, "blendMode": "normal" },
|
||||
{ "name": "图层 3", "opacity": 255, "blendMode": "addition" },
|
||||
{ "name": "组 2" },
|
||||
{ "name": "Layer", "group": "组 2", "opacity": 255, "blendMode": "normal" },
|
||||
{ "name": "图层 1", "group": "组 2", "opacity": 255, "blendMode": "normal" },
|
||||
{ "name": "output", "opacity": 255, "blendMode": "normal" },
|
||||
{ "name": "fade in", "opacity": 255, "blendMode": "normal" }
|
||||
],
|
||||
"slices": [
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ea6afc19c414ed845bf5e1e25d87736d
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -15754,6 +15754,7 @@ GameObject:
|
||||
- component: {fileID: 2138889543}
|
||||
- component: {fileID: 2138889542}
|
||||
- component: {fileID: 2138889541}
|
||||
- component: {fileID: 2138889544}
|
||||
m_Layer: 0
|
||||
m_Name: ExpressSystem
|
||||
m_TagString: Untagged
|
||||
@@ -15795,6 +15796,7 @@ MonoBehaviour:
|
||||
particleManager: {fileID: 3669563163941125876}
|
||||
expressionView: {fileID: 5162511683866016917}
|
||||
logReleasePresentation: {fileID: 2138889543}
|
||||
screenPresentation: {fileID: 2138889544}
|
||||
defaultAnxietyPhrases:
|
||||
- "\u6211\u597D\u6015"
|
||||
- "\u600E\u4E48\u529E"
|
||||
@@ -15808,6 +15810,81 @@ MonoBehaviour:
|
||||
glitchController: {fileID: 741515695}
|
||||
screenGlitchMaterial: {fileID: 2100000, guid: 7409d06033d4497a8aff0a45ed262adf, type: 2}
|
||||
screenStressCap: 0.85
|
||||
--- !u!114 &2138889544
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2138889538}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 5e1287ca2a7d4d2d90c1a668c0f5bb82, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
screenRenderer: {fileID: 3626916397455914676}
|
||||
frames:
|
||||
- {fileID: 2475106960429135033, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: -3018686756791756080, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: -7762782562587901372, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: 6625265547078579635, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: 7461434052930814397, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: -1769639259384888604, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: -9105301244200845963, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: 7521657326120150178, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: 4524964375248133060, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: -6917530116420385240, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: -9195277676627031450, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: 7978113386437416697, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: -3088149670310421145, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: 486791643248283349, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: 2569870372170235217, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: 2196588455413707, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: -4168424841396956304, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: -885030471381229662, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: -3177327948065696628, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: -4227968739011731899, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: -44405172868956476, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: -5854386603852539790, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: -1434448706802843238, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: -5097258639152567774, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: -2032677242487706974, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: 3235070887847625388, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: 6687545647259375070, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: 7969674779183715280, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: -8807926922164456437, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: -7960472639975281634, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: -6921053182411625036, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: 3136923306446429545, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: 5852485295143986112, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: 3033208833659572263, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: 3256320520044918563, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: 7492323341267239661, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: 8419774192124790175, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: 6452382506499545570, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: -1171027475308826896, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: 1875163490704458687, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: -1601491336104935719, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: 7005626334382754131, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: -6144116005922943403, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: -8203104523524772058, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: -625480284268031234, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: -3770330309446754423, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: 4360862351641127235, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: 1680188261396841632, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: 263117198173513460, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: 1042739936057972743, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: 3026354965058437897, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: 8353437890852674847, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
- {fileID: -7585816161148619266, guid: 9f16e7c0b1ad4f8ca326cc74d2a7e501, type: 3}
|
||||
integrationProgressText: {fileID: 4809132844776029470}
|
||||
interferenceCountText: {fileID: 700187870001090773}
|
||||
outputButton: {fileID: 686920449707611471}
|
||||
screenFont: {fileID: 11400000, guid: f242fb3dde1933640859f1c54591c9c8, type: 2}
|
||||
objectivePosition: {x: -8.18, y: -4.08}
|
||||
objectiveSize: {x: 7.4, y: 0.95}
|
||||
objectiveFontSize: 0.28
|
||||
objectiveColor: {r: 0.78, g: 0.91, b: 1, a: 1}
|
||||
--- !u!114 &2138889541
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -18055,6 +18132,7 @@ MonoBehaviour:
|
||||
languageDeepPanel2: {fileID: 2141248582}
|
||||
focusSequenceButton: {fileID: 686920449707611471}
|
||||
releaseLogSpriteRenderer: {fileID: 3626916397455914676}
|
||||
screenPresentation: {fileID: 2138889544}
|
||||
expressionPanelTimelineName: "\u706B\u5C71\u8868\u8FBE\u6A21\u5757/\u706B\u5C71\u8868\u8FBEpanel"
|
||||
expressionConfirmTimelineName: "\u706B\u5C71\u8868\u8FBE\u6A21\u5757/\u706B\u5C71\u8868\u8FBE\u786E\u8BA4"
|
||||
focusZoomScale: 1.6
|
||||
|
||||
@@ -32,7 +32,14 @@ namespace AibisDream.FixSystem
|
||||
// 切换到深度表达相机
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.ExpressionDeep);
|
||||
yield return UIManager.Instance.GetPanel<ScreenTransitionPanel>().FadeOutAsync(0.5f);
|
||||
if (expressionManager.HasScreenPresentation)
|
||||
{
|
||||
yield return expressionManager.PlayScreenDeepAndWait();
|
||||
}
|
||||
else
|
||||
{
|
||||
yield return TimelineCenter.Instance.PlayTimelineAsync("火山表达模块/火山表达深入");
|
||||
}
|
||||
|
||||
BubbleSlotKit.Instance.LoadBubbles(BubbleSlotEnum.Expression);
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@ namespace AibisDream
|
||||
[SerializeField] private LanguageParticleManager particleManager;
|
||||
[SerializeField] private GameObject expressionView;
|
||||
[SerializeField] private LogReleasePresentationController logReleasePresentation;
|
||||
[SerializeField] private ExpressionScreenPresentationController screenPresentation;
|
||||
|
||||
[Header("默认配置")]
|
||||
[SerializeField] private List<string> defaultAnxietyPhrases = new List<string>
|
||||
@@ -111,9 +112,15 @@ namespace AibisDream
|
||||
logReleasePresentation = GetComponent<LogReleasePresentationController>();
|
||||
}
|
||||
|
||||
if (screenPresentation == null)
|
||||
{
|
||||
screenPresentation = GetComponent<ExpressionScreenPresentationController>();
|
||||
}
|
||||
|
||||
if (particleManager != null)
|
||||
{
|
||||
particleManager.SetPresentationController(logReleasePresentation);
|
||||
particleManager.SetScreenPresentationController(screenPresentation);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -123,6 +130,7 @@ namespace AibisDream
|
||||
/// </summary>
|
||||
public void OpenView()
|
||||
{
|
||||
screenPresentation?.ResetImmediate();
|
||||
// 先设置所有初始状态再打开
|
||||
if (particleManager != null)
|
||||
{
|
||||
@@ -230,6 +238,16 @@ namespace AibisDream
|
||||
yield return particleManager.WaitUntilExpressionFlowReady();
|
||||
}
|
||||
|
||||
internal IEnumerator PlayScreenDeepAndWait()
|
||||
{
|
||||
if (screenPresentation == null)
|
||||
yield break;
|
||||
|
||||
yield return screenPresentation.PlayDeepAndWait();
|
||||
}
|
||||
|
||||
internal bool HasScreenPresentation => screenPresentation != null;
|
||||
|
||||
/// <summary>
|
||||
/// 从聚焦保持态触发稳定化(概率递增 → 文字锁定 → 排列)
|
||||
/// </summary>
|
||||
@@ -256,6 +274,7 @@ namespace AibisDream
|
||||
/// </summary>
|
||||
public void CloseView()
|
||||
{
|
||||
screenPresentation?.ResetImmediate();
|
||||
ResetScreenGlitchState();
|
||||
ApplyScreenGlitchProperties();
|
||||
|
||||
|
||||
@@ -0,0 +1,404 @@
|
||||
using System.Collections;
|
||||
using AibisDream.Utility;
|
||||
using TMPro;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Localization.Components;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace AibisDream.MiniGame.Language
|
||||
{
|
||||
/// <summary>
|
||||
/// Drives the full-frame Huoshan expression screen while keeping readable text in TMP.
|
||||
/// The sprite sheet uses the original 384x216 Aseprite timing and the existing world-space
|
||||
/// Canvas remains the source of truth for interaction and dynamic language particles.
|
||||
/// </summary>
|
||||
public sealed class ExpressionScreenPresentationController : MonoBehaviour
|
||||
{
|
||||
public enum ScreenState
|
||||
{
|
||||
Reset,
|
||||
Deep,
|
||||
Panel,
|
||||
Output,
|
||||
Floating,
|
||||
Click,
|
||||
FocusHidden
|
||||
}
|
||||
|
||||
private const int DeepFirst = 0;
|
||||
private const int DeepLast = 14;
|
||||
private const int UiFlashFirst = 15;
|
||||
private const int UiFlashLast = 29;
|
||||
private const int StatusRevealFrame = 21;
|
||||
private const int RingFirst = 30;
|
||||
private const int RingLast = 40;
|
||||
private const int OutputFirst = 41;
|
||||
private const int OutputLast = 47;
|
||||
private const int OutputTextRevealFrame = 45;
|
||||
private const int FloatingFrame = 48;
|
||||
private const int ClickFirst = 49;
|
||||
private const int ClickLast = 52;
|
||||
|
||||
private const string ObjectiveLocalizationKey = "huoshan_expression_objective";
|
||||
private const string OutputLocalizationKey = "huoshan_expression_output";
|
||||
|
||||
[Header("Frame Animation")]
|
||||
[SerializeField] private SpriteRenderer screenRenderer;
|
||||
[SerializeField] private Sprite[] frames = new Sprite[53];
|
||||
|
||||
[Header("Existing TMP / Interaction")]
|
||||
[SerializeField] private TMP_Text integrationProgressText;
|
||||
[SerializeField] private TMP_Text interferenceCountText;
|
||||
[SerializeField] private Button outputButton;
|
||||
[SerializeField] private TMP_FontAsset screenFont;
|
||||
|
||||
[Header("Objective TMP (384x216 reference)")]
|
||||
[SerializeField] private Vector2 objectivePosition = new Vector2(-8.18f, -4.08f);
|
||||
[SerializeField] private Vector2 objectiveSize = new Vector2(7.4f, 0.95f);
|
||||
[SerializeField] private float objectiveFontSize = 0.28f;
|
||||
[SerializeField] private Color objectiveColor = new Color(0.78f, 0.91f, 1f, 1f);
|
||||
|
||||
private int playbackGeneration;
|
||||
private TMP_Text objectiveText;
|
||||
private TMP_Text outputText;
|
||||
private LocalizeStringEvent objectiveLocalization;
|
||||
private LocalizeStringEvent outputLocalization;
|
||||
private Material objectiveMaterial;
|
||||
private ScreenState state = ScreenState.Reset;
|
||||
|
||||
public ScreenState State => state;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
ResolveSceneReferences();
|
||||
ConfigureExistingUiAsTextOnly();
|
||||
CreateObjectiveText();
|
||||
BindStaticLocalization();
|
||||
ResetImmediate();
|
||||
}
|
||||
|
||||
private void ResolveSceneReferences()
|
||||
{
|
||||
if (screenRenderer == null)
|
||||
{
|
||||
SpriteRenderer[] renderers = GetComponentsInChildren<SpriteRenderer>(true);
|
||||
foreach (SpriteRenderer candidate in renderers)
|
||||
{
|
||||
if (candidate != null && candidate.gameObject.name == "火山释放log界面")
|
||||
{
|
||||
screenRenderer = candidate;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (outputButton != null)
|
||||
{
|
||||
outputText = outputButton.GetComponentInChildren<TMP_Text>(true);
|
||||
}
|
||||
}
|
||||
|
||||
private void ConfigureExistingUiAsTextOnly()
|
||||
{
|
||||
MakeParentImageTransparent(integrationProgressText);
|
||||
MakeParentImageTransparent(interferenceCountText);
|
||||
|
||||
if (integrationProgressText != null)
|
||||
integrationProgressText.raycastTarget = false;
|
||||
if (interferenceCountText != null)
|
||||
interferenceCountText.raycastTarget = false;
|
||||
|
||||
if (outputButton != null && outputButton.targetGraphic != null)
|
||||
{
|
||||
Color color = outputButton.targetGraphic.color;
|
||||
color.a = 0f;
|
||||
outputButton.targetGraphic.color = color;
|
||||
outputButton.targetGraphic.raycastTarget = true;
|
||||
}
|
||||
}
|
||||
|
||||
private static void MakeParentImageTransparent(TMP_Text text)
|
||||
{
|
||||
if (text == null || text.transform.parent == null)
|
||||
return;
|
||||
|
||||
Image image = text.transform.parent.GetComponent<Image>();
|
||||
if (image == null)
|
||||
return;
|
||||
|
||||
Color color = image.color;
|
||||
color.a = 0f;
|
||||
image.color = color;
|
||||
image.raycastTarget = false;
|
||||
}
|
||||
|
||||
private void CreateObjectiveText()
|
||||
{
|
||||
Canvas canvas = integrationProgressText != null
|
||||
? integrationProgressText.GetComponentInParent<Canvas>()
|
||||
: GetComponentInChildren<Canvas>(true);
|
||||
if (canvas == null)
|
||||
{
|
||||
Debug.LogError("[ExpressionScreenPresentation] ExpressView 下未找到 World Space Canvas,任务描述无法创建。");
|
||||
return;
|
||||
}
|
||||
|
||||
Transform existing = canvas.transform.Find("Expression Objective (TMP)");
|
||||
if (existing != null)
|
||||
{
|
||||
objectiveText = existing.GetComponent<TMP_Text>();
|
||||
return;
|
||||
}
|
||||
|
||||
var objectiveObject = new GameObject(
|
||||
"Expression Objective (TMP)",
|
||||
typeof(RectTransform),
|
||||
typeof(CanvasRenderer),
|
||||
typeof(TextMeshProUGUI));
|
||||
objectiveObject.layer = canvas.gameObject.layer;
|
||||
|
||||
RectTransform rect = objectiveObject.GetComponent<RectTransform>();
|
||||
rect.SetParent(canvas.transform, false);
|
||||
rect.anchorMin = new Vector2(0.5f, 0.5f);
|
||||
rect.anchorMax = new Vector2(0.5f, 0.5f);
|
||||
rect.pivot = new Vector2(0f, 0.5f);
|
||||
rect.anchoredPosition = objectivePosition;
|
||||
rect.sizeDelta = objectiveSize;
|
||||
rect.SetAsFirstSibling();
|
||||
|
||||
var text = objectiveObject.GetComponent<TextMeshProUGUI>();
|
||||
text.font = screenFont;
|
||||
if (integrationProgressText != null && integrationProgressText.fontSharedMaterial != null)
|
||||
{
|
||||
objectiveMaterial = new Material(integrationProgressText.fontSharedMaterial)
|
||||
{
|
||||
name = "Huoshan Expression Objective TMP (Runtime)"
|
||||
};
|
||||
text.fontSharedMaterial = objectiveMaterial;
|
||||
}
|
||||
text.fontSize = objectiveFontSize;
|
||||
text.fontStyle = FontStyles.Bold;
|
||||
text.color = objectiveColor;
|
||||
text.alignment = TextAlignmentOptions.Left;
|
||||
text.enableWordWrapping = true;
|
||||
text.overflowMode = TextOverflowModes.Truncate;
|
||||
text.raycastTarget = false;
|
||||
objectiveText = text;
|
||||
}
|
||||
|
||||
private void BindStaticLocalization()
|
||||
{
|
||||
objectiveLocalization = BindLocalizedText(objectiveText, ObjectiveLocalizationKey);
|
||||
outputLocalization = BindLocalizedText(outputText, OutputLocalizationKey);
|
||||
}
|
||||
|
||||
private static LocalizeStringEvent BindLocalizedText(TMP_Text text, string entryKey)
|
||||
{
|
||||
if (text == null)
|
||||
return null;
|
||||
|
||||
LocalizeStringEvent localize = text.GetComponent<LocalizeStringEvent>();
|
||||
if (localize == null)
|
||||
localize = text.gameObject.AddComponent<LocalizeStringEvent>();
|
||||
|
||||
localize.StringReference.SetReference(ConstRef.UITextTable, entryKey);
|
||||
localize.OnUpdateString.RemoveAllListeners();
|
||||
localize.OnUpdateString.AddListener(value => text.text = value);
|
||||
localize.StringReference.RefreshString();
|
||||
return localize;
|
||||
}
|
||||
|
||||
public IEnumerator PlayDeepAndWait()
|
||||
{
|
||||
int generation = BeginPlayback();
|
||||
SetOverlayVisibility(false, false, false);
|
||||
yield return PlayRangeAndWait(DeepFirst, DeepLast, generation);
|
||||
if (generation != playbackGeneration)
|
||||
yield break;
|
||||
state = ScreenState.Deep;
|
||||
}
|
||||
|
||||
public IEnumerator PlayPanelAndWait()
|
||||
{
|
||||
int generation = BeginPlayback();
|
||||
yield return PlayRangeAndWait(UiFlashFirst, UiFlashLast, generation, StatusRevealFrame, ShowStatusAndObjective);
|
||||
if (generation != playbackGeneration)
|
||||
yield break;
|
||||
|
||||
yield return PlayRangeAndWait(RingFirst, RingLast, generation);
|
||||
if (generation != playbackGeneration)
|
||||
yield break;
|
||||
|
||||
ShowStatusAndObjective();
|
||||
state = ScreenState.Panel;
|
||||
}
|
||||
|
||||
public IEnumerator PlayOutputAndWait()
|
||||
{
|
||||
int generation = BeginPlayback();
|
||||
SetOutputTextVisible(false);
|
||||
yield return PlayRangeAndWait(
|
||||
OutputFirst,
|
||||
OutputLast,
|
||||
generation,
|
||||
OutputTextRevealFrame,
|
||||
() => SetOutputTextVisible(true));
|
||||
if (generation != playbackGeneration)
|
||||
yield break;
|
||||
|
||||
SetFrame(FloatingFrame);
|
||||
SetOutputTextVisible(true);
|
||||
state = ScreenState.Floating;
|
||||
}
|
||||
|
||||
public IEnumerator PlayClickAndWait()
|
||||
{
|
||||
int generation = BeginPlayback();
|
||||
SetOutputTextVisible(true);
|
||||
yield return PlayRangeAndWait(ClickFirst, ClickLast, generation);
|
||||
if (generation != playbackGeneration)
|
||||
yield break;
|
||||
state = ScreenState.Click;
|
||||
}
|
||||
|
||||
public void PrepareForNewRound()
|
||||
{
|
||||
StopPlayback();
|
||||
SetFrame(DeepFirst);
|
||||
SetOverlayVisibility(false, false, false);
|
||||
state = ScreenState.Reset;
|
||||
}
|
||||
|
||||
public void HideOverlayForFocus()
|
||||
{
|
||||
SetOverlayVisibility(false, false, false);
|
||||
state = ScreenState.FocusHidden;
|
||||
}
|
||||
|
||||
public void ResetImmediate()
|
||||
{
|
||||
StopPlayback();
|
||||
SetFrame(DeepFirst);
|
||||
SetOverlayVisibility(false, false, false);
|
||||
if (outputButton != null)
|
||||
{
|
||||
outputButton.interactable = false;
|
||||
outputButton.gameObject.SetActive(false);
|
||||
}
|
||||
state = ScreenState.Reset;
|
||||
}
|
||||
|
||||
private int BeginPlayback()
|
||||
{
|
||||
StopPlayback();
|
||||
return playbackGeneration;
|
||||
}
|
||||
|
||||
private IEnumerator PlayRangeAndWait(
|
||||
int firstFrame,
|
||||
int lastFrame,
|
||||
int generation,
|
||||
int revealFrame = -1,
|
||||
System.Action revealAction = null)
|
||||
{
|
||||
for (int frameIndex = firstFrame; frameIndex <= lastFrame; frameIndex++)
|
||||
{
|
||||
if (generation != playbackGeneration)
|
||||
yield break;
|
||||
|
||||
SetFrame(frameIndex);
|
||||
if (frameIndex == revealFrame)
|
||||
revealAction?.Invoke();
|
||||
yield return new WaitForSeconds(GetFrameDuration(frameIndex));
|
||||
}
|
||||
}
|
||||
|
||||
private void SetFrame(int frameIndex)
|
||||
{
|
||||
if (screenRenderer == null || frames == null ||
|
||||
frameIndex < 0 || frameIndex >= frames.Length || frames[frameIndex] == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
screenRenderer.gameObject.SetActive(true);
|
||||
screenRenderer.enabled = true;
|
||||
screenRenderer.sprite = frames[frameIndex];
|
||||
}
|
||||
|
||||
private static float GetFrameDuration(int frameIndex)
|
||||
{
|
||||
switch (frameIndex)
|
||||
{
|
||||
case 0:
|
||||
case 29:
|
||||
case 47:
|
||||
case 48:
|
||||
return 0.3f;
|
||||
case 16:
|
||||
case 17:
|
||||
case 21:
|
||||
case 25:
|
||||
case 49:
|
||||
case 50:
|
||||
case 51:
|
||||
case 52:
|
||||
return 0.05f;
|
||||
default:
|
||||
return 0.1f;
|
||||
}
|
||||
}
|
||||
|
||||
private void ShowStatusAndObjective()
|
||||
{
|
||||
SetOverlayVisibility(true, true, false);
|
||||
}
|
||||
|
||||
private void SetOverlayVisibility(bool statusVisible, bool objectiveVisible, bool outputVisible)
|
||||
{
|
||||
SetStatusTextVisible(integrationProgressText, statusVisible);
|
||||
SetStatusTextVisible(interferenceCountText, statusVisible);
|
||||
if (objectiveText != null)
|
||||
objectiveText.gameObject.SetActive(objectiveVisible);
|
||||
SetOutputTextVisible(outputVisible);
|
||||
}
|
||||
|
||||
private static void SetStatusTextVisible(TMP_Text text, bool visible)
|
||||
{
|
||||
if (text == null)
|
||||
return;
|
||||
|
||||
if (visible)
|
||||
{
|
||||
var canvasGroup = text.GetComponentInParent<CanvasGroup>();
|
||||
if (canvasGroup != null)
|
||||
canvasGroup.alpha = 1f;
|
||||
}
|
||||
|
||||
if (text.transform.parent != null)
|
||||
text.transform.parent.gameObject.SetActive(visible);
|
||||
text.gameObject.SetActive(visible);
|
||||
}
|
||||
|
||||
private void SetOutputTextVisible(bool visible)
|
||||
{
|
||||
if (outputText != null)
|
||||
outputText.gameObject.SetActive(visible);
|
||||
}
|
||||
|
||||
private void StopPlayback()
|
||||
{
|
||||
playbackGeneration++;
|
||||
}
|
||||
|
||||
private void OnDestroy()
|
||||
{
|
||||
if (objectiveLocalization != null)
|
||||
objectiveLocalization.OnUpdateString.RemoveAllListeners();
|
||||
if (outputLocalization != null)
|
||||
outputLocalization.OnUpdateString.RemoveAllListeners();
|
||||
if (objectiveMaterial != null)
|
||||
Destroy(objectiveMaterial);
|
||||
}
|
||||
}
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5e1287ca2a7d4d2d90c1a668c0f5bb82
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -5,7 +5,10 @@ using System.Linq;
|
||||
using DG.Tweening;
|
||||
using TMPro;
|
||||
using UnityEngine.UI;
|
||||
using UnityEngine.Localization;
|
||||
using UnityEngine.Localization.Settings;
|
||||
using AibisDream;
|
||||
using AibisDream.Utility;
|
||||
|
||||
namespace AibisDream.MiniGame.Language
|
||||
{
|
||||
@@ -134,6 +137,7 @@ namespace AibisDream.MiniGame.Language
|
||||
[SerializeField] private Button focusSequenceButton;
|
||||
[Tooltip("火山释放log界面,触发 focus 时对其 SpriteRenderer 做淡出,重新开始时恢复")]
|
||||
[SerializeField] private SpriteRenderer releaseLogSpriteRenderer;
|
||||
[SerializeField] private ExpressionScreenPresentationController screenPresentation;
|
||||
[Tooltip("开场表达panel Timeline 名称(DirectorName 或 DirectorName/AddressableKey),播完才算表达流程完成")]
|
||||
[SerializeField] private string expressionPanelTimelineName = "火山表达模块/火山表达panel";
|
||||
[Tooltip("火山表达确认 Timeline 名称,播完才解锁按钮交互")]
|
||||
@@ -250,6 +254,11 @@ namespace AibisDream.MiniGame.Language
|
||||
private float lieEdgeJitter;
|
||||
private float truthGatherProgress;
|
||||
private LogReleasePresentationController presentationController;
|
||||
private const string IntegrationLocalizationKey = "huoshan_expression_integration";
|
||||
private const string InterferenceLocalizationKey = "huoshan_expression_interference";
|
||||
private string integrationStatusFormat = "{0}% 语言整合完成度";
|
||||
private string interferenceStatusFormat = "{0} 处异常思绪仍在干扰表达";
|
||||
private Coroutine statusLocalizationRoutine;
|
||||
private const string LieCompressionTweenId = "HuoshanLieEdgeCompression";
|
||||
private const string TruthGatherTweenId = "HuoshanTruthGather";
|
||||
private const string FocusInterferenceTweenId = "HuoshanFocusInterference";
|
||||
@@ -286,9 +295,51 @@ namespace AibisDream.MiniGame.Language
|
||||
|
||||
private void Start()
|
||||
{
|
||||
ResolveScreenPresentation();
|
||||
LocalizationSettings.SelectedLocaleChanged += HandleLocaleChanged;
|
||||
statusLocalizationRoutine = StartCoroutine(RefreshStatusLocalization());
|
||||
// Start 中不再自动初始化,等待外部调用 InitializeSystem
|
||||
}
|
||||
|
||||
private void ResolveScreenPresentation()
|
||||
{
|
||||
if (screenPresentation == null)
|
||||
screenPresentation = GetComponentInParent<ExpressionScreenPresentationController>(true);
|
||||
}
|
||||
|
||||
private void HandleLocaleChanged(Locale locale)
|
||||
{
|
||||
if (!isActiveAndEnabled)
|
||||
return;
|
||||
|
||||
if (statusLocalizationRoutine != null)
|
||||
StopCoroutine(statusLocalizationRoutine);
|
||||
statusLocalizationRoutine = StartCoroutine(RefreshStatusLocalization());
|
||||
}
|
||||
|
||||
private IEnumerator RefreshStatusLocalization()
|
||||
{
|
||||
yield return LocalizationSettings.InitializationOperation;
|
||||
|
||||
var integrationOperation = LocalizationSettings.StringDatabase.GetLocalizedStringAsync(
|
||||
ConstRef.UITextTable,
|
||||
IntegrationLocalizationKey);
|
||||
yield return integrationOperation;
|
||||
if (!string.IsNullOrEmpty(integrationOperation.Result))
|
||||
integrationStatusFormat = integrationOperation.Result;
|
||||
|
||||
var interferenceOperation = LocalizationSettings.StringDatabase.GetLocalizedStringAsync(
|
||||
ConstRef.UITextTable,
|
||||
InterferenceLocalizationKey);
|
||||
yield return interferenceOperation;
|
||||
if (!string.IsNullOrEmpty(interferenceOperation.Result))
|
||||
interferenceStatusFormat = interferenceOperation.Result;
|
||||
|
||||
statusLocalizationRoutine = null;
|
||||
if (isInitialized)
|
||||
UpdateStatusUI();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 初始化系统(可以由外部调用,用于配置游戏参数)
|
||||
/// </summary>
|
||||
@@ -373,6 +424,8 @@ namespace AibisDream.MiniGame.Language
|
||||
if (!isInitialized)
|
||||
yield break;
|
||||
|
||||
ResolveScreenPresentation();
|
||||
screenPresentation?.PrepareForNewRound();
|
||||
StopFocusTransitionRoutine();
|
||||
KillCompletionUiTweens();
|
||||
resolveTotalDurationOverride = -1f;
|
||||
@@ -1286,7 +1339,15 @@ namespace AibisDream.MiniGame.Language
|
||||
|
||||
private IEnumerator PlayConfirmTimelineAndUnlockButton()
|
||||
{
|
||||
if (!string.IsNullOrEmpty(expressionConfirmTimelineName) && TimelineCenter.Instance != null)
|
||||
ResolveScreenPresentation();
|
||||
if (screenPresentation != null)
|
||||
{
|
||||
yield return screenPresentation.PlayOutputAndWait();
|
||||
if (screenPresentation == null ||
|
||||
screenPresentation.State != ExpressionScreenPresentationController.ScreenState.Floating)
|
||||
yield break;
|
||||
}
|
||||
else if (!string.IsNullOrEmpty(expressionConfirmTimelineName) && TimelineCenter.Instance != null)
|
||||
{
|
||||
yield return TimelineCenter.Instance.PlayTimelineAsync(expressionConfirmTimelineName);
|
||||
}
|
||||
@@ -1303,6 +1364,29 @@ namespace AibisDream.MiniGame.Language
|
||||
if (completionPhase != CompletionPhase.Completed)
|
||||
return;
|
||||
|
||||
if (focusSequenceButton != null)
|
||||
focusSequenceButton.interactable = false;
|
||||
|
||||
ResolveScreenPresentation();
|
||||
if (screenPresentation != null)
|
||||
{
|
||||
StartCoroutine(PlayClickThenBeginFocus());
|
||||
return;
|
||||
}
|
||||
|
||||
BeginFocusSequence();
|
||||
}
|
||||
|
||||
private IEnumerator PlayClickThenBeginFocus()
|
||||
{
|
||||
yield return screenPresentation.PlayClickAndWait();
|
||||
if (screenPresentation == null ||
|
||||
screenPresentation.State != ExpressionScreenPresentationController.ScreenState.Click)
|
||||
{
|
||||
yield break;
|
||||
}
|
||||
|
||||
screenPresentation.HideOverlayForFocus();
|
||||
BeginFocusSequence();
|
||||
}
|
||||
|
||||
@@ -1837,6 +1921,11 @@ namespace AibisDream.MiniGame.Language
|
||||
presentationController = controller;
|
||||
}
|
||||
|
||||
public void SetScreenPresentationController(ExpressionScreenPresentationController controller)
|
||||
{
|
||||
screenPresentation = controller;
|
||||
}
|
||||
|
||||
public void BeginLieEdgeCompression(float duration, float jitterAmount)
|
||||
{
|
||||
if (completionPhase != CompletionPhase.FocusHolding)
|
||||
@@ -3153,7 +3242,20 @@ namespace AibisDream.MiniGame.Language
|
||||
/// </summary>
|
||||
private IEnumerator PlayExpressionPanelThenReady()
|
||||
{
|
||||
if (!string.IsNullOrEmpty(expressionPanelTimelineName) && TimelineCenter.Instance != null)
|
||||
ResolveScreenPresentation();
|
||||
if (screenPresentation != null)
|
||||
{
|
||||
if (languageDeepPanel1 != null)
|
||||
languageDeepPanel1.SetActive(true);
|
||||
if (languageDeepPanel2 != null)
|
||||
languageDeepPanel2.SetActive(true);
|
||||
|
||||
yield return screenPresentation.PlayPanelAndWait();
|
||||
if (screenPresentation == null ||
|
||||
screenPresentation.State != ExpressionScreenPresentationController.ScreenState.Panel)
|
||||
yield break;
|
||||
}
|
||||
else if (!string.IsNullOrEmpty(expressionPanelTimelineName) && TimelineCenter.Instance != null)
|
||||
{
|
||||
// 火山表达 panel timeline 驱动 panel1/2,播放前需先激活(若之前被 fade 过,需重置 alpha)
|
||||
if (languageDeepPanel1 != null)
|
||||
@@ -3301,13 +3403,13 @@ namespace AibisDream.MiniGame.Language
|
||||
{
|
||||
float ratio = CalculateIntegrationRatio();
|
||||
int percent = Mathf.RoundToInt(ratio * 100f);
|
||||
integrationProgressText.text = $"{percent}% 语言整合完成度";
|
||||
integrationProgressText.text = string.Format(integrationStatusFormat, percent);
|
||||
}
|
||||
|
||||
if (interferenceCountText != null)
|
||||
{
|
||||
int interferenceCount = CountInterferenceNodes();
|
||||
interferenceCountText.text = $"{interferenceCount} 处异常思绪仍在干扰表达";
|
||||
interferenceCountText.text = string.Format(interferenceStatusFormat, interferenceCount);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3409,6 +3511,11 @@ namespace AibisDream.MiniGame.Language
|
||||
}
|
||||
}
|
||||
|
||||
private void OnDestroy()
|
||||
{
|
||||
LocalizationSettings.SelectedLocaleChanged -= HandleLocaleChanged;
|
||||
}
|
||||
|
||||
#if UNITY_EDITOR
|
||||
private void OnDrawGizmosSelected()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user