Merge branch 'develop' into 'fearure/Yarn_FP'
Develop See merge request aibis-dream/aibis-dream!203
This commit is contained in:
@@ -1,9 +0,0 @@
|
||||
using UnityEditor;
|
||||
|
||||
namespace AibisDream.SystemEditor
|
||||
{
|
||||
[CustomEditor(typeof(EngineSystem))]
|
||||
public class EngineSystemEditor : SystemHasDataEditor
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4f1fc42dd0984554846404f2cc1e1b02
|
||||
timeCreated: 1732926273
|
||||
Binary file not shown.
@@ -97,7 +97,7 @@ ScriptedImporter:
|
||||
- name: "\u5DE6\u4FA7\u754C\u9762"
|
||||
originalName:
|
||||
pivot: {x: 0.5, y: 0.5}
|
||||
alignment: 0
|
||||
alignment: 9
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
@@ -122,8 +122,8 @@ ScriptedImporter:
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 2599
|
||||
y: 6657
|
||||
x: 4056
|
||||
y: 1378
|
||||
width: 20
|
||||
height: 43
|
||||
spriteID: d7537a977e1aff249a7a37ce740f186d
|
||||
@@ -134,7 +134,7 @@ ScriptedImporter:
|
||||
indices:
|
||||
edges: []
|
||||
tessellationDetail: 0
|
||||
uvTransform: {x: 2599, y: 6657}
|
||||
uvTransform: {x: 4056, y: 1378}
|
||||
spritePosition: {x: 1294, y: 1305}
|
||||
- name: "\u8F6C\u901F\u8868"
|
||||
originalName:
|
||||
@@ -164,8 +164,8 @@ ScriptedImporter:
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 2143
|
||||
y: 6615
|
||||
x: 3984
|
||||
y: 224
|
||||
width: 86
|
||||
height: 86
|
||||
spriteID: 0d86bbea963bd064fa75f3e32ddc6171
|
||||
@@ -176,7 +176,7 @@ ScriptedImporter:
|
||||
indices:
|
||||
edges: []
|
||||
tessellationDetail: 0
|
||||
uvTransform: {x: 2143, y: 6615}
|
||||
uvTransform: {x: 3984, y: 224}
|
||||
spritePosition: {x: 1182, y: 1058}
|
||||
- name: "\u9F7F\u8F6E\u6258\u76D8"
|
||||
originalName:
|
||||
@@ -248,8 +248,8 @@ ScriptedImporter:
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 2660
|
||||
y: 6441
|
||||
x: 3852
|
||||
y: 940
|
||||
width: 162
|
||||
height: 162
|
||||
spriteID: ce498871e2f93464682178488c9f2eeb
|
||||
@@ -260,7 +260,7 @@ ScriptedImporter:
|
||||
indices:
|
||||
edges: []
|
||||
tessellationDetail: 0
|
||||
uvTransform: {x: 2660, y: 6441}
|
||||
uvTransform: {x: 3852, y: 940}
|
||||
spritePosition: {x: 2165, y: 999}
|
||||
- name: "\u9AD8\u7EA7\u9F7F\u8F6EA"
|
||||
originalName:
|
||||
@@ -269,8 +269,8 @@ ScriptedImporter:
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 2317
|
||||
y: 6441
|
||||
x: 3852
|
||||
y: 593
|
||||
width: 166
|
||||
height: 165
|
||||
spriteID: d1eef4db336a0a44b97a09b6c3f59b51
|
||||
@@ -281,7 +281,7 @@ ScriptedImporter:
|
||||
indices:
|
||||
edges: []
|
||||
tessellationDetail: 0
|
||||
uvTransform: {x: 2317, y: 6441}
|
||||
uvTransform: {x: 3852, y: 593}
|
||||
spritePosition: {x: 1957, y: 1000}
|
||||
- name: "\u574F\u9F7F\u8F6EC"
|
||||
originalName:
|
||||
@@ -290,8 +290,8 @@ ScriptedImporter:
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 3347
|
||||
y: 6441
|
||||
x: 3852
|
||||
y: 1579
|
||||
width: 144
|
||||
height: 154
|
||||
spriteID: 5fe6954d52480e344a63304c96ad02ec
|
||||
@@ -302,7 +302,7 @@ ScriptedImporter:
|
||||
indices:
|
||||
edges: []
|
||||
tessellationDetail: 0
|
||||
uvTransform: {x: 3347, y: 6441}
|
||||
uvTransform: {x: 3852, y: 1579}
|
||||
spritePosition: {x: 531, y: 1262}
|
||||
- name: "\u574F\u9F7F\u8F6EB"
|
||||
originalName:
|
||||
@@ -311,8 +311,8 @@ ScriptedImporter:
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 2830
|
||||
y: 6441
|
||||
x: 3852
|
||||
y: 1110
|
||||
width: 154
|
||||
height: 166
|
||||
spriteID: 7f6287eef393ecf4b811f77f2530ab60
|
||||
@@ -323,7 +323,7 @@ ScriptedImporter:
|
||||
indices:
|
||||
edges: []
|
||||
tessellationDetail: 0
|
||||
uvTransform: {x: 2830, y: 6441}
|
||||
uvTransform: {x: 3852, y: 1110}
|
||||
spritePosition: {x: 624, y: 1096}
|
||||
- name: "\u574F\u9F7F\u8F6EA"
|
||||
originalName:
|
||||
@@ -332,8 +332,8 @@ ScriptedImporter:
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 2491
|
||||
y: 6441
|
||||
x: 3852
|
||||
y: 766
|
||||
width: 161
|
||||
height: 166
|
||||
spriteID: 892f0014245c39c48a1574f6adecda1a
|
||||
@@ -344,7 +344,7 @@ ScriptedImporter:
|
||||
indices:
|
||||
edges: []
|
||||
tessellationDetail: 0
|
||||
uvTransform: {x: 2491, y: 6441}
|
||||
uvTransform: {x: 3852, y: 766}
|
||||
spritePosition: {x: 442, y: 1104}
|
||||
- name: "\u788E\u7247E"
|
||||
originalName:
|
||||
@@ -353,8 +353,8 @@ ScriptedImporter:
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 2599
|
||||
y: 6615
|
||||
x: 4014
|
||||
y: 1378
|
||||
width: 34
|
||||
height: 34
|
||||
spriteID: 00173d16f3962a34da66f56604ff84fe
|
||||
@@ -365,7 +365,7 @@ ScriptedImporter:
|
||||
indices:
|
||||
edges: []
|
||||
tessellationDetail: 0
|
||||
uvTransform: {x: 2599, y: 6615}
|
||||
uvTransform: {x: 4014, y: 1378}
|
||||
spritePosition: {x: 946, y: 777}
|
||||
- name: "\u788E\u7247D"
|
||||
originalName:
|
||||
@@ -374,8 +374,8 @@ ScriptedImporter:
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 2660
|
||||
y: 6611
|
||||
x: 3675
|
||||
y: 5549
|
||||
width: 162
|
||||
height: 105
|
||||
spriteID: 25a080d1c30706f4b827080b388fd6ed
|
||||
@@ -386,7 +386,7 @@ ScriptedImporter:
|
||||
indices:
|
||||
edges: []
|
||||
tessellationDetail: 0
|
||||
uvTransform: {x: 2660, y: 6611}
|
||||
uvTransform: {x: 3675, y: 5549}
|
||||
spritePosition: {x: 794, y: 772}
|
||||
- name: "\u788E\u7247C"
|
||||
originalName:
|
||||
@@ -395,8 +395,8 @@ ScriptedImporter:
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 2830
|
||||
y: 6615
|
||||
x: 3845
|
||||
y: 5549
|
||||
width: 114
|
||||
height: 92
|
||||
spriteID: 7f63a61d19250aa44ac37596276ace1c
|
||||
@@ -407,7 +407,7 @@ ScriptedImporter:
|
||||
indices:
|
||||
edges: []
|
||||
tessellationDetail: 0
|
||||
uvTransform: {x: 2830, y: 6615}
|
||||
uvTransform: {x: 3845, y: 5549}
|
||||
spritePosition: {x: 659, y: 780}
|
||||
- name: "\u788E\u7247B"
|
||||
originalName:
|
||||
@@ -416,8 +416,8 @@ ScriptedImporter:
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 2237
|
||||
y: 6615
|
||||
x: 4014
|
||||
y: 1284
|
||||
width: 68
|
||||
height: 86
|
||||
spriteID: 0edfdf4071c16ce4197d75fa6a7c4f0d
|
||||
@@ -428,7 +428,7 @@ ScriptedImporter:
|
||||
indices:
|
||||
edges: []
|
||||
tessellationDetail: 0
|
||||
uvTransform: {x: 2237, y: 6615}
|
||||
uvTransform: {x: 4014, y: 1284}
|
||||
spritePosition: {x: 592, y: 782}
|
||||
- name: "\u5531\u9488"
|
||||
originalName:
|
||||
@@ -437,8 +437,8 @@ ScriptedImporter:
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 3675
|
||||
y: 5577
|
||||
x: 4014
|
||||
y: 1110
|
||||
width: 76
|
||||
height: 73
|
||||
spriteID: 2ddca43741137c54ba5d7e72ff04353c
|
||||
@@ -449,7 +449,7 @@ ScriptedImporter:
|
||||
indices:
|
||||
edges: []
|
||||
tessellationDetail: 0
|
||||
uvTransform: {x: 3675, y: 5577}
|
||||
uvTransform: {x: 4014, y: 1110}
|
||||
spritePosition: {x: 1504, y: 990}
|
||||
- name: "\u5531\u9488\u81C2"
|
||||
originalName:
|
||||
@@ -458,8 +458,8 @@ ScriptedImporter:
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 3675
|
||||
y: 5549
|
||||
x: 3175
|
||||
y: 5554
|
||||
width: 293
|
||||
height: 20
|
||||
spriteID: 6adc419d9b00341419026a5802c9d8d6
|
||||
@@ -470,7 +470,7 @@ ScriptedImporter:
|
||||
indices:
|
||||
edges: []
|
||||
tessellationDetail: 0
|
||||
uvTransform: {x: 3675, y: 5549}
|
||||
uvTransform: {x: 3175, y: 5554}
|
||||
spritePosition: {x: 1606, y: 1026}
|
||||
- name: "\u53D8\u901F\u7BB1\u9F7F\u8F6EA"
|
||||
originalName:
|
||||
@@ -479,8 +479,8 @@ ScriptedImporter:
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 2992
|
||||
y: 6441
|
||||
x: 3852
|
||||
y: 1284
|
||||
width: 154
|
||||
height: 154
|
||||
spriteID: 6c71322698065a54eb5e2a1fb4f86514
|
||||
@@ -491,7 +491,7 @@ ScriptedImporter:
|
||||
indices:
|
||||
edges: []
|
||||
tessellationDetail: 0
|
||||
uvTransform: {x: 2992, y: 6441}
|
||||
uvTransform: {x: 3852, y: 1284}
|
||||
spritePosition: {x: 1454, y: 1050}
|
||||
- name: "\u53D8\u901F\u7BB1\u9F7F\u8F6EB"
|
||||
originalName:
|
||||
@@ -501,7 +501,7 @@ ScriptedImporter:
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 3962
|
||||
y: 5054
|
||||
y: 5192
|
||||
width: 128
|
||||
height: 130
|
||||
spriteID: d2f1a521626f14145b0d2b884c5dbf6f
|
||||
@@ -512,7 +512,7 @@ ScriptedImporter:
|
||||
indices:
|
||||
edges: []
|
||||
tessellationDetail: 0
|
||||
uvTransform: {x: 3962, y: 5054}
|
||||
uvTransform: {x: 3962, y: 5192}
|
||||
spritePosition: {x: 1406, y: 946}
|
||||
- name: "\u53D8\u901F\u7BB1\u9F7F\u8F6EC"
|
||||
originalName:
|
||||
@@ -521,8 +521,8 @@ ScriptedImporter:
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 2143
|
||||
y: 6441
|
||||
x: 3852
|
||||
y: 419
|
||||
width: 166
|
||||
height: 166
|
||||
spriteID: 33e8c8bbebb24d34286d612f0b261daa
|
||||
@@ -533,7 +533,7 @@ ScriptedImporter:
|
||||
indices:
|
||||
edges: []
|
||||
tessellationDetail: 0
|
||||
uvTransform: {x: 2143, y: 6441}
|
||||
uvTransform: {x: 3852, y: 419}
|
||||
spritePosition: {x: 1476, y: 824}
|
||||
- name: "\u53D8\u901F\u7BB1\u5531\u7247\u9F7F\u8F6E"
|
||||
originalName:
|
||||
@@ -542,8 +542,8 @@ ScriptedImporter:
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 3154
|
||||
y: 6574
|
||||
x: 3962
|
||||
y: 5054
|
||||
width: 130
|
||||
height: 130
|
||||
spriteID: db22083879843b843b69dc1550fe5bfc
|
||||
@@ -554,7 +554,7 @@ ScriptedImporter:
|
||||
indices:
|
||||
edges: []
|
||||
tessellationDetail: 0
|
||||
uvTransform: {x: 3154, y: 6574}
|
||||
uvTransform: {x: 3962, y: 5054}
|
||||
spritePosition: {x: 1318, y: 859}
|
||||
- name: "\u53D8\u901F\u7BB1\u8F93\u51FA\u9F7F\u8F6E"
|
||||
originalName:
|
||||
@@ -563,8 +563,8 @@ ScriptedImporter:
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 2599
|
||||
y: 6708
|
||||
x: 4056
|
||||
y: 1429
|
||||
width: 0
|
||||
height: 0
|
||||
spriteID: 9e9c52a5ed9bedc49995cb646b5911c5
|
||||
@@ -575,7 +575,7 @@ ScriptedImporter:
|
||||
indices:
|
||||
edges: []
|
||||
tessellationDetail: 0
|
||||
uvTransform: {x: 2437, y: 6548}
|
||||
uvTransform: {x: 3894, y: 1269}
|
||||
spritePosition: {x: 1782, y: 1048}
|
||||
- name: "\u53D8\u901F\u7BB1"
|
||||
originalName:
|
||||
@@ -605,8 +605,8 @@ ScriptedImporter:
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 3154
|
||||
y: 6441
|
||||
x: 3852
|
||||
y: 1446
|
||||
width: 185
|
||||
height: 125
|
||||
spriteID: fa945402410b1f347a1469cfe5243495
|
||||
@@ -617,8 +617,50 @@ ScriptedImporter:
|
||||
indices:
|
||||
edges: []
|
||||
tessellationDetail: 0
|
||||
uvTransform: {x: 3154, y: 6441}
|
||||
uvTransform: {x: 3852, y: 1446}
|
||||
spritePosition: {x: 1073, y: 1212}
|
||||
- name: "\u62C9\u7EF3\u906E\u7F69"
|
||||
originalName:
|
||||
pivot: {x: 0.5, y: 0.5}
|
||||
alignment: 0
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 3983
|
||||
y: 5675
|
||||
width: 108
|
||||
height: 345
|
||||
spriteID: 96589d249466f6d4db2a673bb8211c54
|
||||
spriteBone: []
|
||||
spriteOutline: []
|
||||
vertices: []
|
||||
spritePhysicsOutline: []
|
||||
indices:
|
||||
edges: []
|
||||
tessellationDetail: 0
|
||||
uvTransform: {x: 3981, y: 5674}
|
||||
spritePosition: {x: 747, y: 1025}
|
||||
- name: "\u62C9\u7EF3"
|
||||
originalName:
|
||||
pivot: {x: 0.5, y: 0.03}
|
||||
alignment: 9
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 3852
|
||||
y: 4
|
||||
width: 124
|
||||
height: 407
|
||||
spriteID: bdee20e596cc4d74fade29040e21b79f
|
||||
spriteBone: []
|
||||
spriteOutline: []
|
||||
vertices: []
|
||||
spritePhysicsOutline: []
|
||||
indices:
|
||||
edges: []
|
||||
tessellationDetail: 0
|
||||
uvTransform: {x: 3852, y: 4}
|
||||
spritePosition: {x: 738, y: 958}
|
||||
- name: "\u5F15\u64CE\u5916\u9F7F\u8F6E"
|
||||
originalName:
|
||||
pivot: {x: 0.5, y: 0.5}
|
||||
@@ -647,8 +689,8 @@ ScriptedImporter:
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 2317
|
||||
y: 6614
|
||||
x: 3984
|
||||
y: 318
|
||||
width: 86
|
||||
height: 86
|
||||
spriteID: 51b6debf8b8e0c342962b76031b04cdc
|
||||
@@ -659,7 +701,7 @@ ScriptedImporter:
|
||||
indices:
|
||||
edges: []
|
||||
tessellationDetail: 0
|
||||
uvTransform: {x: 2317, y: 6614}
|
||||
uvTransform: {x: 3984, y: 318}
|
||||
spritePosition: {x: 900, y: 1231}
|
||||
- name: "\u5FC3\u810F\u76D6\u5B50"
|
||||
originalName:
|
||||
@@ -689,8 +731,8 @@ ScriptedImporter:
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 3983
|
||||
y: 5675
|
||||
x: 3852
|
||||
y: 1741
|
||||
width: 16
|
||||
height: 243
|
||||
spriteID: d1fd39ae7def9f8429306cbdf5b6226c
|
||||
@@ -701,7 +743,7 @@ ScriptedImporter:
|
||||
indices:
|
||||
edges: []
|
||||
tessellationDetail: 0
|
||||
uvTransform: {x: 3983, y: 5675}
|
||||
uvTransform: {x: 3852, y: 1741}
|
||||
spritePosition: {x: 1287, y: 1618}
|
||||
- name: "\u8FDB\u6C14\u5EA6\u91CF"
|
||||
originalName:
|
||||
@@ -710,8 +752,8 @@ ScriptedImporter:
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 3983
|
||||
y: 5926
|
||||
x: 3876
|
||||
y: 1741
|
||||
width: 16
|
||||
height: 243
|
||||
spriteID: d504cc99c8f5dc14a9dca37818f3686a
|
||||
@@ -722,7 +764,7 @@ ScriptedImporter:
|
||||
indices:
|
||||
edges: []
|
||||
tessellationDetail: 0
|
||||
uvTransform: {x: 3983, y: 5926}
|
||||
uvTransform: {x: 3876, y: 1741}
|
||||
spritePosition: {x: 1204, y: 1618}
|
||||
- name: "\u6C14\u95E8\u62C9\u6746"
|
||||
originalName:
|
||||
@@ -731,8 +773,8 @@ ScriptedImporter:
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 3962
|
||||
y: 5302
|
||||
x: 3876
|
||||
y: 1992
|
||||
width: 106
|
||||
height: 28
|
||||
spriteID: 0234a2ed53d4a2d44a7c0c9ae9a4c0b7
|
||||
@@ -743,7 +785,7 @@ ScriptedImporter:
|
||||
indices:
|
||||
edges: []
|
||||
tessellationDetail: 0
|
||||
uvTransform: {x: 3962, y: 5302}
|
||||
uvTransform: {x: 3876, y: 1992}
|
||||
spritePosition: {x: 1031, y: 1666}
|
||||
- name: "\u62C9\u6746\u6C60"
|
||||
originalName:
|
||||
@@ -773,8 +815,8 @@ ScriptedImporter:
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 2607
|
||||
y: 6708
|
||||
x: 4064
|
||||
y: 1429
|
||||
width: 0
|
||||
height: 0
|
||||
spriteID: c4af958de8260c04c998bba16422774b
|
||||
@@ -785,7 +827,7 @@ ScriptedImporter:
|
||||
indices:
|
||||
edges: []
|
||||
tessellationDetail: 0
|
||||
uvTransform: {x: 2421, y: 6522}
|
||||
uvTransform: {x: 3878, y: 1243}
|
||||
spritePosition: {x: 1459, y: 1570}
|
||||
- name: "\u5FC3\u810F\u9F7F\u8F6EB"
|
||||
originalName:
|
||||
@@ -794,8 +836,8 @@ ScriptedImporter:
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 2615
|
||||
y: 6708
|
||||
x: 4072
|
||||
y: 1429
|
||||
width: 0
|
||||
height: 0
|
||||
spriteID: 9e1fb2c4e71c07348835a03b647f2390
|
||||
@@ -806,7 +848,7 @@ ScriptedImporter:
|
||||
indices:
|
||||
edges: []
|
||||
tessellationDetail: 0
|
||||
uvTransform: {x: 2409, y: 6501}
|
||||
uvTransform: {x: 3866, y: 1222}
|
||||
spritePosition: {x: 1344, y: 1445}
|
||||
- name: "\u5FC3\u810F\u9F7F\u8F6EC"
|
||||
originalName:
|
||||
@@ -815,8 +857,8 @@ ScriptedImporter:
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 2599
|
||||
y: 6716
|
||||
x: 4056
|
||||
y: 1437
|
||||
width: 0
|
||||
height: 0
|
||||
spriteID: 10cfd30a75e3f13498f0e156ee72fd9a
|
||||
@@ -827,7 +869,7 @@ ScriptedImporter:
|
||||
indices:
|
||||
edges: []
|
||||
tessellationDetail: 0
|
||||
uvTransform: {x: 2439, y: 6557}
|
||||
uvTransform: {x: 3896, y: 1278}
|
||||
spritePosition: {x: 1295, y: 1611}
|
||||
- name: "\u5FC3\u810F\u9F7F\u8F6ED"
|
||||
originalName:
|
||||
@@ -836,8 +878,8 @@ ScriptedImporter:
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 2607
|
||||
y: 6716
|
||||
x: 4064
|
||||
y: 1437
|
||||
width: 0
|
||||
height: 0
|
||||
spriteID: 7b3c12797bd298e498872da80d3c9774
|
||||
@@ -848,7 +890,7 @@ ScriptedImporter:
|
||||
indices:
|
||||
edges: []
|
||||
tessellationDetail: 0
|
||||
uvTransform: {x: 2371, y: 6480}
|
||||
uvTransform: {x: 3828, y: 1201}
|
||||
spritePosition: {x: 1622, y: 1454}
|
||||
- name: "\u5FC3\u810F\u9F7F\u8F6EE"
|
||||
originalName:
|
||||
@@ -857,8 +899,8 @@ ScriptedImporter:
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 2615
|
||||
y: 6716
|
||||
x: 4072
|
||||
y: 1437
|
||||
width: 0
|
||||
height: 0
|
||||
spriteID: b3746e118421a8f469f19af5c28ae880
|
||||
@@ -869,7 +911,7 @@ ScriptedImporter:
|
||||
indices:
|
||||
edges: []
|
||||
tessellationDetail: 0
|
||||
uvTransform: {x: 2485, y: 6586}
|
||||
uvTransform: {x: 3942, y: 1307}
|
||||
spritePosition: {x: 1541, y: 1536}
|
||||
- name: "\u5FC3\u810F\u5F15\u64CE"
|
||||
originalName:
|
||||
@@ -899,8 +941,8 @@ ScriptedImporter:
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 3962
|
||||
y: 5192
|
||||
x: 3967
|
||||
y: 5549
|
||||
width: 100
|
||||
height: 102
|
||||
spriteID: 083fac6154604144c8a51ad9da1359f8
|
||||
@@ -911,7 +953,7 @@ ScriptedImporter:
|
||||
indices:
|
||||
edges: []
|
||||
tessellationDetail: 0
|
||||
uvTransform: {x: 3962, y: 5192}
|
||||
uvTransform: {x: 3967, y: 5549}
|
||||
spritePosition: {x: 1990, y: 1443}
|
||||
- name: "\u80C3\u63D2\u5B54"
|
||||
originalName:
|
||||
@@ -920,8 +962,8 @@ ScriptedImporter:
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 2992
|
||||
y: 6603
|
||||
x: 3984
|
||||
y: 4
|
||||
width: 100
|
||||
height: 102
|
||||
spriteID: f29558bb0c039ec4f96c64e296bbd05b
|
||||
@@ -932,7 +974,7 @@ ScriptedImporter:
|
||||
indices:
|
||||
edges: []
|
||||
tessellationDetail: 0
|
||||
uvTransform: {x: 2992, y: 6603}
|
||||
uvTransform: {x: 3984, y: 4}
|
||||
spritePosition: {x: 1018, y: 206}
|
||||
- name: "\u80C3"
|
||||
originalName:
|
||||
@@ -962,8 +1004,8 @@ ScriptedImporter:
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 2491
|
||||
y: 6615
|
||||
x: 3984
|
||||
y: 114
|
||||
width: 100
|
||||
height: 102
|
||||
spriteID: 435ef27b284ac1242a7e286c6c25d48b
|
||||
@@ -974,7 +1016,7 @@ ScriptedImporter:
|
||||
indices:
|
||||
edges: []
|
||||
tessellationDetail: 0
|
||||
uvTransform: {x: 2491, y: 6615}
|
||||
uvTransform: {x: 3984, y: 114}
|
||||
spritePosition: {x: 1783, y: 446}
|
||||
- name: "\u809D"
|
||||
originalName:
|
||||
@@ -1159,7 +1201,7 @@ ScriptedImporter:
|
||||
parentIndex: 1
|
||||
spriteID: d7537a977e1aff249a7a37ce740f186d
|
||||
layerID: 229
|
||||
mosaicPosition: {x: 2599, y: 6657}
|
||||
mosaicPosition: {x: 4056, y: 1378}
|
||||
flatten: 0
|
||||
isImported: 1
|
||||
isVisible: 1
|
||||
@@ -1179,7 +1221,7 @@ ScriptedImporter:
|
||||
parentIndex: 1
|
||||
spriteID: 0d86bbea963bd064fa75f3e32ddc6171
|
||||
layerID: 260
|
||||
mosaicPosition: {x: 2143, y: 6615}
|
||||
mosaicPosition: {x: 3984, y: 224}
|
||||
flatten: 0
|
||||
isImported: 1
|
||||
isVisible: 1
|
||||
@@ -1229,7 +1271,7 @@ ScriptedImporter:
|
||||
parentIndex: 8
|
||||
spriteID: ce498871e2f93464682178488c9f2eeb
|
||||
layerID: 786
|
||||
mosaicPosition: {x: 2660, y: 6441}
|
||||
mosaicPosition: {x: 3852, y: 940}
|
||||
flatten: 0
|
||||
isImported: 1
|
||||
isVisible: 1
|
||||
@@ -1239,7 +1281,7 @@ ScriptedImporter:
|
||||
parentIndex: 8
|
||||
spriteID: d1eef4db336a0a44b97a09b6c3f59b51
|
||||
layerID: 712
|
||||
mosaicPosition: {x: 2317, y: 6441}
|
||||
mosaicPosition: {x: 3852, y: 593}
|
||||
flatten: 0
|
||||
isImported: 1
|
||||
isVisible: 1
|
||||
@@ -1259,7 +1301,7 @@ ScriptedImporter:
|
||||
parentIndex: 11
|
||||
spriteID: 5fe6954d52480e344a63304c96ad02ec
|
||||
layerID: 698
|
||||
mosaicPosition: {x: 3347, y: 6441}
|
||||
mosaicPosition: {x: 3852, y: 1579}
|
||||
flatten: 0
|
||||
isImported: 1
|
||||
isVisible: 1
|
||||
@@ -1269,7 +1311,7 @@ ScriptedImporter:
|
||||
parentIndex: 11
|
||||
spriteID: 7f6287eef393ecf4b811f77f2530ab60
|
||||
layerID: 697
|
||||
mosaicPosition: {x: 2830, y: 6441}
|
||||
mosaicPosition: {x: 3852, y: 1110}
|
||||
flatten: 0
|
||||
isImported: 1
|
||||
isVisible: 1
|
||||
@@ -1279,7 +1321,7 @@ ScriptedImporter:
|
||||
parentIndex: 11
|
||||
spriteID: 892f0014245c39c48a1574f6adecda1a
|
||||
layerID: 687
|
||||
mosaicPosition: {x: 2491, y: 6441}
|
||||
mosaicPosition: {x: 3852, y: 766}
|
||||
flatten: 0
|
||||
isImported: 1
|
||||
isVisible: 1
|
||||
@@ -1299,7 +1341,7 @@ ScriptedImporter:
|
||||
parentIndex: 15
|
||||
spriteID: 00173d16f3962a34da66f56604ff84fe
|
||||
layerID: 693
|
||||
mosaicPosition: {x: 2599, y: 6615}
|
||||
mosaicPosition: {x: 4014, y: 1378}
|
||||
flatten: 0
|
||||
isImported: 1
|
||||
isVisible: 1
|
||||
@@ -1309,7 +1351,7 @@ ScriptedImporter:
|
||||
parentIndex: 15
|
||||
spriteID: 25a080d1c30706f4b827080b388fd6ed
|
||||
layerID: 691
|
||||
mosaicPosition: {x: 2660, y: 6611}
|
||||
mosaicPosition: {x: 3675, y: 5549}
|
||||
flatten: 0
|
||||
isImported: 1
|
||||
isVisible: 1
|
||||
@@ -1319,7 +1361,7 @@ ScriptedImporter:
|
||||
parentIndex: 15
|
||||
spriteID: 7f63a61d19250aa44ac37596276ace1c
|
||||
layerID: 692
|
||||
mosaicPosition: {x: 2830, y: 6615}
|
||||
mosaicPosition: {x: 3845, y: 5549}
|
||||
flatten: 0
|
||||
isImported: 1
|
||||
isVisible: 1
|
||||
@@ -1329,7 +1371,7 @@ ScriptedImporter:
|
||||
parentIndex: 15
|
||||
spriteID: 0edfdf4071c16ce4197d75fa6a7c4f0d
|
||||
layerID: 695
|
||||
mosaicPosition: {x: 2237, y: 6615}
|
||||
mosaicPosition: {x: 4014, y: 1284}
|
||||
flatten: 0
|
||||
isImported: 1
|
||||
isVisible: 1
|
||||
@@ -1359,7 +1401,7 @@ ScriptedImporter:
|
||||
parentIndex: 21
|
||||
spriteID: 2ddca43741137c54ba5d7e72ff04353c
|
||||
layerID: 791
|
||||
mosaicPosition: {x: 3675, y: 5577}
|
||||
mosaicPosition: {x: 4014, y: 1110}
|
||||
flatten: 0
|
||||
isImported: 1
|
||||
isVisible: 1
|
||||
@@ -1369,7 +1411,7 @@ ScriptedImporter:
|
||||
parentIndex: 21
|
||||
spriteID: 6adc419d9b00341419026a5802c9d8d6
|
||||
layerID: 797
|
||||
mosaicPosition: {x: 3675, y: 5549}
|
||||
mosaicPosition: {x: 3175, y: 5554}
|
||||
flatten: 0
|
||||
isImported: 1
|
||||
isVisible: 1
|
||||
@@ -1379,7 +1421,7 @@ ScriptedImporter:
|
||||
parentIndex: 1
|
||||
spriteID: 6c71322698065a54eb5e2a1fb4f86514
|
||||
layerID: 287
|
||||
mosaicPosition: {x: 2992, y: 6441}
|
||||
mosaicPosition: {x: 3852, y: 1284}
|
||||
flatten: 0
|
||||
isImported: 1
|
||||
isVisible: 1
|
||||
@@ -1389,7 +1431,7 @@ ScriptedImporter:
|
||||
parentIndex: 1
|
||||
spriteID: d2f1a521626f14145b0d2b884c5dbf6f
|
||||
layerID: 274
|
||||
mosaicPosition: {x: 3962, y: 5054}
|
||||
mosaicPosition: {x: 3962, y: 5192}
|
||||
flatten: 0
|
||||
isImported: 1
|
||||
isVisible: 1
|
||||
@@ -1399,7 +1441,7 @@ ScriptedImporter:
|
||||
parentIndex: 1
|
||||
spriteID: 33e8c8bbebb24d34286d612f0b261daa
|
||||
layerID: 280
|
||||
mosaicPosition: {x: 2143, y: 6441}
|
||||
mosaicPosition: {x: 3852, y: 419}
|
||||
flatten: 0
|
||||
isImported: 1
|
||||
isVisible: 1
|
||||
@@ -1409,7 +1451,7 @@ ScriptedImporter:
|
||||
parentIndex: 1
|
||||
spriteID: db22083879843b843b69dc1550fe5bfc
|
||||
layerID: 279
|
||||
mosaicPosition: {x: 3154, y: 6574}
|
||||
mosaicPosition: {x: 3962, y: 5054}
|
||||
flatten: 0
|
||||
isImported: 1
|
||||
isVisible: 1
|
||||
@@ -1419,7 +1461,7 @@ ScriptedImporter:
|
||||
parentIndex: 1
|
||||
spriteID: 9e9c52a5ed9bedc49995cb646b5911c5
|
||||
layerID: 281
|
||||
mosaicPosition: {x: 2599, y: 6708}
|
||||
mosaicPosition: {x: 4056, y: 1429}
|
||||
flatten: 0
|
||||
isImported: 1
|
||||
isVisible: 1
|
||||
@@ -1439,7 +1481,7 @@ ScriptedImporter:
|
||||
parentIndex: 1
|
||||
spriteID: fa945402410b1f347a1469cfe5243495
|
||||
layerID: 254
|
||||
mosaicPosition: {x: 3154, y: 6441}
|
||||
mosaicPosition: {x: 3852, y: 1446}
|
||||
flatten: 0
|
||||
isImported: 1
|
||||
isVisible: 1
|
||||
@@ -1453,6 +1495,26 @@ ScriptedImporter:
|
||||
flatten: 0
|
||||
isImported: 0
|
||||
isVisible: 1
|
||||
- name: "\u62C9\u7EF3\u906E\u7F69"
|
||||
spriteName: "\u62C9\u7EF3\u906E\u7F69"
|
||||
isGroup: 0
|
||||
parentIndex: 31
|
||||
spriteID: 96589d249466f6d4db2a673bb8211c54
|
||||
layerID: 806
|
||||
mosaicPosition: {x: 3983, y: 5675}
|
||||
flatten: 0
|
||||
isImported: 1
|
||||
isVisible: 1
|
||||
- name: "\u62C9\u7EF3"
|
||||
spriteName: "\u62C9\u7EF3"
|
||||
isGroup: 0
|
||||
parentIndex: 31
|
||||
spriteID: bdee20e596cc4d74fade29040e21b79f
|
||||
layerID: 804
|
||||
mosaicPosition: {x: 3852, y: 4}
|
||||
flatten: 0
|
||||
isImported: 1
|
||||
isVisible: 1
|
||||
- name: "\u5F15\u64CE\u5916\u9F7F\u8F6E"
|
||||
spriteName: "\u5F15\u64CE\u5916\u9F7F\u8F6E"
|
||||
isGroup: 0
|
||||
@@ -1476,17 +1538,17 @@ ScriptedImporter:
|
||||
- name: "\u5FC3\u810F\u63D2\u5B54"
|
||||
spriteName: "\u5FC3\u810F\u63D2\u5B54"
|
||||
isGroup: 0
|
||||
parentIndex: 33
|
||||
parentIndex: 35
|
||||
spriteID: 51b6debf8b8e0c342962b76031b04cdc
|
||||
layerID: 307
|
||||
mosaicPosition: {x: 2317, y: 6614}
|
||||
mosaicPosition: {x: 3984, y: 318}
|
||||
flatten: 0
|
||||
isImported: 1
|
||||
isVisible: 1
|
||||
- name: "\u5FC3\u810F\u76D6\u5B50"
|
||||
spriteName: "\u5FC3\u810F\u76D6\u5B50"
|
||||
isGroup: 0
|
||||
parentIndex: 33
|
||||
parentIndex: 35
|
||||
spriteID: 2f776ec13f0fe234ab7735824e9a4001
|
||||
layerID: 608
|
||||
mosaicPosition: {x: 3175, y: 4340}
|
||||
@@ -1506,37 +1568,37 @@ ScriptedImporter:
|
||||
- name: "\u55B7\u6CB9\u5EA6\u91CF"
|
||||
spriteName: "\u55B7\u6CB9\u5EA6\u91CF"
|
||||
isGroup: 0
|
||||
parentIndex: 36
|
||||
parentIndex: 38
|
||||
spriteID: d1fd39ae7def9f8429306cbdf5b6226c
|
||||
layerID: 421
|
||||
mosaicPosition: {x: 3983, y: 5675}
|
||||
mosaicPosition: {x: 3852, y: 1741}
|
||||
flatten: 0
|
||||
isImported: 1
|
||||
isVisible: 1
|
||||
- name: "\u8FDB\u6C14\u5EA6\u91CF"
|
||||
spriteName: "\u8FDB\u6C14\u5EA6\u91CF"
|
||||
isGroup: 0
|
||||
parentIndex: 36
|
||||
parentIndex: 38
|
||||
spriteID: d504cc99c8f5dc14a9dca37818f3686a
|
||||
layerID: 420
|
||||
mosaicPosition: {x: 3983, y: 5926}
|
||||
mosaicPosition: {x: 3876, y: 1741}
|
||||
flatten: 0
|
||||
isImported: 1
|
||||
isVisible: 1
|
||||
- name: "\u6C14\u95E8\u62C9\u6746"
|
||||
spriteName: "\u6C14\u95E8\u62C9\u6746"
|
||||
isGroup: 0
|
||||
parentIndex: 36
|
||||
parentIndex: 38
|
||||
spriteID: 0234a2ed53d4a2d44a7c0c9ae9a4c0b7
|
||||
layerID: 295
|
||||
mosaicPosition: {x: 3962, y: 5302}
|
||||
mosaicPosition: {x: 3876, y: 1992}
|
||||
flatten: 0
|
||||
isImported: 1
|
||||
isVisible: 1
|
||||
- name: "\u62C9\u6746\u6C60"
|
||||
spriteName: "\u62C9\u6746\u6C60"
|
||||
isGroup: 0
|
||||
parentIndex: 36
|
||||
parentIndex: 38
|
||||
spriteID: ccf5a0714985b474aaa4ac947ed3a220
|
||||
layerID: 298
|
||||
mosaicPosition: {x: 1424, y: 6726}
|
||||
@@ -1546,50 +1608,50 @@ ScriptedImporter:
|
||||
- name: "\u5FC3\u810F\u9F7F\u8F6EA"
|
||||
spriteName: "\u5FC3\u810F\u9F7F\u8F6EA"
|
||||
isGroup: 0
|
||||
parentIndex: 36
|
||||
parentIndex: 38
|
||||
spriteID: c4af958de8260c04c998bba16422774b
|
||||
layerID: 446
|
||||
mosaicPosition: {x: 2607, y: 6708}
|
||||
mosaicPosition: {x: 4064, y: 1429}
|
||||
flatten: 0
|
||||
isImported: 1
|
||||
isVisible: 1
|
||||
- name: "\u5FC3\u810F\u9F7F\u8F6EB"
|
||||
spriteName: "\u5FC3\u810F\u9F7F\u8F6EB"
|
||||
isGroup: 0
|
||||
parentIndex: 36
|
||||
parentIndex: 38
|
||||
spriteID: 9e1fb2c4e71c07348835a03b647f2390
|
||||
layerID: 445
|
||||
mosaicPosition: {x: 2615, y: 6708}
|
||||
mosaicPosition: {x: 4072, y: 1429}
|
||||
flatten: 0
|
||||
isImported: 1
|
||||
isVisible: 1
|
||||
- name: "\u5FC3\u810F\u9F7F\u8F6EC"
|
||||
spriteName: "\u5FC3\u810F\u9F7F\u8F6EC"
|
||||
isGroup: 0
|
||||
parentIndex: 36
|
||||
parentIndex: 38
|
||||
spriteID: 10cfd30a75e3f13498f0e156ee72fd9a
|
||||
layerID: 444
|
||||
mosaicPosition: {x: 2599, y: 6716}
|
||||
mosaicPosition: {x: 4056, y: 1437}
|
||||
flatten: 0
|
||||
isImported: 1
|
||||
isVisible: 1
|
||||
- name: "\u5FC3\u810F\u9F7F\u8F6ED"
|
||||
spriteName: "\u5FC3\u810F\u9F7F\u8F6ED"
|
||||
isGroup: 0
|
||||
parentIndex: 36
|
||||
parentIndex: 38
|
||||
spriteID: 7b3c12797bd298e498872da80d3c9774
|
||||
layerID: 443
|
||||
mosaicPosition: {x: 2607, y: 6716}
|
||||
mosaicPosition: {x: 4064, y: 1437}
|
||||
flatten: 0
|
||||
isImported: 1
|
||||
isVisible: 1
|
||||
- name: "\u5FC3\u810F\u9F7F\u8F6EE"
|
||||
spriteName: "\u5FC3\u810F\u9F7F\u8F6EE"
|
||||
isGroup: 0
|
||||
parentIndex: 36
|
||||
parentIndex: 38
|
||||
spriteID: b3746e118421a8f469f19af5c28ae880
|
||||
layerID: 439
|
||||
mosaicPosition: {x: 2615, y: 6716}
|
||||
mosaicPosition: {x: 4072, y: 1437}
|
||||
flatten: 0
|
||||
isImported: 1
|
||||
isVisible: 1
|
||||
@@ -1609,7 +1671,7 @@ ScriptedImporter:
|
||||
parentIndex: -1
|
||||
spriteID: 083fac6154604144c8a51ad9da1359f8
|
||||
layerID: 238
|
||||
mosaicPosition: {x: 3962, y: 5192}
|
||||
mosaicPosition: {x: 3967, y: 5549}
|
||||
flatten: 0
|
||||
isImported: 1
|
||||
isVisible: 1
|
||||
@@ -1619,7 +1681,7 @@ ScriptedImporter:
|
||||
parentIndex: -1
|
||||
spriteID: f29558bb0c039ec4f96c64e296bbd05b
|
||||
layerID: 236
|
||||
mosaicPosition: {x: 2992, y: 6603}
|
||||
mosaicPosition: {x: 3984, y: 4}
|
||||
flatten: 0
|
||||
isImported: 1
|
||||
isVisible: 1
|
||||
@@ -1639,7 +1701,7 @@ ScriptedImporter:
|
||||
parentIndex: -1
|
||||
spriteID: 435ef27b284ac1242a7e286c6c25d48b
|
||||
layerID: 237
|
||||
mosaicPosition: {x: 2491, y: 6615}
|
||||
mosaicPosition: {x: 3984, y: 114}
|
||||
flatten: 0
|
||||
isImported: 1
|
||||
isVisible: 1
|
||||
|
||||
@@ -810,12 +810,6 @@ MonoBehaviour:
|
||||
bodyModuleGroup: {fileID: 2309837242789316790}
|
||||
oscilloscopeSystem: {fileID: 0}
|
||||
heatMapController: {fileID: 0}
|
||||
plugInEvent:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
plugOutEvent:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
inHotErr: 0
|
||||
plugSnappingRange: 1
|
||||
--- !u!1 &4168341163486249011
|
||||
@@ -1215,9 +1209,6 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: a2e20b111511460a8f3a151bd470da9d, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
isScanning: 0
|
||||
isPlaying: 0
|
||||
canScan: 0
|
||||
--- !u!1 &4645710116166496809
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -1230,6 +1221,7 @@ GameObject:
|
||||
- component: {fileID: 2511148540085322114}
|
||||
- component: {fileID: 8338330826391681420}
|
||||
- component: {fileID: 2869143889230164099}
|
||||
- component: {fileID: 7908307127668400731}
|
||||
m_Layer: 0
|
||||
m_Name: Plug
|
||||
m_TagString: Untagged
|
||||
@@ -1352,6 +1344,39 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: eceaf3bcec07439d8391175331323e3c, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
--- !u!114 &7908307127668400731
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4645710116166496809}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 0c4fbab01ad40c2449c849cd2a8c620f, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Delegates:
|
||||
- eventID: 5
|
||||
callback:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
- eventID: 0
|
||||
callback:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
- eventID: 1
|
||||
callback:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
- eventID: 2
|
||||
callback:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
- eventID: 3
|
||||
callback:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
--- !u!1 &5242786820683991507
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
+383
-681
File diff suppressed because it is too large
Load Diff
@@ -1,83 +0,0 @@
|
||||
using System;
|
||||
using AibisDream.Utility;
|
||||
using Yarn.Unity;
|
||||
|
||||
namespace AibisDream
|
||||
{
|
||||
public class CommandOptionView : DialogueViewBase
|
||||
{
|
||||
// 进入指令选项模式
|
||||
private bool _waitCommandOptions;
|
||||
private string _commandName;
|
||||
|
||||
public override void RunLine(LocalizedLine dialogueLine, Action onDialogueLineFinished)
|
||||
{
|
||||
ProcessCommandLine(dialogueLine, onDialogueLineFinished);
|
||||
}
|
||||
|
||||
public override void RunOptions(DialogueOption[] dialogueOptions, Action<int> onOptionSelected)
|
||||
{
|
||||
// 非指令直接跳过
|
||||
if (!_waitCommandOptions)
|
||||
{
|
||||
base.RunOptions(dialogueOptions, onOptionSelected);
|
||||
return;
|
||||
}
|
||||
|
||||
DialogController.Instance.IsTalking = false;
|
||||
// 传输选项
|
||||
YarnOption[] options = YarnOption.GeneOptions(dialogueOptions, onOptionSelected);
|
||||
DialogController.Instance.InvokeOptionCommand(_commandName, options);
|
||||
}
|
||||
|
||||
public override void InterruptLine(LocalizedLine dialogueLine, Action onDialogueLineFinished)
|
||||
{
|
||||
base.InterruptLine(dialogueLine, onDialogueLineFinished);
|
||||
}
|
||||
|
||||
public override void DismissLine(Action onDismissalComplete)
|
||||
{
|
||||
base.DismissLine(onDismissalComplete);
|
||||
}
|
||||
|
||||
public override void UserRequestedViewAdvancement()
|
||||
{
|
||||
base.UserRequestedViewAdvancement();
|
||||
}
|
||||
|
||||
private void ProcessCommandLine(LocalizedLine dialogueLine, Action onDialogueLineFinished)
|
||||
{
|
||||
// 判断当前行是否是Command行,否则直接跳过
|
||||
CommandLineType commandLineType = dialogueLine.Text.MatchCommandType();
|
||||
|
||||
// 分情况处理
|
||||
switch (commandLineType)
|
||||
{
|
||||
case CommandLineType.Pause:
|
||||
// 获取选项名称
|
||||
dialogueLine.Text.TryGetPauseCommandAttr(out var pauseCommandName);
|
||||
// 传递暂停指令
|
||||
var step = YarnContinueStep.GeneContinueStep(onDialogueLineFinished);
|
||||
DialogController.Instance.InvokePauseCommand(pauseCommandName, step);
|
||||
break;
|
||||
case CommandLineType.OptionCommand:
|
||||
// 选项指令
|
||||
_waitCommandOptions = true;
|
||||
|
||||
dialogueLine.Text.TryGetOptionCommandAttr(out var curCommandName);
|
||||
// 保存指令
|
||||
_commandName = curCommandName;
|
||||
// 进入下一步
|
||||
onDialogueLineFinished.Invoke();
|
||||
break;
|
||||
case CommandLineType.NonCommand:
|
||||
default:
|
||||
// 非Command直接跳过
|
||||
_waitCommandOptions = false;
|
||||
base.RunLine(dialogueLine, onDialogueLineFinished);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4e61040b961ba1446ad453ee17f4a737
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,6 +1,5 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using AibisDream.Framework;
|
||||
using AibisDream.Kit;
|
||||
using UnityEngine;
|
||||
@@ -14,9 +13,6 @@ namespace AibisDream
|
||||
private DialogueRunner _dialogueRunner;
|
||||
private VariableStorageBehaviour _variableStorage;
|
||||
|
||||
private readonly Dictionary<string, Action<YarnOption[]>> _commandMap = new();
|
||||
private readonly Dictionary<string, Action<YarnContinueStep>> _pauseCommandMap = new();
|
||||
|
||||
# region controller状态标识
|
||||
|
||||
private bool _isTalking;
|
||||
@@ -41,9 +37,6 @@ namespace AibisDream
|
||||
get => _isTalking;
|
||||
}
|
||||
|
||||
// 对话框被阻塞时不能继续对话框交互
|
||||
public bool IsBlock { get; private set; }
|
||||
|
||||
public bool quickRunMode;
|
||||
|
||||
# endregion
|
||||
@@ -58,11 +51,13 @@ namespace AibisDream
|
||||
|
||||
_dialogueRunner.onDialogueStart.AddListener(() =>
|
||||
{
|
||||
EnumEventSystem.Global.Send(InteractionEventEnum.End);
|
||||
OnDialogueStart?.Invoke();
|
||||
IsTalking = true;
|
||||
});
|
||||
_dialogueRunner.onDialogueComplete.AddListener(() =>
|
||||
{
|
||||
EnumEventSystem.Global.Send(InteractionEventEnum.Start);
|
||||
OnDialogueComplete?.Invoke();
|
||||
IsTalking = false;
|
||||
});
|
||||
@@ -141,123 +136,6 @@ namespace AibisDream
|
||||
}
|
||||
}
|
||||
|
||||
#region 选项指令
|
||||
|
||||
/// <summary>
|
||||
/// 调用命令
|
||||
/// </summary>
|
||||
/// <param name="commandName">命令名</param>
|
||||
/// <param name="options">选项</param>
|
||||
public void InvokeOptionCommand(string commandName, YarnOption[] options)
|
||||
{
|
||||
if (commandName == null)
|
||||
{
|
||||
Debug.Log("命令名为空");
|
||||
return;
|
||||
}
|
||||
|
||||
if (_commandMap.TryGetValue(commandName, out var action))
|
||||
{
|
||||
action(options);
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogWarning($"命令 {commandName} 不存在");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 注册命令
|
||||
/// </summary>
|
||||
/// <param name="commandName">命令名称</param>
|
||||
/// <param name="commandAction">注册名称</param>
|
||||
public void RegisterOptionCommand(string commandName, Action<YarnOption[]> commandAction)
|
||||
{
|
||||
if (_commandMap.ContainsKey(commandName))
|
||||
{
|
||||
Debug.Log($"命令 {commandName} 已经存在,将被替换");
|
||||
}
|
||||
|
||||
_commandMap[commandName] = commandAction;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 移除命令
|
||||
/// </summary>
|
||||
/// <param name="commandName">命令名称</param>
|
||||
public void RemoveOptionCommand(string commandName)
|
||||
{
|
||||
if (_commandMap.ContainsKey(commandName))
|
||||
{
|
||||
_commandMap.Remove(commandName);
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.Log($"命令 {commandName} 不存在");
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region 暂停选项指令
|
||||
|
||||
/// <summary>
|
||||
/// 执行暂停命令
|
||||
/// </summary>
|
||||
/// <param name="commandName">命令名</param>
|
||||
/// <param name="pauseCommand">参数</param>
|
||||
public void InvokePauseCommand(string commandName, YarnContinueStep pauseCommand)
|
||||
{
|
||||
if (string.IsNullOrEmpty(commandName))
|
||||
{
|
||||
Debug.Log("命令名为空");
|
||||
return;
|
||||
}
|
||||
|
||||
if (_pauseCommandMap.TryGetValue(commandName, out var action))
|
||||
{
|
||||
action(pauseCommand);
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogWarning($"命令 {commandName} 不存在");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 注册暂停命令
|
||||
/// </summary>
|
||||
/// <param name="commandName">命令名</param>
|
||||
/// <param name="commandAction">注册命令函数</param>
|
||||
public void RegisterPauseCommand(string commandName, Action<YarnContinueStep> commandAction)
|
||||
{
|
||||
if (_pauseCommandMap.ContainsKey(commandName))
|
||||
{
|
||||
Debug.Log($"命令 {commandName} 已经存在,将被替换");
|
||||
}
|
||||
|
||||
_pauseCommandMap[commandName] = commandAction;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 移除命令
|
||||
/// </summary>
|
||||
/// <param name="commandName">命令名称</param>
|
||||
public void RemovePauseCommand(string commandName)
|
||||
{
|
||||
if (_pauseCommandMap.ContainsKey(commandName))
|
||||
{
|
||||
_pauseCommandMap.Remove(commandName);
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.Log($"命令 {commandName} 不存在");
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
#region 命令名
|
||||
|
||||
[YarnCommand("NextYarn")]
|
||||
@@ -284,8 +162,6 @@ namespace AibisDream
|
||||
public static IEnumerator LoadScene(string sceneName, float duration = 1)
|
||||
{
|
||||
HideDialog();
|
||||
Camera.main.orthographicSize = 5;
|
||||
Camera.main.transform.position = new Vector3(0, 0, -10);
|
||||
yield return SceneLoader.Instance.LoadSceneAsync(sceneName);
|
||||
DialogCanvasManager.Instance.SwitchDialogView(sceneName == "ClinicScene"
|
||||
? DialogViewType.Bubble
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using AibisDream.Framework;
|
||||
using AibisDream.Utility;
|
||||
using UnityEngine;
|
||||
using Yarn.Unity;
|
||||
|
||||
namespace AibisDream
|
||||
@@ -67,39 +68,29 @@ namespace AibisDream
|
||||
var options = DialogOption.GeneOptions(dialogueOptions, onOptionSelected);
|
||||
DialogCanvasManager.GetCurView().ShowOptions(options);
|
||||
}
|
||||
|
||||
public override void UserRequestedViewAdvancement()
|
||||
|
||||
private void Update()
|
||||
{
|
||||
if (_isInCommand)
|
||||
if (Input.GetMouseButtonDown(0) || Input.GetKeyDown(KeyCode.Space))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (DialogController.Instance.IsBlock)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!DialogCanvasManager.GetCurView().TrySkipLine())
|
||||
{
|
||||
AudioManager.Instance.StopVoice();
|
||||
requestInterrupt?.Invoke();
|
||||
JumpLine();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 跳到下一句
|
||||
/// </summary>
|
||||
public void JumpLine()
|
||||
private void JumpLine()
|
||||
{
|
||||
if (_isInCommand)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (DialogController.Instance.IsBlock)
|
||||
if (!DialogCanvasManager.GetCurView().TrySkipLine())
|
||||
{
|
||||
return;
|
||||
AudioManager.Instance.StopVoice();
|
||||
DialogCanvasManager.GetCurView().NextStep();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -59,12 +59,12 @@ namespace AibisDream.FixSystem
|
||||
|
||||
public void PlugIn()
|
||||
{
|
||||
// 插入就在示波器显示图片
|
||||
if (!_bodyModuleSystem.inHotErr)
|
||||
{
|
||||
// StartCoroutine(FixSystemCenter.SystemDic.Get<IOscilloscopeSystem>()
|
||||
// ?.ShowScanImage(data.ScreenPic, data.checkPoints));
|
||||
}
|
||||
// // 插入就在示波器显示图片
|
||||
// if (!_bodyModuleSystem.inHotErr)
|
||||
// {
|
||||
// StartCoroutine(FixSystemCenter.SystemDic.Get<IOscilloscopeSystem>()
|
||||
// ?.ShowScanImage(data.ScreenPic, data.checkPoints));
|
||||
// }
|
||||
|
||||
if (DialogController.Instance)
|
||||
// 然后触发Yarn节点
|
||||
|
||||
@@ -32,6 +32,7 @@ namespace AibisDream.FixSystem
|
||||
|
||||
public bool inHotErr;
|
||||
private int _heatValue;
|
||||
public bool isAvailable;
|
||||
|
||||
private int HeatValue
|
||||
{
|
||||
@@ -287,6 +288,22 @@ namespace AibisDream.FixSystem
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
/// 激活交互系统
|
||||
/// </summary>
|
||||
public void EnableSystem()
|
||||
{
|
||||
isAvailable = true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 停止交互系统
|
||||
/// </summary>
|
||||
public void DisableSystem()
|
||||
{
|
||||
isAvailable = false;
|
||||
}
|
||||
}
|
||||
|
||||
public struct BodyModuleSystemData
|
||||
|
||||
@@ -6,7 +6,8 @@ using UnityEngine.EventSystems;
|
||||
|
||||
namespace AibisDream.FixSystem
|
||||
{
|
||||
public class Plug : MonoBehaviour, IDragHandler, IPointerDownHandler, IPointerUpHandler
|
||||
[RequireComponent(typeof(EventTriggerEx))]
|
||||
public class Plug : MonoBehaviour, IInteraction
|
||||
{
|
||||
#region 插头当前信息
|
||||
|
||||
@@ -22,6 +23,7 @@ namespace AibisDream.FixSystem
|
||||
private CableSystem _cableSystem;
|
||||
private SpriteRenderer _sprite;
|
||||
private Transform _plugRootPos;
|
||||
private EventTriggerEx _trigger;
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -30,6 +32,7 @@ namespace AibisDream.FixSystem
|
||||
private void Awake()
|
||||
{
|
||||
InitComponentRef();
|
||||
EventRegister();
|
||||
}
|
||||
|
||||
private void InitComponentRef()
|
||||
@@ -37,6 +40,14 @@ namespace AibisDream.FixSystem
|
||||
_cableSystem = transform.parent.GetComponent<CableSystem>();
|
||||
_sprite = GetComponent<SpriteRenderer>();
|
||||
_plugRootPos = transform.Find("Plug Root Pos");
|
||||
_trigger = GetComponent<EventTriggerEx>();
|
||||
}
|
||||
|
||||
private void EventRegister()
|
||||
{
|
||||
_trigger.Register(EventTriggerType.Drag, OnDrag);
|
||||
_trigger.Register(EventTriggerType.PointerDown, OnPointerDown);
|
||||
_trigger.Register(EventTriggerType.PointerUp, OnPointerUp);
|
||||
}
|
||||
|
||||
public void InitPlug(ISocket initSocket)
|
||||
@@ -90,18 +101,21 @@ namespace AibisDream.FixSystem
|
||||
_cableSystem.curSocket = null;
|
||||
}
|
||||
|
||||
public void OnDrag(PointerEventData eventData)
|
||||
private void OnDrag(BaseEventData eventData)
|
||||
{
|
||||
// 系统被锁定就返回
|
||||
if (!_cableSystem.IsPlugAvailable()) return;
|
||||
|
||||
|
||||
// 未被拖拽也返回
|
||||
if (!_isDragging) return;
|
||||
|
||||
transform.position = CommonUtil.GetMouseWorldPos(eventData.position, transform);
|
||||
|
||||
if (eventData is PointerEventData pointerData)
|
||||
{
|
||||
transform.position = CommonUtil.GetMouseWorldPos(pointerData.position, transform);
|
||||
}
|
||||
}
|
||||
|
||||
public void OnPointerDown(PointerEventData eventData)
|
||||
private void OnPointerDown(BaseEventData eventData)
|
||||
{
|
||||
// 系统被锁定就返回
|
||||
if (!_cableSystem.IsPlugAvailable()) return;
|
||||
@@ -115,7 +129,7 @@ namespace AibisDream.FixSystem
|
||||
AdjustPlugPos();
|
||||
}
|
||||
|
||||
public void OnPointerUp(PointerEventData eventData)
|
||||
private void OnPointerUp(BaseEventData eventData)
|
||||
{
|
||||
// 停止拖拽
|
||||
_isDragging = false;
|
||||
@@ -147,5 +161,14 @@ namespace AibisDream.FixSystem
|
||||
Gizmos.color = Color.yellow;
|
||||
Gizmos.DrawWireSphere(transform.position, 0.5f);
|
||||
}
|
||||
|
||||
public bool IsActive => true;
|
||||
|
||||
public bool IsAvailable => _cableSystem.BodyModuleSystem.isAvailable;
|
||||
|
||||
public GameObject GetGameObject()
|
||||
{
|
||||
return gameObject;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -109,6 +109,8 @@ namespace AibisDream.FixSystem
|
||||
bodyModuleSystem.ResetPlug();
|
||||
// 切换相机
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.BodyModule);
|
||||
// 开启交互
|
||||
bodyModuleSystem.EnableSystem();
|
||||
}
|
||||
|
||||
public IEnumerator Exit()
|
||||
@@ -116,6 +118,8 @@ namespace AibisDream.FixSystem
|
||||
var bodyModuleSystem = FixSystemCenter.SystemDic.Get<BodyModuleSystem>();
|
||||
// 拔出插头
|
||||
bodyModuleSystem.ResetPlug();
|
||||
// 关闭交互
|
||||
bodyModuleSystem.DisableSystem();
|
||||
yield break;
|
||||
}
|
||||
}
|
||||
@@ -169,22 +173,26 @@ namespace AibisDream.FixSystem
|
||||
|
||||
public IEnumerator Enter()
|
||||
{
|
||||
var engineSystem = FixSystemCenter.SystemDic.Get<EngineSystem>();
|
||||
// 先切BodyModule
|
||||
if (!CameraKit.Instance.EqualToCameraState(CameraEnum.BodyModule))
|
||||
{
|
||||
//yield return MainUIController.Instance?.FadeInSync(0.5f);
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.BodyModule);
|
||||
//yield return MainUIController.Instance?.FadeOutSync(0.5f);
|
||||
}
|
||||
|
||||
// 切换相机
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.Engine);
|
||||
// 激活交互
|
||||
engineSystem.EnableSystem();
|
||||
}
|
||||
|
||||
public IEnumerator Exit()
|
||||
{
|
||||
var bodyModuleSystem = FixSystemCenter.SystemDic.Get<BodyModuleSystem>();
|
||||
bodyModuleSystem.ResetPlug();
|
||||
// 关闭交互
|
||||
var engineSystem = FixSystemCenter.SystemDic.Get<EngineSystem>();
|
||||
engineSystem.DisableSystem();
|
||||
yield break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
using AibisDream.Framework;
|
||||
using AibisDream.Kit;
|
||||
using UnityEngine;
|
||||
|
||||
namespace AibisDream.FixSystem
|
||||
{
|
||||
@@ -8,8 +7,6 @@ namespace AibisDream.FixSystem
|
||||
{
|
||||
public FixState CurState => StateMachine.CurState;
|
||||
|
||||
public Canvas deepCanvas;
|
||||
|
||||
public override void OnSingletonInit()
|
||||
{
|
||||
SystemDic ??= new IOCContainer();
|
||||
@@ -17,9 +14,6 @@ namespace AibisDream.FixSystem
|
||||
// TODO 这个回头要改
|
||||
AudioManager.PlayAmb1Audio("amb_room");
|
||||
|
||||
// 初始化场景组件
|
||||
InitScene();
|
||||
|
||||
// 初始化状态机
|
||||
StateMachine = new FixStateMachine();
|
||||
StartCoroutine(StateMachine.SwitchState(FixState.Clinic));
|
||||
@@ -31,15 +25,6 @@ namespace AibisDream.FixSystem
|
||||
GameLoopManager.Instance.StartCoroutine(StateMachine.QuitState());
|
||||
SystemDic.Clear();
|
||||
}
|
||||
|
||||
private void InitScene()
|
||||
{
|
||||
if (deepCanvas)
|
||||
{
|
||||
deepCanvas.worldCamera = CameraKit.Instance.uiCamera;
|
||||
deepCanvas.sortingLayerName = "FixTop";
|
||||
}
|
||||
}
|
||||
|
||||
#region 系统索引
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@ namespace AibisDream.Framework
|
||||
}
|
||||
}
|
||||
|
||||
public IUnRegister Register<T, TE>(T key, Action<TE> onEvent) where T : IConvertible where TE : struct
|
||||
public IUnRegister Register<T, TE>(T key, Action<TE> onEvent) where T : IConvertible
|
||||
{
|
||||
var kv = key.ToInt32(null);
|
||||
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 630fe61c68acf6e49a99491b75ac5566
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,66 @@
|
||||
using AibisDream.Kit;
|
||||
using UnityEngine;
|
||||
|
||||
namespace AibisDream.Framework
|
||||
{
|
||||
public class EventSystemEx : SingletonBase<EventSystemEx>
|
||||
{
|
||||
public GameObject pointerOverObj;
|
||||
public GameObject draggingObj;
|
||||
public GameObject holdingObj;
|
||||
|
||||
#region 事件触发中转
|
||||
|
||||
public void OnPointerEnter(IInteraction interaction)
|
||||
{
|
||||
pointerOverObj = interaction.GetGameObject();
|
||||
EnumEventSystem.Global.Send(TriggerEnum.PointerEnter, interaction);
|
||||
}
|
||||
|
||||
public void OnPointerExit(IInteraction interaction)
|
||||
{
|
||||
if (pointerOverObj == interaction.GetGameObject())
|
||||
{
|
||||
EnumEventSystem.Global.Send(TriggerEnum.PointerExit, interaction);
|
||||
pointerOverObj = null;
|
||||
}
|
||||
}
|
||||
|
||||
public void OnPointerDown(IInteraction interaction)
|
||||
{
|
||||
EnumEventSystem.Global.Send(TriggerEnum.PointerDown, interaction);
|
||||
holdingObj = interaction.GetGameObject();
|
||||
}
|
||||
|
||||
public void OnPointerUp(IInteraction interaction)
|
||||
{
|
||||
if (holdingObj == interaction.GetGameObject())
|
||||
{
|
||||
EnumEventSystem.Global.Send(TriggerEnum.PointerUp, interaction);
|
||||
holdingObj = null;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region 单例必须的代码
|
||||
|
||||
private EventSystemEx()
|
||||
{
|
||||
}
|
||||
|
||||
public override void OnSingletonInit()
|
||||
{
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
public enum TriggerEnum
|
||||
{
|
||||
PointerEnter,
|
||||
PointerExit,
|
||||
PointerDown,
|
||||
PointerUp
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f55689aa6dac4461bba273d8987762dd
|
||||
timeCreated: 1737014094
|
||||
@@ -0,0 +1,118 @@
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Events;
|
||||
using UnityEngine.EventSystems;
|
||||
|
||||
namespace AibisDream.Framework
|
||||
{
|
||||
/// <summary>
|
||||
/// EventTrigger扩展
|
||||
/// </summary>
|
||||
[RequireComponent(typeof(Collider2D))]
|
||||
public class EventTriggerEx : EventTrigger
|
||||
{
|
||||
private IInteraction _interaction;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
_interaction = GetComponent<IInteraction>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 注册事件
|
||||
/// </summary>
|
||||
/// <param name="triggerType">事件类型</param>
|
||||
/// <param name="action">函数</param>
|
||||
public void Register(EventTriggerType triggerType, UnityAction<BaseEventData> action)
|
||||
{
|
||||
if (TryGetTriggerEvent(triggerType, out var triggerEvent))
|
||||
{
|
||||
triggerEvent.AddListener(action);
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogWarning($"{triggerType.ToString()}未添加");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 卸载事件
|
||||
/// </summary>
|
||||
/// <param name="triggerType">事件类型</param>
|
||||
/// <param name="action">函数</param>
|
||||
public void UnRegister(EventTriggerType triggerType, UnityAction<BaseEventData> action)
|
||||
{
|
||||
if (TryGetTriggerEvent(triggerType, out var triggerEvent))
|
||||
{
|
||||
triggerEvent.RemoveListener(action);
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogWarning($"{triggerType.ToString()}未添加");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取触发事件
|
||||
/// </summary>
|
||||
/// <param name="triggerType">事件类型</param>
|
||||
/// <param name="triggerEvent">事件</param>
|
||||
/// <returns>是否存在</returns>
|
||||
private bool TryGetTriggerEvent(EventTriggerType triggerType, out TriggerEvent triggerEvent)
|
||||
{
|
||||
var entry = triggers.FirstOrDefault(item => item.eventID == triggerType);
|
||||
if (entry == null)
|
||||
{
|
||||
triggerEvent = null;
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
triggerEvent = entry.callback;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnPointerEnter(PointerEventData data)
|
||||
{
|
||||
EventSystemEx.Instance.OnPointerEnter(_interaction);
|
||||
base.OnPointerEnter(data);
|
||||
}
|
||||
|
||||
public override void OnPointerExit(PointerEventData data)
|
||||
{
|
||||
EventSystemEx.Instance.OnPointerExit(_interaction);
|
||||
base.OnPointerExit(data);
|
||||
}
|
||||
|
||||
public override void OnPointerDown(PointerEventData eventData)
|
||||
{
|
||||
if (_interaction.IsAvailable)
|
||||
{
|
||||
EventSystemEx.Instance.OnPointerDown(_interaction);
|
||||
base.OnPointerDown(eventData);
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnPointerUp(PointerEventData eventData)
|
||||
{
|
||||
if (_interaction.IsAvailable)
|
||||
{
|
||||
EventSystemEx.Instance.OnPointerUp(_interaction);
|
||||
base.OnPointerUp(eventData);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public interface IInteraction
|
||||
{
|
||||
// 判断是否激活,激活就正常显示鼠标,否则就显示禁用标志
|
||||
public bool IsActive { get; }
|
||||
|
||||
// 判断是否可用,可用就正常显示鼠标,否则就保持原有标志不变
|
||||
public bool IsAvailable { get; }
|
||||
|
||||
// 返回GameObject
|
||||
public GameObject GetGameObject();
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5758967c5b7371f4996079b044127a60
|
||||
guid: 0c4fbab01ad40c2449c849cd2a8c620f
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
@@ -1,33 +0,0 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace AibisDream.Framework
|
||||
{
|
||||
public class SpriteButtonKit : IMonoKit
|
||||
{
|
||||
private readonly Camera _camera = Camera.main;
|
||||
private GameObject _curButton;
|
||||
|
||||
public void OnUpdate()
|
||||
{
|
||||
// 发射射线进行检测
|
||||
Ray ray = _camera.ScreenPointToRay(Input.mousePosition);
|
||||
RaycastHit2D hit = Physics2D.Raycast(ray.origin, ray.direction);
|
||||
|
||||
// 射线没有碰撞到东西
|
||||
if (!hit.collider)
|
||||
{
|
||||
_curButton = null;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public interface ISpriteButton
|
||||
{
|
||||
public void OnMouseEnter();
|
||||
public void OnMouseExit();
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 787ecc68b7e444478adfaabb8d7fbe70
|
||||
timeCreated: 1734775502
|
||||
@@ -192,7 +192,7 @@ namespace AibisDream
|
||||
_dialogStorage.TryGetValue("$gameStage", out float gameStage);
|
||||
gameStageStr = gameStage.ToString(CultureInfo.InvariantCulture);
|
||||
}
|
||||
catch (Exception e)
|
||||
catch (Exception)
|
||||
{
|
||||
_dialogStorage.TryGetValue("$gameStage", out string gameStage);
|
||||
gameStageStr = gameStage;
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
using Framework.Core;
|
||||
using UnityEngine;
|
||||
|
||||
namespace AibisDream
|
||||
{
|
||||
public class AirDashboard : Dashboard
|
||||
{
|
||||
[FindComponent] private SpriteRenderer _pointer;
|
||||
[FindComponent("Min Pointer")] private Transform _minPointer;
|
||||
[FindComponent("Max Pointer")] private Transform _maxPointer;
|
||||
|
||||
[SerializeField] private float topPosY;
|
||||
[SerializeField] private float bottomPosY;
|
||||
|
||||
private float _pointerMaxHeight;
|
||||
|
||||
protected override void OnStart()
|
||||
{
|
||||
_pointerMaxHeight = _pointer.size.y;
|
||||
}
|
||||
|
||||
protected override void UpdateDashboard(EngineData data)
|
||||
{
|
||||
// 气门
|
||||
_pointer.size = new Vector2(_pointer.size.x, data.curAir * _pointerMaxHeight);
|
||||
|
||||
// 气门上下限
|
||||
var minPosY = (topPosY - bottomPosY) * data.curAirMin + bottomPosY;
|
||||
var maxPosY = (topPosY - bottomPosY) * data.curAirMax + bottomPosY;
|
||||
_minPointer.localPosition = new Vector3(0, minPosY, 0);
|
||||
_maxPointer.localPosition = new Vector3(0, maxPosY, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,62 +0,0 @@
|
||||
using AibisDream.Framework;
|
||||
using UnityEngine;
|
||||
|
||||
namespace AibisDream
|
||||
{
|
||||
public class AirGate : MonoBehaviour, IMoveable
|
||||
{
|
||||
private EngineSystem _engineSystem;
|
||||
|
||||
[SerializeField] private int curLevel;
|
||||
|
||||
[SerializeField] private float heightY;
|
||||
[SerializeField] private float minY;
|
||||
|
||||
public bool IsBlock { get; }
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
_engineSystem = transform.parent.GetComponent<EngineSystem>();
|
||||
}
|
||||
|
||||
public void StartMove()
|
||||
{
|
||||
// Debug.Log("Move");
|
||||
}
|
||||
|
||||
public void Move(Vector2 mousePos)
|
||||
{
|
||||
SwitchAirLevel(mousePos.y);
|
||||
UpdateTransform();
|
||||
}
|
||||
|
||||
private void UpdateTransform()
|
||||
{
|
||||
float levelHeight = heightY / (_engineSystem.config.maxLevel - 1);
|
||||
var curY = levelHeight * curLevel + minY;
|
||||
transform.localPosition = new Vector3(transform.localPosition.x, curY, transform.localPosition.z);
|
||||
}
|
||||
|
||||
private void SwitchAirLevel(float mouseY)
|
||||
{
|
||||
mouseY -= minY + transform.parent.position.y;
|
||||
|
||||
float levelHeight = heightY / _engineSystem.config.maxLevel;
|
||||
curLevel = (int)(mouseY / levelHeight);
|
||||
if (curLevel >= _engineSystem.config.maxLevel) curLevel = _engineSystem.config.maxLevel - 1;
|
||||
if (curLevel < 0) curLevel = 0;
|
||||
}
|
||||
|
||||
public void MoveToLevel(int level)
|
||||
{
|
||||
curLevel = level - 1;
|
||||
UpdateTransform();
|
||||
}
|
||||
|
||||
public void StopMove()
|
||||
{
|
||||
_engineSystem.UpdateAirLevel(curLevel);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4cba880bf0a3caf41b1d03057b9c01b1
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,29 +0,0 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace AibisDream
|
||||
{
|
||||
public class AirLevelDashboard : Dashboard
|
||||
{
|
||||
private Transform _pointer;
|
||||
|
||||
[SerializeField] private float topPosY;
|
||||
[SerializeField] private float bottomPosY;
|
||||
|
||||
private int _maxLevel;
|
||||
|
||||
protected override void OnStart()
|
||||
{
|
||||
_pointer = transform.Find("Pointer");
|
||||
_maxLevel = engineSystem.config.maxLevel;
|
||||
}
|
||||
|
||||
protected override void UpdateDashboard(EngineData data)
|
||||
{
|
||||
var singleLevelHeight = (topPosY - bottomPosY) / (_maxLevel - 1);
|
||||
var targetPosY = bottomPosY + data.curAirLevel * singleLevelHeight;
|
||||
_pointer.position = new Vector3(_pointer.position.x, targetPosY, _pointer.position.z);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7e5ffd762a716d8409d0f37b763e6521
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,124 @@
|
||||
using AibisDream.Framework;
|
||||
using AibisDream.Utility;
|
||||
using DG.Tweening;
|
||||
using UnityEngine;
|
||||
using UnityEngine.EventSystems;
|
||||
|
||||
namespace AibisDream
|
||||
{
|
||||
public class CordPull : MonoBehaviour, IInteraction
|
||||
{
|
||||
private EventTriggerEx _trigger;
|
||||
private EngineSystem _engineSystem;
|
||||
private Vector3 _initPos;
|
||||
public float maxDistance;
|
||||
|
||||
private Vector3 _dragPoint;
|
||||
private bool _isDragging;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
// 记录当前位置
|
||||
InitRefs();
|
||||
}
|
||||
|
||||
private void InitRefs()
|
||||
{
|
||||
_initPos = transform.position;
|
||||
|
||||
_trigger = GetComponent<EventTriggerEx>();
|
||||
_engineSystem = transform.parent.GetComponent<EngineSystem>();
|
||||
|
||||
_trigger.Register(EventTriggerType.BeginDrag, OnBeginDrag);
|
||||
_trigger.Register(EventTriggerType.EndDrag, OnEndDrag);
|
||||
_trigger.Register(EventTriggerType.Drag, OnDrag);
|
||||
}
|
||||
|
||||
public float GetCurOil()
|
||||
{
|
||||
return Mathf.Abs((transform.localPosition.y - _initPos.y) / maxDistance);
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
if (_isDragging)
|
||||
{
|
||||
MoveToDragPos();
|
||||
}
|
||||
}
|
||||
|
||||
private void MoveToDragPos()
|
||||
{
|
||||
float curY;
|
||||
// 如果拖拽点在上方,直接移动
|
||||
if (_dragPoint.y > transform.position.y)
|
||||
{
|
||||
curY = _dragPoint.y;
|
||||
}
|
||||
// 如果拖拽点在下方,限速移动
|
||||
else
|
||||
{
|
||||
if (Mathf.Abs(_dragPoint.y - transform.position.y) / Time.deltaTime >
|
||||
_engineSystem.engineConfig.pullMaxSpeed)
|
||||
{
|
||||
curY = transform.position.y - _engineSystem.engineConfig.pullMaxSpeed * Time.deltaTime;
|
||||
}
|
||||
else
|
||||
{
|
||||
curY = _dragPoint.y;
|
||||
}
|
||||
}
|
||||
|
||||
transform.position = new Vector3(transform.position.x, curY, transform.position.y);
|
||||
}
|
||||
|
||||
private void OnDrag(BaseEventData data)
|
||||
{
|
||||
// 这里是一些阻碍拖动的情况
|
||||
|
||||
// 正常情况下不会出错
|
||||
if (data is not PointerEventData pointerData) return;
|
||||
|
||||
// 设置拖拽目标点
|
||||
SetDragTarget(pointerData.position);
|
||||
}
|
||||
|
||||
private void OnBeginDrag(BaseEventData data)
|
||||
{
|
||||
// 正常情况下不会出错
|
||||
if (data is not PointerEventData pointerData) return;
|
||||
// 设置拖拽目标点
|
||||
SetDragTarget(pointerData.position);
|
||||
|
||||
// 开始拖动的时候把原有的动画删掉
|
||||
transform.DOKill();
|
||||
_isDragging = true;
|
||||
}
|
||||
|
||||
private void OnEndDrag(BaseEventData data)
|
||||
{
|
||||
_isDragging = false;
|
||||
// 松手后抽回去
|
||||
var retractTime = (_initPos.y - transform.localPosition.y) / _engineSystem.engineConfig.returnSpeed;
|
||||
transform.DOMove(_initPos, retractTime);
|
||||
}
|
||||
|
||||
private void SetDragTarget(Vector3 mousePos)
|
||||
{
|
||||
var worldPos = CommonUtil.GetMouseWorldPos(mousePos, transform);
|
||||
|
||||
var dragY = CommonUtil.Limit(worldPos.y, _initPos.y, _initPos.y - maxDistance);
|
||||
|
||||
_dragPoint = new Vector3(transform.position.x, dragY, transform.position.z);
|
||||
}
|
||||
|
||||
public bool IsActive => true;
|
||||
|
||||
public bool IsAvailable => _engineSystem.isAvailable;
|
||||
|
||||
public GameObject GetGameObject()
|
||||
{
|
||||
return gameObject;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7a6d9bb0e6b84b14a9d78479d5462d41
|
||||
timeCreated: 1737097199
|
||||
@@ -1,34 +0,0 @@
|
||||
using Framework.Core;
|
||||
using UnityEngine;
|
||||
|
||||
namespace AibisDream
|
||||
{
|
||||
public abstract class Dashboard : MonoBehaviour
|
||||
{
|
||||
protected EngineSystem engineSystem;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
engineSystem = transform.parent.GetComponent<EngineSystem>();
|
||||
this.FindComponents();
|
||||
OnStart();
|
||||
}
|
||||
|
||||
protected virtual void OnStart()
|
||||
{
|
||||
// 没有就不重写
|
||||
}
|
||||
|
||||
private void OnEnable()
|
||||
{
|
||||
engineSystem.UpdateDashboard += UpdateDashboard;
|
||||
}
|
||||
|
||||
private void OnDisable()
|
||||
{
|
||||
engineSystem.UpdateDashboard -= UpdateDashboard;
|
||||
}
|
||||
|
||||
protected abstract void UpdateDashboard(EngineData data);
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 82490bb3746d86e409719d43501d2c5e
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,41 +1,35 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using AibisDream.FixSystem;
|
||||
using AibisDream.Framework;
|
||||
using AibisDream.Kit;
|
||||
using AibisDream.Utility;
|
||||
using Cinemachine;
|
||||
using DG.Tweening;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Serialization;
|
||||
using UnityEngine.Events;
|
||||
|
||||
namespace AibisDream
|
||||
{
|
||||
public class EngineSystem : SystemHasData
|
||||
public class EngineSystem : MonoBehaviour
|
||||
{
|
||||
public static string DataPath = Application.streamingAssetsPath + "/LevelData/EngineSystem/";
|
||||
private CordPull _cordPull;
|
||||
private StaticGear _centerGear;
|
||||
|
||||
private SpriteRenderer _cover;
|
||||
private AirGate _airGate;
|
||||
[Header("系统配置")] public EngineConfig engineConfig;
|
||||
[Header("系统数据")] public EngineData engineData;
|
||||
|
||||
[Header("系统配置")] [SerializeField] public EngineConfig config;
|
||||
[Header("系统数据")] [SerializeField] private EngineData engineData;
|
||||
public bool isAvailable;
|
||||
|
||||
[FormerlySerializedAs("盖板移动时间")] [SerializeField]
|
||||
private float coverMoveDuration = 5f;
|
||||
[HideInInspector] public UnityEvent<float> updateSpeedEvent = new();
|
||||
|
||||
[FormerlySerializedAs("盖板移动距离")] [SerializeField]
|
||||
private float coverMoveDistance = 2.8f;
|
||||
[SerializeField] private float coverMoveDuration = 5f;
|
||||
|
||||
private bool IsValid => engineData.isValid.Value;
|
||||
|
||||
public event Action<EngineData> UpdateDashboard;
|
||||
[SerializeField] private float coverMoveDistance = 2.8f;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
FixSystemCenter.SystemDic.Register(this);
|
||||
_cover = transform.Find("Cover").GetComponent<SpriteRenderer>();
|
||||
_airGate = transform.Find("Air Gate").GetComponent<AirGate>();
|
||||
_cordPull = transform.Find("拉绳").GetComponent<CordPull>();
|
||||
_centerGear = transform.Find("中央齿轮").GetComponent<StaticGear>();
|
||||
_centerGear.initSpeed = engineConfig.gearSpeed;
|
||||
|
||||
// 注册相机
|
||||
var virtualCam = transform.Find("Engine Camera").GetComponentInChildren<ICinemachineCamera>();
|
||||
@@ -44,17 +38,12 @@ namespace AibisDream
|
||||
|
||||
private void Start()
|
||||
{
|
||||
OnLoad();
|
||||
}
|
||||
|
||||
private void OnLoad()
|
||||
{
|
||||
engineData = new EngineData(config.invalidTime);
|
||||
|
||||
// 初始档位置为2
|
||||
_airGate.MoveToLevel(2);
|
||||
DialogController.Instance?.SetVariable("$curAirLevel", 2);
|
||||
engineData.UpdateAirLevel(1, config.maxLevel); // 内部档位从0计数,1就是2
|
||||
// 初始化数据
|
||||
engineData = new EngineData
|
||||
{
|
||||
config = engineConfig
|
||||
};
|
||||
_centerGear.StartRotate();
|
||||
}
|
||||
|
||||
private void OnDestroy()
|
||||
@@ -62,254 +51,84 @@ namespace AibisDream
|
||||
CameraKit.Instance.UnRegisterCamera(CameraEnum.Engine);
|
||||
}
|
||||
|
||||
private void Update()
|
||||
public void Update()
|
||||
{
|
||||
// 更新部分按时间自然计算的指标
|
||||
DataAutoChange();
|
||||
// 更新看板
|
||||
UpdateDashboard?.Invoke(engineData);
|
||||
}
|
||||
// 收集数据
|
||||
engineData.curOil = _cordPull.GetCurOil();
|
||||
// 更新数据
|
||||
engineData.CalcSpeed();
|
||||
|
||||
private void DataAutoChange()
|
||||
{
|
||||
// 自然减速
|
||||
engineData.OilChange(-config.oilDownRatio);
|
||||
engineData.CalcAir(config.airMaxRatio, config.airMinRatio, config.baseAirMax);
|
||||
// 推算速度
|
||||
engineData.CalcSpeed(config.acceleratedSpeed, config.resistance);
|
||||
// 判断是否成功
|
||||
if (engineData.CheckSuccess(config.targetSpeed))
|
||||
// 传递速度
|
||||
updateSpeedEvent.Invoke(engineData.GetRealSpeed());
|
||||
|
||||
if (engineData.CheckSuccess())
|
||||
{
|
||||
Debug.Log("引擎成功");
|
||||
DialogController.Instance?.StartDialogNode("EngineSuccess");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 加速过程
|
||||
/// 开启系统交互
|
||||
/// </summary>
|
||||
public void AddOil()
|
||||
public void EnableSystem()
|
||||
{
|
||||
if (IsValid)
|
||||
{
|
||||
engineData.OilChange(config.oilUpRatio);
|
||||
}
|
||||
// 失效期无法加油门
|
||||
isAvailable = true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 更新引擎气门变化
|
||||
/// 关闭系统交互
|
||||
/// </summary>
|
||||
/// <param name="curLevel">当前气门等级</param>
|
||||
public void UpdateAirLevel(int curLevel)
|
||||
public void DisableSystem()
|
||||
{
|
||||
engineData.UpdateAirLevel(curLevel, config.maxLevel);
|
||||
DialogController.Instance?.SetVariable("$curAirLevel", curLevel + 1);
|
||||
DialogController.Instance?.StartDialogNode("调整进气档位");
|
||||
isAvailable = false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 打开盖板
|
||||
/// </summary>
|
||||
/// <returns>动画序列</returns>
|
||||
public Tween OpenCover()
|
||||
{
|
||||
AudioManager.PlayLoop2Audio("amb_shitou_engine");
|
||||
|
||||
var sq = DOTween.Sequence();
|
||||
// 盖板上移
|
||||
var moveDis = new Vector3(0, coverMoveDistance, 0);
|
||||
sq.Join(_cover.transform.DOBlendableMoveBy(moveDis, coverMoveDuration));
|
||||
// 盖板淡出
|
||||
sq.Join(_cover.DOFade(0, coverMoveDuration));
|
||||
|
||||
// 为引擎系统解锁
|
||||
sq.OnComplete(Unlock);
|
||||
|
||||
return sq;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 关闭盖板
|
||||
/// </summary>
|
||||
/// <returns>动画序列</returns>
|
||||
public Tween CloseCover()
|
||||
{
|
||||
AudioManager.PauseLoop2Audio();
|
||||
var sq = DOTween.Sequence();
|
||||
sq.Join(_cover.DOFade(1, coverMoveDuration));
|
||||
|
||||
var moveDis = new Vector3(0, -coverMoveDistance, 0);
|
||||
sq.Join(_cover.transform.DOBlendableMoveBy(moveDis, coverMoveDuration));
|
||||
|
||||
// 锁定引擎系统
|
||||
sq.OnComplete(Lock);
|
||||
|
||||
return sq;
|
||||
}
|
||||
|
||||
public void Lock()
|
||||
{
|
||||
// 禁止油门和气门
|
||||
}
|
||||
|
||||
public void Unlock()
|
||||
{
|
||||
// 开启油门和气门
|
||||
}
|
||||
|
||||
#region 数据加载与保存
|
||||
|
||||
private string[] _keyOptions;
|
||||
|
||||
public override string CurDataKey { get; set; }
|
||||
|
||||
public override string GetConfigPath()
|
||||
{
|
||||
return DataPath;
|
||||
}
|
||||
|
||||
public override void LoadLevel()
|
||||
{
|
||||
if (string.IsNullOrEmpty(CurDataKey))
|
||||
{
|
||||
Debug.Log("配置项名称为空");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!ConfigUtil.Instance.TryLoadConfig<EngineConfig>(DataPath + CurDataKey,
|
||||
out var data))
|
||||
{
|
||||
Debug.Log("没有找到配置项");
|
||||
return;
|
||||
}
|
||||
|
||||
config = data;
|
||||
// 重置Data
|
||||
OnLoad();
|
||||
}
|
||||
|
||||
public override void SaveLevel()
|
||||
{
|
||||
if (string.IsNullOrEmpty(CurDataKey))
|
||||
{
|
||||
Debug.Log("名称不为空");
|
||||
return;
|
||||
}
|
||||
|
||||
ConfigUtil.Instance.SaveConfig(config, DataPath + CurDataKey);
|
||||
|
||||
if (!_keyOptions.Contains(CurDataKey))
|
||||
{
|
||||
// 重新读取key
|
||||
_keyOptions = ConfigUtil.Instance.GetFileNames(DataPath);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public struct EngineConfig
|
||||
{
|
||||
public float oilDownRatio;
|
||||
public float oilUpRatio;
|
||||
public float acceleratedSpeed;
|
||||
public float resistance;
|
||||
public float airMaxRatio;
|
||||
public float airMinRatio;
|
||||
public float baseAirMax;
|
||||
public int maxLevel;
|
||||
public float targetSpeed;
|
||||
public float invalidTime;
|
||||
[Header("油门倍率")] public float oilRate;
|
||||
[Header("阻力倍率")] public float resistance;
|
||||
[Header("齿轮基础速度")] public float gearSpeed;
|
||||
[Header("齿轮速度倍率")] public float speedRate;
|
||||
[Header("成功所需时间")] public float targetDuration;
|
||||
[Header("拉绳最大速度")] public float pullMaxSpeed;
|
||||
[Header("拉绳回缩速度")] public float returnSpeed;
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public struct EngineData
|
||||
{
|
||||
private const float SuccessDuration = 1.5f;
|
||||
|
||||
public EngineConfig config;
|
||||
public float curSpeed;
|
||||
public float curOil;
|
||||
public float curAir;
|
||||
public float curAirMin;
|
||||
public float curAirMax;
|
||||
public int curAirLevel;
|
||||
|
||||
public AutoFlipBool isValid;
|
||||
public bool inAirRange;
|
||||
|
||||
public float reachTargetTime;
|
||||
public float curAcceleration;
|
||||
public bool isSuccess;
|
||||
public float reachTargetTime;
|
||||
|
||||
public EngineData(float flipDelayTime)
|
||||
public void CalcSpeed()
|
||||
{
|
||||
isValid = new AutoFlipBool(flipDelayTime, true);
|
||||
curSpeed = 0;
|
||||
curOil = 0;
|
||||
curAir = 0;
|
||||
curAirMin = 0;
|
||||
curAirMax = 0;
|
||||
curAirLevel = 0;
|
||||
inAirRange = false;
|
||||
reachTargetTime = 0;
|
||||
isSuccess = false;
|
||||
}
|
||||
|
||||
public void OilChange(float oilChangeRatio)
|
||||
{
|
||||
curOil = CommonUtil.Limit(curOil + oilChangeRatio * Time.deltaTime, 1f, 0f);
|
||||
}
|
||||
|
||||
public void CalcSpeed(float acceleratedSpeed, float resistance)
|
||||
{
|
||||
var addNum = inAirRange && isValid.Value
|
||||
? (curOil * acceleratedSpeed - curSpeed * resistance) * Time.deltaTime
|
||||
: -curSpeed * resistance * Time.deltaTime;
|
||||
|
||||
curSpeed = CommonUtil.Limit(curSpeed + addNum, 1f, 0f);
|
||||
}
|
||||
|
||||
public void CalcAir(float airMaxRatio, float airMinRatio, float baseAirMax)
|
||||
{
|
||||
curAirMax = CommonUtil.Limit(curSpeed * (curAirLevel + 1) * airMaxRatio + baseAirMax, 1f, 0f);
|
||||
curAirMin = CommonUtil.Limit(curSpeed * (curAirLevel + 1) * airMinRatio, 0.8f, 0f);
|
||||
|
||||
curAir = curOil;
|
||||
// 如果离开范围且当前在系统有效期,就进入一段失效期
|
||||
var curInAirRange = curAir <= curAirMax && curAir >= curAirMin;
|
||||
|
||||
if (inAirRange && !curInAirRange && !isSuccess)
|
||||
if (curOil != 0)
|
||||
{
|
||||
// 出界的话
|
||||
if (curAir > curAirMax) DialogController.Instance?.StartDialogNode("引擎过速");
|
||||
if (curAir < curAirMin) DialogController.Instance?.StartDialogNode("引擎掉速");
|
||||
|
||||
isValid.Value = false;
|
||||
curAcceleration = curAcceleration < 0 ? 0 : curAcceleration;
|
||||
curAcceleration = CommonUtil.Limit(curOil * config.oilRate * Time.deltaTime + curAcceleration, 100, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
curAcceleration = -config.resistance * (1f + curSpeed);
|
||||
}
|
||||
|
||||
inAirRange = curInAirRange;
|
||||
|
||||
curSpeed = CommonUtil.Limit(curSpeed + curAcceleration * Time.deltaTime, 1, 0);
|
||||
}
|
||||
|
||||
public void UpdateAirLevel(int level, int maxLevel)
|
||||
{
|
||||
curAirLevel = level;
|
||||
if (curAirLevel > maxLevel)
|
||||
{
|
||||
curAirLevel = maxLevel - 1;
|
||||
}
|
||||
|
||||
if (curAirLevel < 0)
|
||||
{
|
||||
curAirLevel = 0;
|
||||
}
|
||||
}
|
||||
|
||||
public bool CheckSuccess(float targetSpeed)
|
||||
public bool CheckSuccess()
|
||||
{
|
||||
// 已经成功就不用校验了
|
||||
if (isSuccess) return false;
|
||||
|
||||
if (curSpeed >= targetSpeed)
|
||||
if (curSpeed >= 0.95f)
|
||||
{
|
||||
reachTargetTime += Time.deltaTime;
|
||||
}
|
||||
@@ -319,10 +138,20 @@ namespace AibisDream
|
||||
}
|
||||
|
||||
// 如果速度达标时间足够就判断成功
|
||||
if (!(reachTargetTime >= SuccessDuration)) return false;
|
||||
if (!(reachTargetTime >= config.targetDuration)) return false;
|
||||
|
||||
isSuccess = true;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 获取处理后的速度
|
||||
/// </summary>
|
||||
/// <returns>速度</returns>
|
||||
public float GetRealSpeed()
|
||||
{
|
||||
return 1 + curSpeed * config.speedRate;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,5 @@
|
||||
using System.Collections;
|
||||
using AibisDream.FixSystem;
|
||||
using DG.Tweening;
|
||||
using UnityEngine;
|
||||
using Yarn.Unity;
|
||||
|
||||
namespace AibisDream
|
||||
@@ -11,16 +10,16 @@ namespace AibisDream
|
||||
[YarnCommand("open_engine_cover")]
|
||||
public static IEnumerator OpenEngineCover()
|
||||
{
|
||||
var engineSystem = FixSystemCenter.SystemDic.Get<EngineSystem>();
|
||||
yield return engineSystem.OpenCover().WaitForCompletion();
|
||||
Debug.LogWarning("打开引擎盖命令已废弃,请尽快删除");
|
||||
yield break;
|
||||
}
|
||||
|
||||
// 打开引擎盖
|
||||
[YarnCommand("close_engine_cover")]
|
||||
public static IEnumerator CloseEngineCover()
|
||||
{
|
||||
var engineSystem = FixSystemCenter.SystemDic.Get<EngineSystem>();
|
||||
yield return engineSystem.CloseCover().WaitForCompletion();
|
||||
Debug.LogWarning("关闭引擎盖命令已废弃,请尽快删除");
|
||||
yield break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
using Framework.Core;
|
||||
using UnityEngine;
|
||||
|
||||
namespace AibisDream
|
||||
{
|
||||
public class OilDashBoard : Dashboard
|
||||
{
|
||||
[FindComponent] private SpriteRenderer _pointer;
|
||||
private float _pointerMaxHeight;
|
||||
|
||||
protected override void OnStart()
|
||||
{
|
||||
_pointerMaxHeight = _pointer.size.y;
|
||||
}
|
||||
|
||||
protected override void UpdateDashboard(EngineData data)
|
||||
{
|
||||
_pointer.size = new Vector2(_pointer.size.x, data.curOil * _pointerMaxHeight);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5f1dc6d4faf506b479900b5b2b534d14
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,57 +0,0 @@
|
||||
using DG.Tweening;
|
||||
using UnityEngine;
|
||||
|
||||
namespace AibisDream
|
||||
{
|
||||
public class OilGate : MonoBehaviour
|
||||
{
|
||||
private SpriteButton _spriteButton;
|
||||
private EngineSystem _engineSystem;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
_engineSystem = transform.parent.GetComponent<EngineSystem>();
|
||||
}
|
||||
|
||||
private void OnEnable()
|
||||
{
|
||||
_spriteButton = new SpriteButton(gameObject);
|
||||
_spriteButton.OnButtonDown += ButtonClick;
|
||||
_spriteButton.OnButtonUp += ButtonUp;
|
||||
_spriteButton.OnButtonHold += ButtonHold;
|
||||
}
|
||||
|
||||
private void OnDisable()
|
||||
{
|
||||
_spriteButton = null;
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
_spriteButton?.CheckButtonClick();
|
||||
}
|
||||
|
||||
private void ButtonClick()
|
||||
{
|
||||
transform.DOPause();
|
||||
transform.DORotate(new Vector3(0, 0, 45), 5f);
|
||||
// 播引擎
|
||||
AudioManager.PlayLoopAudio("engine_on");
|
||||
AudioManager.StopInteraction();
|
||||
}
|
||||
|
||||
private void ButtonUp()
|
||||
{
|
||||
AudioManager.PauseLoopAudio();
|
||||
AudioManager.PlayInteraction("engine_off");
|
||||
transform.DOPause();
|
||||
transform.DORotate(new Vector3(0, 0, 0), 0.2f);
|
||||
}
|
||||
|
||||
private void ButtonHold()
|
||||
{
|
||||
_engineSystem.AddOil();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 04beec2ebfad5f642bfb4a7a1716a08a
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -2,19 +2,19 @@ using UnityEngine;
|
||||
|
||||
namespace AibisDream
|
||||
{
|
||||
public class SpeedDashboard : Dashboard
|
||||
public class SpeedDashboard : MonoBehaviour
|
||||
{
|
||||
private Transform _pointer;
|
||||
|
||||
[SerializeField] private float leftRot;
|
||||
[SerializeField] private float rightRot;
|
||||
|
||||
protected override void OnStart()
|
||||
protected void OnStart()
|
||||
{
|
||||
_pointer = transform.Find("Pointer");
|
||||
}
|
||||
|
||||
protected override void UpdateDashboard(EngineData data)
|
||||
protected void UpdateDashboard(EngineData data)
|
||||
{
|
||||
var targetRot = (rightRot - leftRot) * data.curSpeed + leftRot;
|
||||
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
using DG.Tweening;
|
||||
using UnityEngine;
|
||||
|
||||
namespace AibisDream
|
||||
{
|
||||
public class StaticGear : MonoBehaviour
|
||||
{
|
||||
public float initSpeed;
|
||||
private Tween _rotateTween;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
transform.parent.GetComponent<EngineSystem>().updateSpeedEvent.AddListener(UpdateSpeedScale);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 开始旋转
|
||||
/// </summary>
|
||||
public void StartRotate()
|
||||
{
|
||||
_rotateTween = transform.DORotate(new Vector3(0, 0, 360), 1 / Mathf.Abs(initSpeed), RotateMode.LocalAxisAdd)
|
||||
.SetEase(Ease.Linear)
|
||||
.SetLoops(-1, LoopType.Incremental);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 为旋转加速
|
||||
/// </summary>
|
||||
/// <param name="speed">速度倍率</param>
|
||||
private void UpdateSpeedScale(float speed)
|
||||
{
|
||||
_rotateTween.timeScale = speed;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 79006d3d747c4b8482204874bbbf6ae3
|
||||
timeCreated: 1737104031
|
||||
@@ -61,7 +61,6 @@ namespace AibisDream
|
||||
|
||||
private void Start()
|
||||
{
|
||||
_shaftGraph?.Clear();
|
||||
var shafts = transform.Find("Shafts").GetComponentsInChildren<Shaft>();
|
||||
var panelShafts = _panel.GetComponentsInChildren<Shaft>();
|
||||
_shaftGraph = new ShaftGraph(shafts, panelShafts);
|
||||
@@ -277,7 +276,6 @@ namespace AibisDream
|
||||
#if UNITY_EDITOR
|
||||
if (!EditorApplication.isPlaying) return;
|
||||
#endif
|
||||
_shaftGraph?.Clear();
|
||||
_shaftGraph = new ShaftGraph(shafts, panelShafts);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using AibisDream.FixSystem;
|
||||
using UnityEngine;
|
||||
|
||||
namespace AibisDream
|
||||
@@ -42,9 +41,6 @@ namespace AibisDream
|
||||
GeneEdgeTable();
|
||||
|
||||
UpdateSpeed();
|
||||
|
||||
var engine = FixSystemCenter.SystemDic.Get<EngineSystem>();
|
||||
engine.UpdateDashboard += Accelerate;
|
||||
}
|
||||
|
||||
private int FindDriverIdx()
|
||||
@@ -269,19 +265,13 @@ namespace AibisDream
|
||||
/// <summary>
|
||||
/// 通过引擎系统加速
|
||||
/// </summary>
|
||||
/// <param name="engineData"></param>
|
||||
private void Accelerate(EngineData engineData)
|
||||
/// <param name="curSpeed">当前速度</param>
|
||||
private void Accelerate(float curSpeed)
|
||||
{
|
||||
foreach (var shaft in _vertexArray)
|
||||
{
|
||||
if (shaft.HasChildGear()) shaft.UpdateSpeedScale(1 + engineData.curSpeed);
|
||||
if (shaft.HasChildGear()) shaft.UpdateSpeedScale(1 + curSpeed);
|
||||
}
|
||||
}
|
||||
|
||||
public void Clear()
|
||||
{
|
||||
var engine = FixSystemCenter.SystemDic.Get<EngineSystem>();
|
||||
engine.UpdateDashboard -= Accelerate;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
using System.Collections;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using AibisDream.Framework;
|
||||
using UnityEngine;
|
||||
@@ -8,7 +9,7 @@ namespace AibisDream
|
||||
{
|
||||
public class CursorManager : MonoBehaviour
|
||||
{
|
||||
private const float DelayTime = 0.2f;
|
||||
private const float DelayTime = 0.1f;
|
||||
|
||||
[Header("指针图片")] public Sprite defaultCursor;
|
||||
public Sprite nextTalk, talking, option, interactive, holding, disable, eye;
|
||||
@@ -20,11 +21,12 @@ namespace AibisDream
|
||||
|
||||
private Coroutine _switchCoroutine;
|
||||
private CursorState _curState = CursorState.Default;
|
||||
private bool _isTalking;
|
||||
|
||||
#endregion
|
||||
|
||||
// 卸载时注销事件
|
||||
private List<IUnRegister> _unRegisters = new();
|
||||
private readonly List<IUnRegister> _unRegisters = new();
|
||||
|
||||
public void Awake()
|
||||
{
|
||||
@@ -65,17 +67,26 @@ namespace AibisDream
|
||||
// 此处监听所有可能对鼠标状态产生影响的事件
|
||||
// 对话相关
|
||||
_unRegisters.Add(EnumEventSystem.Global.Register<DialogEventEnum, DialogLine>(DialogEventEnum.LineStart,
|
||||
_ => SwitchCursor(talking)));
|
||||
OnLineStart));
|
||||
_unRegisters.Add(EnumEventSystem.Global.Register(DialogEventEnum.LineShowed, () => SwitchCursor(nextTalk)));
|
||||
_unRegisters.Add(EnumEventSystem.Global.Register(DialogEventEnum.LineEnd,
|
||||
() => SwitchCursorDelay(defaultCursor)));
|
||||
_unRegisters.Add(EnumEventSystem.Global.Register(DialogEventEnum.OptionShow, () => SwitchCursor(option)));
|
||||
_unRegisters.Add(EnumEventSystem.Global.Register(DialogEventEnum.OptionSelected,
|
||||
() => SwitchCursorDelay(defaultCursor)));
|
||||
_unRegisters.Add(EnumEventSystem.Global.Register(DialogEventEnum.LineEnd, OnLineEnd));
|
||||
_unRegisters.Add(EnumEventSystem.Global.Register(DialogEventEnum.OptionShow, OnOptionShow));
|
||||
_unRegisters.Add(
|
||||
EnumEventSystem.Global.Register<DialogEventEnum, DialogLine>(DialogEventEnum.OptionSelected,
|
||||
OnOptionSelect));
|
||||
|
||||
// 交互相关
|
||||
_unRegisters.Add(EnumEventSystem.Global.Register(InteractionEventEnum.Start, OnInteractiveStart));
|
||||
_unRegisters.Add(EnumEventSystem.Global.Register(InteractionEventEnum.End, OnInteractiveEnd));
|
||||
|
||||
_unRegisters.Add(
|
||||
EnumEventSystem.Global.Register<TriggerEnum, IInteraction>(TriggerEnum.PointerEnter, OnPointerEnter));
|
||||
_unRegisters.Add(
|
||||
EnumEventSystem.Global.Register<TriggerEnum, IInteraction>(TriggerEnum.PointerExit, OnPointerExit));
|
||||
_unRegisters.Add(
|
||||
EnumEventSystem.Global.Register<TriggerEnum, IInteraction>(TriggerEnum.PointerDown, OnPointerDown));
|
||||
_unRegisters.Add(
|
||||
EnumEventSystem.Global.Register<TriggerEnum, IInteraction>(TriggerEnum.PointerUp, OnPointerUp));
|
||||
}
|
||||
|
||||
private void LateUpdate()
|
||||
@@ -89,16 +100,92 @@ namespace AibisDream
|
||||
// 在输入状态,要单独处理
|
||||
}
|
||||
|
||||
#region 交互状态相关
|
||||
#region 对话相关
|
||||
|
||||
private void OnLineStart(DialogLine line)
|
||||
{
|
||||
_isTalking = true;
|
||||
SwitchCursor(talking);
|
||||
}
|
||||
|
||||
private void OnLineEnd()
|
||||
{
|
||||
StopDelayCursor();
|
||||
_switchCoroutine = StartCoroutine(DelayAction(() =>
|
||||
{
|
||||
_isTalking = false;
|
||||
_cursor.sprite = defaultCursor;
|
||||
}));
|
||||
}
|
||||
|
||||
private void OnOptionShow()
|
||||
{
|
||||
_isTalking = true;
|
||||
SwitchCursor(option);
|
||||
}
|
||||
|
||||
private void OnOptionSelect(DialogLine line)
|
||||
{
|
||||
StopDelayCursor();
|
||||
StartCoroutine(DelayAction(() =>
|
||||
{
|
||||
_isTalking = false;
|
||||
_cursor.sprite = defaultCursor;
|
||||
}));
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region 交互相关
|
||||
|
||||
private void OnInteractiveStart()
|
||||
{
|
||||
_curState = CursorState.Interactive;
|
||||
if (EventSystemEx.Instance.pointerOverObj)
|
||||
{
|
||||
SwitchCursor(interactive);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnInteractiveEnd()
|
||||
{
|
||||
_curState = CursorState.Interactive;
|
||||
_curState = CursorState.Default;
|
||||
// 退出时把Cursor置为Default
|
||||
SwitchCursor(defaultCursor);
|
||||
}
|
||||
|
||||
private void OnPointerEnter(IInteraction target)
|
||||
{
|
||||
if (_curState == CursorState.Interactive && !_isTalking)
|
||||
{
|
||||
// 如果不可交互,就显示不可交互的指针
|
||||
SwitchCursor(target.IsActive ? interactive : disable);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnPointerExit(IInteraction target)
|
||||
{
|
||||
if (_curState == CursorState.Interactive && !_isTalking)
|
||||
{
|
||||
SwitchCursor(defaultCursor);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnPointerDown(IInteraction target)
|
||||
{
|
||||
if (_curState == CursorState.Interactive && !_isTalking)
|
||||
{
|
||||
SwitchCursor(target.IsActive ? holding : defaultCursor);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnPointerUp(IInteraction target)
|
||||
{
|
||||
if (_curState == CursorState.Interactive && !_isTalking)
|
||||
{
|
||||
// 如果松手时还在物体之上
|
||||
SwitchCursor(EventSystemEx.Instance.holdingObj == target.GetGameObject() ? interactive : defaultCursor);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -115,22 +202,6 @@ namespace AibisDream
|
||||
_cursor.sprite = sprite;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 延迟切换指针。如果后面有其他切换状态,就直接打断
|
||||
/// </summary>
|
||||
/// <param name="sprite">指针图片</param>
|
||||
private void SwitchCursorDelay(Sprite sprite)
|
||||
{
|
||||
StopDelayCursor();
|
||||
_switchCoroutine = StartCoroutine(SwitchCursorAsync(sprite));
|
||||
}
|
||||
|
||||
private IEnumerator SwitchCursorAsync(Sprite sprite)
|
||||
{
|
||||
yield return new WaitForSeconds(DelayTime);
|
||||
_cursor.sprite = sprite;
|
||||
}
|
||||
|
||||
private void StopDelayCursor()
|
||||
{
|
||||
if (_switchCoroutine != null)
|
||||
@@ -141,6 +212,12 @@ namespace AibisDream
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private static IEnumerator DelayAction(Action action)
|
||||
{
|
||||
yield return new WaitForSeconds(DelayTime);
|
||||
action.Invoke();
|
||||
}
|
||||
}
|
||||
|
||||
public enum CursorState
|
||||
|
||||
@@ -91,11 +91,11 @@ namespace AibisDream
|
||||
bool isAutoSkip = false)
|
||||
{
|
||||
gameObject.SetActive(true);
|
||||
// 没有dialogText说明不能显示对话,直接跳过
|
||||
if (!dialogText)
|
||||
{
|
||||
return;
|
||||
}
|
||||
// // 没有dialogText说明不能显示对话,直接跳过
|
||||
// if (!dialogText)
|
||||
// {
|
||||
// return;
|
||||
// }
|
||||
|
||||
// 把原有对话清掉
|
||||
ClearBox();
|
||||
@@ -126,8 +126,9 @@ namespace AibisDream
|
||||
if (_nextStep == null) return;
|
||||
|
||||
EnumEventSystem.Global.Send(DialogEventEnum.LineEnd);
|
||||
_nextStep.Invoke();
|
||||
var next = _nextStep;
|
||||
_nextStep = null;
|
||||
next.Invoke();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user