diff --git a/Assets/Art/Sprites/书籍优化/Back.prefab b/Assets/Art/Sprites/书籍优化/Back.prefab index 4814dbb..e594321 100644 --- a/Assets/Art/Sprites/书籍优化/Back.prefab +++ b/Assets/Art/Sprites/书籍优化/Back.prefab @@ -31,6 +31,7 @@ RectTransform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: + - {fileID: 7215395422902433694} - {fileID: 522482546413498521} m_Father: {fileID: 1355712093182564075} m_RootOrder: 0 @@ -102,7 +103,6 @@ GameObject: - component: {fileID: 522482546413498521} - component: {fileID: 579047698137250596} - component: {fileID: 5000131054849129790} - - component: {fileID: 2008703339932656136} m_Layer: 5 m_Name: bookText m_TagString: Untagged @@ -123,12 +123,12 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 8327629265958355051} - m_RootOrder: 0 + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} + m_AnchoredPosition: {x: 30, y: -84} + m_SizeDelta: {x: -29.999998, y: 830} m_Pivot: {x: 0, y: 1} --- !u!222 &579047698137250596 CanvasRenderer: @@ -160,7 +160,7 @@ MonoBehaviour: m_Calls: [] m_FontData: m_Font: {fileID: 12800000, guid: be667217d3d3a5447a0231196de062c0, type: 3} - m_FontSize: 28 + m_FontSize: 25 m_FontStyle: 0 m_BestFit: 0 m_MinSize: 2 @@ -172,20 +172,6 @@ MonoBehaviour: m_VerticalOverflow: 0 m_LineSpacing: 1 m_Text: ---- !u!114 &2008703339932656136 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 698830716538477079} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} - m_Name: - m_EditorClassIdentifier: - m_HorizontalFit: 0 - m_VerticalFit: 2 --- !u!1 &1108802075530485256 GameObject: m_ObjectHideFlags: 0 @@ -219,7 +205,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1355712093182564075} - - {fileID: 4426448496689443081} + - {fileID: 6327963864837876568} m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -329,7 +315,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0.000015258789, y: 10} + m_AnchoredPosition: {x: 0.000030517578, y: 10} m_SizeDelta: {x: -40.000015, y: -60} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &4538426996848575638 @@ -384,7 +370,7 @@ MonoBehaviour: m_EditorClassIdentifier: m_Content: {fileID: 522482546413498521} m_Horizontal: 0 - m_Vertical: 1 + m_Vertical: 0 m_MovementType: 1 m_Elasticity: 0.1 m_Inertia: 1 @@ -425,18 +411,18 @@ RectTransform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 3532340770849631787} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 898674588671415498} - m_RootOrder: 1 + m_Father: {fileID: 6327963864837876568} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0} - m_AnchorMax: {x: 0.5, y: 0} - m_AnchoredPosition: {x: 0, y: 20} - m_SizeDelta: {x: 40, y: 40} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 23.4512, y: 0} + m_SizeDelta: {x: 61.0977, y: 40} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &1119868347875695608 CanvasRenderer: @@ -459,7 +445,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} - m_Color: {r: 0, g: 0, b: 0, a: 1} + m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 @@ -473,13 +459,170 @@ MonoBehaviour: m_BestFit: 0 m_MinSize: 2 m_MaxSize: 40 - m_Alignment: 0 + m_Alignment: 4 m_AlignByGeometry: 0 m_RichText: 1 m_HorizontalOverflow: 0 m_VerticalOverflow: 0 m_LineSpacing: 1 m_Text: 1 +--- !u!1 &5263353154652506651 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7215395422902433694} + - component: {fileID: 1761202182111978314} + - component: {fileID: 6874164926691447841} + m_Layer: 5 + m_Name: bookTopText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7215395422902433694 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5263353154652506651} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8327629265958355051} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 70} + m_Pivot: {x: 0, y: 1} +--- !u!222 &1761202182111978314 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5263353154652506651} + m_CullTransparentMesh: 1 +--- !u!114 &6874164926691447841 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5263353154652506651} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: be667217d3d3a5447a0231196de062c0, type: 3} + m_FontSize: 28 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "\u4E00\u3001\u5BFC\u5C3F\u672F\u7684\u9002\u5E94\u75C7\u4E0E\u7981\u5FCC\u75C7\n" +--- !u!1 &6805618407965812769 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6327963864837876568} + - component: {fileID: 7375553302854610476} + - component: {fileID: 1304429593626385277} + m_Layer: 5 + m_Name: Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6327963864837876568 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6805618407965812769} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4426448496689443081} + m_Father: {fileID: 898674588671415498} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 101, y: 84} + m_SizeDelta: {x: 72, y: 32} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7375553302854610476 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6805618407965812769} + m_CullTransparentMesh: 1 +--- !u!114 &1304429593626385277 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6805618407965812769} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 18293cc9772c80b4fa1c3443c1305d7d, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 --- !u!1 &7249459030306176569 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Art/Sprites/书籍优化/Front.prefab b/Assets/Art/Sprites/书籍优化/Front.prefab index c906e8a..b27d598 100644 --- a/Assets/Art/Sprites/书籍优化/Front.prefab +++ b/Assets/Art/Sprites/书籍优化/Front.prefab @@ -33,7 +33,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 3906151173181146887} - - {fileID: 4500839131076430979} + - {fileID: 7015576608080402352} m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -181,6 +181,86 @@ MonoBehaviour: m_FillOrigin: 0 m_UseSpriteMesh: 0 m_PixelsPerUnitMultiplier: 1 +--- !u!1 &844659690061720241 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 358274079551938198} + - component: {fileID: 5095144190117216544} + - component: {fileID: 661162673703820463} + m_Layer: 5 + m_Name: bookTopText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &358274079551938198 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 844659690061720241} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5712826368191145630} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 70} + m_Pivot: {x: 0, y: 1} +--- !u!222 &5095144190117216544 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 844659690061720241} + m_CullTransparentMesh: 1 +--- !u!114 &661162673703820463 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 844659690061720241} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: be667217d3d3a5447a0231196de062c0, type: 3} + m_FontSize: 28 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "\u4E00\u3001\u5BFC\u5C3F\u672F\u7684\u9002\u5E94\u75C7\u4E0E\u7981\u5FCC\u75C7\n" --- !u!1 &1171872099361499748 GameObject: m_ObjectHideFlags: 0 @@ -192,7 +272,6 @@ GameObject: - component: {fileID: 3635586649588463893} - component: {fileID: 3272867475693095438} - component: {fileID: 8037391440435932342} - - component: {fileID: 2878836543288473266} m_Layer: 5 m_Name: bookText m_TagString: Untagged @@ -213,12 +292,12 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 5712826368191145630} - m_RootOrder: 0 + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} + m_AnchoredPosition: {x: 30, y: -84} + m_SizeDelta: {x: -30, y: 830} m_Pivot: {x: 0, y: 1} --- !u!222 &3272867475693095438 CanvasRenderer: @@ -250,7 +329,7 @@ MonoBehaviour: m_Calls: [] m_FontData: m_Font: {fileID: 12800000, guid: be667217d3d3a5447a0231196de062c0, type: 3} - m_FontSize: 28 + m_FontSize: 25 m_FontStyle: 0 m_BestFit: 0 m_MinSize: 2 @@ -262,20 +341,6 @@ MonoBehaviour: m_VerticalOverflow: 0 m_LineSpacing: 1 m_Text: ---- !u!114 &2878836543288473266 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1171872099361499748} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} - m_Name: - m_EditorClassIdentifier: - m_HorizontalFit: 0 - m_VerticalFit: 2 --- !u!1 &2476703880615261714 GameObject: m_ObjectHideFlags: 0 @@ -307,6 +372,7 @@ RectTransform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: + - {fileID: 358274079551938198} - {fileID: 3635586649588463893} m_Father: {fileID: 3906151173181146887} m_RootOrder: 0 @@ -624,7 +690,7 @@ MonoBehaviour: m_EditorClassIdentifier: m_Content: {fileID: 3635586649588463893} m_Horizontal: 0 - m_Vertical: 1 + m_Vertical: 0 m_MovementType: 1 m_Elasticity: 0.1 m_Inertia: 1 @@ -640,6 +706,83 @@ MonoBehaviour: m_OnValueChanged: m_PersistentCalls: m_Calls: [] +--- !u!1 &8842363041953792456 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7015576608080402352} + - component: {fileID: 775016411365987648} + - component: {fileID: 7305091546734591109} + m_Layer: 5 + m_Name: Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7015576608080402352 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8842363041953792456} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4500839131076430979} + m_Father: {fileID: 152011631505034571} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: -94, y: 68} + m_SizeDelta: {x: 72, y: 32} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &775016411365987648 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8842363041953792456} + m_CullTransparentMesh: 1 +--- !u!114 &7305091546734591109 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8842363041953792456} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: ad2563472913bc0418b92b41b1645c52, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 --- !u!1 &9019310647496789194 GameObject: m_ObjectHideFlags: 0 @@ -665,18 +808,18 @@ RectTransform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 9019310647496789194} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 152011631505034571} - m_RootOrder: 1 + m_Father: {fileID: 7015576608080402352} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0} - m_AnchorMax: {x: 0.5, y: 0} - m_AnchoredPosition: {x: 0, y: 20} - m_SizeDelta: {x: 40, y: 40} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -24.528809, y: 0} + m_SizeDelta: {x: 58.9424, y: 40} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &8884188765733387939 CanvasRenderer: @@ -699,7 +842,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} - m_Color: {r: 0, g: 0, b: 0, a: 1} + m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 @@ -713,7 +856,7 @@ MonoBehaviour: m_BestFit: 0 m_MinSize: 2 m_MaxSize: 40 - m_Alignment: 0 + m_Alignment: 4 m_AlignByGeometry: 0 m_RichText: 1 m_HorizontalOverflow: 0 diff --git a/Assets/Art/Sprites/书籍优化/back.png b/Assets/Art/Sprites/书籍优化/back.png new file mode 100644 index 0000000..68fbdbc Binary files /dev/null and b/Assets/Art/Sprites/书籍优化/back.png differ diff --git a/Assets/Art/Sprites/书籍优化/back.png.meta b/Assets/Art/Sprites/书籍优化/back.png.meta new file mode 100644 index 0000000..7a83ddf --- /dev/null +++ b/Assets/Art/Sprites/书籍优化/back.png.meta @@ -0,0 +1,146 @@ +fileFormatVersion: 2 +guid: 18293cc9772c80b4fa1c3443c1305d7d +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Art/Sprites/书籍优化/frontImg.png b/Assets/Art/Sprites/书籍优化/frontImg.png new file mode 100644 index 0000000..88fbe4b Binary files /dev/null and b/Assets/Art/Sprites/书籍优化/frontImg.png differ diff --git a/Assets/Art/Sprites/书籍优化/frontImg.png.meta b/Assets/Art/Sprites/书籍优化/frontImg.png.meta new file mode 100644 index 0000000..fa2b889 --- /dev/null +++ b/Assets/Art/Sprites/书籍优化/frontImg.png.meta @@ -0,0 +1,146 @@ +fileFormatVersion: 2 +guid: ad2563472913bc0418b92b41b1645c52 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/daoNiaoShu/ExcelData/Excel/BookPanelData.xlsx b/Assets/Resources/daoNiaoShu/ExcelData/Excel/BookPanelData.xlsx index f0240a4..3675c03 100644 Binary files a/Assets/Resources/daoNiaoShu/ExcelData/Excel/BookPanelData.xlsx and b/Assets/Resources/daoNiaoShu/ExcelData/Excel/BookPanelData.xlsx differ diff --git a/Assets/Resources/daoNiaoShu/ExcelData/ExcelToJson/BookPanelData.json b/Assets/Resources/daoNiaoShu/ExcelData/ExcelToJson/BookPanelData.json index 09d2940..81e1068 100644 --- a/Assets/Resources/daoNiaoShu/ExcelData/ExcelToJson/BookPanelData.json +++ b/Assets/Resources/daoNiaoShu/ExcelData/ExcelToJson/BookPanelData.json @@ -1 +1 @@ -[{"id":1,"group":"1","txt":"公犬导尿术
一、导尿术的适应症与禁忌症​​
1.适应症​​
1)急性尿潴留。
2)需采集无菌尿液样本或进行膀胱灌注治疗。
3)尿道梗阻解除后维持排尿通路。
2.禁忌症​​
1)尿道破裂或严重损伤(需手术修复)。
2)泌尿道急性感染未控制(避免逆行感染扩散)。
3)严重凝血功能障碍。"},{"id":2,"group":"1","txt":"二、公犬泌尿系统解剖要点​​
1.尿道结构​​
1)公犬尿道分为前列腺前部、前列腺部和阴茎部,导尿管需通过阴茎部尿道(长约15-20cm)进入膀胱。
2)尿道口位于阴茎龟头顶端,被包皮覆盖,操作需向后推包皮暴露。
2.体表定位标志​​
1)坐骨结节为导尿管体外测量的终点(尿道口至坐骨结节距离≈尿道长度)。
2)膀胱充盈时可在腹后部触及球形隆起(叩诊浊音)。"},{"id":3,"group":"1","txt":"三、术前准备工作​​
1.物品准备​​
1)核心器械:型号适合的硅胶导尿管、无菌外科手套、20ml注射器、0.9%生理盐水、利多卡因凝胶、氯己定棉球、无菌持物镊等。
2)辅助物品:电动剃毛器(备皮范围直径5-10cm)、集尿袋、抗生素软膏、一次性医用垫单、医疗污物桶。
2.患犬准备​​
1)镇静镇痛:静脉注射右美托咪定(5μg/kg)+布托啡诺(0.3mg/kg),提供深度镇静与镇痛。
2)体位:右侧卧位,后肢外展固定,充分暴露会阴部。
3)备皮:剃除包皮口周围长毛,清洁皮肤碎屑。
3.术者准备​​
七步洗手法洗手,戴无菌口罩、帽子、手套。"},{"id":4,"group":"1","txt":"四、规范操作流程​​
1.清洁消毒​​
1)向后推包皮暴露龟头,用20ml生理盐水冲洗包皮腔污物。
2)氯己定棉球消毒(2次):
(1)第1次:由内向外环形清洁包皮口及周围皮肤(半径5-10cm)。
(2)第2次:重点消毒尿道口及龟头表面。
2.尿道麻醉:食指涂抹利多卡因凝胶,旋转涂抹龟头及尿道口,等待2-3分钟起效。
3.导尿管测量与插入​​
1)测量:导尿管头端置于尿道口,尾端拉至坐骨结节处标记刻度(体外预估法)。
2)插管​​
(1)导尿管外涂抗生素软膏润滑。
(2)助手向后推包皮暴露阴茎2-5cm,术者持导管沿尿道走向缓慢插入(遇阻力勿强行推进)。
(3)成功标志:尿液流入集尿袋,膀胱逐渐塌陷。
4.导尿后处理​​
1)尿液引流完毕后,缓慢拔出导尿管。
2)脱手套,按医疗废物分类处理物品。"},{"id":5,"group":"1","txt":"五、注意事项与并发症预防​​
1.无菌操作​​
1)手套破损需立即更换。
2)消毒棉球限单次单向使用。
2.操作技巧​​
1)尿道痉挛时暂停操作,追加利多卡因凝胶(禁用暴力插管)。
2)导尿管插入深度不超过坐骨结节标记点(避免膀胱壁损伤)。
3)并发症应对​​
(1)尿道损伤:立即停止操作,评估是否需膀胱穿刺或手术。
(2)逆行感染:严格无菌操作,术后监测排尿状态及体温。"},{"id":0,"group":"","txt":""},{"id":0,"group":"","txt":""},{"id":0,"group":"","txt":""},{"id":0,"group":"","txt":""},{"id":0,"group":"","txt":""},{"id":0,"group":"","txt":""},{"id":0,"group":"","txt":""},{"id":0,"group":"","txt":""},{"id":0,"group":"","txt":""},{"id":0,"group":"","txt":""},{"id":0,"group":"","txt":""}] +[{"id":1,"group":"1","topTxt":"一、导尿术的适应症与禁忌症","txt":"1.适应症​​
1)急性尿潴留。
2)需采集无菌尿液样本或进行膀胱灌注治疗。
3)尿道梗阻解除后维持排尿通路。
2.禁忌症​​
1)尿道破裂或严重损伤(需手术修复)。
2)泌尿道急性感染未控制(避免逆行感染扩散)。
3)严重凝血功能障碍。"},{"id":2,"group":"1","topTxt":"二、公犬泌尿系统解剖要点","txt":"1.尿道结构​​
1)公犬尿道分为前列腺前部、前列腺部和阴茎部,导尿管需通过阴茎部尿道(长约15-20cm)进入膀胱。
2)尿道口位于阴茎龟头顶端,被包皮覆盖,操作需向后推包皮暴露。
2.体表定位标志​​
1)坐骨结节为导尿管体外测量的终点(尿道口至坐骨结节距离≈尿道长度)。
2)膀胱充盈时可在腹后部触及球形隆起(叩诊浊音)。"},{"id":3,"group":"1","topTxt":"三、术前准备工作","txt":"1.物品准备​​
1)核心器械:型号适合的硅胶导尿管、无菌外科手套、20ml注射器、0.9%生理盐水、利多卡因凝胶、氯己定棉球、无菌持物镊等。
2)辅助物品:电动剃毛器(备皮范围直径5-10cm)、集尿袋、抗生素软膏、一次性医用垫单、医疗污物桶。
2.患犬准备​​
1)镇静镇痛:静脉注射右美托咪定(5μg/kg)+布托啡诺(0.3mg/kg),提供深度镇静与镇痛。"},{"id":4,"group":"1","topTxt":"","txt":"
2)体位:右侧卧位,后肢外展固定,充分暴露会阴部。
3)备皮:剃除包皮口周围长毛,清洁皮肤碎屑。
3.术者准备​​
七步洗手法洗手,戴无菌口罩、帽子、手套。"},{"id":5,"group":"1","topTxt":"四、规范操作流程","txt":"1.清洁消毒​​
1)向后推包皮暴露龟头,用20ml生理盐水冲洗包皮腔污物。
2)氯己定棉球消毒(2次):
(1)第1次:由内向外环形清洁包皮口及周围皮肤(半径5-10cm)。
(2)第2次:重点消毒尿道口及龟头表面。
2.尿道麻醉:食指涂抹利多卡因凝胶,旋转涂抹龟头及尿道口,等待2-3分钟起效。
3.导尿管测量与插入​​
1)测量:导尿管头端置于尿道口,尾端拉至坐骨结节处标记刻度(体外预估法)。"},{"id":6,"group":"1","topTxt":"","txt":"
2)插管​​
(1)导尿管外涂抗生素软膏润滑。
(2)助手向后推包皮暴露阴茎2-5cm,术者持导管沿尿道走向缓慢插入(遇阻力勿强行推进)。
(3)成功标志:尿液流入集尿袋,膀胱逐渐塌陷。
4.导尿后处理​​
1)尿液引流完毕后,缓慢拔出导尿管。
2)脱手套,按医疗废物分类处理物品。"},{"id":7,"group":"1","topTxt":"五、注意事项与并发症预防","txt":"1.无菌操作​​
1)手套破损需立即更换。
2)消毒棉球限单次单向使用。
2.操作技巧​​
1)尿道痉挛时暂停操作,追加利多卡因凝胶(禁用暴力插管)。
2)导尿管插入深度不超过坐骨结节标记点(避免膀胱壁损伤)。
3)并发症应对​​
(1)尿道损伤:立即停止操作,评估是否需膀胱穿刺或手术。
(2)逆行感染:严格无菌操作,术后监测排尿状态及体温。"},{"id":0,"group":"","topTxt":"","txt":""},{"id":0,"group":"","topTxt":"","txt":""},{"id":0,"group":"","topTxt":"","txt":""},{"id":0,"group":"","topTxt":"","txt":""},{"id":0,"group":"","topTxt":"","txt":""},{"id":0,"group":"","topTxt":"","txt":""},{"id":0,"group":"","topTxt":"","txt":""},{"id":0,"group":"","topTxt":"","txt":""},{"id":0,"group":"","topTxt":"","txt":""},{"id":0,"group":"","topTxt":"","txt":""},{"id":0,"group":"","topTxt":"","txt":""}] diff --git a/Assets/SenSorSystem/ZhuSheQi_10SenSor.cs b/Assets/SenSorSystem/ZhuSheQi_10SenSor.cs index 845c522..27e84dd 100644 --- a/Assets/SenSorSystem/ZhuSheQi_10SenSor.cs +++ b/Assets/SenSorSystem/ZhuSheQi_10SenSor.cs @@ -1,6 +1,7 @@ using System; using System.Collections; using System.Collections.Generic; +using System.IO.Ports; using UnityEngine; using UnityEngine.UI; @@ -22,7 +23,7 @@ public class ZhuSheQi_10SenSor : Sensor transform.parent.GetComponent().SendFunction("+++"); } - public override void ReceiveData(string datas) + public override void ReceiveData(string datas, SerialPort sp = null) { base.ReceiveData(datas); if (!datas.Split('%')[0].Split("ID:")[1].Split(',')[0].Equals("ZSQ10")) return; diff --git a/Assets/SenSorSystem/ZhuSheQi_20SenSor.cs b/Assets/SenSorSystem/ZhuSheQi_20SenSor.cs index 6195b1c..3ed6135 100644 --- a/Assets/SenSorSystem/ZhuSheQi_20SenSor.cs +++ b/Assets/SenSorSystem/ZhuSheQi_20SenSor.cs @@ -2,6 +2,7 @@ using DongWuYiXue.DaoNiaoShu; using System; using System.Collections; using System.Collections.Generic; +using System.IO.Ports; using UnityEngine; using UnityEngine.UI; @@ -27,7 +28,7 @@ public class ZhuSheQi_20SenSor : Sensor GameManager.Instance.senSor.SendFunction("+++"); } - public override void ReceiveData(string datas) + public override void ReceiveData(string datas, SerialPort sp = null) { base.ReceiveData(datas); if (!datas.Split('%')[0].Split("ID:")[1].Split(',')[0].Equals("ZSQ20")) diff --git a/Assets/SenSorSystem/ZhuSheQi_50SenSor.cs b/Assets/SenSorSystem/ZhuSheQi_50SenSor.cs index 7e7adaf..3c71239 100644 --- a/Assets/SenSorSystem/ZhuSheQi_50SenSor.cs +++ b/Assets/SenSorSystem/ZhuSheQi_50SenSor.cs @@ -1,6 +1,7 @@ using System; using System.Collections; using System.Collections.Generic; +using System.IO.Ports; using UnityEngine; using UnityEngine.UI; @@ -24,7 +25,7 @@ public class ZhuSheQi_50SenSor : Sensor transform.parent.GetComponent().SendFunction("+++"); } - public override void ReceiveData(string datas) + public override void ReceiveData(string datas, SerialPort sp = null) { base.ReceiveData(datas); if (!datas.Split('%')[0].Split("ID:")[1].Split(',')[0].Equals("ZSQ50")) return; @@ -54,7 +55,7 @@ public class ZhuSheQi_50SenSor : Sensor public override void Display(string datas) { base.Display(datas); - + } } diff --git a/Assets/SenSorSystem/ZhuSheQi_5SenSor.cs b/Assets/SenSorSystem/ZhuSheQi_5SenSor.cs index 49163e1..cbfdb59 100644 --- a/Assets/SenSorSystem/ZhuSheQi_5SenSor.cs +++ b/Assets/SenSorSystem/ZhuSheQi_5SenSor.cs @@ -1,6 +1,7 @@ using System; using System.Collections; using System.Collections.Generic; +using System.IO.Ports; using UnityEngine; using UnityEngine.UI; using ZXKFramework; @@ -24,14 +25,14 @@ public class ZhuSheQi_5SenSor : Sensor transform.parent.GetComponent().SendFunction("+++"); } - public override void ReceiveData(string datas) + public override void ReceiveData(string datas, SerialPort sp = null) { base.ReceiveData(datas); if (!datas.Split('%')[0].Split("ID:")[1].Split(',')[0].Equals("ZSQ5")) return; //this.Error(datas); //progressValue = ((Convert.ToInt32(datas.Split("%")[0].Split("LEVEL:")[1]))-3) / 7.0f; - progressValue = ((Convert.ToInt32(datas.Split("%")[0].Split("LEVEL:")[1]))-3) / 6.0f; + progressValue = ((Convert.ToInt32(datas.Split("%")[0].Split("LEVEL:")[1])) - 3) / 6.0f; //this.Error($"ǰ5mlעĽΪ{progressValue}"); } diff --git a/Assets/SensorModule/Scripts/Sensor/Base/Sensor.cs b/Assets/SensorModule/Scripts/Sensor/Base/Sensor.cs index c0e9bce..9740c3f 100644 --- a/Assets/SensorModule/Scripts/Sensor/Base/Sensor.cs +++ b/Assets/SensorModule/Scripts/Sensor/Base/Sensor.cs @@ -1,5 +1,6 @@ using System.Collections; using System.Collections.Generic; +using System.IO.Ports; using UnityEngine; /// /// @@ -20,7 +21,11 @@ public abstract class Sensor : MonoBehaviour if (!gameObject.activeSelf) return; Display(datas); } - + public virtual void ReceiveData(string datas, SerialPort sp = null) + { + if (!gameObject.activeSelf) return; + Display(datas); + } public virtual void Display(string datas) { diff --git a/Assets/SensorModule/Scripts/Sensor/导尿术_狗/DaoNiao_Sensor.cs b/Assets/SensorModule/Scripts/Sensor/导尿术_狗/DaoNiao_Sensor.cs index d8bc6eb..ac9504b 100644 --- a/Assets/SensorModule/Scripts/Sensor/导尿术_狗/DaoNiao_Sensor.cs +++ b/Assets/SensorModule/Scripts/Sensor/导尿术_狗/DaoNiao_Sensor.cs @@ -1,5 +1,6 @@ using System.Collections; using System.Collections.Generic; +using System.IO.Ports; using UnityEngine; using UnityEngine.UI; @@ -12,7 +13,7 @@ public class DaoNiao_Sensor : Sensor public float daoNiaoDeep; string data; public Text txt; - public override void ReceiveData(string datas) + public override void ReceiveData(string datas, SerialPort sp = null) { base.ReceiveData(datas); data = datas.Split("#")[1].Split("%")[0]; diff --git a/Assets/SensorModule/Scripts/SensorManager.cs b/Assets/SensorModule/Scripts/SensorManager.cs index c5ac85b..bfbb397 100644 --- a/Assets/SensorModule/Scripts/SensorManager.cs +++ b/Assets/SensorModule/Scripts/SensorManager.cs @@ -3,6 +3,7 @@ using System.Collections.Concurrent; using System.Collections.Generic; using System.Data.SqlTypes; using System.IO.Ports; +using System.Linq; using System.Text; using System.Threading; //using UnityEditor.PackageManager.UI; @@ -12,14 +13,215 @@ using ZXKFramework; public class SensorManager : MonoBehaviour /*MonoSingleton*/ { + #region ޸ǰ߼ + //public enum DataType + //{ + // ַ, + // ֽ, + //} + //#region ڲ,Ҫ޸Ĵ벨 + //[Header("")] + //public string portName = "COM10"; + //[Header("")] + //public int baudRate = 115200; + //[Header("żУ")] + //private Parity parity = Parity.None; + //[Header("λ")] + //private int dataBits = 8; + //[Header("ֹͣλ")] + //private StopBits stopBits = StopBits.One; + //SerialPort sp = null; + //Thread dataReceiveThread; + //[Header("ݸʽ")] + //public DataType dataType; + //#endregion + //private Dictionary allSensor = new Dictionary(); + //StringBuilder sb = new StringBuilder(); + //private void Start() + //{ + // sp = new SerialPort(portName, baudRate, parity, dataBits, stopBits); + // foreach (Sensor s in GetComponentsInChildren()) + // { + // allSensor.TryAdd(s.GetType().Name, s); + // } + // switch (dataType) + // { + // case DataType.ֽ: + // dataReceiveThread = new Thread(new ThreadStart(DataReceiveBytesThread)); + // break; + // case DataType.ַ: + // dataReceiveThread = new Thread(new ThreadStart(DataReceiveStrThread)); + // break; + // } + // OpenPort(); + //} + ///// + ///// ֽ + ///// + //private void DataReceiveBytesThread() + //{ + // while (true) + // { + // if (sp != null && sp.IsOpen) + // { + // try + // { + // if (sp.BytesToRead > 0) + // { + // byte[] buffer = new byte[sp.BytesToRead]; + // sp.Read(buffer, 0, sp.BytesToRead); + // string receivedData = Encoding.Default.GetString(buffer); + // //Debug.Log(receivedData); + // UnityMainThreadDispatcher.Instance().Enqueue(() => + // { + // foreach (var s in allSensor) + // { + // s.Value.ReceiveData(receivedData); + // } + // }); + // } + // } + // catch (Exception) + // { + // Debug.Log("Ϣʧ"); + // } + // } + // Thread.Sleep(20); + // } + //} + + ///// + ///// ַ + ///// + //private void DataReceiveStrThread() + //{ + // while (true) + // { + // if (sp != null && sp.IsOpen) + // { + // try + // { + // if (sp.BytesToRead > 0) + // { + // sb.Append(sp.ReadExisting()); + // //this.ColorLog(GDLog.LogColorState.Blue, sp.ReadLine()); + // UnityMainThreadDispatcher.Instance().Enqueue(() => + // { + // foreach (var s in allSensor) + // { + // s.Value.ReceiveData(sb.ToString()); + // } + // sb.Clear(); + // }); + // } + // } + // catch (Exception) + // { + // Debug.Log("Ϣʧ"); + // } + // } + // Thread.Sleep(20); + // } + //} + ///// + ///// Ϣ + ///// + ///// + //public void SendFunction(string str) + //{ + // try + // { + // byte[] dataSend = Encoding.ASCII.GetBytes(str); + // if (sp != null && sp.IsOpen) + // { + // if (dataSend != null && dataSend.Length > 0) + // { + // sp.Write(dataSend, 0, dataSend.Length); + // Debug.Log("Ϣɹ" + str); + // } + // } + // } + // catch (Exception) + // { + // Debug.Log("Ϣʧܣ" + str); + // } + //} + ////ȡָ + //public T GetSensor() where T : Sensor + //{ + // try + // { + // string name = typeof(T).Name; + // if (!allSensor.ContainsKey(name)) + // { + // allSensor.TryAdd(name, GetComponentInChildren()); + // allSensor[name].Init(this); + // } + // //Debug.Log("ȡɹ"); + // return allSensor[name] as T; + // } + // catch (Exception) + // { + // Debug.Log("ȡʧ"); + // return null; + // } + //} + //#region ڿر + ////򿪴 + //public void OpenPort() + //{ + // try + // { + // if (!sp.IsOpen) + // { + // sp.Open(); + // dataReceiveThread.Start(); + // Debug.Log("ڴ򿪳ɹ"); + // } + // } + // catch (Exception) + // { + // Debug.Log("ڴʧ"); + // } + //} + + ////رմ + //public void ClosePort() + //{ + // try + // { + // sp.Close(); + // dataReceiveThread.Abort(); + // Debug.Log("ڹر"); + // } + // catch (Exception) + // { + // Debug.Log("ڹرʧ"); + // } + //} + //#endregion + + //#region Unity ˳ + //private void OnApplicationQuit() + //{ + // ClosePort(); + //} + //private void OnDisable() + //{ + // this.Log("Ϊʲôرˣ" + gameObject.name); + // ClosePort(); + //} + //#endregion + #endregion public enum DataType { ַ, ֽ, } - #region ڲ,Ҫ޸Ĵ벨 - [Header("")] - public string portName = "COM10"; + + #region ڲ + //[Header("˿മʱԶȡ")] + //public string portName = "COM3"; [Header("")] public int baudRate = 115200; [Header("żУ")] @@ -28,38 +230,87 @@ public class SensorManager : MonoBehaviour /*MonoSingleton*/ private int dataBits = 8; [Header("ֹͣλ")] private StopBits stopBits = StopBits.One; - SerialPort sp = null; - Thread dataReceiveThread; [Header("ݸʽ")] public DataType dataType; #endregion + private Dictionary allSensor = new Dictionary(); - StringBuilder sb = new StringBuilder(); + public GameObject canvas; + List COMPorts = new List(); + List serialPorts = new List(); + List dataReceiveThreads = new List(); + // ߳״̬־ÿڶӦһ־ + private bool[] isThreadRunning; + private void Start() { - sp = new SerialPort(portName, baudRate, parity, dataBits, stopBits); + COMPorts = GetAllWindowsCOMPorts().ToList(); + + // ʼд + for (int i = 0; i < COMPorts.Count; i++) + { + SerialPort sp = new SerialPort(COMPorts[i], baudRate, parity, dataBits, stopBits); + serialPorts.Add(sp); + } + + // ʼ foreach (Sensor s in GetComponentsInChildren()) { allSensor.TryAdd(s.GetType().Name, s); } - switch (dataType) + + // ʼ̣߳󶨾崮ң + isThreadRunning = new bool[COMPorts.Count]; // ʼ־λ + for (int i = 0; i < COMPorts.Count; i++) { - case DataType.ֽ: - dataReceiveThread = new Thread(new ThreadStart(DataReceiveBytesThread)); - break; - case DataType.ַ: - dataReceiveThread = new Thread(new ThreadStart(DataReceiveStrThread)); - break; + isThreadRunning[i] = true; // Ĭ߳ + int portIndex = i; // ǰհ壩 + Thread thread; + + // ʹӦ̣߳󶨶˿ + switch (dataType) + { + case DataType.ֽ: + thread = new Thread(() => DataReceiveBytesThread(portIndex)); + break; + case DataType.ַ: + thread = new Thread(() => DataReceiveStrThread(portIndex)); + break; + default: + thread = null; + break; + } + + if (thread != null) + { + dataReceiveThreads.Add(thread); + } } + OpenPort(); } - /// - /// ֽ - /// - private void DataReceiveBytesThread() + + private void Update() { - while (true) + if (Input.GetKeyDown(KeyCode.BackQuote)) { + canvas?.SetActive(!canvas.activeInHierarchy); + } + if (Input.GetKeyDown(KeyCode.Escape)) + { + canvas?.SetActive(false); + } + } + + /// + /// ֽ̣߳󶨾崮 + /// + private void DataReceiveBytesThread(int portIndex) + { + // ѭ̱߳־λΪtrueЧ + while (isThreadRunning[portIndex] && portIndex < serialPorts.Count) + { + SerialPort sp = serialPorts[portIndex]; if (sp != null && sp.IsOpen) { try @@ -67,34 +318,41 @@ public class SensorManager : MonoBehaviour /*MonoSingleton*/ if (sp.BytesToRead > 0) { byte[] buffer = new byte[sp.BytesToRead]; - sp.Read(buffer, 0, sp.BytesToRead); + sp.Read(buffer, 0, buffer.Length); string receivedData = Encoding.Default.GetString(buffer); - //Debug.Log(receivedData); + //Debug.Log($" {sp.PortName} ֽ{receivedData}"); + + // ̴߳ UnityMainThreadDispatcher.Instance().Enqueue(() => { - foreach (var s in allSensor) + foreach (var pair in allSensor) { - s.Value.ReceiveData(receivedData); + pair.Value.ReceiveData(receivedData, sp); } }); } } - catch (Exception) + catch (Exception ex) { - Debug.Log("Ϣʧ"); + Debug.Log($" {sp.PortName} ֽմ{ex.Message}"); } } - Thread.Sleep(20); + Thread.Sleep(10); // CPUռ } } /// - /// ַ + /// ַ̣߳󶨾崮 /// - private void DataReceiveStrThread() + private void DataReceiveStrThread(int portIndex) { - while (true) + // ÿ̶߳StringBuilder̳߳ͻ + StringBuilder sb = new StringBuilder(); + + // ѭ̱߳־λΪtrueЧ + while (isThreadRunning[portIndex] && portIndex < serialPorts.Count) { + SerialPort sp = serialPorts[portIndex]; if (sp != null && sp.IsOpen) { try @@ -102,49 +360,63 @@ public class SensorManager : MonoBehaviour /*MonoSingleton*/ if (sp.BytesToRead > 0) { sb.Append(sp.ReadExisting()); - //this.ColorLog(GDLog.LogColorState.Blue, sp.ReadLine()); + string receivedData = sb.ToString(); + UnityMainThreadDispatcher.Instance().Enqueue(() => { foreach (var s in allSensor) { - s.Value.ReceiveData(sb.ToString()); + try + { + //Debug.LogError(s.Value.name); + s.Value.ReceiveData(receivedData, sp); + + } + catch (Exception ex) + { + Debug.LogError($"ݴ{ex.Message}"); + } } sb.Clear(); }); } } - catch (Exception) + catch (Exception ex) { - Debug.Log("Ϣʧ"); + Debug.Log($" {sp.PortName} ַմ{ex.Message}"); } } - Thread.Sleep(20); + Thread.Sleep(10); // CPUռ } } + /// - /// Ϣ + /// ݵѴ򿪵Ĵ /// - /// public void SendFunction(string str) { try { byte[] dataSend = Encoding.ASCII.GetBytes(str); - if (sp != null && sp.IsOpen) + for (int i = 0; i < serialPorts.Count; i++) { - if (dataSend != null && dataSend.Length > 0) + SerialPort sp = serialPorts[i]; + if (sp != null && sp.IsOpen && dataSend != null && dataSend.Length > 0) { sp.Write(dataSend, 0, dataSend.Length); - Debug.Log("Ϣɹ" + str); + Debug.Log($"򴮿 {sp.PortName} ͳɹ{str}"); } } } - catch (Exception) + catch (Exception ex) { - Debug.Log("Ϣʧܣ" + str); + Debug.Log($"ʧܣ{ex.Message}ݣ{str}"); } } - //ȡָ + + /// + /// ȡָ͵Ĵ + /// public T GetSensor() where T : Sensor { try @@ -152,62 +424,129 @@ public class SensorManager : MonoBehaviour /*MonoSingleton*/ string name = typeof(T).Name; if (!allSensor.ContainsKey(name)) { - allSensor.TryAdd(name, GetComponentInChildren()); - allSensor[name].Init(this); + T sensor = GetComponentInChildren(); + if (sensor != null) + { + allSensor.TryAdd(name, sensor); + sensor.Init(this); + } } - //Debug.Log("ȡɹ"); + Debug.Log($"ȡ {typeof(T).Name} ɹ"); return allSensor[name] as T; } - catch (Exception) + catch (Exception ex) { - Debug.Log("ȡʧ"); + Debug.Log($"ȡ {typeof(T).Name} ʧܣ{ex.Message}"); return null; } } - #region ڿر - //򿪴 + + #region ڴ򿪹رտ + /// + /// дڲӦ߳ + /// public void OpenPort() { try { - if (!sp.IsOpen) + Debug.Log("ڴ򿪴..."); + for (int i = 0; i < serialPorts.Count; i++) { - sp.Open(); - dataReceiveThread.Start(); - Debug.Log("ڴ򿪳ɹ"); + SerialPort sp = serialPorts[i]; + if (sp != null && !sp.IsOpen) + { + sp.Open(); + Debug.Log($" {sp.PortName} 򿪳ɹ"); + } + + // Ӧ̣߳Чԣ + if (i < dataReceiveThreads.Count && dataReceiveThreads[i] != null && !dataReceiveThreads[i].IsAlive) + { + dataReceiveThreads[i].Start(); + } } } - catch (Exception) + catch (Exception ex) { - Debug.Log("ڴʧ"); + Debug.Log($"ڴʧܣ{ex.ToString()}"); } } - //رմ + /// + /// رдڲֹ̣ͣ߳ȫֹAbort + /// public void ClosePort() { - try + for (int i = 0; i < serialPorts.Count; i++) { - sp.Close(); - dataReceiveThread.Abort(); - Debug.Log("ڹر"); - } - catch (Exception) - { - Debug.Log("ڹرʧ"); + // 1. ֹ̣ͣ߳ͨ־λ + if (i < isThreadRunning.Length) + { + isThreadRunning[i] = false; // ֪ͨ߳˳ѭ + } + + // ȴֹ߳1룩 + if (i < dataReceiveThreads.Count && dataReceiveThreads[i] != null && dataReceiveThreads[i].IsAlive) + { + dataReceiveThreads[i].Join(1000); + dataReceiveThreads[i] = null; + } + + // 2. رմ + SerialPort sp = serialPorts[i]; + if (sp != null && sp.IsOpen) + { + try + { + sp.Close(); + Debug.Log($" {sp.PortName} رճɹ"); + } + catch (Exception ex) + { + Debug.Log($" {sp.PortName} رʧܣ{ex.ToString()}"); + } + serialPorts[i] = null; + } } } #endregion - #region Unity ˳ + #region Unity private void OnApplicationQuit() { ClosePort(); } + private void OnDisable() { - this.Log("Ϊʲôرˣ" + gameObject.name); ClosePort(); } + + /// + /// ȡWindowsڲ + /// + public string[] GetAllWindowsCOMPorts() + { + try + { + var ports = SerialPort.GetPortNames(); + // COM˿ں + Array.Sort(ports, (a, b) => + { + if (int.TryParse(a.Replace("COM", ""), out int numA) && + int.TryParse(b.Replace("COM", ""), out int numB)) + { + return numA.CompareTo(numB); + } + return string.Compare(a, b); + }); + return ports; + } + catch (Exception e) + { + Debug.LogError($"ȡʧܣ{e.Message}\n{e.StackTrace}"); + return Array.Empty(); + } + } #endregion } \ No newline at end of file diff --git a/Assets/StreamingAssets/daoNiaoShu/ExcelData/ExcelToJson/BookPanelData.json b/Assets/StreamingAssets/daoNiaoShu/ExcelData/ExcelToJson/BookPanelData.json index 09d2940..81e1068 100644 --- a/Assets/StreamingAssets/daoNiaoShu/ExcelData/ExcelToJson/BookPanelData.json +++ b/Assets/StreamingAssets/daoNiaoShu/ExcelData/ExcelToJson/BookPanelData.json @@ -1 +1 @@ -[{"id":1,"group":"1","txt":"公犬导尿术
一、导尿术的适应症与禁忌症​​
1.适应症​​
1)急性尿潴留。
2)需采集无菌尿液样本或进行膀胱灌注治疗。
3)尿道梗阻解除后维持排尿通路。
2.禁忌症​​
1)尿道破裂或严重损伤(需手术修复)。
2)泌尿道急性感染未控制(避免逆行感染扩散)。
3)严重凝血功能障碍。"},{"id":2,"group":"1","txt":"二、公犬泌尿系统解剖要点​​
1.尿道结构​​
1)公犬尿道分为前列腺前部、前列腺部和阴茎部,导尿管需通过阴茎部尿道(长约15-20cm)进入膀胱。
2)尿道口位于阴茎龟头顶端,被包皮覆盖,操作需向后推包皮暴露。
2.体表定位标志​​
1)坐骨结节为导尿管体外测量的终点(尿道口至坐骨结节距离≈尿道长度)。
2)膀胱充盈时可在腹后部触及球形隆起(叩诊浊音)。"},{"id":3,"group":"1","txt":"三、术前准备工作​​
1.物品准备​​
1)核心器械:型号适合的硅胶导尿管、无菌外科手套、20ml注射器、0.9%生理盐水、利多卡因凝胶、氯己定棉球、无菌持物镊等。
2)辅助物品:电动剃毛器(备皮范围直径5-10cm)、集尿袋、抗生素软膏、一次性医用垫单、医疗污物桶。
2.患犬准备​​
1)镇静镇痛:静脉注射右美托咪定(5μg/kg)+布托啡诺(0.3mg/kg),提供深度镇静与镇痛。
2)体位:右侧卧位,后肢外展固定,充分暴露会阴部。
3)备皮:剃除包皮口周围长毛,清洁皮肤碎屑。
3.术者准备​​
七步洗手法洗手,戴无菌口罩、帽子、手套。"},{"id":4,"group":"1","txt":"四、规范操作流程​​
1.清洁消毒​​
1)向后推包皮暴露龟头,用20ml生理盐水冲洗包皮腔污物。
2)氯己定棉球消毒(2次):
(1)第1次:由内向外环形清洁包皮口及周围皮肤(半径5-10cm)。
(2)第2次:重点消毒尿道口及龟头表面。
2.尿道麻醉:食指涂抹利多卡因凝胶,旋转涂抹龟头及尿道口,等待2-3分钟起效。
3.导尿管测量与插入​​
1)测量:导尿管头端置于尿道口,尾端拉至坐骨结节处标记刻度(体外预估法)。
2)插管​​
(1)导尿管外涂抗生素软膏润滑。
(2)助手向后推包皮暴露阴茎2-5cm,术者持导管沿尿道走向缓慢插入(遇阻力勿强行推进)。
(3)成功标志:尿液流入集尿袋,膀胱逐渐塌陷。
4.导尿后处理​​
1)尿液引流完毕后,缓慢拔出导尿管。
2)脱手套,按医疗废物分类处理物品。"},{"id":5,"group":"1","txt":"五、注意事项与并发症预防​​
1.无菌操作​​
1)手套破损需立即更换。
2)消毒棉球限单次单向使用。
2.操作技巧​​
1)尿道痉挛时暂停操作,追加利多卡因凝胶(禁用暴力插管)。
2)导尿管插入深度不超过坐骨结节标记点(避免膀胱壁损伤)。
3)并发症应对​​
(1)尿道损伤:立即停止操作,评估是否需膀胱穿刺或手术。
(2)逆行感染:严格无菌操作,术后监测排尿状态及体温。"},{"id":0,"group":"","txt":""},{"id":0,"group":"","txt":""},{"id":0,"group":"","txt":""},{"id":0,"group":"","txt":""},{"id":0,"group":"","txt":""},{"id":0,"group":"","txt":""},{"id":0,"group":"","txt":""},{"id":0,"group":"","txt":""},{"id":0,"group":"","txt":""},{"id":0,"group":"","txt":""},{"id":0,"group":"","txt":""}] +[{"id":1,"group":"1","topTxt":"一、导尿术的适应症与禁忌症","txt":"1.适应症​​
1)急性尿潴留。
2)需采集无菌尿液样本或进行膀胱灌注治疗。
3)尿道梗阻解除后维持排尿通路。
2.禁忌症​​
1)尿道破裂或严重损伤(需手术修复)。
2)泌尿道急性感染未控制(避免逆行感染扩散)。
3)严重凝血功能障碍。"},{"id":2,"group":"1","topTxt":"二、公犬泌尿系统解剖要点","txt":"1.尿道结构​​
1)公犬尿道分为前列腺前部、前列腺部和阴茎部,导尿管需通过阴茎部尿道(长约15-20cm)进入膀胱。
2)尿道口位于阴茎龟头顶端,被包皮覆盖,操作需向后推包皮暴露。
2.体表定位标志​​
1)坐骨结节为导尿管体外测量的终点(尿道口至坐骨结节距离≈尿道长度)。
2)膀胱充盈时可在腹后部触及球形隆起(叩诊浊音)。"},{"id":3,"group":"1","topTxt":"三、术前准备工作","txt":"1.物品准备​​
1)核心器械:型号适合的硅胶导尿管、无菌外科手套、20ml注射器、0.9%生理盐水、利多卡因凝胶、氯己定棉球、无菌持物镊等。
2)辅助物品:电动剃毛器(备皮范围直径5-10cm)、集尿袋、抗生素软膏、一次性医用垫单、医疗污物桶。
2.患犬准备​​
1)镇静镇痛:静脉注射右美托咪定(5μg/kg)+布托啡诺(0.3mg/kg),提供深度镇静与镇痛。"},{"id":4,"group":"1","topTxt":"","txt":"
2)体位:右侧卧位,后肢外展固定,充分暴露会阴部。
3)备皮:剃除包皮口周围长毛,清洁皮肤碎屑。
3.术者准备​​
七步洗手法洗手,戴无菌口罩、帽子、手套。"},{"id":5,"group":"1","topTxt":"四、规范操作流程","txt":"1.清洁消毒​​
1)向后推包皮暴露龟头,用20ml生理盐水冲洗包皮腔污物。
2)氯己定棉球消毒(2次):
(1)第1次:由内向外环形清洁包皮口及周围皮肤(半径5-10cm)。
(2)第2次:重点消毒尿道口及龟头表面。
2.尿道麻醉:食指涂抹利多卡因凝胶,旋转涂抹龟头及尿道口,等待2-3分钟起效。
3.导尿管测量与插入​​
1)测量:导尿管头端置于尿道口,尾端拉至坐骨结节处标记刻度(体外预估法)。"},{"id":6,"group":"1","topTxt":"","txt":"
2)插管​​
(1)导尿管外涂抗生素软膏润滑。
(2)助手向后推包皮暴露阴茎2-5cm,术者持导管沿尿道走向缓慢插入(遇阻力勿强行推进)。
(3)成功标志:尿液流入集尿袋,膀胱逐渐塌陷。
4.导尿后处理​​
1)尿液引流完毕后,缓慢拔出导尿管。
2)脱手套,按医疗废物分类处理物品。"},{"id":7,"group":"1","topTxt":"五、注意事项与并发症预防","txt":"1.无菌操作​​
1)手套破损需立即更换。
2)消毒棉球限单次单向使用。
2.操作技巧​​
1)尿道痉挛时暂停操作,追加利多卡因凝胶(禁用暴力插管)。
2)导尿管插入深度不超过坐骨结节标记点(避免膀胱壁损伤)。
3)并发症应对​​
(1)尿道损伤:立即停止操作,评估是否需膀胱穿刺或手术。
(2)逆行感染:严格无菌操作,术后监测排尿状态及体温。"},{"id":0,"group":"","topTxt":"","txt":""},{"id":0,"group":"","topTxt":"","txt":""},{"id":0,"group":"","topTxt":"","txt":""},{"id":0,"group":"","topTxt":"","txt":""},{"id":0,"group":"","topTxt":"","txt":""},{"id":0,"group":"","topTxt":"","txt":""},{"id":0,"group":"","topTxt":"","txt":""},{"id":0,"group":"","topTxt":"","txt":""},{"id":0,"group":"","topTxt":"","txt":""},{"id":0,"group":"","topTxt":"","txt":""},{"id":0,"group":"","topTxt":"","txt":""}] diff --git a/Assets/StreamingAssets/wakeupresource.jet b/Assets/StreamingAssets/wakeupresource.jet index fca8b39..f42a0aa 100644 Binary files a/Assets/StreamingAssets/wakeupresource.jet and b/Assets/StreamingAssets/wakeupresource.jet differ diff --git a/Assets/Third/AI/Plugins/x86/msc.dll b/Assets/Third/AI/Plugins/x86/msc.dll index 7049e08..272f5ec 100644 Binary files a/Assets/Third/AI/Plugins/x86/msc.dll and b/Assets/Third/AI/Plugins/x86/msc.dll differ diff --git a/Assets/Third/AI/Plugins/x86_64/msc_x64.dll b/Assets/Third/AI/Plugins/x86_64/msc_x64.dll index 0926930..59e50ee 100644 Binary files a/Assets/Third/AI/Plugins/x86_64/msc_x64.dll and b/Assets/Third/AI/Plugins/x86_64/msc_x64.dll differ diff --git a/Assets/Third/AI/Scripts/TTS&&STT/ZXK/XunFeiWakeup.cs b/Assets/Third/AI/Scripts/TTS&&STT/ZXK/XunFeiWakeup.cs index d5e0166..72a19bb 100644 --- a/Assets/Third/AI/Scripts/TTS&&STT/ZXK/XunFeiWakeup.cs +++ b/Assets/Third/AI/Scripts/TTS&&STT/ZXK/XunFeiWakeup.cs @@ -15,7 +15,7 @@ using UnityThreadingUtils; public class XunFeiWakeup : MonoBehaviour { //ѴʣСС - private const string app_id = "appid=0b1fcc5f,word_dir= . ";//appid aiui.dllmsc.dllҪ + private const string app_id = "appid=03377640,word_dir= . ";//appid aiui.dllmsc.dllҪ private string qivw_session_begin_params/* = "ivw_threshold=0:1450,sst=wakeup,ivw_res_path =fo|" + (Application.streamingAssetsPath + "/wakeupresource.jet").Replace("/", "\\")*/; diff --git a/Assets/_Scripts/Application/daoNiaoShu/ExcelData/CSharpPath/BookPanelData.cs b/Assets/_Scripts/Application/daoNiaoShu/ExcelData/CSharpPath/BookPanelData.cs index 753f114..6433b66 100644 --- a/Assets/_Scripts/Application/daoNiaoShu/ExcelData/CSharpPath/BookPanelData.cs +++ b/Assets/_Scripts/Application/daoNiaoShu/ExcelData/CSharpPath/BookPanelData.cs @@ -7,6 +7,8 @@ namespace DongWuYiXue.DaoNiaoShu public int id; //组 public string group; + //标题 + public string topTxt; //内容 public string txt; diff --git a/Assets/_Scripts/Application/daoNiaoShu/ExcelData/CSharpPath/ExcelData.cs b/Assets/_Scripts/Application/daoNiaoShu/ExcelData/CSharpPath/ExcelData.cs index 6cbaa2b..ad41900 100644 --- a/Assets/_Scripts/Application/daoNiaoShu/ExcelData/CSharpPath/ExcelData.cs +++ b/Assets/_Scripts/Application/daoNiaoShu/ExcelData/CSharpPath/ExcelData.cs @@ -445,6 +445,33 @@ public List GetListBookPanelDatagroup() +public BookPanelData GetBookPanelDatatopTxt(string topTxt) +{ + for (int i = 0; i < allBookPanelData.Count; i++) + { + if (allBookPanelData[i].topTxt == topTxt) + { + return allBookPanelData[i]; + } + } + return null; +} + +public List GetListBookPanelDatatopTxt() +{ + List res = new List(); + for (int i = 0; i < allBookPanelData.Count; i++) + { + if (!res.Contains(allBookPanelData[i].topTxt)) + { + res.Add(allBookPanelData[i].topTxt); + } + } + return res; +} + + + public BookPanelData GetBookPanelDatatxt(string txt) { for (int i = 0; i < allBookPanelData.Count; i++) diff --git a/Assets/_Scripts/Application/daoNiaoShu/UI/BookPanel.cs b/Assets/_Scripts/Application/daoNiaoShu/UI/BookPanel.cs index d0681d0..bc3b69a 100644 --- a/Assets/_Scripts/Application/daoNiaoShu/UI/BookPanel.cs +++ b/Assets/_Scripts/Application/daoNiaoShu/UI/BookPanel.cs @@ -40,7 +40,7 @@ namespace DongWuYiXue.DaoNiaoShu } public void ShowBook(string group) { - if(bookPro!=null) + if (bookPro != null) { Destroy(bookPro.gameObject); bookPro = null; @@ -55,29 +55,31 @@ namespace DongWuYiXue.DaoNiaoShu if (!shangxiahuadong) { shangxiahuadong = true; - bookPro.transform.FindFirst("上下滑动动画").SetActive(true); + //bookPro.transform.FindFirst("上下滑动动画").SetActive(true); } }); - bookPanelDatas = GetModel().excelData.allBookPanelData.FindAll(e=>e.group == group); + bookPanelDatas = GetModel().excelData.allBookPanelData.FindAll(e => e.group == group); for (int i = 0; i < bookPanelDatas.Count; i++) { if (i % 2 != 0 && i > 0) { - AddPaper_Txt(bookPro, bookPanelDatas[i - 1].txt.Replace("
","\n"), bookPanelDatas[i].txt.Replace("
", "\n"), i,i+1); + AddPaper_Txt(bookPro, bookPanelDatas[i - 1].txt.Replace("
", "\n"), bookPanelDatas[i - 1].topTxt, bookPanelDatas[i].txt.Replace("
", "\n"), bookPanelDatas[i].topTxt, i, i + 1); } - if(i == (bookPanelDatas.Count - 1) && (i % 2 == 0)) + if (i == (bookPanelDatas.Count - 1) && (i % 2 == 0)) { - AddPaper_Txt(bookPro, bookPanelDatas[i].txt.Replace("
", "\n"), "",i+1,i+2); + AddPaper_Txt(bookPro, bookPanelDatas[i].txt.Replace("
", "\n"), bookPanelDatas[i].topTxt, "", "", i + 1, i + 2); } } AddPaper_FengMian(bookPro); } - public void AddPaper_Txt(BookPro book,string frontTxt,string backTxt,int frontNum,int backNum) + public void AddPaper_Txt(BookPro book, string frontTxt, string frontTopText, string backTxt, string backTopText, int frontNum, int backNum) { GameObject frontPage = Instantiate(FrontPagePrefab); + frontPage.FindFirst("bookTopText").text = frontTopText; frontPage.FindFirst("bookText").text = frontTxt; frontPage.FindFirst("numText").text = frontNum.ToString(); GameObject backPage = Instantiate(BackPagePrefab); + backPage.FindFirst("bookTopText").text = backTopText; backPage.FindFirst("bookText").text = backTxt; backPage.FindFirst("numText").text = backNum.ToString(); frontPage.transform.SetParent(book.transform, false); diff --git a/msc/069ff7edfa99257b1e2ff25853437b0e/kivw.dat b/msc/069ff7edfa99257b1e2ff25853437b0e/kivw.dat new file mode 100644 index 0000000..aa609cc Binary files /dev/null and b/msc/069ff7edfa99257b1e2ff25853437b0e/kivw.dat differ diff --git a/msc/2aae4e51c4e2dd03beb0e4c8c8d7affe/kivw.dat b/msc/2aae4e51c4e2dd03beb0e4c8c8d7affe/kivw.dat index 50e8b4c..3b0e9cf 100644 --- a/msc/2aae4e51c4e2dd03beb0e4c8c8d7affe/kivw.dat +++ b/msc/2aae4e51c4e2dd03beb0e4c8c8d7affe/kivw.dat @@ -1,3 +1,3 @@ -2025/11/28 09:18:21 -80580f9047ae7f4bd0325a05c2f5cdaa -U}pu<^<^oJeǃ#=bC]㋽&KJ|Yi8 /s(dT{zu+ktL3P+~׫8|?=Vi(H_F!.8lr[us(ܩ1T \ No newline at end of file +2026/01/04 14:58:38 +3dea935fd3a1ead6af9393bb07c8f238 +/ tk#xgb?qCET mi# m0h%xr q2ΧB'`.⏠ޯ+_t4\dAvj5NLǻh<b8%i>=k!еWۣN|J>lD,.4 \ No newline at end of file