合并
This commit is contained in:
commit
5ff6401ded
@ -457,7 +457,7 @@ MonoBehaviour:
|
|||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
MarkType: 0
|
MarkType: 0
|
||||||
CustomComponentName:
|
CustomComponentName: Right
|
||||||
CustomComment:
|
CustomComment:
|
||||||
mComponentName: UnityEngine.UI.Image
|
mComponentName: UnityEngine.UI.Image
|
||||||
--- !u!1 &3408871029033640143
|
--- !u!1 &3408871029033640143
|
||||||
@ -581,7 +581,7 @@ MonoBehaviour:
|
|||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
MarkType: 0
|
MarkType: 0
|
||||||
CustomComponentName:
|
CustomComponentName: Scroll
|
||||||
CustomComment:
|
CustomComment:
|
||||||
mComponentName: UnityEngine.UI.ScrollRect
|
mComponentName: UnityEngine.UI.ScrollRect
|
||||||
--- !u!1 &4561816282390826745
|
--- !u!1 &4561816282390826745
|
||||||
@ -835,7 +835,7 @@ MonoBehaviour:
|
|||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
MarkType: 0
|
MarkType: 0
|
||||||
CustomComponentName:
|
CustomComponentName: ObjBg
|
||||||
CustomComment:
|
CustomComment:
|
||||||
mComponentName: UnityEngine.UI.RawImage
|
mComponentName: UnityEngine.UI.RawImage
|
||||||
--- !u!1 &6831573971870136393
|
--- !u!1 &6831573971870136393
|
||||||
|
|||||||
1555
Assets/Art/UIPrefab/UIImageSelectMap.prefab
Normal file
1555
Assets/Art/UIPrefab/UIImageSelectMap.prefab
Normal file
File diff suppressed because it is too large
Load Diff
7
Assets/Art/UIPrefab/UIImageSelectMap.prefab.meta
Normal file
7
Assets/Art/UIPrefab/UIImageSelectMap.prefab.meta
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8ae12c898f4042949bc5cc317c63d77d
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName: uiimageselectmap_prefab
|
||||||
|
assetBundleVariant:
|
||||||
@ -1018,8 +1018,8 @@ MonoBehaviour:
|
|||||||
m_Calls: []
|
m_Calls: []
|
||||||
m_text: "\u5B9E\u8BAD\u8BF4\u660E"
|
m_text: "\u5B9E\u8BAD\u8BF4\u660E"
|
||||||
m_isRightToLeft: 0
|
m_isRightToLeft: 0
|
||||||
m_fontAsset: {fileID: 11400000, guid: 97936a7b3a86809479ac89371e95b079, type: 2}
|
m_fontAsset: {fileID: 11400000, guid: e7da174c677019b49aa681250aa4ded8, type: 2}
|
||||||
m_sharedMaterial: {fileID: 168401102475399263, guid: 97936a7b3a86809479ac89371e95b079, type: 2}
|
m_sharedMaterial: {fileID: -7878122246201655599, guid: e7da174c677019b49aa681250aa4ded8, type: 2}
|
||||||
m_fontSharedMaterials: []
|
m_fontSharedMaterials: []
|
||||||
m_fontMaterial: {fileID: 0}
|
m_fontMaterial: {fileID: 0}
|
||||||
m_fontMaterials: []
|
m_fontMaterials: []
|
||||||
@ -1473,7 +1473,7 @@ MonoBehaviour:
|
|||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
MarkType: 0
|
MarkType: 0
|
||||||
CustomComponentName:
|
CustomComponentName: OperationContent
|
||||||
CustomComment:
|
CustomComment:
|
||||||
mComponentName: UnityEngine.UI.Image
|
mComponentName: UnityEngine.UI.Image
|
||||||
--- !u!1 &4068472154838936528
|
--- !u!1 &4068472154838936528
|
||||||
@ -2097,8 +2097,8 @@ MonoBehaviour:
|
|||||||
m_Calls: []
|
m_Calls: []
|
||||||
m_text: "\u64CD\u4F5C\u8BF4\u660E"
|
m_text: "\u64CD\u4F5C\u8BF4\u660E"
|
||||||
m_isRightToLeft: 0
|
m_isRightToLeft: 0
|
||||||
m_fontAsset: {fileID: 11400000, guid: 97936a7b3a86809479ac89371e95b079, type: 2}
|
m_fontAsset: {fileID: 11400000, guid: e7da174c677019b49aa681250aa4ded8, type: 2}
|
||||||
m_sharedMaterial: {fileID: 168401102475399263, guid: 97936a7b3a86809479ac89371e95b079, type: 2}
|
m_sharedMaterial: {fileID: -7878122246201655599, guid: e7da174c677019b49aa681250aa4ded8, type: 2}
|
||||||
m_fontSharedMaterials: []
|
m_fontSharedMaterials: []
|
||||||
m_fontMaterial: {fileID: 0}
|
m_fontMaterial: {fileID: 0}
|
||||||
m_fontMaterials: []
|
m_fontMaterials: []
|
||||||
|
|||||||
2465
Assets/Art/UIPrefab/UIKnowledge.prefab
Normal file
2465
Assets/Art/UIPrefab/UIKnowledge.prefab
Normal file
File diff suppressed because it is too large
Load Diff
7
Assets/Art/UIPrefab/UIKnowledge.prefab.meta
Normal file
7
Assets/Art/UIPrefab/UIKnowledge.prefab.meta
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 3e4645aaac3d48d4896ad6e7b2a1f1cc
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName: uiknowledge_prefab
|
||||||
|
assetBundleVariant:
|
||||||
@ -134,7 +134,7 @@ MonoBehaviour:
|
|||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
MarkType: 0
|
MarkType: 0
|
||||||
CustomComponentName:
|
CustomComponentName: VoiceAdd
|
||||||
CustomComment:
|
CustomComment:
|
||||||
mComponentName: UnityEngine.UI.Button
|
mComponentName: UnityEngine.UI.Button
|
||||||
--- !u!1 &340564367494795038
|
--- !u!1 &340564367494795038
|
||||||
@ -355,8 +355,8 @@ MonoBehaviour:
|
|||||||
m_Calls: []
|
m_Calls: []
|
||||||
m_text: "\u97F3\u91CF\u8C03\u8282"
|
m_text: "\u97F3\u91CF\u8C03\u8282"
|
||||||
m_isRightToLeft: 0
|
m_isRightToLeft: 0
|
||||||
m_fontAsset: {fileID: 11400000, guid: 97936a7b3a86809479ac89371e95b079, type: 2}
|
m_fontAsset: {fileID: 11400000, guid: e7da174c677019b49aa681250aa4ded8, type: 2}
|
||||||
m_sharedMaterial: {fileID: 168401102475399263, guid: 97936a7b3a86809479ac89371e95b079, type: 2}
|
m_sharedMaterial: {fileID: -7878122246201655599, guid: e7da174c677019b49aa681250aa4ded8, type: 2}
|
||||||
m_fontSharedMaterials: []
|
m_fontSharedMaterials: []
|
||||||
m_fontMaterial: {fileID: 0}
|
m_fontMaterial: {fileID: 0}
|
||||||
m_fontMaterials: []
|
m_fontMaterials: []
|
||||||
@ -489,8 +489,8 @@ MonoBehaviour:
|
|||||||
m_Calls: []
|
m_Calls: []
|
||||||
m_text: "\u9F20\u6807\u7075\u654F\u5EA6"
|
m_text: "\u9F20\u6807\u7075\u654F\u5EA6"
|
||||||
m_isRightToLeft: 0
|
m_isRightToLeft: 0
|
||||||
m_fontAsset: {fileID: 11400000, guid: 97936a7b3a86809479ac89371e95b079, type: 2}
|
m_fontAsset: {fileID: 11400000, guid: e7da174c677019b49aa681250aa4ded8, type: 2}
|
||||||
m_sharedMaterial: {fileID: 168401102475399263, guid: 97936a7b3a86809479ac89371e95b079, type: 2}
|
m_sharedMaterial: {fileID: -7878122246201655599, guid: e7da174c677019b49aa681250aa4ded8, type: 2}
|
||||||
m_fontSharedMaterials: []
|
m_fontSharedMaterials: []
|
||||||
m_fontMaterial: {fileID: 0}
|
m_fontMaterial: {fileID: 0}
|
||||||
m_fontMaterials: []
|
m_fontMaterials: []
|
||||||
@ -566,7 +566,7 @@ GameObject:
|
|||||||
m_Component:
|
m_Component:
|
||||||
- component: {fileID: 4603449952944263616}
|
- component: {fileID: 4603449952944263616}
|
||||||
- component: {fileID: 2111290541918366963}
|
- component: {fileID: 2111290541918366963}
|
||||||
- component: {fileID: 8794892031925789476}
|
- component: {fileID: 1909886951280785919}
|
||||||
m_Layer: 5
|
m_Layer: 5
|
||||||
m_Name: Text
|
m_Name: Text
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
@ -601,7 +601,7 @@ CanvasRenderer:
|
|||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 1275590828871288331}
|
m_GameObject: {fileID: 1275590828871288331}
|
||||||
m_CullTransparentMesh: 1
|
m_CullTransparentMesh: 1
|
||||||
--- !u!114 &8794892031925789476
|
--- !u!114 &1909886951280785919
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
@ -610,7 +610,7 @@ MonoBehaviour:
|
|||||||
m_GameObject: {fileID: 1275590828871288331}
|
m_GameObject: {fileID: 1275590828871288331}
|
||||||
m_Enabled: 1
|
m_Enabled: 1
|
||||||
m_EditorHideFlags: 0
|
m_EditorHideFlags: 0
|
||||||
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
|
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
m_Material: {fileID: 0}
|
m_Material: {fileID: 0}
|
||||||
@ -621,20 +621,75 @@ MonoBehaviour:
|
|||||||
m_OnCullStateChanged:
|
m_OnCullStateChanged:
|
||||||
m_PersistentCalls:
|
m_PersistentCalls:
|
||||||
m_Calls: []
|
m_Calls: []
|
||||||
m_FontData:
|
m_text: "\u786E\u5B9A"
|
||||||
m_Font: {fileID: 12800000, guid: 20ebdb412ee9aec4a9d3005965d9c962, type: 3}
|
m_isRightToLeft: 0
|
||||||
m_FontSize: 16
|
m_fontAsset: {fileID: 11400000, guid: e7da174c677019b49aa681250aa4ded8, type: 2}
|
||||||
m_FontStyle: 0
|
m_sharedMaterial: {fileID: -7878122246201655599, guid: e7da174c677019b49aa681250aa4ded8, type: 2}
|
||||||
m_BestFit: 0
|
m_fontSharedMaterials: []
|
||||||
m_MinSize: 1
|
m_fontMaterial: {fileID: 0}
|
||||||
m_MaxSize: 40
|
m_fontMaterials: []
|
||||||
m_Alignment: 4
|
m_fontColor32:
|
||||||
m_AlignByGeometry: 0
|
serializedVersion: 2
|
||||||
m_RichText: 1
|
rgba: 4294967295
|
||||||
m_HorizontalOverflow: 0
|
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
|
||||||
m_VerticalOverflow: 0
|
m_enableVertexGradient: 0
|
||||||
m_LineSpacing: 1
|
m_colorMode: 3
|
||||||
m_Text: "\u786E\u5B9A"
|
m_fontColorGradient:
|
||||||
|
topLeft: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
topRight: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
bottomRight: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_fontColorGradientPreset: {fileID: 0}
|
||||||
|
m_spriteAsset: {fileID: 0}
|
||||||
|
m_tintAllSprites: 0
|
||||||
|
m_StyleSheet: {fileID: 0}
|
||||||
|
m_TextStyleHashCode: -1183493901
|
||||||
|
m_overrideHtmlColors: 0
|
||||||
|
m_faceColor:
|
||||||
|
serializedVersion: 2
|
||||||
|
rgba: 4294967295
|
||||||
|
m_fontSize: 16
|
||||||
|
m_fontSizeBase: 16
|
||||||
|
m_fontWeight: 400
|
||||||
|
m_enableAutoSizing: 0
|
||||||
|
m_fontSizeMin: 18
|
||||||
|
m_fontSizeMax: 72
|
||||||
|
m_fontStyle: 0
|
||||||
|
m_HorizontalAlignment: 2
|
||||||
|
m_VerticalAlignment: 512
|
||||||
|
m_textAlignment: 65535
|
||||||
|
m_characterSpacing: 0
|
||||||
|
m_wordSpacing: 0
|
||||||
|
m_lineSpacing: 0
|
||||||
|
m_lineSpacingMax: 0
|
||||||
|
m_paragraphSpacing: 0
|
||||||
|
m_charWidthMaxAdj: 0
|
||||||
|
m_enableWordWrapping: 1
|
||||||
|
m_wordWrappingRatios: 0.4
|
||||||
|
m_overflowMode: 0
|
||||||
|
m_linkedTextComponent: {fileID: 0}
|
||||||
|
parentLinkedComponent: {fileID: 0}
|
||||||
|
m_enableKerning: 1
|
||||||
|
m_enableExtraPadding: 0
|
||||||
|
checkPaddingRequired: 0
|
||||||
|
m_isRichText: 1
|
||||||
|
m_parseCtrlCharacters: 1
|
||||||
|
m_isOrthographic: 1
|
||||||
|
m_isCullingEnabled: 0
|
||||||
|
m_horizontalMapping: 0
|
||||||
|
m_verticalMapping: 0
|
||||||
|
m_uvLineOffset: 0
|
||||||
|
m_geometrySortingOrder: 0
|
||||||
|
m_IsTextObjectScaleStatic: 0
|
||||||
|
m_VertexBufferAutoSizeReduction: 0
|
||||||
|
m_useMaxVisibleDescender: 1
|
||||||
|
m_pageToDisplay: 1
|
||||||
|
m_margin: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_isUsingLegacyAnimationComponent: 0
|
||||||
|
m_isVolumetricText: 0
|
||||||
|
m_hasFontAssetChanged: 0
|
||||||
|
m_baseMaterial: {fileID: 0}
|
||||||
|
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
|
||||||
--- !u!1 &1291984167039376258
|
--- !u!1 &1291984167039376258
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -958,7 +1013,7 @@ MonoBehaviour:
|
|||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
MarkType: 0
|
MarkType: 0
|
||||||
CustomComponentName:
|
CustomComponentName: MouseSub
|
||||||
CustomComment:
|
CustomComment:
|
||||||
mComponentName: UnityEngine.UI.Button
|
mComponentName: UnityEngine.UI.Button
|
||||||
--- !u!1 &2445174993273300670
|
--- !u!1 &2445174993273300670
|
||||||
@ -1298,7 +1353,7 @@ MonoBehaviour:
|
|||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
MarkType: 0
|
MarkType: 0
|
||||||
CustomComponentName:
|
CustomComponentName: MouseAdd
|
||||||
CustomComment:
|
CustomComment:
|
||||||
mComponentName: UnityEngine.UI.Button
|
mComponentName: UnityEngine.UI.Button
|
||||||
--- !u!1 &4566101257233310026
|
--- !u!1 &4566101257233310026
|
||||||
@ -1710,7 +1765,7 @@ MonoBehaviour:
|
|||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
MarkType: 0
|
MarkType: 0
|
||||||
CustomComponentName:
|
CustomComponentName: MouseSlider
|
||||||
CustomComment:
|
CustomComment:
|
||||||
mComponentName: UnityEngine.UI.Slider
|
mComponentName: UnityEngine.UI.Slider
|
||||||
--- !u!1 &6857310105801723508
|
--- !u!1 &6857310105801723508
|
||||||
@ -1723,7 +1778,7 @@ GameObject:
|
|||||||
m_Component:
|
m_Component:
|
||||||
- component: {fileID: 8694246342311846549}
|
- component: {fileID: 8694246342311846549}
|
||||||
- component: {fileID: 8710041809518762022}
|
- component: {fileID: 8710041809518762022}
|
||||||
- component: {fileID: 8821581120829563032}
|
- component: {fileID: 3366047067339770762}
|
||||||
m_Layer: 5
|
m_Layer: 5
|
||||||
m_Name: TitleTxt
|
m_Name: TitleTxt
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
@ -1758,7 +1813,7 @@ CanvasRenderer:
|
|||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 6857310105801723508}
|
m_GameObject: {fileID: 6857310105801723508}
|
||||||
m_CullTransparentMesh: 1
|
m_CullTransparentMesh: 1
|
||||||
--- !u!114 &8821581120829563032
|
--- !u!114 &3366047067339770762
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
@ -1767,7 +1822,7 @@ MonoBehaviour:
|
|||||||
m_GameObject: {fileID: 6857310105801723508}
|
m_GameObject: {fileID: 6857310105801723508}
|
||||||
m_Enabled: 1
|
m_Enabled: 1
|
||||||
m_EditorHideFlags: 0
|
m_EditorHideFlags: 0
|
||||||
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
|
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
m_Material: {fileID: 0}
|
m_Material: {fileID: 0}
|
||||||
@ -1778,20 +1833,75 @@ MonoBehaviour:
|
|||||||
m_OnCullStateChanged:
|
m_OnCullStateChanged:
|
||||||
m_PersistentCalls:
|
m_PersistentCalls:
|
||||||
m_Calls: []
|
m_Calls: []
|
||||||
m_FontData:
|
m_text: "\u8BBE\u7F6E"
|
||||||
m_Font: {fileID: 12800000, guid: bf708833e50b7a746aa577360930b6ed, type: 3}
|
m_isRightToLeft: 0
|
||||||
m_FontSize: 20
|
m_fontAsset: {fileID: 11400000, guid: e7da174c677019b49aa681250aa4ded8, type: 2}
|
||||||
m_FontStyle: 0
|
m_sharedMaterial: {fileID: -7878122246201655599, guid: e7da174c677019b49aa681250aa4ded8, type: 2}
|
||||||
m_BestFit: 0
|
m_fontSharedMaterials: []
|
||||||
m_MinSize: 1
|
m_fontMaterial: {fileID: 0}
|
||||||
m_MaxSize: 40
|
m_fontMaterials: []
|
||||||
m_Alignment: 4
|
m_fontColor32:
|
||||||
m_AlignByGeometry: 0
|
serializedVersion: 2
|
||||||
m_RichText: 1
|
rgba: 4294967295
|
||||||
m_HorizontalOverflow: 0
|
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
|
||||||
m_VerticalOverflow: 0
|
m_enableVertexGradient: 0
|
||||||
m_LineSpacing: 1
|
m_colorMode: 3
|
||||||
m_Text: "\u8BBE\u7F6E"
|
m_fontColorGradient:
|
||||||
|
topLeft: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
topRight: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
bottomRight: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_fontColorGradientPreset: {fileID: 0}
|
||||||
|
m_spriteAsset: {fileID: 0}
|
||||||
|
m_tintAllSprites: 0
|
||||||
|
m_StyleSheet: {fileID: 0}
|
||||||
|
m_TextStyleHashCode: -1183493901
|
||||||
|
m_overrideHtmlColors: 0
|
||||||
|
m_faceColor:
|
||||||
|
serializedVersion: 2
|
||||||
|
rgba: 4294967295
|
||||||
|
m_fontSize: 20
|
||||||
|
m_fontSizeBase: 20
|
||||||
|
m_fontWeight: 400
|
||||||
|
m_enableAutoSizing: 0
|
||||||
|
m_fontSizeMin: 18
|
||||||
|
m_fontSizeMax: 72
|
||||||
|
m_fontStyle: 0
|
||||||
|
m_HorizontalAlignment: 2
|
||||||
|
m_VerticalAlignment: 512
|
||||||
|
m_textAlignment: 65535
|
||||||
|
m_characterSpacing: 0
|
||||||
|
m_wordSpacing: 0
|
||||||
|
m_lineSpacing: 0
|
||||||
|
m_lineSpacingMax: 0
|
||||||
|
m_paragraphSpacing: 0
|
||||||
|
m_charWidthMaxAdj: 0
|
||||||
|
m_enableWordWrapping: 1
|
||||||
|
m_wordWrappingRatios: 0.4
|
||||||
|
m_overflowMode: 0
|
||||||
|
m_linkedTextComponent: {fileID: 0}
|
||||||
|
parentLinkedComponent: {fileID: 0}
|
||||||
|
m_enableKerning: 1
|
||||||
|
m_enableExtraPadding: 0
|
||||||
|
checkPaddingRequired: 0
|
||||||
|
m_isRichText: 1
|
||||||
|
m_parseCtrlCharacters: 1
|
||||||
|
m_isOrthographic: 1
|
||||||
|
m_isCullingEnabled: 0
|
||||||
|
m_horizontalMapping: 0
|
||||||
|
m_verticalMapping: 0
|
||||||
|
m_uvLineOffset: 0
|
||||||
|
m_geometrySortingOrder: 0
|
||||||
|
m_IsTextObjectScaleStatic: 0
|
||||||
|
m_VertexBufferAutoSizeReduction: 0
|
||||||
|
m_useMaxVisibleDescender: 1
|
||||||
|
m_pageToDisplay: 1
|
||||||
|
m_margin: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_isUsingLegacyAnimationComponent: 0
|
||||||
|
m_isVolumetricText: 0
|
||||||
|
m_hasFontAssetChanged: 0
|
||||||
|
m_baseMaterial: {fileID: 0}
|
||||||
|
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
|
||||||
--- !u!1 &7344084794051543825
|
--- !u!1 &7344084794051543825
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -1926,7 +2036,7 @@ MonoBehaviour:
|
|||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
MarkType: 0
|
MarkType: 0
|
||||||
CustomComponentName:
|
CustomComponentName: VoiceSub
|
||||||
CustomComment:
|
CustomComment:
|
||||||
mComponentName: UnityEngine.UI.Button
|
mComponentName: UnityEngine.UI.Button
|
||||||
--- !u!1 &7441298961810434495
|
--- !u!1 &7441298961810434495
|
||||||
@ -2105,7 +2215,7 @@ MonoBehaviour:
|
|||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
MarkType: 0
|
MarkType: 0
|
||||||
CustomComponentName:
|
CustomComponentName: VoiceSlider
|
||||||
CustomComment:
|
CustomComment:
|
||||||
mComponentName: UnityEngine.UI.Slider
|
mComponentName: UnityEngine.UI.Slider
|
||||||
--- !u!1 &8015440409360597658
|
--- !u!1 &8015440409360597658
|
||||||
|
|||||||
@ -149,7 +149,7 @@ MonoBehaviour:
|
|||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
m_Material: {fileID: 0}
|
m_Material: {fileID: 0}
|
||||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
m_RaycastTarget: 1
|
m_RaycastTarget: 0
|
||||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||||
m_Maskable: 1
|
m_Maskable: 1
|
||||||
m_OnCullStateChanged:
|
m_OnCullStateChanged:
|
||||||
|
|||||||
@ -1314,7 +1314,7 @@ MonoBehaviour:
|
|||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
m_Material: {fileID: 0}
|
m_Material: {fileID: 0}
|
||||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
m_RaycastTarget: 1
|
m_RaycastTarget: 0
|
||||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||||
m_Maskable: 1
|
m_Maskable: 1
|
||||||
m_OnCullStateChanged:
|
m_OnCullStateChanged:
|
||||||
|
|||||||
@ -136,7 +136,7 @@ MonoBehaviour:
|
|||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
m_Material: {fileID: 0}
|
m_Material: {fileID: 0}
|
||||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
m_RaycastTarget: 1
|
m_RaycastTarget: 0
|
||||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||||
m_Maskable: 1
|
m_Maskable: 1
|
||||||
m_OnCullStateChanged:
|
m_OnCullStateChanged:
|
||||||
@ -495,7 +495,7 @@ MonoBehaviour:
|
|||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
MarkType: 0
|
MarkType: 0
|
||||||
CustomComponentName:
|
CustomComponentName: Label
|
||||||
CustomComment:
|
CustomComment:
|
||||||
mComponentName: TMPro.TextMeshProUGUI
|
mComponentName: TMPro.TextMeshProUGUI
|
||||||
--- !u!1 &8134342667276409362
|
--- !u!1 &8134342667276409362
|
||||||
|
|||||||
@ -7,6 +7,7 @@
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
|
||||||
namespace QFramework
|
namespace QFramework
|
||||||
{
|
{
|
||||||
@ -24,7 +25,20 @@ namespace QFramework
|
|||||||
public static ResSearchKeys Allocate(string assetName, string ownerBundleName = null, Type assetType = null)
|
public static ResSearchKeys Allocate(string assetName, string ownerBundleName = null, Type assetType = null)
|
||||||
{
|
{
|
||||||
var resSearchRule = SafeObjectPool<ResSearchKeys>.Instance.Allocate();
|
var resSearchRule = SafeObjectPool<ResSearchKeys>.Instance.Allocate();
|
||||||
|
|
||||||
|
if (assetName.Contains("netimage:") ||
|
||||||
|
assetName.Contains("localimage:") ||
|
||||||
|
assetName.Contains("localaudio:") ||
|
||||||
|
assetName.Contains("localtext:") ||
|
||||||
|
assetName.Contains("localbytes:"))
|
||||||
|
{
|
||||||
|
// 暂时这样写死处理
|
||||||
|
resSearchRule.AssetName = assetName;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
resSearchRule.AssetName = assetName.ToLower();
|
resSearchRule.AssetName = assetName.ToLower();
|
||||||
|
}
|
||||||
resSearchRule.OwnerBundle = ownerBundleName == null ? null : ownerBundleName.ToLower();
|
resSearchRule.OwnerBundle = ownerBundleName == null ? null : ownerBundleName.ToLower();
|
||||||
resSearchRule.AssetType = assetType;
|
resSearchRule.AssetType = assetType;
|
||||||
resSearchRule.OriginalAssetName = assetName;
|
resSearchRule.OriginalAssetName = assetName;
|
||||||
|
|||||||
@ -32,7 +32,7 @@ namespace QFramework
|
|||||||
{
|
{
|
||||||
public static string ToLocalImageResName(this string selfFilePath)
|
public static string ToLocalImageResName(this string selfFilePath)
|
||||||
{
|
{
|
||||||
return string.Format("LocalImage:{0}", selfFilePath);
|
return string.Format("localimage:{0}", selfFilePath);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -33,7 +33,7 @@ namespace QFramework
|
|||||||
{
|
{
|
||||||
public static string ToNetImageResName(this string selfHttpUrl)
|
public static string ToNetImageResName(this string selfHttpUrl)
|
||||||
{
|
{
|
||||||
return string.Format("NetImage:{0}", selfHttpUrl);
|
return string.Format("netimage:{0}", selfHttpUrl);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -9,7 +9,7 @@ namespace QFramework
|
|||||||
{
|
{
|
||||||
public static string ToLocalAudioResName(this string selfFilePath)
|
public static string ToLocalAudioResName(this string selfFilePath)
|
||||||
{
|
{
|
||||||
return string.Format("LocalAudio:{0}", selfFilePath);
|
return string.Format("localaudio:{0}", selfFilePath);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -554,11 +554,11 @@ RectTransform:
|
|||||||
m_Children: []
|
m_Children: []
|
||||||
m_Father: {fileID: 7801786202371978394}
|
m_Father: {fileID: 7801786202371978394}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 0}
|
m_AnchorMin: {x: 1, y: 0}
|
||||||
m_AnchorMax: {x: 1, y: 1}
|
m_AnchorMax: {x: 1, y: 0}
|
||||||
m_AnchoredPosition: {x: 0, y: 0}
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
m_SizeDelta: {x: 0, y: 0}
|
m_SizeDelta: {x: 1920, y: 0}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 1, y: -0.0000015497208}
|
||||||
--- !u!114 &5603514822568233693
|
--- !u!114 &5603514822568233693
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -1007,7 +1007,6 @@ RectTransform:
|
|||||||
- {fileID: 4067008720307835646}
|
- {fileID: 4067008720307835646}
|
||||||
- {fileID: 5346698416423119099}
|
- {fileID: 5346698416423119099}
|
||||||
- {fileID: 6454445510295011543}
|
- {fileID: 6454445510295011543}
|
||||||
- {fileID: 2655199300068705655}
|
|
||||||
m_Father: {fileID: 4955625632054724442}
|
m_Father: {fileID: 4955625632054724442}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||||
@ -1033,7 +1032,7 @@ Canvas:
|
|||||||
m_OverridePixelPerfect: 0
|
m_OverridePixelPerfect: 0
|
||||||
m_SortingBucketNormalizedSize: 0
|
m_SortingBucketNormalizedSize: 0
|
||||||
m_VertexColorAlwaysGammaSpace: 0
|
m_VertexColorAlwaysGammaSpace: 0
|
||||||
m_AdditionalShaderChannelsFlag: 0
|
m_AdditionalShaderChannelsFlag: 25
|
||||||
m_UpdateRectTransformForStandalone: 0
|
m_UpdateRectTransformForStandalone: 0
|
||||||
m_SortingLayerID: 0
|
m_SortingLayerID: 0
|
||||||
m_SortingOrder: 0
|
m_SortingOrder: 0
|
||||||
@ -1678,316 +1677,3 @@ MonoBehaviour:
|
|||||||
OnButtonReleased:
|
OnButtonReleased:
|
||||||
m_PersistentCalls:
|
m_PersistentCalls:
|
||||||
m_Calls: []
|
m_Calls: []
|
||||||
--- !u!1001 &2655199300079889975
|
|
||||||
PrefabInstance:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Modification:
|
|
||||||
serializedVersion: 3
|
|
||||||
m_TransformParent: {fileID: 7801786202371978394}
|
|
||||||
m_Modifications:
|
|
||||||
- target: {fileID: 132536, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_Name
|
|
||||||
value: Debug
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 11414302, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_Size
|
|
||||||
value: 1
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 11414302, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_Value
|
|
||||||
value: 1
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 11440770, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_PresetInfoIsWorld
|
|
||||||
value: 1
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22400762, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_AnchoredPosition.y
|
|
||||||
value: -0.000030517578
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22426080, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_AnchorMax.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22426080, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_AnchorMax.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22426080, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_AnchorMin.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22428984, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_AnchorMax.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22428984, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_AnchorMin.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22428984, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_SizeDelta.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22428984, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_SizeDelta.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22428984, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_AnchoredPosition.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22428984, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_AnchoredPosition.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22455554, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_AnchorMax.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22455554, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_AnchorMin.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22455554, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_SizeDelta.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22455554, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_SizeDelta.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22455554, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_AnchoredPosition.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22455554, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_AnchoredPosition.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_Pivot.x
|
|
||||||
value: 0.5
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_Pivot.y
|
|
||||||
value: 0.5
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_AnchorMax.x
|
|
||||||
value: 1
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_AnchorMax.y
|
|
||||||
value: 1
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_AnchorMin.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_AnchorMin.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_SizeDelta.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_SizeDelta.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_LocalScale.x
|
|
||||||
value: 1
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_LocalScale.y
|
|
||||||
value: 1
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_LocalScale.z
|
|
||||||
value: 1
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_LocalPosition.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_LocalPosition.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_LocalPosition.z
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_LocalRotation.w
|
|
||||||
value: 1
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_LocalRotation.x
|
|
||||||
value: -0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_LocalRotation.y
|
|
||||||
value: -0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_LocalRotation.z
|
|
||||||
value: -0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_AnchoredPosition.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_AnchoredPosition.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_LocalEulerAnglesHint.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_LocalEulerAnglesHint.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_LocalEulerAnglesHint.z
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22468896, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_AnchorMax.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22468896, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_AnchorMin.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22468896, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_SizeDelta.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22468896, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_SizeDelta.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22468896, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_AnchoredPosition.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22468896, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_AnchoredPosition.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22488670, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_AnchorMax.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22488670, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_AnchorMin.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22488670, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_SizeDelta.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22488670, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_SizeDelta.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22488670, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_AnchoredPosition.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22488670, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_AnchoredPosition.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22495692, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_AnchorMax.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22495692, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_AnchorMin.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22495692, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_SizeDelta.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22495692, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_SizeDelta.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22495692, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_AnchoredPosition.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 22495692, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_AnchoredPosition.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 224619367409363176, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_AnchorMax.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 224619367409363176, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_AnchorMin.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 224619367409363176, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_SizeDelta.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 224619367409363176, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_SizeDelta.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 224619367409363176, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_AnchoredPosition.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 224619367409363176, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_AnchoredPosition.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 224856348943071238, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_AnchorMax.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 224856348943071238, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_AnchorMin.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 224856348943071238, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_SizeDelta.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 224856348943071238, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_SizeDelta.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 224856348943071238, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_AnchoredPosition.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 224856348943071238, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
propertyPath: m_AnchoredPosition.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
m_RemovedComponents:
|
|
||||||
- {fileID: 11490438, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
- {fileID: 11440770, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
- {fileID: 22331464, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
m_RemovedGameObjects: []
|
|
||||||
m_AddedGameObjects: []
|
|
||||||
m_AddedComponents: []
|
|
||||||
m_SourcePrefab: {fileID: 100100000, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
--- !u!224 &2655199300068705655 stripped
|
|
||||||
RectTransform:
|
|
||||||
m_CorrespondingSourceObject: {fileID: 22457152, guid: 67117722a812a2e46ab8cb8eafbf5f5e, type: 3}
|
|
||||||
m_PrefabInstance: {fileID: 2655199300079889975}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
|
|||||||
@ -32,7 +32,6 @@ namespace QFramework
|
|||||||
{
|
{
|
||||||
var uiRoot = UIRoot.Instance;
|
var uiRoot = UIRoot.Instance;
|
||||||
Debug.Log("currentUIRoot:" + uiRoot);
|
Debug.Log("currentUIRoot:" + uiRoot);
|
||||||
StringEventSystem.Global.Send("UIRootCreated");
|
|
||||||
mInstance = MonoSingletonProperty<UIManager>.Instance;
|
mInstance = MonoSingletonProperty<UIManager>.Instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -132,11 +132,11 @@ namespace QFramework
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#if VR
|
public virtual void Update()
|
||||||
private void Update()
|
|
||||||
{
|
{
|
||||||
|
#if VR
|
||||||
transform.localEulerAngles = Vector3.zero;
|
transform.localEulerAngles = Vector3.zero;
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
8
Assets/Resources/LYTWebGL.meta
Normal file
8
Assets/Resources/LYTWebGL.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: d0622dae4bc2b2a4d937ad88a765e87a
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
10
Assets/Resources/LYTWebGL/RSA.txt
Normal file
10
Assets/Resources/LYTWebGL/RSA.txt
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<RSAKeyValue>
|
||||||
|
<Modulus>vsWZ0Eu/pLeJblZfeAQ7p+KWQHqiJnp9UNwfHLW8Ev2EI9Kg2aPiB/DGmhPab8yCfuQuZIqJSwcCX1XzVvtIOoeeKy53VHOity0oxADtoY+TZSbJraG0+kEwE+S8HZ8u8xAoVg1xcI1a/wnS2CmZSvoqwpOFKufcosyZZeWTyQXhTipLIudmmA+KFWxRjXzcigE/46fA76MzSoH9WUaIq+d8DPJMQwURZcxmMRwIkSmzz6rss10uSdTGqM7VmewDkqeWugIjS0wzSMBKQYgv1rxbMO38hd58J0mygKtjMRdm38MUaPfm2fYCFhqRBuUXnLZ992NHpUNsXesSzlLlyw==</Modulus>
|
||||||
|
<Exponent>AQAB</Exponent>
|
||||||
|
<P>+JTwTuuxi9suxLj+qVfpWwYQ7VIpG5EubZoZrFeHNynysgTbJuSvuujN7rgpT3uejxBbUMjxaOlikECKpTdGs6gyNaAKce6SA+4xobbWmFUS4uE7RBbIXefq/jof0V/etBW4eXwG2IiB2IKhVbPyq3lVmbZcQr3Matm9oEu+H6E=</P>
|
||||||
|
<Q>xHcEu0QIDKgxNYLgsmq7i+P+vLGCTXs+8EVNkBKMoyRpLpP+TPCcKnHRK7+j0Od4tD1yYNk/IGPOojjdwzouSDGpIpHNNHOwUOr/n0DVwTWIs8kTRDDVa8al+ptaD8cfssbfbdgs8QkvloX09YLZpZ5dfeKrBH3ZpEtqtjwyves=</Q>
|
||||||
|
<DP>buhEr3GJLZUFMNA5DuUiQHJcawYVQS9tP4lZmwMSWRJmLfbssFWn8gScnL2d8NB+1eW+WDTPQLegOiwRr9URvmZ0wGg/QMXob8h+bGBfLmgGnSNQhfiEPSGUPwk/2PKlMkPeopUrmMCO7kKaKNq4krj38DTkxQJZifLMIBCrKwE=</DP>
|
||||||
|
<DQ>gSyIDeCTMk8726Uru+N1YGsNyF8l/2+zWCMY9ktb8MA18AwaPdhNtZKUJyGfwfEPaeKk24y7dr5o1DxzgrM0Tv9n53TZ6UzPdsSsQbdNU/Ww5hSk+EbrbCt2YinWs10HOHKN4Rkro2eYxG1bPDlGhSB09Boeu5tLiDyV8y/tZPU=</DQ>
|
||||||
|
<InverseQ>FZzsXZ8ReLoBF9hYAaxP4/41uvReXoYVi3AcJrTwtC3a3fBKGAfXB+6oMbVtU9iPOWD1C7I0ZZh3A8xhQp730bLvbbdZWrpR4eY2RnefAW9EJESHfdDCxnsAIiH7+V/gAieF7bN0G5uifx/OxQl5pogovrLWLmZ+cw3QnMLX1kY=</InverseQ>
|
||||||
|
<D>trGx7eK881e5S2t4Hg2fu9WpIrLOmp7vaAKF4Q7BwEX8x/mshQEHM6eH6oJczHhD+JU5QJvTg4CA6x/63C/lKfg6pwvmx3++MkITKjHhYLmI5HPS7G9SS98l1cdVx+BsK+YrWs2g97LHlDqqKs0busv9Kz3vZ/mIOHhL52OGthk7SBSL0Nbq5rCCyErQEKPk3HmVmF2nJTam3d1PK0OT7I4IH5Szn9CXt1R3kk1Y2NZb3GIrcPUaQ7+75/DlVL05Leabc/eMi/ghhyCqOotHnLw8uNf3kK6QvD/bv3C4Ikdy1ZYBpENz74OMeINWAEXZyARLgs4EryA+6F7Fw3magQ==</D>
|
||||||
|
</RSAKeyValue>
|
||||||
7
Assets/Resources/LYTWebGL/RSA.txt.meta
Normal file
7
Assets/Resources/LYTWebGL/RSA.txt.meta
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: fa05fa85bd33f6c4ca626c1e0317d53d
|
||||||
|
TextScriptImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
975
Assets/Scenes/TestUIPanels/TestUIImageSelectMap.unity
Normal file
975
Assets/Scenes/TestUIPanels/TestUIImageSelectMap.unity
Normal file
@ -0,0 +1,975 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!29 &1
|
||||||
|
OcclusionCullingSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_OcclusionBakeSettings:
|
||||||
|
smallestOccluder: 5
|
||||||
|
smallestHole: 0.25
|
||||||
|
backfaceThreshold: 100
|
||||||
|
m_SceneGUID: 00000000000000000000000000000000
|
||||||
|
m_OcclusionCullingData: {fileID: 0}
|
||||||
|
--- !u!104 &2
|
||||||
|
RenderSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 9
|
||||||
|
m_Fog: 0
|
||||||
|
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
|
||||||
|
m_FogMode: 3
|
||||||
|
m_FogDensity: 0.01
|
||||||
|
m_LinearFogStart: 0
|
||||||
|
m_LinearFogEnd: 300
|
||||||
|
m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
|
||||||
|
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
|
||||||
|
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
|
||||||
|
m_AmbientIntensity: 1
|
||||||
|
m_AmbientMode: 0
|
||||||
|
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
|
||||||
|
m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_HaloStrength: 0.5
|
||||||
|
m_FlareStrength: 1
|
||||||
|
m_FlareFadeSpeed: 3
|
||||||
|
m_HaloTexture: {fileID: 0}
|
||||||
|
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
|
m_DefaultReflectionMode: 0
|
||||||
|
m_DefaultReflectionResolution: 128
|
||||||
|
m_ReflectionBounces: 1
|
||||||
|
m_ReflectionIntensity: 1
|
||||||
|
m_CustomReflection: {fileID: 0}
|
||||||
|
m_Sun: {fileID: 0}
|
||||||
|
m_IndirectSpecularColor: {r: 0.37311953, g: 0.38074014, b: 0.3587274, a: 1}
|
||||||
|
m_UseRadianceAmbientProbe: 0
|
||||||
|
--- !u!157 &3
|
||||||
|
LightmapSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 12
|
||||||
|
m_GIWorkflowMode: 1
|
||||||
|
m_GISettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_BounceScale: 1
|
||||||
|
m_IndirectOutputScale: 1
|
||||||
|
m_AlbedoBoost: 1
|
||||||
|
m_EnvironmentLightingMode: 0
|
||||||
|
m_EnableBakedLightmaps: 1
|
||||||
|
m_EnableRealtimeLightmaps: 0
|
||||||
|
m_LightmapEditorSettings:
|
||||||
|
serializedVersion: 12
|
||||||
|
m_Resolution: 2
|
||||||
|
m_BakeResolution: 40
|
||||||
|
m_AtlasSize: 1024
|
||||||
|
m_AO: 0
|
||||||
|
m_AOMaxDistance: 1
|
||||||
|
m_CompAOExponent: 1
|
||||||
|
m_CompAOExponentDirect: 0
|
||||||
|
m_ExtractAmbientOcclusion: 0
|
||||||
|
m_Padding: 2
|
||||||
|
m_LightmapParameters: {fileID: 0}
|
||||||
|
m_LightmapsBakeMode: 1
|
||||||
|
m_TextureCompression: 1
|
||||||
|
m_FinalGather: 0
|
||||||
|
m_FinalGatherFiltering: 1
|
||||||
|
m_FinalGatherRayCount: 256
|
||||||
|
m_ReflectionCompression: 2
|
||||||
|
m_MixedBakeMode: 2
|
||||||
|
m_BakeBackend: 1
|
||||||
|
m_PVRSampling: 1
|
||||||
|
m_PVRDirectSampleCount: 32
|
||||||
|
m_PVRSampleCount: 512
|
||||||
|
m_PVRBounces: 2
|
||||||
|
m_PVREnvironmentSampleCount: 256
|
||||||
|
m_PVREnvironmentReferencePointCount: 2048
|
||||||
|
m_PVRFilteringMode: 1
|
||||||
|
m_PVRDenoiserTypeDirect: 1
|
||||||
|
m_PVRDenoiserTypeIndirect: 1
|
||||||
|
m_PVRDenoiserTypeAO: 1
|
||||||
|
m_PVRFilterTypeDirect: 0
|
||||||
|
m_PVRFilterTypeIndirect: 0
|
||||||
|
m_PVRFilterTypeAO: 0
|
||||||
|
m_PVREnvironmentMIS: 1
|
||||||
|
m_PVRCulling: 1
|
||||||
|
m_PVRFilteringGaussRadiusDirect: 1
|
||||||
|
m_PVRFilteringGaussRadiusIndirect: 5
|
||||||
|
m_PVRFilteringGaussRadiusAO: 2
|
||||||
|
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
|
||||||
|
m_PVRFilteringAtrousPositionSigmaIndirect: 2
|
||||||
|
m_PVRFilteringAtrousPositionSigmaAO: 1
|
||||||
|
m_ExportTrainingData: 0
|
||||||
|
m_TrainingDataDestination: TrainingData
|
||||||
|
m_LightProbeSampleCountMultiplier: 4
|
||||||
|
m_LightingDataAsset: {fileID: 0}
|
||||||
|
m_LightingSettings: {fileID: 0}
|
||||||
|
--- !u!196 &4
|
||||||
|
NavMeshSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_BuildSettings:
|
||||||
|
serializedVersion: 3
|
||||||
|
agentTypeID: 0
|
||||||
|
agentRadius: 0.5
|
||||||
|
agentHeight: 2
|
||||||
|
agentSlope: 45
|
||||||
|
agentClimb: 0.4
|
||||||
|
ledgeDropHeight: 0
|
||||||
|
maxJumpAcrossDistance: 0
|
||||||
|
minRegionArea: 2
|
||||||
|
manualCellSize: 0
|
||||||
|
cellSize: 0.16666667
|
||||||
|
manualTileSize: 0
|
||||||
|
tileSize: 256
|
||||||
|
buildHeightMesh: 0
|
||||||
|
maxJobWorkers: 0
|
||||||
|
preserveTilesOutsideBounds: 0
|
||||||
|
debug:
|
||||||
|
m_Flags: 0
|
||||||
|
m_NavMeshData: {fileID: 0}
|
||||||
|
--- !u!1 &377343312
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 377343313}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: CanvasPanel
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &377343313
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 377343312}
|
||||||
|
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: 2114871786}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 1, y: 1}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 0, y: 0}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!1 &801682693
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 801682694}
|
||||||
|
- component: {fileID: 801682696}
|
||||||
|
- component: {fileID: 801682695}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: EventSystem
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &801682694
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 801682693}
|
||||||
|
serializedVersion: 2
|
||||||
|
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: 2114871786}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &801682695
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 801682693}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_SendPointerHoverToParent: 1
|
||||||
|
m_HorizontalAxis: Horizontal
|
||||||
|
m_VerticalAxis: Vertical
|
||||||
|
m_SubmitButton: Submit
|
||||||
|
m_CancelButton: Cancel
|
||||||
|
m_InputActionsPerSecond: 10
|
||||||
|
m_RepeatDelay: 0.5
|
||||||
|
m_ForceModuleActive: 1
|
||||||
|
--- !u!114 &801682696
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 801682693}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_FirstSelected: {fileID: 0}
|
||||||
|
m_sendNavigationEvents: 1
|
||||||
|
m_DragThreshold: 5
|
||||||
|
--- !u!1 &995027251
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 995027252}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Bg
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &995027252
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 995027251}
|
||||||
|
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: 2114871786}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 1, y: 1}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 0, y: 0}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!1 &1084276686
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1084276689}
|
||||||
|
- component: {fileID: 1084276687}
|
||||||
|
- component: {fileID: 1084276688}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: UICamera
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 0
|
||||||
|
--- !u!20 &1084276687
|
||||||
|
Camera:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1084276686}
|
||||||
|
m_Enabled: 1
|
||||||
|
serializedVersion: 2
|
||||||
|
m_ClearFlags: 3
|
||||||
|
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844}
|
||||||
|
m_projectionMatrixMode: 1
|
||||||
|
m_GateFitMode: 2
|
||||||
|
m_FOVAxisMode: 0
|
||||||
|
m_Iso: 200
|
||||||
|
m_ShutterSpeed: 0.005
|
||||||
|
m_Aperture: 16
|
||||||
|
m_FocusDistance: 10
|
||||||
|
m_FocalLength: 50
|
||||||
|
m_BladeCount: 5
|
||||||
|
m_Curvature: {x: 2, y: 11}
|
||||||
|
m_BarrelClipping: 0.25
|
||||||
|
m_Anamorphism: 0
|
||||||
|
m_SensorSize: {x: 36, y: 24}
|
||||||
|
m_LensShift: {x: 0, y: 0}
|
||||||
|
m_NormalizedViewPortRect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
width: 1
|
||||||
|
height: 1
|
||||||
|
near clip plane: 0.3
|
||||||
|
far clip plane: 1000
|
||||||
|
field of view: 60
|
||||||
|
orthographic: 1
|
||||||
|
orthographic size: 5
|
||||||
|
m_Depth: 99
|
||||||
|
m_CullingMask:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 32
|
||||||
|
m_RenderingPath: -1
|
||||||
|
m_TargetTexture: {fileID: 0}
|
||||||
|
m_TargetDisplay: 0
|
||||||
|
m_TargetEye: 3
|
||||||
|
m_HDR: 0
|
||||||
|
m_AllowMSAA: 1
|
||||||
|
m_AllowDynamicResolution: 0
|
||||||
|
m_ForceIntoRT: 0
|
||||||
|
m_OcclusionCulling: 1
|
||||||
|
m_StereoConvergence: 10
|
||||||
|
m_StereoSeparation: 0.022
|
||||||
|
--- !u!124 &1084276688
|
||||||
|
Behaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1084276686}
|
||||||
|
m_Enabled: 1
|
||||||
|
--- !u!4 &1084276689
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1084276686}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: -100}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 2114871786}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!1 &1126280010
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1126280011}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Common
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &1126280011
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1126280010}
|
||||||
|
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: 2114871786}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 1, y: 1}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 0, y: 0}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!1 &1161286720
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1161286721}
|
||||||
|
- component: {fileID: 1161286724}
|
||||||
|
- component: {fileID: 1161286723}
|
||||||
|
- component: {fileID: 1161286722}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: RightBottom
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &1161286721
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1161286720}
|
||||||
|
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: 2114871786}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 1, y: 0}
|
||||||
|
m_AnchorMax: {x: 1, y: 0}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 1828.92, y: 0}
|
||||||
|
m_Pivot: {x: 1, y: -0.000000461936}
|
||||||
|
--- !u!222 &1161286722
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1161286720}
|
||||||
|
m_CullTransparentMesh: 1
|
||||||
|
--- !u!114 &1161286723
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1161286720}
|
||||||
|
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!114 &1161286724
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1161286720}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Padding:
|
||||||
|
m_Left: 0
|
||||||
|
m_Right: 0
|
||||||
|
m_Top: 10
|
||||||
|
m_Bottom: 10
|
||||||
|
m_ChildAlignment: 8
|
||||||
|
m_Spacing: 10
|
||||||
|
m_ChildForceExpandWidth: 0
|
||||||
|
m_ChildForceExpandHeight: 0
|
||||||
|
m_ChildControlWidth: 1
|
||||||
|
m_ChildControlHeight: 1
|
||||||
|
m_ChildScaleWidth: 0
|
||||||
|
m_ChildScaleHeight: 1
|
||||||
|
m_ReverseArrangement: 1
|
||||||
|
--- !u!1 &1320020531
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1320020532}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: PopUI
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &1320020532
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1320020531}
|
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1.0000799, y: 1.0000799, z: 1.0000799}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 2114871786}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 1, y: 1}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 0, y: 0}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!1 &1349401529
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1349401531}
|
||||||
|
- component: {fileID: 1349401530}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: TestUIImageSelectMap
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!114 &1349401530
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1349401529}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: b6b7a3e7dc894eaca1053ef166cdad33, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
PanelName: UIImageSelectMap
|
||||||
|
Level: 0
|
||||||
|
mOtherPanels: []
|
||||||
|
--- !u!4 &1349401531
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1349401529}
|
||||||
|
serializedVersion: 2
|
||||||
|
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: 0}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!1 &1635592603
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1635592604}
|
||||||
|
- component: {fileID: 1635592605}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Manager
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &1635592604
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1635592603}
|
||||||
|
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: 2114871786}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||||
|
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 100, y: 100}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!114 &1635592605
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1635592603}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 5dc84f25d84334e168bf64050b91e1fb, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
--- !u!1 &1661191870
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1661191871}
|
||||||
|
- component: {fileID: 1661191872}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Design
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &1661191871
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1661191870}
|
||||||
|
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: 8931408189093656909}
|
||||||
|
m_Father: {fileID: 2114871786}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 1, y: 1}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 0, y: 0}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!114 &1661191872
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1661191870}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 6eba024ea32574239b57b098f1dc6282, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
--- !u!1 &2114871781
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 2114871786}
|
||||||
|
- component: {fileID: 2114871785}
|
||||||
|
- component: {fileID: 2114871784}
|
||||||
|
- component: {fileID: 2114871783}
|
||||||
|
- component: {fileID: 2114871782}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: UIRoot
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!114 &2114871782
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2114871781}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: d2db7fffd623c478eba3d2cb84034d2f, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
UICamera: {fileID: 1084276687}
|
||||||
|
Canvas: {fileID: 2114871785}
|
||||||
|
CanvasScaler: {fileID: 2114871784}
|
||||||
|
GraphicRaycaster: {fileID: 2114871783}
|
||||||
|
Bg: {fileID: 995027252}
|
||||||
|
Common: {fileID: 1126280011}
|
||||||
|
PopUI: {fileID: 1320020532}
|
||||||
|
RightBottom: {fileID: 1161286721}
|
||||||
|
CanvasPanel: {fileID: 377343313}
|
||||||
|
--- !u!114 &2114871783
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2114871781}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_IgnoreReversedGraphics: 0
|
||||||
|
m_BlockingObjects: 0
|
||||||
|
m_BlockingMask:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
--- !u!114 &2114871784
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2114871781}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_UiScaleMode: 1
|
||||||
|
m_ReferencePixelsPerUnit: 100
|
||||||
|
m_ScaleFactor: 1
|
||||||
|
m_ReferenceResolution: {x: 1920, y: 1080}
|
||||||
|
m_ScreenMatchMode: 0
|
||||||
|
m_MatchWidthOrHeight: 0.5
|
||||||
|
m_PhysicalUnit: 3
|
||||||
|
m_FallbackScreenDPI: 96
|
||||||
|
m_DefaultSpriteDPI: 96
|
||||||
|
m_DynamicPixelsPerUnit: 1
|
||||||
|
m_PresetInfoIsWorld: 0
|
||||||
|
--- !u!223 &2114871785
|
||||||
|
Canvas:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2114871781}
|
||||||
|
m_Enabled: 1
|
||||||
|
serializedVersion: 3
|
||||||
|
m_RenderMode: 0
|
||||||
|
m_Camera: {fileID: 1084276687}
|
||||||
|
m_PlaneDistance: 100
|
||||||
|
m_PixelPerfect: 0
|
||||||
|
m_ReceivesEvents: 1
|
||||||
|
m_OverrideSorting: 0
|
||||||
|
m_OverridePixelPerfect: 0
|
||||||
|
m_SortingBucketNormalizedSize: 0
|
||||||
|
m_VertexColorAlwaysGammaSpace: 0
|
||||||
|
m_AdditionalShaderChannelsFlag: 1
|
||||||
|
m_UpdateRectTransformForStandalone: 0
|
||||||
|
m_SortingLayerID: 0
|
||||||
|
m_SortingOrder: 100
|
||||||
|
m_TargetDisplay: 0
|
||||||
|
--- !u!224 &2114871786
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2114871781}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 0, y: 0, z: 0}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children:
|
||||||
|
- {fileID: 995027252}
|
||||||
|
- {fileID: 1126280011}
|
||||||
|
- {fileID: 1161286721}
|
||||||
|
- {fileID: 1320020532}
|
||||||
|
- {fileID: 377343313}
|
||||||
|
- {fileID: 1661191871}
|
||||||
|
- {fileID: 801682694}
|
||||||
|
- {fileID: 1084276689}
|
||||||
|
- {fileID: 1635592604}
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 0, y: 0}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 0, y: 0}
|
||||||
|
m_Pivot: {x: 0, y: 0}
|
||||||
|
--- !u!1001 &8931408189093656908
|
||||||
|
PrefabInstance:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Modification:
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TransformParent: {fileID: 1661191871}
|
||||||
|
m_Modifications:
|
||||||
|
- target: {fileID: 1318390635077869678, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3}
|
||||||
|
propertyPath: m_AnchorMax.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 1318390635077869678, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3}
|
||||||
|
propertyPath: m_AnchorMax.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 1318390635077869678, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3}
|
||||||
|
propertyPath: m_SizeDelta.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 2525946039026654729, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3}
|
||||||
|
propertyPath: m_AnchorMax.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 2525946039026654729, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3}
|
||||||
|
propertyPath: m_SizeDelta.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3}
|
||||||
|
propertyPath: m_Pivot.x
|
||||||
|
value: 0.5
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3}
|
||||||
|
propertyPath: m_Pivot.y
|
||||||
|
value: 0.5
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3}
|
||||||
|
propertyPath: m_AnchorMax.x
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3}
|
||||||
|
propertyPath: m_AnchorMax.y
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3}
|
||||||
|
propertyPath: m_AnchorMin.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3}
|
||||||
|
propertyPath: m_AnchorMin.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3}
|
||||||
|
propertyPath: m_SizeDelta.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3}
|
||||||
|
propertyPath: m_SizeDelta.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.w
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.x
|
||||||
|
value: -0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.y
|
||||||
|
value: -0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.z
|
||||||
|
value: -0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3}
|
||||||
|
propertyPath: m_AnchoredPosition.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3}
|
||||||
|
propertyPath: m_AnchoredPosition.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 5249969822239494612, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3}
|
||||||
|
propertyPath: m_AnchorMax.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 5249969822239494612, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3}
|
||||||
|
propertyPath: m_AnchorMax.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 5249969822239494612, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3}
|
||||||
|
propertyPath: m_SizeDelta.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 5249969822239494612, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3}
|
||||||
|
propertyPath: m_SizeDelta.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 5702230170007598446, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3}
|
||||||
|
propertyPath: m_HorizontalScrollbar
|
||||||
|
value:
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6336473892143704609, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3}
|
||||||
|
propertyPath: m_AnchoredPosition.y
|
||||||
|
value: 0.0009040238
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6608813160943937009, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3}
|
||||||
|
propertyPath: m_AnchorMax.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6608813160943937009, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3}
|
||||||
|
propertyPath: m_AnchorMax.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6690386520824484871, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3}
|
||||||
|
propertyPath: m_AnchoredPosition.y
|
||||||
|
value: 0.0009040238
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 7471371802902961118, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3}
|
||||||
|
propertyPath: m_AnchorMax.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 7471371802902961118, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3}
|
||||||
|
propertyPath: m_AnchorMax.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 8048533352694695708, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3}
|
||||||
|
propertyPath: m_AnchorMax.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 8048533352694695708, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3}
|
||||||
|
propertyPath: m_AnchorMax.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 8636616114181872079, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3}
|
||||||
|
propertyPath: m_Name
|
||||||
|
value: UIImageSelectMap
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 8684970269249796938, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3}
|
||||||
|
propertyPath: m_AnchorMax.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 8684970269249796938, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3}
|
||||||
|
propertyPath: m_SizeDelta.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
m_RemovedComponents: []
|
||||||
|
m_RemovedGameObjects: []
|
||||||
|
m_AddedGameObjects: []
|
||||||
|
m_AddedComponents: []
|
||||||
|
m_SourcePrefab: {fileID: 100100000, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3}
|
||||||
|
--- !u!224 &8931408189093656909 stripped
|
||||||
|
RectTransform:
|
||||||
|
m_CorrespondingSourceObject: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3}
|
||||||
|
m_PrefabInstance: {fileID: 8931408189093656908}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
--- !u!1660057539 &9223372036854775807
|
||||||
|
SceneRoots:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_Roots:
|
||||||
|
- {fileID: 2114871786}
|
||||||
|
- {fileID: 1349401531}
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 6aebd18275784904b8bee1a5e43e817a
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
1439
Assets/Scenes/TestUIPanels/TestUIKnowledge.unity
Normal file
1439
Assets/Scenes/TestUIPanels/TestUIKnowledge.unity
Normal file
File diff suppressed because it is too large
Load Diff
7
Assets/Scenes/TestUIPanels/TestUIKnowledge.unity.meta
Normal file
7
Assets/Scenes/TestUIPanels/TestUIKnowledge.unity.meta
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 13457db631332b149901c3d79f802d84
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -23,6 +23,19 @@ namespace XMLTool
|
|||||||
public Dictionary<string, string> args = new Dictionary<string, string>();
|
public Dictionary<string, string> args = new Dictionary<string, string>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class ImageSelectMapAction : Action
|
||||||
|
{
|
||||||
|
public class Item
|
||||||
|
{
|
||||||
|
public string pic;
|
||||||
|
public string pos;
|
||||||
|
public string size;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Dictionary<string, string> args = new Dictionary<string, string>();
|
||||||
|
public List<Item> items = new List<Item>();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public class DictionaryCondition : Condition
|
public class DictionaryCondition : Condition
|
||||||
{
|
{
|
||||||
|
|||||||
@ -27,7 +27,7 @@ public class ActionHelper
|
|||||||
{ "UI3DObjSelect", typeof(QFramework.Example.UI3DObjSelect) },
|
{ "UI3DObjSelect", typeof(QFramework.Example.UI3DObjSelect) },
|
||||||
{ "UITextTip", typeof(QFramework.Example.UITextTip) },
|
{ "UITextTip", typeof(QFramework.Example.UITextTip) },
|
||||||
{ "UITextWindow", typeof(QFramework.Example.UITextWindow) },
|
{ "UITextWindow", typeof(QFramework.Example.UITextWindow) },
|
||||||
{ "UITipWindow", typeof(QFramework.Example.UITipWindow) },
|
{ "UIKnowledge", typeof(QFramework.Example.UIKnowledge) },
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -283,6 +283,11 @@ public class ActionHelper
|
|||||||
var dictAction = (XMLTool.DictionaryAction)act;
|
var dictAction = (XMLTool.DictionaryAction)act;
|
||||||
return QFramework.ShowScoreAction.Allocate(dictAction.args);
|
return QFramework.ShowScoreAction.Allocate(dictAction.args);
|
||||||
}
|
}
|
||||||
|
case "ImageSelectMap":
|
||||||
|
{
|
||||||
|
var dictAction = (XMLTool.ImageSelectMapAction)act;
|
||||||
|
return QFramework.ImageSelectMapAction.Allocate(dictAction.args,dictAction.items);
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
Debug.LogError($"ûÓÐÕÒµ½´ËActionµÄÀàÐÍ{act.Type}");
|
Debug.LogError($"ûÓÐÕÒµ½´ËActionµÄÀàÐÍ{act.Type}");
|
||||||
break;
|
break;
|
||||||
|
|||||||
115
Assets/Scripts/Actions/ImageSelectMapAction.cs
Normal file
115
Assets/Scripts/Actions/ImageSelectMapAction.cs
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
using QFramework.Example;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
using XMLTool;
|
||||||
|
|
||||||
|
namespace QFramework
|
||||||
|
{
|
||||||
|
internal class ImageSelectMapAction : IAction
|
||||||
|
{
|
||||||
|
public string txt;
|
||||||
|
|
||||||
|
|
||||||
|
public System.Action OnFinished { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
private ImageSelectMapAction()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
private static readonly SimpleObjectPool<ImageSelectMapAction> mPool =
|
||||||
|
new SimpleObjectPool<ImageSelectMapAction>(() => new ImageSelectMapAction(), null, 10);
|
||||||
|
Dictionary<string, string> datas;
|
||||||
|
List<XMLTool.ImageSelectMapAction.Item> items;
|
||||||
|
public static ImageSelectMapAction Allocate(Dictionary<string, string> datas, List<XMLTool.ImageSelectMapAction.Item> items, System.Action OnFinished = null)
|
||||||
|
{
|
||||||
|
var retNode = mPool.Allocate();
|
||||||
|
retNode.ActionID = ActionKit.ID_GENERATOR++;
|
||||||
|
retNode.Deinited = false;
|
||||||
|
retNode.datas = datas;
|
||||||
|
retNode.items = items;
|
||||||
|
retNode.Reset();
|
||||||
|
retNode.OnFinished = OnFinished;
|
||||||
|
return retNode;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public ulong ActionID { get; set; }
|
||||||
|
public ActionStatus Status { get; set; }
|
||||||
|
|
||||||
|
public void OnStart()
|
||||||
|
{
|
||||||
|
|
||||||
|
UIImageSelectMapData data = new UIImageSelectMapData();
|
||||||
|
data.totalScore = 0;
|
||||||
|
if (datas.ContainsKey("totalScore"))
|
||||||
|
{
|
||||||
|
float.TryParse(datas["totalScore"], out data.totalScore);
|
||||||
|
}
|
||||||
|
data.rightScore = 0;
|
||||||
|
if (datas.ContainsKey("rightScore"))
|
||||||
|
{
|
||||||
|
float.TryParse(datas["rightScore"], out data.rightScore);
|
||||||
|
}
|
||||||
|
data.wrongScore = 0;
|
||||||
|
if (datas.ContainsKey("wrongScore"))
|
||||||
|
{
|
||||||
|
float.TryParse(datas["wrongScore"], out data.wrongScore);
|
||||||
|
}
|
||||||
|
data.scoreName = datas.ContainsKey("scoreName") ? datas["scoreName"] : "";
|
||||||
|
data.rightLabel = datas.ContainsKey("rightLabel") ? datas["rightLabel"] : "";
|
||||||
|
data.wrongLabel = datas.ContainsKey("wrongLabel") ? datas["wrongLabel"] : "";
|
||||||
|
data.finishedEvent = datas.ContainsKey("finishedEvent") ? datas["finishedEvent"] : "";
|
||||||
|
data.rightBg = datas.ContainsKey("rightBg") ? datas["rightBg"] : "";
|
||||||
|
|
||||||
|
foreach (var item in items)
|
||||||
|
{
|
||||||
|
data.items.Add(new UIImageSelectMapData.OptionItem()
|
||||||
|
{
|
||||||
|
pic = item.pic,
|
||||||
|
pos = Utility.GetVector2FromStrArray(item.pos),
|
||||||
|
size = Utility.GetVector2FromStrArray(item.size)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
UIKit.OpenPanelAsync<UIImageSelectMap>(uiData: data, canvasLevel: UILevel.PopUI).ToAction().StartGlobal(() =>
|
||||||
|
{
|
||||||
|
|
||||||
|
this.Finish();
|
||||||
|
OnFinished?.Invoke();
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnExecute(float dt)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnFinish()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Reset()
|
||||||
|
{
|
||||||
|
Status = ActionStatus.NotStart;
|
||||||
|
Paused = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool Paused { get; set; }
|
||||||
|
|
||||||
|
public void Deinit()
|
||||||
|
{
|
||||||
|
if (!Deinited)
|
||||||
|
{
|
||||||
|
OnFinished = null;
|
||||||
|
Deinited = true;
|
||||||
|
mPool.Recycle(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool Deinited { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
3
Assets/Scripts/Actions/ImageSelectMapAction.cs.meta
Normal file
3
Assets/Scripts/Actions/ImageSelectMapAction.cs.meta
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 93d6ed89dd2e1974f8712dde5a2c6c31
|
||||||
|
timeCreated: 1647655796
|
||||||
@ -62,9 +62,9 @@ public class TimeLineAction : IAction
|
|||||||
{
|
{
|
||||||
if (curEndFrame != -1 && play.time * fps >= curEndFrame)
|
if (curEndFrame != -1 && play.time * fps >= curEndFrame)
|
||||||
{
|
{
|
||||||
play.Stop();
|
|
||||||
play.time = curEndFrame / 24;
|
play.time = curEndFrame / 24;
|
||||||
play.Evaluate();
|
play.Pause();
|
||||||
|
|
||||||
}
|
}
|
||||||
if (play.state != PlayState.Playing)
|
if (play.state != PlayState.Playing)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -19,6 +19,7 @@ namespace QFramework
|
|||||||
string deviceName;
|
string deviceName;
|
||||||
bool isRight;
|
bool isRight;
|
||||||
|
|
||||||
|
bool isClick = false;
|
||||||
public static ObjClickCondition Allocate(string path, Dictionary<string, string> datas)
|
public static ObjClickCondition Allocate(string path, Dictionary<string, string> datas)
|
||||||
{
|
{
|
||||||
var conditionAction = mSimpleObjectPool.Allocate();
|
var conditionAction = mSimpleObjectPool.Allocate();
|
||||||
@ -32,6 +33,7 @@ namespace QFramework
|
|||||||
{
|
{
|
||||||
bool.TryParse(datas["isRight"], out conditionAction.isRight);
|
bool.TryParse(datas["isRight"], out conditionAction.isRight);
|
||||||
}
|
}
|
||||||
|
conditionAction.isClick = false;
|
||||||
return conditionAction;
|
return conditionAction;
|
||||||
}
|
}
|
||||||
public bool Check()
|
public bool Check()
|
||||||
@ -73,7 +75,7 @@ namespace QFramework
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return false;
|
return isClick;
|
||||||
}
|
}
|
||||||
public bool Paused { get; set; }
|
public bool Paused { get; set; }
|
||||||
public bool Deinited { get; set; }
|
public bool Deinited { get; set; }
|
||||||
@ -88,14 +90,27 @@ namespace QFramework
|
|||||||
}
|
}
|
||||||
#if VR
|
#if VR
|
||||||
public void OnClick(ZPointer pointer, int index, GameObject obj)
|
public void OnClick(ZPointer pointer, int index, GameObject obj)
|
||||||
|
{
|
||||||
|
if (isRight)
|
||||||
{
|
{
|
||||||
if (this.obj != null && obj == this.obj)
|
if (this.obj != null && obj == this.obj)
|
||||||
{
|
{
|
||||||
this.Finish();
|
isClick = true;
|
||||||
UIRoot.Instance.transform.Find("ZMouse").GetComponent<ZPointer>().OnClick.RemoveListener(OnClick);
|
|
||||||
UIRoot.Instance.transform.Find("ZStylus").GetComponent<ZPointer>().OnClick.RemoveListener(OnClick);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (this.obj != null)
|
||||||
|
{
|
||||||
|
var item = obj.GetComponent<DeviceItem>();
|
||||||
|
if (item != null && obj != this.obj)
|
||||||
|
{
|
||||||
|
isClick = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
public void OnExecute(float dt)
|
public void OnExecute(float dt)
|
||||||
@ -118,6 +133,10 @@ namespace QFramework
|
|||||||
obj = null;
|
obj = null;
|
||||||
path = null;
|
path = null;
|
||||||
mSimpleObjectPool.Recycle(this);
|
mSimpleObjectPool.Recycle(this);
|
||||||
|
#if VR
|
||||||
|
UIRoot.Instance.transform.Find("ZMouse").GetComponent<ZPointer>().OnClick.RemoveListener(OnClick);
|
||||||
|
UIRoot.Instance.transform.Find("ZStylus").GetComponent<ZPointer>().OnClick.RemoveListener(OnClick);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,10 +1,9 @@
|
|||||||
|
using Newtonsoft.Json;
|
||||||
using QFramework;
|
using QFramework;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using TMPro;
|
using TMPro;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.SocialPlatforms.Impl;
|
|
||||||
using XMLTool;
|
using XMLTool;
|
||||||
|
|
||||||
public class ScoreController : MonoSingleton<ScoreController>
|
public class ScoreController : MonoSingleton<ScoreController>
|
||||||
@ -48,6 +47,40 @@ public class ScoreController : MonoSingleton<ScoreController>
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public string GetModuleDictJson(string name = "", string id = "", string sum = "")
|
||||||
|
{
|
||||||
|
var resultDict = new Dictionary<string, object>();
|
||||||
|
DateTime curTime = DateTime.Now;
|
||||||
|
resultDict.Add("name", name);
|
||||||
|
resultDict.Add("id", id);
|
||||||
|
resultDict.Add("sum", sum);
|
||||||
|
resultDict.Add("time", curTime.ToString("yyyy.MM.dd"));
|
||||||
|
resultDict.Add("year", curTime.Year);
|
||||||
|
resultDict.Add("month", curTime.Month);
|
||||||
|
foreach (var dataPair in moduleDict)
|
||||||
|
{
|
||||||
|
var data = dataPair.Value;
|
||||||
|
if (data.scoreDict != null)
|
||||||
|
{
|
||||||
|
foreach (var scoreStepPair in data.scoreDict)
|
||||||
|
{
|
||||||
|
var scoreStep = scoreStepPair.Value;
|
||||||
|
string key = $"{scoreStep.step}{scoreStep.name}";
|
||||||
|
resultDict[key] = scoreStep.value;
|
||||||
|
|
||||||
|
string value = "\u00A0";
|
||||||
|
if (string.IsNullOrEmpty(scoreStep.time) == false)
|
||||||
|
{
|
||||||
|
value = scoreStep.time;
|
||||||
|
}
|
||||||
|
resultDict.Add(key + "Time", value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return JsonConvert.SerializeObject(resultDict);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private void OnStart(OnModuleStart start)
|
private void OnStart(OnModuleStart start)
|
||||||
{
|
{
|
||||||
@ -84,6 +117,8 @@ public class ScoreController : MonoSingleton<ScoreController>
|
|||||||
{
|
{
|
||||||
scoreDict[key].value = 0;
|
scoreDict[key].value = 0;
|
||||||
}
|
}
|
||||||
|
DateTime currentTime = DateTime.Now;
|
||||||
|
scoreDict[key].time = currentTime.ToString(scoreDict[key].timeFormat);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@ -1,3 +1,6 @@
|
|||||||
|
using QFramework;
|
||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
using UnityEditor;
|
using UnityEditor;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
@ -31,5 +34,49 @@ public class FixedMainEditor
|
|||||||
Menu.SetChecked("Tools/强制Main场景启动", isFixedMain);
|
Menu.SetChecked("Tools/强制Main场景启动", isFixedMain);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[MenuItem("Tools/创建时间锁")]
|
||||||
|
private static void TimerLock()
|
||||||
|
{
|
||||||
|
//创建数据资源文件
|
||||||
|
//泛型是继承自ScriptableObject的类
|
||||||
|
TimerLock asset = ScriptableObject.CreateInstance<TimerLock>();
|
||||||
|
//前一步创建的资源只是存在内存中,现在要把它保存到本地
|
||||||
|
//通过编辑器API,创建一个数据资源文件,第二个参数为资源文件在Assets目录下的路径
|
||||||
|
AssetDatabase.CreateAsset(asset, "Assets/TimerLock.asset");
|
||||||
|
//保存创建的资源
|
||||||
|
AssetDatabase.SaveAssets();
|
||||||
|
//刷新界面
|
||||||
|
AssetDatabase.Refresh();
|
||||||
|
}
|
||||||
|
|
||||||
|
[MenuItem("Tools/生成Timer文件")]
|
||||||
|
private static void GeneratorTimer()
|
||||||
|
{
|
||||||
|
if (File.Exists(Application.dataPath + "/TimerLock.asset"))
|
||||||
|
{
|
||||||
|
string path = "Assets/TimerLock.asset";
|
||||||
|
var asset = AssetDatabase.LoadAssetAtPath<TimerLock>(path);
|
||||||
|
if (asset != null)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(asset.time) == false)
|
||||||
|
{
|
||||||
|
//第一次获取获取系统时间
|
||||||
|
DateTime currentDateTime = DateTime.Now;
|
||||||
|
string RecordData = currentDateTime.ToString("yyyy-MM-dd HH:mm:ss");
|
||||||
|
string strMerge = asset.time + "|" + RecordData;
|
||||||
|
EncryptFileCreator.EncryptAndSaveData(strMerge, "Timer.txt");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//刷新界面
|
||||||
|
AssetDatabase.Refresh();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
11
Assets/Scripts/Editor/TimerLock.cs
Normal file
11
Assets/Scripts/Editor/TimerLock.cs
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
[CreateAssetMenu(fileName = "时间锁", menuName = "创建时间锁/配置文件")]
|
||||||
|
public class TimerLock : ScriptableObject
|
||||||
|
{
|
||||||
|
[Header("软件有效期")]
|
||||||
|
public string time;
|
||||||
|
|
||||||
|
}
|
||||||
11
Assets/Scripts/Editor/TimerLock.cs.meta
Normal file
11
Assets/Scripts/Editor/TimerLock.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 3fa014c2238b5a942b96b9f55a3f9841
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -1,14 +1,26 @@
|
|||||||
|
using System;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using UnityEditor;
|
||||||
using UnityEditor.Build;
|
using UnityEditor.Build;
|
||||||
using UnityEditor.Build.Reporting;
|
using UnityEditor.Build.Reporting;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
public class VirtualFPostProcess : IPostprocessBuildWithReport
|
public class VirtualFPostProcess : IPostprocessBuildWithReport, IPreprocessBuildWithReport
|
||||||
{
|
{
|
||||||
public int callbackOrder => 0;
|
public int callbackOrder => 0;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 构建前生成时间锁
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="report"></param>
|
||||||
|
public void OnPreprocessBuild(BuildReport report)
|
||||||
|
{
|
||||||
|
// 生成时间锁
|
||||||
|
GneratorTimerLock();
|
||||||
|
}
|
||||||
|
|
||||||
public void OnPostprocessBuild(BuildReport report)
|
public void OnPostprocessBuild(BuildReport report)
|
||||||
{
|
{
|
||||||
string projectPath = Application.dataPath;
|
string projectPath = Application.dataPath;
|
||||||
@ -18,7 +30,7 @@ public class VirtualFPostProcess : IPostprocessBuildWithReport
|
|||||||
if (Directory.Exists(dataFolderPath))
|
if (Directory.Exists(dataFolderPath))
|
||||||
{
|
{
|
||||||
// 目标目录强制小写
|
// 目标目录强制小写
|
||||||
string targetDataPath = Path.Combine(buildOutputPath, "data");
|
string targetDataPath = Path.Combine(buildOutputPath, "Data");
|
||||||
CopyDirectoryWithLowerCaseNames(dataFolderPath, targetDataPath);
|
CopyDirectoryWithLowerCaseNames(dataFolderPath, targetDataPath);
|
||||||
Debug.Log($"数据目录已复制到: {targetDataPath}");
|
Debug.Log($"数据目录已复制到: {targetDataPath}");
|
||||||
}
|
}
|
||||||
@ -26,6 +38,98 @@ public class VirtualFPostProcess : IPostprocessBuildWithReport
|
|||||||
{
|
{
|
||||||
Debug.LogWarning("未找到数据目录: " + dataFolderPath);
|
Debug.LogWarning("未找到数据目录: " + dataFolderPath);
|
||||||
}
|
}
|
||||||
|
DeletAssetBundle(buildOutputPath);
|
||||||
|
AssetDatabase.Refresh();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 生成时间锁文件
|
||||||
|
/// </summary>
|
||||||
|
public void GneratorTimerLock()
|
||||||
|
{
|
||||||
|
if (File.Exists(Application.dataPath + "/TimerLock.asset"))
|
||||||
|
{
|
||||||
|
string path = "Assets/TimerLock.asset";
|
||||||
|
var asset = AssetDatabase.LoadAssetAtPath<TimerLock>(path);
|
||||||
|
if (asset != null)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(asset.time) == false)
|
||||||
|
{
|
||||||
|
//第一次获取获取系统时间
|
||||||
|
DateTime currentDateTime = DateTime.Now;
|
||||||
|
string RecordData = currentDateTime.ToString("yyyy-MM-dd HH:mm:ss");
|
||||||
|
string strMerge = asset.time + "|" + RecordData;
|
||||||
|
EncryptFileCreator.EncryptAndSaveData(strMerge, "Timer.txt");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 删除不属于当前平台的资源
|
||||||
|
/// </summary>
|
||||||
|
public void DeletAssetBundle(string buildOutPutPath)
|
||||||
|
{
|
||||||
|
if (EditorUserBuildSettings.activeBuildTarget == BuildTarget.WebGL)
|
||||||
|
{
|
||||||
|
string path = Path.Combine(buildOutPutPath, "StreamingAssets", "AssetBundles");
|
||||||
|
if (Directory.Exists(path))
|
||||||
|
{
|
||||||
|
string[] allDirectories = Directory.GetDirectories(path);
|
||||||
|
foreach (string dir in allDirectories)
|
||||||
|
{
|
||||||
|
string dirName = Path.GetFileName(dir);
|
||||||
|
if (!dirName.Equals("WebGL", StringComparison.OrdinalIgnoreCase)) // 忽略大小写
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Directory.Delete(dir, true);
|
||||||
|
Debug.Log($"Deleted directory: {dir}");
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
Debug.LogError($"Failed to delete {dir}: {e.Message}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Debug.LogError($"Directory not found: {path}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (EditorUserBuildSettings.activeBuildTarget == BuildTarget.StandaloneWindows || EditorUserBuildSettings.activeBuildTarget == BuildTarget.StandaloneWindows64)
|
||||||
|
{
|
||||||
|
string path = Path.Combine(buildOutPutPath, "VirtualFramwork_Data", "StreamingAssets", "AssetBundles");
|
||||||
|
if (Directory.Exists(path))
|
||||||
|
{
|
||||||
|
string[] allDirectories = Directory.GetDirectories(path);
|
||||||
|
foreach (string dir in allDirectories)
|
||||||
|
{
|
||||||
|
string dirName = Path.GetFileName(dir);
|
||||||
|
if (!dirName.Equals("Windows", StringComparison.OrdinalIgnoreCase)) // 忽略大小写
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Directory.Delete(dir, true);
|
||||||
|
Debug.Log($"Deleted directory: {dir}");
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
Debug.LogError($"Failed to delete {dir}: {e.Message}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Debug.LogError($"Directory not found: {path}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private string GetValidBuildPath(BuildReport report)
|
private string GetValidBuildPath(BuildReport report)
|
||||||
@ -41,23 +145,25 @@ public class VirtualFPostProcess : IPostprocessBuildWithReport
|
|||||||
private void CopyDirectoryWithLowerCaseNames(string sourceDir, string targetDir)
|
private void CopyDirectoryWithLowerCaseNames(string sourceDir, string targetDir)
|
||||||
{
|
{
|
||||||
// 创建小写目标目录
|
// 创建小写目标目录
|
||||||
var lowerTargetDir = ConvertToLowerPath(targetDir);
|
//var lowerTargetDir = ConvertToLowerPath(targetDir);
|
||||||
Directory.CreateDirectory(lowerTargetDir);
|
Directory.CreateDirectory(targetDir);
|
||||||
|
|
||||||
// 复制文件(带小写转换)
|
// 复制文件(带小写转换)
|
||||||
foreach (var file in Directory.GetFiles(sourceDir))
|
foreach (var file in Directory.GetFiles(sourceDir))
|
||||||
{
|
{
|
||||||
string fileName = Path.GetFileName(file);
|
string fileName = Path.GetFileName(file);
|
||||||
string lowerName = ConvertToLowerPath(fileName);
|
// 暂时废弃小写转换
|
||||||
File.Copy(file, Path.Combine(lowerTargetDir, lowerName), true);
|
//string lowerName = ConvertToLowerPath(fileName);
|
||||||
|
File.Copy(file, Path.Combine(targetDir, fileName), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 递归处理子目录(带小写转换)
|
// 递归处理子目录(带小写转换)
|
||||||
foreach (var dir in Directory.GetDirectories(sourceDir))
|
foreach (var dir in Directory.GetDirectories(sourceDir))
|
||||||
{
|
{
|
||||||
string dirName = Path.GetFileName(dir);
|
string dirName = Path.GetFileName(dir);
|
||||||
string lowerDirName = ConvertToLowerPath(dirName);
|
// 暂时废弃小写转换
|
||||||
CopyDirectoryWithLowerCaseNames(dir, Path.Combine(lowerTargetDir, lowerDirName));
|
//string lowerDirName = ConvertToLowerPath(dirName);
|
||||||
|
CopyDirectoryWithLowerCaseNames(dir, Path.Combine(targetDir, dirName));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -75,4 +181,6 @@ public class VirtualFPostProcess : IPostprocessBuildWithReport
|
|||||||
}
|
}
|
||||||
return new string(chars);
|
return new string(chars);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
24
Assets/Scripts/Extension/DeviceDraggable.cs
Normal file
24
Assets/Scripts/Extension/DeviceDraggable.cs
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
using GCSeries.Core.Samples;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.EventSystems;
|
||||||
|
|
||||||
|
public class DeviceDraggable : Draggable
|
||||||
|
{
|
||||||
|
Vector3 pos;
|
||||||
|
Vector3 rot;
|
||||||
|
private void Awake()
|
||||||
|
{
|
||||||
|
pos = transform.position;
|
||||||
|
rot = transform.localEulerAngles;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void OnEndDrag(PointerEventData eventData)
|
||||||
|
{
|
||||||
|
base.OnEndDrag(eventData);
|
||||||
|
transform.position = pos;
|
||||||
|
transform.localEulerAngles = rot;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
11
Assets/Scripts/Extension/DeviceDraggable.cs.meta
Normal file
11
Assets/Scripts/Extension/DeviceDraggable.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c2b2028d0dec50841b6e5477b275f265
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -13,8 +13,11 @@ public class Global : Singleton<Global>
|
|||||||
public XMLTool.AppData appData;
|
public XMLTool.AppData appData;
|
||||||
public Module curModule;
|
public Module curModule;
|
||||||
public Body3D.Body cur3DPart;
|
public Body3D.Body cur3DPart;
|
||||||
|
#if UNITY_WEBGL && !UNITY_EDITOR
|
||||||
|
public static string dataPath = Application.dataPath + "/Data";
|
||||||
|
#else
|
||||||
public static string dataPath = Application.dataPath + "/../Data";
|
public static string dataPath = Application.dataPath + "/../Data";
|
||||||
|
#endif
|
||||||
public static string deviceIconsPath = dataPath + "/DeviceIcons/";
|
public static string deviceIconsPath = dataPath + "/DeviceIcons/";
|
||||||
public static string audioPath = dataPath + "/Audio/";
|
public static string audioPath = dataPath + "/Audio/";
|
||||||
public static string appXmlPath = dataPath + "/App.xml";
|
public static string appXmlPath = dataPath + "/App.xml";
|
||||||
|
|||||||
@ -16,6 +16,7 @@ public class DeviceItem : MonoBehaviour
|
|||||||
public void Init(XMLTool.Device device)
|
public void Init(XMLTool.Device device)
|
||||||
{
|
{
|
||||||
this.device = device;
|
this.device = device;
|
||||||
|
TypeEventSystem.Global.Register<OnModuleQuit>(OnModuleQuitEvent);
|
||||||
if (string.IsNullOrEmpty(device.HighColor) == false)
|
if (string.IsNullOrEmpty(device.HighColor) == false)
|
||||||
{
|
{
|
||||||
var effect = gameObject.GetOrAddComponent<HighlightEffect>();
|
var effect = gameObject.GetOrAddComponent<HighlightEffect>();
|
||||||
@ -54,10 +55,15 @@ public class DeviceItem : MonoBehaviour
|
|||||||
UIRoot.Instance.transform.Find("ZStylus").GetComponent<ZPointer>().OnObjectExited.AddListener(OnObjExit);
|
UIRoot.Instance.transform.Find("ZStylus").GetComponent<ZPointer>().OnObjectExited.AddListener(OnObjExit);
|
||||||
UIRoot.Instance.transform.Find("ZMouse").GetComponent<ZPointer>().OnClick.AddListener(OnClick);
|
UIRoot.Instance.transform.Find("ZMouse").GetComponent<ZPointer>().OnClick.AddListener(OnClick);
|
||||||
UIRoot.Instance.transform.Find("ZStylus").GetComponent<ZPointer>().OnClick.AddListener(OnClick);
|
UIRoot.Instance.transform.Find("ZStylus").GetComponent<ZPointer>().OnClick.AddListener(OnClick);
|
||||||
|
|
||||||
|
//gameObject.GetOrAddComponent<DeviceDraggable>();
|
||||||
|
gameObject.GetOrAddComponent<StylusVibration>();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#if VR
|
#if VR
|
||||||
|
|
||||||
private void OnClick(ZPointer arg0, int arg1, GameObject arg2)
|
private void OnClick(ZPointer arg0, int arg1, GameObject arg2)
|
||||||
@ -108,6 +114,14 @@ public class DeviceItem : MonoBehaviour
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
private void OnStepChanged(StepStatusOnChange change)
|
private void OnStepChanged(StepStatusOnChange change)
|
||||||
|
{
|
||||||
|
CloseHighLight();
|
||||||
|
}
|
||||||
|
private void OnModuleQuitEvent(OnModuleQuit quit)
|
||||||
|
{
|
||||||
|
CloseHighLight();
|
||||||
|
}
|
||||||
|
public void CloseHighLight()
|
||||||
{
|
{
|
||||||
var effect = gameObject.GetComponent<HighlightEffect>();
|
var effect = gameObject.GetComponent<HighlightEffect>();
|
||||||
if (effect != null)
|
if (effect != null)
|
||||||
@ -122,6 +136,7 @@ public class DeviceItem : MonoBehaviour
|
|||||||
tipItem = null;
|
tipItem = null;
|
||||||
StringEventSystem.Global.UnRegister<string[]>(Global.HighLightTrigger, OnHighLightTriggerEvent);
|
StringEventSystem.Global.UnRegister<string[]>(Global.HighLightTrigger, OnHighLightTriggerEvent);
|
||||||
TypeEventSystem.Global.UnRegister<StepStatusOnChange>(OnStepChanged);
|
TypeEventSystem.Global.UnRegister<StepStatusOnChange>(OnStepChanged);
|
||||||
|
TypeEventSystem.Global.UnRegister<OnModuleQuit>(OnModuleQuitEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnHighLightTriggerEvent(string[] obj)
|
private void OnHighLightTriggerEvent(string[] obj)
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
using GCSeries.Core.Input;
|
||||||
using QFramework;
|
using QFramework;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
@ -40,8 +41,54 @@ public class Point3DItem : MonoBehaviour
|
|||||||
TypeEventSystem.Global.Register<OnPoint3DQuestionDestroy>(OnObjDestroy);
|
TypeEventSystem.Global.Register<OnPoint3DQuestionDestroy>(OnObjDestroy);
|
||||||
TypeEventSystem.Global.Register<StepStatusOnChange>(OnStepChanged);
|
TypeEventSystem.Global.Register<StepStatusOnChange>(OnStepChanged);
|
||||||
|
|
||||||
|
|
||||||
|
#if VR
|
||||||
|
UIRoot.Instance.transform.Find("ZStylus").GetComponent<ZPointer>().OnObjectEntered.AddListener(OnObjEnter);
|
||||||
|
UIRoot.Instance.transform.Find("ZStylus").GetComponent<ZPointer>().OnObjectExited.AddListener(OnObjExit);
|
||||||
|
UIRoot.Instance.transform.Find("ZStylus").GetComponent<ZPointer>().OnClick.AddListener(OnClick);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if VR
|
||||||
|
private void OnClick(ZPointer arg0, int arg1, GameObject arg2)
|
||||||
|
{
|
||||||
|
if (gameObject == arg2)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(data.clickEvent) == false)
|
||||||
|
{
|
||||||
|
StringEventSystem.Global.Send(data.clickEvent);
|
||||||
|
}
|
||||||
|
TypeEventSystem.Global.Send<OnPoint3DQuestionDestroy>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnObjExit(ZPointer arg0, GameObject arg1)
|
||||||
|
{
|
||||||
|
if (gameObject == arg1)
|
||||||
|
{
|
||||||
|
isEnter = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnObjEnter(ZPointer arg0, GameObject arg1)
|
||||||
|
{
|
||||||
|
if (gameObject == arg1)
|
||||||
|
{
|
||||||
|
isEnter = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool isEnter = false;
|
||||||
|
private void Update()
|
||||||
|
{
|
||||||
|
if (isEnter)
|
||||||
|
{
|
||||||
|
transform.Rotate(Vector3.forward * Time.deltaTime * rotSpeed);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
private void OnStepChanged(StepStatusOnChange change)
|
private void OnStepChanged(StepStatusOnChange change)
|
||||||
{
|
{
|
||||||
OnObjDestroy(default);
|
OnObjDestroy(default);
|
||||||
|
|||||||
@ -41,6 +41,7 @@ public class Launch : MonoBehaviour
|
|||||||
});
|
});
|
||||||
|
|
||||||
yield return UIKit.OpenPanelAsync<UILoading>();
|
yield return UIKit.OpenPanelAsync<UILoading>();
|
||||||
|
StringEventSystem.Global.Send("CloseDefaultLoading");
|
||||||
yield return UIKit.OpenPanelAsync<UIDeviceTip>(canvasLevel: UILevel.PopUI);
|
yield return UIKit.OpenPanelAsync<UIDeviceTip>(canvasLevel: UILevel.PopUI);
|
||||||
UIKit.GetPanel<UIDeviceTip>().Hide();
|
UIKit.GetPanel<UIDeviceTip>().Hide();
|
||||||
yield return new WaitUntil(() => isLoadFinished == true);
|
yield return new WaitUntil(() => isLoadFinished == true);
|
||||||
|
|||||||
@ -11,7 +11,7 @@ public class LaunchLoading : MonoBehaviour
|
|||||||
private void Awake()
|
private void Awake()
|
||||||
{
|
{
|
||||||
instance = this;
|
instance = this;
|
||||||
StringEventSystem.Global.Register("UIRootCreated", OnUIRootCreated);
|
StringEventSystem.Global.Register("CloseDefaultLoading", OnUIRootCreated);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnUIRootCreated()
|
private void OnUIRootCreated()
|
||||||
@ -20,7 +20,7 @@ public class LaunchLoading : MonoBehaviour
|
|||||||
}
|
}
|
||||||
private void OnDestroy()
|
private void OnDestroy()
|
||||||
{
|
{
|
||||||
StringEventSystem.Global.UnRegister("UIRootCreated", OnUIRootCreated);
|
StringEventSystem.Global.UnRegister("CloseDefaultLoading", OnUIRootCreated);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,33 +9,76 @@ public class AsposeHelper : MonoBehaviour
|
|||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
|
//public static void Writer(string json, Action callback = null)
|
||||||
|
//{
|
||||||
|
// // 加载Word文档
|
||||||
|
// Document doc = new Document(Global.reportDemoPath);
|
||||||
|
|
||||||
|
// JObject jObject = JObject.Parse(json);
|
||||||
|
|
||||||
|
// foreach (JProperty property in jObject.Properties())
|
||||||
|
// {
|
||||||
|
// string key = property.Name;
|
||||||
|
// string value = property.Value.ToString();
|
||||||
|
// doc.Range.Replace($"{{{key}}}", $"{value}", new FindReplaceOptions());
|
||||||
|
// }
|
||||||
|
|
||||||
|
// string filePath = ChinarFileController.SaveProject(Path.GetFileName(Global.reportDemoPath).Split('.')[1]);
|
||||||
|
// if (string.IsNullOrEmpty(filePath) == false)
|
||||||
|
// {
|
||||||
|
// doc.Save(filePath);
|
||||||
|
// }
|
||||||
|
// callback?.Invoke();
|
||||||
|
// // 替换文本
|
||||||
|
// //SaveWithDialog(doc, callback);
|
||||||
|
// //Debug.Log("文档处理完成,新文档已保存到: " + outputFilePath);
|
||||||
|
//}
|
||||||
|
|
||||||
public static void Writer(string json, Action callback = null)
|
public static void Writer(string json, Action callback = null)
|
||||||
{
|
{
|
||||||
// ¼ÓÔØWordÎĵµ
|
// ¼ÓÔØWordÎĵµ
|
||||||
Document doc = new Document(Global.reportDemoPath);
|
Document doc = new Document(Global.reportDemoPath);
|
||||||
|
|
||||||
JObject jObject = JObject.Parse(json);
|
JToken jToken = JToken.Parse(json);
|
||||||
|
TraverseAndReplace(jToken, doc);
|
||||||
|
|
||||||
foreach (JProperty property in jObject.Properties())
|
string filePath = ChinarFileController.SaveProject(Path.GetFileName(Global.reportDemoPath).Split('.')[1]);
|
||||||
|
if (!string.IsNullOrEmpty(filePath))
|
||||||
|
{
|
||||||
|
doc.Save(filePath);
|
||||||
|
}
|
||||||
|
callback?.Invoke();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void TraverseAndReplace(JToken jToken, Document doc)
|
||||||
|
{
|
||||||
|
if (jToken.Type == JTokenType.Object)
|
||||||
|
{
|
||||||
|
foreach (JProperty property in ((JObject)jToken).Properties())
|
||||||
|
{
|
||||||
|
if (property.Value.Type == JTokenType.Object || property.Value.Type == JTokenType.Array)
|
||||||
|
{
|
||||||
|
TraverseAndReplace(property.Value, doc);
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
string key = property.Name;
|
string key = property.Name;
|
||||||
string value = property.Value.ToString();
|
string value = property.Value.ToString();
|
||||||
doc.Range.Replace($"{{{key}}}", $"{value}", new FindReplaceOptions());
|
doc.Range.Replace($"{{{key}}}", $"{value}", new FindReplaceOptions());
|
||||||
}
|
}
|
||||||
|
}
|
||||||
string filePath = ChinarFileController.SaveProject(Path.GetFileName(Global.reportDemoPath).Split('.')[1]);
|
}
|
||||||
if (string.IsNullOrEmpty(filePath) == false)
|
else if (jToken.Type == JTokenType.Array)
|
||||||
{
|
{
|
||||||
doc.Save(filePath);
|
foreach (JToken item in jToken)
|
||||||
|
{
|
||||||
|
TraverseAndReplace(item, doc);
|
||||||
}
|
}
|
||||||
callback?.Invoke();
|
|
||||||
// 替换文本
|
|
||||||
//SaveWithDialog(doc, callback);
|
|
||||||
//Debug.Log("文档处理完成,新文档已保存到: " + outputFilePath);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//private static void SaveWithDialog(Document doc, Action<DialogResult> callback)
|
//private static void SaveWithDialog(Document doc, Action<DialogResult> callback)
|
||||||
//{
|
//{
|
||||||
|
|||||||
361
Assets/Scripts/Tools/WaterfallScrollView.cs
Normal file
361
Assets/Scripts/Tools/WaterfallScrollView.cs
Normal file
@ -0,0 +1,361 @@
|
|||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.UI;
|
||||||
|
|
||||||
|
public class WaterfallScrollView : MonoBehaviour
|
||||||
|
{
|
||||||
|
[Header("组件引用")]
|
||||||
|
[SerializeField] private ScrollRect scrollRect;
|
||||||
|
[SerializeField] private RectTransform viewport;
|
||||||
|
[SerializeField] private RectTransform content;
|
||||||
|
[SerializeField] private RectTransform itemPrefab;
|
||||||
|
[SerializeField] private Image itemImageComponent; // 预制体中的Image组件引用
|
||||||
|
|
||||||
|
[Header("瀑布流设置")]
|
||||||
|
[SerializeField] private int columnCount = 3;
|
||||||
|
[SerializeField] private float spacingX = 10f;
|
||||||
|
[SerializeField] private float spacingY = 10f;
|
||||||
|
[SerializeField] private float paddingLeft = 10f;
|
||||||
|
[SerializeField] private float paddingRight = 10f;
|
||||||
|
[SerializeField] private float paddingTop = 10f;
|
||||||
|
[SerializeField] private float paddingBottom = 10f;
|
||||||
|
|
||||||
|
private List<float> columnHeights;
|
||||||
|
private List<RectTransform> activeItems = new List<RectTransform>();
|
||||||
|
private Dictionary<int, RectTransform> pooledItems = new Dictionary<int, RectTransform>();
|
||||||
|
private float itemWidth;
|
||||||
|
private float viewportHeight;
|
||||||
|
private float contentHeight;
|
||||||
|
private int totalItemCount = 0;
|
||||||
|
private int visibleStartIndex = 0;
|
||||||
|
private int visibleEndIndex = 0;
|
||||||
|
public List<Sprite> sprites = new List<Sprite>(); // 存储所有精灵
|
||||||
|
private List<float> itemHeights = new List<float>(); // 存储每项的计算高度
|
||||||
|
|
||||||
|
private void Start()
|
||||||
|
{
|
||||||
|
Initialize();
|
||||||
|
scrollRect.onValueChanged.AddListener(OnScroll);
|
||||||
|
|
||||||
|
// 初始检查sprites是否有内容
|
||||||
|
if (sprites.Count > 0)
|
||||||
|
{
|
||||||
|
SetContent(sprites);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ClearContent();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Initialize()
|
||||||
|
{
|
||||||
|
// 计算列宽和间距
|
||||||
|
float availableWidth = viewport.rect.width - paddingLeft - paddingRight - (columnCount - 1) * spacingX;
|
||||||
|
itemWidth = availableWidth / columnCount;
|
||||||
|
|
||||||
|
// 初始化列高度数组
|
||||||
|
columnHeights = new List<float>(new float[columnCount]);
|
||||||
|
|
||||||
|
// 记录视口高度用于计算可见项
|
||||||
|
viewportHeight = viewport.rect.height;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 使用提供的精灵列表设置内容
|
||||||
|
public void SetContent(List<Sprite> sprites)
|
||||||
|
{
|
||||||
|
this.sprites = sprites ?? new List<Sprite>();
|
||||||
|
totalItemCount = this.sprites.Count;
|
||||||
|
|
||||||
|
// 如果没有精灵,清空内容
|
||||||
|
if (totalItemCount == 0)
|
||||||
|
{
|
||||||
|
ClearContent();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 计算每项的高度
|
||||||
|
CalculateItemHeights();
|
||||||
|
|
||||||
|
// 计算内容高度
|
||||||
|
contentHeight = CalculateContentHeight();
|
||||||
|
content.sizeDelta = new Vector2(content.sizeDelta.x, contentHeight);
|
||||||
|
|
||||||
|
// 更新可见项
|
||||||
|
UpdateVisibleItems();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 清空所有内容
|
||||||
|
public void ClearContent()
|
||||||
|
{
|
||||||
|
// 回收所有活动项
|
||||||
|
foreach (var item in activeItems)
|
||||||
|
{
|
||||||
|
item.gameObject.SetActive(false);
|
||||||
|
}
|
||||||
|
activeItems.Clear();
|
||||||
|
|
||||||
|
// 重置内容大小
|
||||||
|
content.sizeDelta = new Vector2(content.sizeDelta.x, 0);
|
||||||
|
totalItemCount = 0;
|
||||||
|
itemHeights.Clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CalculateItemHeights()
|
||||||
|
{
|
||||||
|
itemHeights.Clear();
|
||||||
|
|
||||||
|
foreach (Sprite sprite in sprites)
|
||||||
|
{
|
||||||
|
if (sprite != null)
|
||||||
|
{
|
||||||
|
// 计算保持宽高比的高度
|
||||||
|
float aspectRatio = sprite.rect.width / sprite.rect.height;
|
||||||
|
float height = itemWidth / aspectRatio;
|
||||||
|
itemHeights.Add(height);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// 如果精灵为空,使用默认高度
|
||||||
|
itemHeights.Add(150f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private float CalculateContentHeight()
|
||||||
|
{
|
||||||
|
// 重置列高度
|
||||||
|
for (int i = 0; i < columnCount; i++)
|
||||||
|
{
|
||||||
|
columnHeights[i] = paddingTop;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 模拟布局计算内容高度
|
||||||
|
for (int i = 0; i < totalItemCount; i++)
|
||||||
|
{
|
||||||
|
float height = itemHeights[i];
|
||||||
|
int shortestColumnIndex = GetShortestColumn();
|
||||||
|
columnHeights[shortestColumnIndex] += height + spacingY;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 找出最高的列作为内容高度
|
||||||
|
float maxHeight = 0;
|
||||||
|
foreach (float height in columnHeights)
|
||||||
|
{
|
||||||
|
if (height > maxHeight)
|
||||||
|
{
|
||||||
|
maxHeight = height;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return maxHeight + paddingBottom - spacingY;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int GetShortestColumn()
|
||||||
|
{
|
||||||
|
int shortestIndex = 0;
|
||||||
|
float minHeight = columnHeights[0];
|
||||||
|
|
||||||
|
for (int i = 1; i < columnCount; i++)
|
||||||
|
{
|
||||||
|
if (columnHeights[i] < minHeight)
|
||||||
|
{
|
||||||
|
minHeight = columnHeights[i];
|
||||||
|
shortestIndex = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return shortestIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void UpdateVisibleItems()
|
||||||
|
{
|
||||||
|
// 如果没有项目,不执行任何操作
|
||||||
|
if (totalItemCount == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// 计算当前可视区域的上下边界
|
||||||
|
float viewportTop = -content.anchoredPosition.y;
|
||||||
|
float viewportBottom = viewportTop + viewportHeight;
|
||||||
|
|
||||||
|
// 重置列高度用于布局计算
|
||||||
|
for (int i = 0; i < columnCount; i++)
|
||||||
|
{
|
||||||
|
columnHeights[i] = paddingTop;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 计算可见项的起始和结束索引
|
||||||
|
int newVisibleStartIndex = 0;
|
||||||
|
int newVisibleEndIndex = totalItemCount - 1;
|
||||||
|
float currentYPosition = 0;
|
||||||
|
|
||||||
|
// 找到第一个可见项的索引
|
||||||
|
for (int i = 0; i < totalItemCount; i++)
|
||||||
|
{
|
||||||
|
float height = itemHeights[i];
|
||||||
|
int columnIndex = GetShortestColumn();
|
||||||
|
float xPosition = paddingLeft + columnIndex * (itemWidth + spacingX);
|
||||||
|
float yPosition = -columnHeights[columnIndex]; // 注意UI坐标是向下为正
|
||||||
|
|
||||||
|
columnHeights[columnIndex] += height + spacingY;
|
||||||
|
|
||||||
|
float itemTop = yPosition;
|
||||||
|
float itemBottom = yPosition - height;
|
||||||
|
|
||||||
|
// 如果项在可视区域内或者与可视区域有交集
|
||||||
|
if (itemBottom <= viewportBottom && itemTop >= viewportTop - viewportHeight) // 多加载一个屏幕高度的内容
|
||||||
|
{
|
||||||
|
newVisibleStartIndex = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 重置列高度再次计算
|
||||||
|
for (int i = 0; i < columnCount; i++)
|
||||||
|
{
|
||||||
|
columnHeights[i] = paddingTop;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 找到最后一个可见项的索引
|
||||||
|
for (int i = 0; i < totalItemCount; i++)
|
||||||
|
{
|
||||||
|
float height = itemHeights[i];
|
||||||
|
int columnIndex = GetShortestColumn();
|
||||||
|
float xPosition = paddingLeft + columnIndex * (itemWidth + spacingX);
|
||||||
|
float yPosition = -columnHeights[columnIndex]; // 注意UI坐标是向下为正
|
||||||
|
|
||||||
|
columnHeights[columnIndex] += height + spacingY;
|
||||||
|
|
||||||
|
float itemTop = yPosition;
|
||||||
|
float itemBottom = yPosition - height;
|
||||||
|
|
||||||
|
// 如果项在可视区域内或者与可视区域有交集
|
||||||
|
if (itemBottom <= viewportBottom + viewportHeight && itemTop >= viewportTop) // 多加载一个屏幕高度的内容
|
||||||
|
{
|
||||||
|
newVisibleEndIndex = i;
|
||||||
|
}
|
||||||
|
else if (i > newVisibleStartIndex) // 已经找到起始索引后才开始判断结束
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 如果可见项范围没有变化则不更新
|
||||||
|
if (newVisibleStartIndex == visibleStartIndex && newVisibleEndIndex == visibleEndIndex)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
visibleStartIndex = newVisibleStartIndex;
|
||||||
|
visibleEndIndex = newVisibleEndIndex;
|
||||||
|
|
||||||
|
// 回收不再可见的项
|
||||||
|
RecycleInvisibleItems();
|
||||||
|
|
||||||
|
// 重置列高度再次计算,这次用于实际布局
|
||||||
|
for (int i = 0; i < columnCount; i++)
|
||||||
|
{
|
||||||
|
columnHeights[i] = paddingTop;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 创建或更新可见项
|
||||||
|
for (int i = 0; i < totalItemCount; i++)
|
||||||
|
{
|
||||||
|
float height = itemHeights[i];
|
||||||
|
int columnIndex = GetShortestColumn();
|
||||||
|
float xPosition = paddingLeft + columnIndex * (itemWidth + spacingX);
|
||||||
|
float yPosition = -columnHeights[columnIndex]; // 注意UI坐标是向下为正
|
||||||
|
|
||||||
|
columnHeights[columnIndex] += height + spacingY;
|
||||||
|
|
||||||
|
// 只处理可见范围内的项
|
||||||
|
if (i >= visibleStartIndex && i <= visibleEndIndex)
|
||||||
|
{
|
||||||
|
CreateOrUpdateItem(i, xPosition, yPosition, itemWidth, height);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CreateOrUpdateItem(int index, float x, float y, float width, float height)
|
||||||
|
{
|
||||||
|
RectTransform item;
|
||||||
|
if (!pooledItems.TryGetValue(index, out item))
|
||||||
|
{
|
||||||
|
// 创建新项
|
||||||
|
item = Instantiate(itemPrefab, content);
|
||||||
|
item.name = "Item_" + index;
|
||||||
|
pooledItems[index] = item;
|
||||||
|
activeItems.Add(item);
|
||||||
|
}
|
||||||
|
else if (!activeItems.Contains(item))
|
||||||
|
{
|
||||||
|
// 从池中取出
|
||||||
|
item.gameObject.SetActive(true);
|
||||||
|
activeItems.Add(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 设置位置和大小
|
||||||
|
item.anchorMin = new Vector2(0, 1);
|
||||||
|
item.anchorMax = new Vector2(0, 1);
|
||||||
|
item.pivot = new Vector2(0, 1);
|
||||||
|
item.anchoredPosition = new Vector2(x, y);
|
||||||
|
item.sizeDelta = new Vector2(width, height);
|
||||||
|
|
||||||
|
// 更新项内容
|
||||||
|
UpdateItemContent(item, index);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void UpdateItemContent(RectTransform item, int index)
|
||||||
|
{
|
||||||
|
// 获取Image组件
|
||||||
|
Image image = item.GetComponentInChildren<Image>();
|
||||||
|
if (image == null && itemImageComponent != null)
|
||||||
|
{
|
||||||
|
// 如果没有找到Image组件,使用预制体中的引用
|
||||||
|
image = Instantiate(itemImageComponent, item);
|
||||||
|
image.rectTransform.anchorMin = Vector2.zero;
|
||||||
|
image.rectTransform.anchorMax = Vector2.one;
|
||||||
|
image.rectTransform.sizeDelta = Vector2.zero;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (image && index < sprites.Count && sprites[index] != null)
|
||||||
|
{
|
||||||
|
// 设置精灵
|
||||||
|
image.sprite = sprites[index];
|
||||||
|
image.SetNativeSize();
|
||||||
|
|
||||||
|
// 设置Image组件为保持宽高比
|
||||||
|
image.preserveAspect = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void RecycleInvisibleItems()
|
||||||
|
{
|
||||||
|
// 找出需要回收的项
|
||||||
|
List<RectTransform> itemsToRecycle = new List<RectTransform>();
|
||||||
|
foreach (RectTransform item in activeItems)
|
||||||
|
{
|
||||||
|
string[] nameParts = item.name.Split('_');
|
||||||
|
if (nameParts.Length >= 2 && int.TryParse(nameParts[1], out int itemIndex))
|
||||||
|
{
|
||||||
|
if (itemIndex < visibleStartIndex || itemIndex > visibleEndIndex)
|
||||||
|
{
|
||||||
|
itemsToRecycle.Add(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 回收项
|
||||||
|
foreach (RectTransform item in itemsToRecycle)
|
||||||
|
{
|
||||||
|
item.gameObject.SetActive(false);
|
||||||
|
activeItems.Remove(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnScroll(Vector2 scrollPosition)
|
||||||
|
{
|
||||||
|
UpdateVisibleItems();
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/Scripts/Tools/WaterfallScrollView.cs.meta
Normal file
11
Assets/Scripts/Tools/WaterfallScrollView.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 2a86eb889d0df8142b20f98a27e5deb4
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/Scripts/Tools/ZXKLicenses.meta
Normal file
8
Assets/Scripts/Tools/ZXKLicenses.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 4fec87e21a9630c46b1a6ef7dec72ea6
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/Scripts/Tools/ZXKLicenses/Encryption.meta
Normal file
8
Assets/Scripts/Tools/ZXKLicenses/Encryption.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: bb335401f53d3c94490f449b410da1ba
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
139
Assets/Scripts/Tools/ZXKLicenses/Encryption/DateManager.cs
Normal file
139
Assets/Scripts/Tools/ZXKLicenses/Encryption/DateManager.cs
Normal file
@ -0,0 +1,139 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using System.IO;
|
||||||
|
using TMPro;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.Events;
|
||||||
|
using UnityEngine.Networking;
|
||||||
|
using UnityEngine.UI;
|
||||||
|
|
||||||
|
public class DateManager : MonoBehaviour
|
||||||
|
{
|
||||||
|
private string EndTimer;//结束时间
|
||||||
|
private string RecordData;
|
||||||
|
public GameObject ui;
|
||||||
|
public TextMeshProUGUI text;
|
||||||
|
public Button btn;
|
||||||
|
private void Awake()
|
||||||
|
{
|
||||||
|
ui.gameObject.SetActive(false);
|
||||||
|
btn.onClick.AddListener(() =>
|
||||||
|
{
|
||||||
|
Application.Quit();
|
||||||
|
});
|
||||||
|
#if UNITY_WEBGL
|
||||||
|
StartCoroutine(WebUpdateTime());
|
||||||
|
#else
|
||||||
|
UpdateTime(DecryptFileReader.ReadAndDecryptData("Timer.txt"), ShowTip, ShowTip, () =>
|
||||||
|
{
|
||||||
|
gameObject.SetActive(false);
|
||||||
|
});
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ShowTip(string str)
|
||||||
|
{
|
||||||
|
gameObject.SetActive(true);
|
||||||
|
ui.SetActive(true);
|
||||||
|
text.text = str;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IEnumerator WebUpdateTime()
|
||||||
|
{
|
||||||
|
string path = Path.Combine(Application.streamingAssetsPath, "Timer.txt");
|
||||||
|
using (UnityWebRequest request = new UnityWebRequest(path))
|
||||||
|
{
|
||||||
|
request.downloadHandler = new DownloadHandlerBuffer();
|
||||||
|
yield return request.SendWebRequest();
|
||||||
|
if (string.IsNullOrEmpty(request.error))
|
||||||
|
{
|
||||||
|
string datas = DecryptFileReader.ReadAndDecryptData(request.downloadHandler.data);
|
||||||
|
UpdateTime(datas, ShowTip, ShowTip, () =>
|
||||||
|
{
|
||||||
|
gameObject.SetActive(false);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Debug.LogError(request.error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 更新系统时间
|
||||||
|
/// </summary>
|
||||||
|
public void UpdateTime(string datas, UnityAction<string> error = null, UnityAction<string> timeOut = null, UnityAction updateTimer = null)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
EndTimer = datas.Split('|')[0];
|
||||||
|
RecordData = datas.Split('|')[1];
|
||||||
|
//第一次获取获取系统时间
|
||||||
|
DateTime currentDateTime = DateTime.Now;
|
||||||
|
string Data = currentDateTime.ToString("yyyy-MM-dd HH:mm:ss");
|
||||||
|
if (DateTime.TryParse(RecordData, out DateTime recordDateTime) && DateTime.TryParse(Data, out DateTime nowDateTime))
|
||||||
|
{
|
||||||
|
if (recordDateTime > nowDateTime)
|
||||||
|
{
|
||||||
|
Debug.Log("仿真文件被损坏,请联系管理员进行修复");
|
||||||
|
error?.Invoke("仿真文件被损坏,请联系管理员进行修复");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
#if !UNITY_WEBGL
|
||||||
|
//把上一次存储得系统时间更新到最新
|
||||||
|
string timer = "Timer.txt";
|
||||||
|
RecordData = Data;
|
||||||
|
string strMerge = EndTimer + "|" + RecordData;
|
||||||
|
EncryptFileCreator.EncryptAndSaveData(strMerge, timer);
|
||||||
|
#endif
|
||||||
|
updateTimer?.Invoke();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
Debug.LogError($"数据出错: {e.Message}");
|
||||||
|
error?.Invoke($"数据出错: {e.Message}");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (JudgeExpire())
|
||||||
|
{
|
||||||
|
Debug.Log("请联系管理员进行升级");
|
||||||
|
timeOut?.Invoke("请联系管理员进行升级");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 判断是否到期
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
public bool JudgeExpire()
|
||||||
|
{
|
||||||
|
if (DateTime.TryParse(EndTimer, out DateTime endDataTime) && DateTime.TryParse(RecordData, out DateTime recordDateTime))
|
||||||
|
{
|
||||||
|
//结束日期小于目前日期代表到期
|
||||||
|
if (endDataTime < recordDateTime)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 给客户打包的时候,需要设置EndTimer,然后运行一次生成文件并注释掉
|
||||||
|
/// </summary>
|
||||||
|
public void CreatTimer()
|
||||||
|
{
|
||||||
|
//第一次获取获取系统时间
|
||||||
|
DateTime currentDateTime = DateTime.Now;
|
||||||
|
RecordData = currentDateTime.ToString("yyyy-MM-dd HH:mm:ss");
|
||||||
|
string strMerge = EndTimer + "|" + RecordData;
|
||||||
|
EncryptFileCreator.EncryptAndSaveData(strMerge, "Timer.txt");
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 718cf7f3f1b16f141ab751a37af8cae1
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -0,0 +1,47 @@
|
|||||||
|
using System.IO;
|
||||||
|
using System.Security.Cryptography;
|
||||||
|
using System.Text;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
public class DecryptFileReader
|
||||||
|
{
|
||||||
|
private static byte[] key = Encoding.UTF8.GetBytes("Sixteen byte key"); // 加密密钥,需与加密时一致
|
||||||
|
private static byte[] iv = Encoding.UTF8.GetBytes("InitializationVe"); // 确保IV长度为16字节
|
||||||
|
|
||||||
|
public static string ReadAndDecryptData(string filePath)
|
||||||
|
{
|
||||||
|
string fullPath = Path.Combine(Application.streamingAssetsPath, filePath);
|
||||||
|
if (File.Exists(filePath)) return "";
|
||||||
|
// 读取加密文件
|
||||||
|
byte[] encryptedData = File.ReadAllBytes(fullPath);
|
||||||
|
return ReadAndDecryptData(encryptedData);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static string ReadAndDecryptData(byte[] encryptedData)
|
||||||
|
{
|
||||||
|
|
||||||
|
// 创建AES解密器
|
||||||
|
using (Aes aesAlg = Aes.Create())
|
||||||
|
{
|
||||||
|
aesAlg.Key = key;
|
||||||
|
aesAlg.IV = iv;
|
||||||
|
|
||||||
|
ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);
|
||||||
|
|
||||||
|
// 创建内存流和加密流
|
||||||
|
using (MemoryStream msDecrypt = new MemoryStream(encryptedData))
|
||||||
|
{
|
||||||
|
using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
|
||||||
|
{
|
||||||
|
byte[] decryptedBytes = new byte[encryptedData.Length];
|
||||||
|
int decryptedByteCount = csDecrypt.Read(decryptedBytes, 0, decryptedBytes.Length);
|
||||||
|
|
||||||
|
// 将解密后的数据转换为字符串
|
||||||
|
string decryptedData = Encoding.UTF8.GetString(decryptedBytes, 0, decryptedByteCount);
|
||||||
|
return decryptedData;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 354bc54210a77764ebad2d49b5e927ba
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -0,0 +1,56 @@
|
|||||||
|
using System.IO;
|
||||||
|
using System.Security.Cryptography;
|
||||||
|
using System.Text;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
public class EncryptFileCreator
|
||||||
|
{
|
||||||
|
private static byte[] key = Encoding.UTF8.GetBytes("Sixteen byte key"); // 加密密钥,需16字节
|
||||||
|
private static byte[] iv = Encoding.UTF8.GetBytes("InitializationVe"); // 确保IV长度为16字节
|
||||||
|
|
||||||
|
public static void EncryptAndSaveData(string data,string path)
|
||||||
|
{
|
||||||
|
string filePath = Path.Combine(Application.streamingAssetsPath, path);
|
||||||
|
if (!File.Exists(filePath))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// 创建文件
|
||||||
|
File.WriteAllText(filePath, "");
|
||||||
|
Debug.Log("文件已创建");
|
||||||
|
}
|
||||||
|
catch (IOException e)
|
||||||
|
{
|
||||||
|
Debug.LogError($"创建文件时出错: {e.Message}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 将数据转换为字节数组
|
||||||
|
byte[] plainText = Encoding.UTF8.GetBytes(data);
|
||||||
|
|
||||||
|
// 创建AES加密器
|
||||||
|
using (Aes aesAlg = Aes.Create())
|
||||||
|
{
|
||||||
|
aesAlg.Key = key;
|
||||||
|
aesAlg.IV = iv;
|
||||||
|
|
||||||
|
ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);
|
||||||
|
|
||||||
|
// 创建内存流和加密流
|
||||||
|
using (MemoryStream msEncrypt = new MemoryStream())
|
||||||
|
{
|
||||||
|
using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
|
||||||
|
{
|
||||||
|
csEncrypt.Write(plainText, 0, plainText.Length);
|
||||||
|
csEncrypt.FlushFinalBlock();
|
||||||
|
|
||||||
|
// 获取加密后的数据
|
||||||
|
byte[] encryptedData = msEncrypt.ToArray();
|
||||||
|
|
||||||
|
// 保存加密文件到StreamingAssets文件夹
|
||||||
|
string fullPath = Path.Combine(Application.streamingAssetsPath, filePath);
|
||||||
|
File.WriteAllBytes(fullPath, encryptedData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 22f7660ba2e708d4eb33622fe324499b
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
73
Assets/Scripts/Tools/ZXKLicenses/HttpRestful.cs
Normal file
73
Assets/Scripts/Tools/ZXKLicenses/HttpRestful.cs
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
using QFramework;
|
||||||
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.Networking;
|
||||||
|
|
||||||
|
public class HttpRestful : MonoSingleton<HttpRestful>
|
||||||
|
{
|
||||||
|
public void Get(string url, Action<bool, string> actionResult = null)
|
||||||
|
{
|
||||||
|
StartCoroutine(_Get(url, actionResult));
|
||||||
|
}
|
||||||
|
|
||||||
|
private IEnumerator _Get(string url, Action<bool, string> action)
|
||||||
|
{
|
||||||
|
using (UnityWebRequest request = UnityWebRequest.Get(url))
|
||||||
|
{
|
||||||
|
yield return request.SendWebRequest();
|
||||||
|
|
||||||
|
string resstr = "";
|
||||||
|
if (request.isNetworkError || request.isHttpError)
|
||||||
|
{
|
||||||
|
resstr = request.error;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
resstr = request.downloadHandler.text;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (action != null)
|
||||||
|
{
|
||||||
|
action(request.isHttpError, resstr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public void Post(string url, string form, Action<bool, DownloadHandler> callBack, string Header = null, string HeaderValue = null, int timeOut = 3)
|
||||||
|
{
|
||||||
|
|
||||||
|
StartCoroutine(_Post(url, form, callBack, Header, HeaderValue, timeOut));
|
||||||
|
}
|
||||||
|
|
||||||
|
public IEnumerator _Post(string url, string form, Action<bool, DownloadHandler> callBack, string Header = null, string HeaderValue = null, int timeOut = 3)
|
||||||
|
{
|
||||||
|
//请求链接,并将form对象发送到远程服务器
|
||||||
|
using (UnityWebRequest webRequest = UnityWebRequest.Post(url, form, "application/json"))//;charset=utf-8
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrEmpty(Header) && !string.IsNullOrEmpty(HeaderValue))
|
||||||
|
{
|
||||||
|
webRequest.SetRequestHeader(Header, HeaderValue);
|
||||||
|
}
|
||||||
|
webRequest.timeout = timeOut * 1000;
|
||||||
|
yield return webRequest.SendWebRequest();
|
||||||
|
if (webRequest.result!= UnityWebRequest.Result.Success)
|
||||||
|
{
|
||||||
|
Debug.Log(webRequest.error);
|
||||||
|
callBack?.Invoke(false, webRequest.downloadHandler);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
callBack?.Invoke(true, webRequest.downloadHandler);
|
||||||
|
}
|
||||||
|
//if (webRequest.isHttpError || webRequest.isNetworkError)
|
||||||
|
//{
|
||||||
|
// //Debug.LogError("===========");
|
||||||
|
// callBack?.Invoke(false, null);
|
||||||
|
//}
|
||||||
|
//else
|
||||||
|
//{
|
||||||
|
// callBack?.Invoke(true, webRequest.downloadHandler);
|
||||||
|
//}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/Scripts/Tools/ZXKLicenses/HttpRestful.cs.meta
Normal file
11
Assets/Scripts/Tools/ZXKLicenses/HttpRestful.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: cca16177d7a134a43a4fb3320d5b8fc7
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/Scripts/Tools/ZXKLicenses/Licence.meta
Normal file
8
Assets/Scripts/Tools/ZXKLicenses/Licence.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 32677377141e60248a7a2484825ce1d4
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
46
Assets/Scripts/Tools/ZXKLicenses/Licence/LicenceData.cs
Normal file
46
Assets/Scripts/Tools/ZXKLicenses/Licence/LicenceData.cs
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
public class LicenceData
|
||||||
|
{
|
||||||
|
public string project_id;
|
||||||
|
public string user_name;
|
||||||
|
public string license_code;
|
||||||
|
public string host_id;
|
||||||
|
public string duration; //使用时长
|
||||||
|
public string sign;
|
||||||
|
}
|
||||||
|
public class Datas
|
||||||
|
{
|
||||||
|
public static string Project_id = "7";
|
||||||
|
public static string secretKey = "pZNwkYoMRp7MG_O7aGtmA";
|
||||||
|
public static string UserName;
|
||||||
|
public static string Licensecode;
|
||||||
|
public static string Hostid;
|
||||||
|
public static int Duration;//持续时间
|
||||||
|
}
|
||||||
|
[Serializable]
|
||||||
|
public class License
|
||||||
|
{
|
||||||
|
public int id;
|
||||||
|
public string user_name;
|
||||||
|
public string license_code;
|
||||||
|
public int is_authorized;
|
||||||
|
public string host_id;
|
||||||
|
public string authorization_at;
|
||||||
|
public string authorization_end_at;
|
||||||
|
public string created_at;
|
||||||
|
public int login_count;
|
||||||
|
public int duration;
|
||||||
|
public string last_login;
|
||||||
|
}
|
||||||
|
|
||||||
|
[Serializable]
|
||||||
|
public class LicenseValidationResponse
|
||||||
|
{
|
||||||
|
public string status;
|
||||||
|
public string message;
|
||||||
|
public License license;
|
||||||
|
}
|
||||||
11
Assets/Scripts/Tools/ZXKLicenses/Licence/LicenceData.cs.meta
Normal file
11
Assets/Scripts/Tools/ZXKLicenses/Licence/LicenceData.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8f40d10c2dcbad941ac179b38fde96bd
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
180
Assets/Scripts/Tools/ZXKLicenses/Licence/LicenseManager.cs
Normal file
180
Assets/Scripts/Tools/ZXKLicenses/Licence/LicenseManager.cs
Normal file
@ -0,0 +1,180 @@
|
|||||||
|
using Newtonsoft.Json;
|
||||||
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Net.NetworkInformation;
|
||||||
|
using System.Security.Cryptography;
|
||||||
|
using System.Text;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
public class LicenseManager : MonoBehaviour
|
||||||
|
{
|
||||||
|
private Dictionary<string, string> Data = new();
|
||||||
|
private LicenseValidationResponse LicenseRes = new LicenseValidationResponse();
|
||||||
|
private string Hostid = "";
|
||||||
|
|
||||||
|
public void Init()
|
||||||
|
{
|
||||||
|
Hostid = GetPhysicalAddress();
|
||||||
|
Datas.Hostid = Hostid;
|
||||||
|
}
|
||||||
|
public LicenceData GetLicenceData(string projectid, string userName, string licensecode, string hostid, int duration)
|
||||||
|
{
|
||||||
|
Data.Clear();
|
||||||
|
LicenceData licence = new LicenceData();
|
||||||
|
licence.project_id = projectid;
|
||||||
|
licence.user_name = userName;
|
||||||
|
licence.license_code = licensecode;
|
||||||
|
licence.host_id = hostid;
|
||||||
|
licence.duration = duration.ToString();
|
||||||
|
if (!Data.ContainsKey("project_id"))
|
||||||
|
{
|
||||||
|
Data.Add("project_id", licence.project_id);
|
||||||
|
}
|
||||||
|
if (!Data.ContainsKey("user_name"))
|
||||||
|
{
|
||||||
|
Data.Add("user_name", licence.user_name);
|
||||||
|
}
|
||||||
|
if (!Data.ContainsKey("license_code"))
|
||||||
|
{
|
||||||
|
Data.Add("license_code", licence.license_code);
|
||||||
|
}
|
||||||
|
if (!Data.ContainsKey("host_id"))
|
||||||
|
{
|
||||||
|
Data.Add("host_id", licence.host_id);
|
||||||
|
}
|
||||||
|
if (!Data.ContainsKey("duration"))
|
||||||
|
{
|
||||||
|
Data.Add("duration", licence.duration);
|
||||||
|
}
|
||||||
|
licence.sign = GenerateSignature(Datas.secretKey, Data);
|
||||||
|
return licence;
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 请求
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="licence"></param>
|
||||||
|
/// <param name="callBack"></param>
|
||||||
|
public void LicensePost(Action<bool> callBack = null)
|
||||||
|
{
|
||||||
|
LicenceData licence = GetLicenceData(Datas.Project_id, Datas.UserName, Datas.Licensecode, Datas.Hostid, Datas.Duration);
|
||||||
|
|
||||||
|
string json = JsonConvert.SerializeObject(licence);
|
||||||
|
HttpRestful.Instance.Post("https://locallicense.zxkedu.com/api/license/validate/", json, (m, n) =>
|
||||||
|
{
|
||||||
|
JsonConvert.DeserializeObject(n.text);
|
||||||
|
if (LicenseRes.status == "success")
|
||||||
|
{
|
||||||
|
EncryptedFile();
|
||||||
|
}
|
||||||
|
callBack.Invoke(m);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 生成密匙
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="secretKey"></param>
|
||||||
|
/// <param name="data"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public string GenerateSignature(string secretKey, Dictionary<string, string> data)
|
||||||
|
{
|
||||||
|
// 添加当前时间戳
|
||||||
|
//string timestamp = DateTimeOffset.UtcNow.ToUnixTimeSeconds().ToString();
|
||||||
|
//获取当前时间戳并四舍五入到最近的分钟
|
||||||
|
long timestamp = (long)(DateTimeOffset.UtcNow.ToUnixTimeSeconds() / 60) * 60;
|
||||||
|
//long timestamp = (long)(GetTimestamp() / 60) * 60;
|
||||||
|
if (!data.ContainsKey("timestamp"))
|
||||||
|
{
|
||||||
|
data.Add("timestamp", timestamp.ToString());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
data["timestamp"] = timestamp.ToString();
|
||||||
|
}
|
||||||
|
// 对键值对进行排序
|
||||||
|
var sortedData = data.OrderBy(kvp => kvp.Key);
|
||||||
|
Debug.Log("sortedData对键值对进行排序:" + sortedData);
|
||||||
|
|
||||||
|
// 构建查询字符串
|
||||||
|
string queryString = string.Join("&", sortedData.Select(kvp => $"{kvp.Key}={kvp.Value}"));
|
||||||
|
Debug.Log("queryString构建查询字符串:" + queryString);
|
||||||
|
// 使用HMAC-SHA256生成签名
|
||||||
|
using (var hmac = new HMACSHA256(Encoding.UTF8.GetBytes(secretKey)))
|
||||||
|
{
|
||||||
|
byte[] hash = hmac.ComputeHash(Encoding.UTF8.GetBytes(queryString));
|
||||||
|
Debug.Log("生成签名:" + BitConverter.ToString(hash).Replace("-", "").ToLowerInvariant());
|
||||||
|
return BitConverter.ToString(hash).Replace("-", "").ToLowerInvariant();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void StartSetDuration()
|
||||||
|
{
|
||||||
|
if (gameObject.activeSelf)
|
||||||
|
{
|
||||||
|
StartCoroutine(SetDuration(60f));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
IEnumerator SetDuration(float times)
|
||||||
|
{
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
yield return new WaitForSeconds(times);
|
||||||
|
Datas.Duration++;
|
||||||
|
LicensePost();
|
||||||
|
Datas.Duration = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public string GetMachineGuid()
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(Hostid))
|
||||||
|
{
|
||||||
|
NetworkInterface[] nis = NetworkInterface.GetAllNetworkInterfaces();
|
||||||
|
foreach (NetworkInterface ni in nis)
|
||||||
|
{
|
||||||
|
if (ni.NetworkInterfaceType == NetworkInterfaceType.Wireless80211 ||
|
||||||
|
ni.NetworkInterfaceType == NetworkInterfaceType.Ethernet)
|
||||||
|
{
|
||||||
|
Hostid = ni.GetPhysicalAddress().ToString();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Hostid;
|
||||||
|
}
|
||||||
|
|
||||||
|
string GetPhysicalAddress()
|
||||||
|
{
|
||||||
|
//string physicalAddress = "";
|
||||||
|
//NetworkInterface[] nis = NetworkInterface.GetAllNetworkInterfaces();
|
||||||
|
//foreach (NetworkInterface ni in nis)
|
||||||
|
//{
|
||||||
|
// if (ni.NetworkInterfaceType == NetworkInterfaceType.Ethernet && ni.OperationalStatus == OperationalStatus.Up)
|
||||||
|
// {
|
||||||
|
// physicalAddress = ni.GetPhysicalAddress().ToString();
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
return SystemInfo.deviceUniqueIdentifier;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 本地存储Hostid
|
||||||
|
/// </summary>
|
||||||
|
public void EncryptedFile()
|
||||||
|
{
|
||||||
|
string dataToEncrypt = Datas.UserName + "|" + Datas.Licensecode + "|";
|
||||||
|
EncryptFileCreator.EncryptAndSaveData(dataToEncrypt, "encryptedData.txt");
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 读取Hostid
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
public string ReadDecryptedFile()
|
||||||
|
{
|
||||||
|
string decryptedData = DecryptFileReader.ReadAndDecryptData("encryptedData.txt");
|
||||||
|
return decryptedData;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 13a2f840c2d90a44b8473ca7cf9adef1
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -83,28 +83,28 @@ namespace QFramework.Example
|
|||||||
Far.gameObject.SetActive(mData.normalPos != default);
|
Far.gameObject.SetActive(mData.normalPos != default);
|
||||||
|
|
||||||
|
|
||||||
#if VR
|
//#if VR
|
||||||
Transform trans = UIRoot.Instance.transform.Find("ZFrame");
|
// Transform trans = UIRoot.Instance.transform.Find("ZFrame");
|
||||||
if (mData.vrPos != default)
|
// if (mData.vrPos != default)
|
||||||
{
|
// {
|
||||||
mData.nearPos = mData.vrPos;
|
// mData.nearPos = mData.vrPos;
|
||||||
mData.nearRot = mData.vrRot;
|
// mData.nearRot = mData.vrRot;
|
||||||
mData.nearTime = mData.vrTime;
|
// mData.nearTime = mData.vrTime;
|
||||||
mData.isOn = "near";
|
// mData.isOn = "near";
|
||||||
}
|
// }
|
||||||
else
|
// else
|
||||||
{
|
// {
|
||||||
|
|
||||||
if (mData.nearPos != default)
|
// if (mData.nearPos != default)
|
||||||
{
|
// {
|
||||||
mData.isOn = "near";
|
// mData.isOn = "near";
|
||||||
}
|
// }
|
||||||
else if (mData.normalPos != default)
|
// else if (mData.normalPos != default)
|
||||||
{
|
// {
|
||||||
mData.isOn = "normal";
|
// mData.isOn = "normal";
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
#endif
|
//#endif
|
||||||
|
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(mData.isOn))
|
if (string.IsNullOrEmpty(mData.isOn))
|
||||||
@ -144,10 +144,10 @@ namespace QFramework.Example
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#if VR
|
//#if VR
|
||||||
Near.gameObject.SetActive(false);
|
// Near.gameObject.SetActive(false);
|
||||||
Far.gameObject.SetActive(false);
|
// Far.gameObject.SetActive(false);
|
||||||
#endif
|
//#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -35,7 +35,6 @@ namespace QFramework.Example
|
|||||||
{
|
{
|
||||||
Point.anchoredPosition = Utility.GetScreenPosByObj(transform as RectTransform);
|
Point.anchoredPosition = Utility.GetScreenPosByObj(transform as RectTransform);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
55
Assets/Scripts/UI/UIImageSelectMap.Designer.cs
generated
Normal file
55
Assets/Scripts/UI/UIImageSelectMap.Designer.cs
generated
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
using System;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.UI;
|
||||||
|
using QFramework;
|
||||||
|
|
||||||
|
namespace QFramework.Example
|
||||||
|
{
|
||||||
|
// Generate Id:b499f0f9-a71b-40ff-a499-a5e4defad39f
|
||||||
|
public partial class UIImageSelectMap
|
||||||
|
{
|
||||||
|
public const string Name = "UIImageSelectMap";
|
||||||
|
|
||||||
|
[SerializeField]
|
||||||
|
public RectTransform LeftContent;
|
||||||
|
[SerializeField]
|
||||||
|
public UnityEngine.UI.Image LeftItem;
|
||||||
|
[SerializeField]
|
||||||
|
public UnityEngine.UI.Image RightItem;
|
||||||
|
[SerializeField]
|
||||||
|
public RectTransform RightContent;
|
||||||
|
|
||||||
|
private UIImageSelectMapData mPrivateData = null;
|
||||||
|
|
||||||
|
protected override void ClearUIComponents()
|
||||||
|
{
|
||||||
|
LeftContent = null;
|
||||||
|
LeftItem = null;
|
||||||
|
RightItem = null;
|
||||||
|
RightContent = null;
|
||||||
|
|
||||||
|
mData = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public UIImageSelectMapData Data
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return mData;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
UIImageSelectMapData mData
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return mPrivateData ?? (mPrivateData = new UIImageSelectMapData());
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
mUIData = value;
|
||||||
|
mPrivateData = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/Scripts/UI/UIImageSelectMap.Designer.cs.meta
Normal file
11
Assets/Scripts/UI/UIImageSelectMap.Designer.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 30b3cad2e23c39b43befa7ffb3bae172
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
100
Assets/Scripts/UI/UIImageSelectMap.cs
Normal file
100
Assets/Scripts/UI/UIImageSelectMap.cs
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.UI;
|
||||||
|
using QFramework;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine.EventSystems;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace QFramework.Example
|
||||||
|
{
|
||||||
|
public class UIImageSelectMapData : UIPanelData
|
||||||
|
{
|
||||||
|
public class OptionItem
|
||||||
|
{
|
||||||
|
public string pic;
|
||||||
|
public Vector2 pos;
|
||||||
|
public Vector2 size;
|
||||||
|
}
|
||||||
|
public string scoreName;
|
||||||
|
public float totalScore;
|
||||||
|
public float rightScore;
|
||||||
|
public float wrongScore;
|
||||||
|
public string rightLabel;
|
||||||
|
public string wrongLabel;
|
||||||
|
public string finishedEvent;
|
||||||
|
public string rightBg;
|
||||||
|
public List<OptionItem> items = new List<OptionItem>();
|
||||||
|
|
||||||
|
}
|
||||||
|
public partial class UIImageSelectMap : UIPanel
|
||||||
|
{
|
||||||
|
ResLoader loader;
|
||||||
|
protected override void OnInit(IUIData uiData = null)
|
||||||
|
{
|
||||||
|
mData = uiData as UIImageSelectMapData ?? new UIImageSelectMapData();
|
||||||
|
// please add init code here
|
||||||
|
loader = ResLoader.Allocate();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnOpen(IUIData uiData = null)
|
||||||
|
{
|
||||||
|
mData = uiData as UIImageSelectMapData ?? new UIImageSelectMapData();
|
||||||
|
|
||||||
|
LeftContent.RemoveAllChildren();
|
||||||
|
RightContent.RemoveAllChildren();
|
||||||
|
foreach (var item in mData.items)
|
||||||
|
{
|
||||||
|
var leftObj = GameObject.Instantiate(LeftItem, LeftContent);
|
||||||
|
var path = Global.imagePath + item.pic;
|
||||||
|
loader.Add2Load(path.ToNetImageResName(), (success, res) =>
|
||||||
|
{
|
||||||
|
if (success)
|
||||||
|
{
|
||||||
|
leftObj.GetComponent<Image>().sprite = Utility.GetSprite(res.Asset as Texture2D);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
leftObj.OnDragEvent(leftOnDrag);
|
||||||
|
|
||||||
|
|
||||||
|
var rightObj = GameObject.Instantiate(RightItem, RightContent);
|
||||||
|
rightObj.transform.localPosition = item.pos;
|
||||||
|
rightObj.rectTransform.sizeDelta = item.size;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
var rightBgPath = Global.imagePath + mData.rightBg;
|
||||||
|
loader.Add2Load(rightBgPath.ToNetImageResName(), (success, res) =>
|
||||||
|
{
|
||||||
|
if (success)
|
||||||
|
{
|
||||||
|
RightContent.GetComponent<Image>().sprite = Utility.GetSprite(res.Asset as Texture2D);
|
||||||
|
RightContent.GetComponent<Image>().SetNativeSize();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
loader.LoadAsync();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void leftOnDrag(PointerEventData data)
|
||||||
|
{
|
||||||
|
data.selectedObject.transform.position = Input.mousePosition;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnShow()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnHide()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnClose()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/Scripts/UI/UIImageSelectMap.cs.meta
Normal file
11
Assets/Scripts/UI/UIImageSelectMap.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8fa5d149f86eeb54d89208e36562e2d8
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -14,15 +14,13 @@ namespace QFramework.Example
|
|||||||
mData = uiData as UIModeSelectData ?? new UIModeSelectData();
|
mData = uiData as UIModeSelectData ?? new UIModeSelectData();
|
||||||
TechBtn.onClick.AddListener(() =>
|
TechBtn.onClick.AddListener(() =>
|
||||||
{
|
{
|
||||||
Hide();
|
|
||||||
Global.appTpe = Global.AppType.Study;
|
Global.appTpe = Global.AppType.Study;
|
||||||
UIKit.OpenPanelAsync<UIModuleSelect>().ToAction().StartGlobal();
|
UIKit.OpenPanelAsync<UIModuleSelect>().ToAction().StartGlobal(Hide);
|
||||||
});
|
});
|
||||||
ExamBtn.onClick.AddListener(() =>
|
ExamBtn.onClick.AddListener(() =>
|
||||||
{
|
{
|
||||||
Hide();
|
|
||||||
Global.appTpe = Global.AppType.Exam;
|
Global.appTpe = Global.AppType.Exam;
|
||||||
UIKit.OpenPanelAsync<UIModuleSelect>().ToAction().StartGlobal();
|
UIKit.OpenPanelAsync<UIModuleSelect>().ToAction().StartGlobal(Hide);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -2,6 +2,7 @@ using UnityEngine;
|
|||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
using QFramework;
|
using QFramework;
|
||||||
using System.Data.Common;
|
using System.Data.Common;
|
||||||
|
using UnityEngine.SceneManagement;
|
||||||
|
|
||||||
namespace QFramework.Example
|
namespace QFramework.Example
|
||||||
{
|
{
|
||||||
@ -46,7 +47,7 @@ namespace QFramework.Example
|
|||||||
|
|
||||||
UITipWindowData data = new UITipWindowData();
|
UITipWindowData data = new UITipWindowData();
|
||||||
data.txt = "是否关闭软件?";
|
data.txt = "是否关闭软件?";
|
||||||
data.btns.Add(new UITipWindowData.ItemData() { txt = "ÊÇ", OnClick = () => Application.Quit() });
|
data.btns.Add(new UITipWindowData.ItemData() { txt = "ÊÇ", OnClick = () => { Application.Quit(); } });
|
||||||
data.btns.Add(new UITipWindowData.ItemData() { txt = "否" });
|
data.btns.Add(new UITipWindowData.ItemData() { txt = "否" });
|
||||||
UIKit.OpenPanelAsync<UITipWindow>(uiData: data, canvasLevel: UILevel.PopUI).ToAction().StartGlobal();
|
UIKit.OpenPanelAsync<UITipWindow>(uiData: data, canvasLevel: UILevel.PopUI).ToAction().StartGlobal();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,9 @@
|
|||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using TMPro;
|
using TMPro;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
using static LYTWebGLHelper;
|
||||||
|
|
||||||
namespace QFramework.Example
|
namespace QFramework.Example
|
||||||
{
|
{
|
||||||
@ -30,7 +33,7 @@ namespace QFramework.Example
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
#if UNITY_WEBGL
|
#if UNITY_WEBGL&&!UNITY_EDITOR
|
||||||
ResLoader loader = ResLoader.Allocate();
|
ResLoader loader = ResLoader.Allocate();
|
||||||
loader.Add2Load(Global.reportDemoPath.ToLocalBytesResName(), (success, res) =>
|
loader.Add2Load(Global.reportDemoPath.ToLocalBytesResName(), (success, res) =>
|
||||||
{
|
{
|
||||||
@ -42,7 +45,7 @@ namespace QFramework.Example
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
loader.LoadAsync();
|
loader.LoadAsync();
|
||||||
#elif UNITY_STANDALONE_WIN
|
#elif UNITY_STANDALONE_WIN||UNITY_EDITOR
|
||||||
DownLoad.interactable = false;
|
DownLoad.interactable = false;
|
||||||
AsposeHelper.Writer(GetScoreDataJson(), () =>
|
AsposeHelper.Writer(GetScoreDataJson(), () =>
|
||||||
{
|
{
|
||||||
@ -57,11 +60,7 @@ namespace QFramework.Example
|
|||||||
|
|
||||||
public string GetScoreDataJson()
|
public string GetScoreDataJson()
|
||||||
{
|
{
|
||||||
var data = new LabReprotData();
|
return ScoreController.Instance.GetModuleDictJson(InputName.text, InputId.text, this.Score.text);
|
||||||
data.realname = InputName.text;
|
|
||||||
data.biaobencaiji_1_buzhou_1 = "[1111]";
|
|
||||||
string json = JsonConvert.SerializeObject(data);
|
|
||||||
return json;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -88,6 +87,8 @@ namespace QFramework.Example
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
List<Expstepvtwolist> datas = new List<Expstepvtwolist>();
|
||||||
|
int seq = 1;
|
||||||
if (onlyCur)
|
if (onlyCur)
|
||||||
{
|
{
|
||||||
foreach (var item in ScoreController.Instance.GetCurScoreData())
|
foreach (var item in ScoreController.Instance.GetCurScoreData())
|
||||||
@ -99,6 +100,17 @@ namespace QFramework.Example
|
|||||||
obj.transform.Find("Score").GetComponent<TextMeshProUGUI>().text = item.Value.value.ToString();
|
obj.transform.Find("Score").GetComponent<TextMeshProUGUI>().text = item.Value.value.ToString();
|
||||||
sum += float.Parse(item.Value.sum);
|
sum += float.Parse(item.Value.sum);
|
||||||
score += item.Value.value;
|
score += item.Value.value;
|
||||||
|
datas.Add(new Expstepvtwolist()
|
||||||
|
{
|
||||||
|
ExpStepName = item.Value.step + item.Value.name,
|
||||||
|
maxScore = int.Parse(item.Value.sum),
|
||||||
|
score = (int)item.Value.value,
|
||||||
|
startTime = item.Value.time,
|
||||||
|
endTime = item.Value.time,
|
||||||
|
seq = seq,
|
||||||
|
StepState = (int)item.Value.value == float.Parse(item.Value.sum) ? "È«²¿ÕýÈ·" : "ÓдíÎó"
|
||||||
|
});
|
||||||
|
seq++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -114,6 +126,16 @@ namespace QFramework.Example
|
|||||||
obj.transform.Find("Score").GetComponent<TextMeshProUGUI>().text = item.Value.value.ToString();
|
obj.transform.Find("Score").GetComponent<TextMeshProUGUI>().text = item.Value.value.ToString();
|
||||||
sum += float.Parse(item.Value.sum);
|
sum += float.Parse(item.Value.sum);
|
||||||
score += item.Value.value;
|
score += item.Value.value;
|
||||||
|
datas.Add(new Expstepvtwolist()
|
||||||
|
{
|
||||||
|
ExpStepName = item.Value.step + item.Value.name,
|
||||||
|
maxScore = int.Parse(item.Value.sum),
|
||||||
|
score = (int)item.Value.value,
|
||||||
|
startTime = item.Value.time,
|
||||||
|
endTime = item.Value.time,
|
||||||
|
seq = seq
|
||||||
|
});
|
||||||
|
seq++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -122,6 +144,10 @@ namespace QFramework.Example
|
|||||||
this.Score.text = score.ToString();
|
this.Score.text = score.ToString();
|
||||||
this.Sum.text = sum.ToString();
|
this.Sum.text = sum.ToString();
|
||||||
|
|
||||||
|
#if UNITY_WEBGL
|
||||||
|
|
||||||
|
LYTWebGLHelper.Instance.UpLoadData((int)score, datas.ToArray());
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnShow()
|
protected override void OnShow()
|
||||||
|
|||||||
@ -45,8 +45,9 @@ namespace QFramework.Example
|
|||||||
TypeEventSystem.Global.Register<OnModuleQuit>((arg) => Hide()).UnRegisterWhenGameObjectDestroyed(gameObject);
|
TypeEventSystem.Global.Register<OnModuleQuit>((arg) => Hide()).UnRegisterWhenGameObjectDestroyed(gameObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Update()
|
public override void Update()
|
||||||
{
|
{
|
||||||
|
base.Update();
|
||||||
if (isRun)
|
if (isRun)
|
||||||
{
|
{
|
||||||
object[] objects = new object[mData.values.Count];
|
object[] objects = new object[mData.values.Count];
|
||||||
@ -85,8 +86,15 @@ namespace QFramework.Example
|
|||||||
imgTwen = DOTween.To(() => index, v =>
|
imgTwen = DOTween.To(() => index, v =>
|
||||||
{
|
{
|
||||||
index = v;
|
index = v;
|
||||||
|
if (index>=0&&index < sprites.Count)
|
||||||
|
{
|
||||||
Img.sprite = sprites[index];
|
Img.sprite = sprites[index];
|
||||||
Img.SetNativeSize();
|
Img.SetNativeSize();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Debug.Log("UITimeTipChao suo Yin");
|
||||||
|
}
|
||||||
|
|
||||||
}, endIndex, mData.time);
|
}, endIndex, mData.time);
|
||||||
|
|
||||||
|
|||||||
@ -135,11 +135,18 @@ namespace QFramework.Example
|
|||||||
VideoContent.rectTransform.sizeDelta = mData.size;
|
VideoContent.rectTransform.sizeDelta = mData.size;
|
||||||
}
|
}
|
||||||
VideoContent.transform.localPosition = mData.offset;
|
VideoContent.transform.localPosition = mData.offset;
|
||||||
|
string path = Global.videoPath + mData.url;
|
||||||
player.url = Global.videoPath + mData.url;
|
if (string.IsNullOrEmpty(path) == false)
|
||||||
|
{
|
||||||
|
player.url = path;
|
||||||
player.Play();
|
player.Play();
|
||||||
SetImg();
|
SetImg();
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Debug.LogError("没有找到视频:" + path);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void VideoPlayer_loopPointReached(UnityEngine.Video.VideoPlayer source)
|
private void VideoPlayer_loopPointReached(UnityEngine.Video.VideoPlayer source)
|
||||||
{
|
{
|
||||||
|
|||||||
8
Assets/Scripts/UILongPicture.meta
Normal file
8
Assets/Scripts/UILongPicture.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 762d12b9d2c220c46afe6eb3eda2e85c
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
67
Assets/Scripts/UILongPicture/UIKnowledge.Designer.cs
generated
Normal file
67
Assets/Scripts/UILongPicture/UIKnowledge.Designer.cs
generated
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
using System;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.UI;
|
||||||
|
using QFramework;
|
||||||
|
|
||||||
|
namespace QFramework.Example
|
||||||
|
{
|
||||||
|
// Generate Id:d21887cc-bea5-4c87-8eae-a1d693d6555a
|
||||||
|
public partial class UIKnowledge
|
||||||
|
{
|
||||||
|
public const string Name = "UIKnowledge";
|
||||||
|
|
||||||
|
[SerializeField]
|
||||||
|
public UnityEngine.UI.Button CloseBtn;
|
||||||
|
[SerializeField]
|
||||||
|
public RectTransform LeftContent;
|
||||||
|
[SerializeField]
|
||||||
|
public UnityEngine.UI.ScrollRect Right;
|
||||||
|
[SerializeField]
|
||||||
|
public UnityEngine.UI.Image RightContent;
|
||||||
|
[SerializeField]
|
||||||
|
public RectTransform GlobalComs;
|
||||||
|
[SerializeField]
|
||||||
|
public RectTransform ItemComs;
|
||||||
|
[SerializeField]
|
||||||
|
public RectTransform LeftItem;
|
||||||
|
[SerializeField]
|
||||||
|
public UnityEngine.UI.Button BtnPrefab;
|
||||||
|
|
||||||
|
private UIKnowledgeData mPrivateData = null;
|
||||||
|
|
||||||
|
protected override void ClearUIComponents()
|
||||||
|
{
|
||||||
|
CloseBtn = null;
|
||||||
|
LeftContent = null;
|
||||||
|
Right = null;
|
||||||
|
RightContent = null;
|
||||||
|
GlobalComs = null;
|
||||||
|
ItemComs = null;
|
||||||
|
LeftItem = null;
|
||||||
|
BtnPrefab = null;
|
||||||
|
|
||||||
|
mData = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public UIKnowledgeData Data
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return mData;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
UIKnowledgeData mData
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return mPrivateData ?? (mPrivateData = new UIKnowledgeData());
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
mUIData = value;
|
||||||
|
mPrivateData = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/Scripts/UILongPicture/UIKnowledge.Designer.cs.meta
Normal file
11
Assets/Scripts/UILongPicture/UIKnowledge.Designer.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 9a5d5c0eba3097b48b9c67e7e229ccee
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
198
Assets/Scripts/UILongPicture/UIKnowledge.cs
Normal file
198
Assets/Scripts/UILongPicture/UIKnowledge.cs
Normal file
@ -0,0 +1,198 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.UI;
|
||||||
|
using QFramework;
|
||||||
|
using TMPro;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace QFramework.Example
|
||||||
|
{
|
||||||
|
public class UIKnowledgeData : UIPanelData
|
||||||
|
{
|
||||||
|
public XMLTool.Knowledge knowledge;
|
||||||
|
}
|
||||||
|
public partial class UIKnowledge : UIPanel
|
||||||
|
{
|
||||||
|
ResLoader loader;
|
||||||
|
|
||||||
|
Dictionary<string, Sprite> sprites = new Dictionary<string, Sprite>();
|
||||||
|
IAction curAction;
|
||||||
|
|
||||||
|
protected override void OnInit(IUIData uiData = null)
|
||||||
|
{
|
||||||
|
mData = uiData as UIKnowledgeData ?? new UIKnowledgeData();
|
||||||
|
// please add init code here
|
||||||
|
loader = ResLoader.Allocate();
|
||||||
|
CloseBtn.onClick.AddListener(() =>
|
||||||
|
{
|
||||||
|
Hide();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnOpen(IUIData uiData = null)
|
||||||
|
{
|
||||||
|
if (Global.Instance.curModule.knowledge != null && Global.Instance.curModule.knowledge.items != null)
|
||||||
|
{
|
||||||
|
LeftContent.RemoveAllChildren();
|
||||||
|
string bg = Global.Instance.curModule.knowledge.bgImage;
|
||||||
|
LoadBgImage(bg, () =>
|
||||||
|
{
|
||||||
|
SetRightContentPos("");
|
||||||
|
RefreshComponents(Global.Instance.curModule.knowledge.components, GlobalComs);
|
||||||
|
});
|
||||||
|
foreach (var item in Global.Instance.curModule.knowledge.items)
|
||||||
|
{
|
||||||
|
ItemFactory(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ItemFactory(XMLTool.Knowledge.Item itemData, Transform parent = null)
|
||||||
|
{
|
||||||
|
Transform content = parent == null ? LeftContent : parent;
|
||||||
|
GameObject leftObj = GameObject.Instantiate(LeftItem.gameObject, content);
|
||||||
|
Transform subContent = leftObj.transform.Find("SubContent");
|
||||||
|
Toggle toggle = leftObj.transform.Find("Toggle").GetComponent<Toggle>();
|
||||||
|
TextMeshProUGUI label = toggle.transform.Find("Name").GetComponent<TextMeshProUGUI>();
|
||||||
|
label.text = itemData.title;
|
||||||
|
|
||||||
|
toggle.onValueChanged.AddListener(isOn =>
|
||||||
|
{
|
||||||
|
if (isOn)
|
||||||
|
{
|
||||||
|
LoadBgImage(itemData.bgImage, () =>
|
||||||
|
{
|
||||||
|
SetRightContentPos(itemData.setPos);
|
||||||
|
});
|
||||||
|
ItemComs.RemoveAllChildren();
|
||||||
|
RefreshComponents(itemData.components, ItemComs);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (subContent.childCount > 0)
|
||||||
|
{
|
||||||
|
subContent.gameObject.SetActive(isOn);
|
||||||
|
if (isOn)
|
||||||
|
{
|
||||||
|
subContent.GetChild(0).GetComponentInChildren<Toggle>().isOn = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
label.color = isOn == true ? Color.blue : Color.black;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (itemData.subs != null && itemData.subs.Count > 0)
|
||||||
|
{
|
||||||
|
foreach (var sub in itemData.subs)
|
||||||
|
{
|
||||||
|
ItemFactory(sub, subContent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
toggle.group = LeftContent.GetComponent<ToggleGroup>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// ˢе±Ç°Ò³ÃæµÄ¹Ò¼þ
|
||||||
|
/// </summary>
|
||||||
|
public void RefreshComponents(List<XMLTool.Knowledge.Item.Component> coms, Transform content)
|
||||||
|
{
|
||||||
|
if (coms != null && coms.Count > 0)
|
||||||
|
{
|
||||||
|
foreach (var ComData in coms)
|
||||||
|
{
|
||||||
|
switch (ComData.type)
|
||||||
|
{
|
||||||
|
case "Button":
|
||||||
|
GameObject btn = GameObject.Instantiate(BtnPrefab.gameObject, content);
|
||||||
|
btn.GetComponent<RectTransform>().sizeDelta = Utility.GetVector2FromStrArray(ComData.size);
|
||||||
|
btn.transform.localPosition = Utility.GetVector2FromStrArray(ComData.pos);
|
||||||
|
btn.GetComponent<Button>().onClick.AddListener(() =>
|
||||||
|
{
|
||||||
|
if (curAction != null)
|
||||||
|
{
|
||||||
|
curAction.Deinit();
|
||||||
|
curAction = null;
|
||||||
|
}
|
||||||
|
curAction = ActionHelper.GetActionAndSub(ComData.action);
|
||||||
|
curAction.StartGlobal(() =>
|
||||||
|
{
|
||||||
|
curAction = null;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void LoadBgImage(string bg, Action callback = null)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(bg) == false)
|
||||||
|
{
|
||||||
|
if (sprites.ContainsKey(bg))
|
||||||
|
{
|
||||||
|
RightContent.sprite = sprites[bg];
|
||||||
|
RightContent.SetNativeSize();
|
||||||
|
callback?.Invoke();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var localImageUrl = Global.imagePath + bg;
|
||||||
|
loader.Add2Load(localImageUrl.ToNetImageResName(), (success, res) =>
|
||||||
|
{
|
||||||
|
if (success)
|
||||||
|
{
|
||||||
|
Sprite sprite = Utility.GetSprite(res.Asset.As<Texture2D>());
|
||||||
|
if (sprites.ContainsKey(bg) == false)
|
||||||
|
{
|
||||||
|
sprites.Add(bg, sprite);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
TypeEventSystem.Global.Send<OnLoadingShow>();
|
||||||
|
loader.LoadAsync(() =>
|
||||||
|
{
|
||||||
|
callback?.Invoke();
|
||||||
|
RightContent.sprite = sprites[bg];
|
||||||
|
RightContent.SetNativeSize();
|
||||||
|
TypeEventSystem.Global.Send<OnLoadingHide>();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
callback?.Invoke();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
public void SetRightContentPos(string setPos)
|
||||||
|
{
|
||||||
|
Vector2 pos = default;
|
||||||
|
if (string.IsNullOrEmpty(setPos) == false)
|
||||||
|
{
|
||||||
|
pos = Utility.GetVector2FromStrArray(setPos);
|
||||||
|
}
|
||||||
|
RightContent.rectTransform.anchoredPosition = pos;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
protected override void OnShow()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnHide()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnClose()
|
||||||
|
{
|
||||||
|
sprites.Clear();
|
||||||
|
loader.ReleaseAllRes();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/Scripts/UILongPicture/UIKnowledge.cs.meta
Normal file
11
Assets/Scripts/UILongPicture/UIKnowledge.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: fd25ee86b2071da4aa68360bc13232e8
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/Scripts/VR.meta
Normal file
8
Assets/Scripts/VR.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: a7c1e718f16cc7e41a8325205bafa695
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
111
Assets/Scripts/VR/StylusVibration.cs
Normal file
111
Assets/Scripts/VR/StylusVibration.cs
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Copyright (C) 2007-2020 , Inc. All Rights Reserved.
|
||||||
|
//
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.EventSystems;
|
||||||
|
|
||||||
|
using GCSeries.Core.Sdk;
|
||||||
|
using GCSeries.Core;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 未来立体 笔震动脚本
|
||||||
|
/// </summary>
|
||||||
|
public class StylusVibration : MonoBehaviour,
|
||||||
|
IPointerEnterHandler, IPointerExitHandler
|
||||||
|
{
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
// Inspector Fields
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
public VibrationTypeEnum VibrationType;
|
||||||
|
public float VibrationIntensity;
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
// Enumerators
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
public enum VibrationTypeEnum
|
||||||
|
{
|
||||||
|
Constant,
|
||||||
|
FastPulse,
|
||||||
|
MediumPulse,
|
||||||
|
SlowPulse
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
// MonoBehaviour Callbacks
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
private void Start()
|
||||||
|
{
|
||||||
|
if (ZProvider.IsInitialized)
|
||||||
|
{
|
||||||
|
this._stylusTarget = ZProvider.StylusTarget;
|
||||||
|
this._stylusTarget.IsVibrationEnabled = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Debug.LogWarning("ZProvider can not initialize.\n Stylus" +
|
||||||
|
"vibration and LED light feedback will not be experienced.");
|
||||||
|
|
||||||
|
Destroy(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
// Public Methods
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
public void OnPointerEnter(PointerEventData eventData)
|
||||||
|
{
|
||||||
|
this.Vibrate();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnPointerExit(PointerEventData eventData)
|
||||||
|
{
|
||||||
|
this._stylusTarget.StopVibration();
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
// Private Methods
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
private void Vibrate()
|
||||||
|
{
|
||||||
|
switch (this.VibrationType)
|
||||||
|
{
|
||||||
|
case VibrationTypeEnum.Constant:
|
||||||
|
this._stylusTarget.StartVibration(
|
||||||
|
1.0f, 0.0f, 100, this.VibrationIntensity);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case VibrationTypeEnum.FastPulse:
|
||||||
|
this._stylusTarget.StartVibration(
|
||||||
|
0.1f, 0.1f, 100, this.VibrationIntensity);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case VibrationTypeEnum.MediumPulse:
|
||||||
|
this._stylusTarget.StartVibration(
|
||||||
|
0.3f, 0.3f, 100, this.VibrationIntensity);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case VibrationTypeEnum.SlowPulse:
|
||||||
|
this._stylusTarget.StartVibration(
|
||||||
|
0.6f, 0.6f, 100, this.VibrationIntensity);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
// Private Members
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
private ZTarget _stylusTarget;
|
||||||
|
}
|
||||||
|
|
||||||
11
Assets/Scripts/VR/StylusVibration.cs.meta
Normal file
11
Assets/Scripts/VR/StylusVibration.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 096518624f225c648a0cf58d85666b9c
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -1,7 +1,12 @@
|
|||||||
|
using QFramework;
|
||||||
using QFramework.Example;
|
using QFramework.Example;
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Xml;
|
||||||
using System.Xml.Linq;
|
using System.Xml.Linq;
|
||||||
|
using System.Xml.Serialization;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using static XMLTool.Body3D;
|
using static XMLTool.Body3D;
|
||||||
namespace XMLTool
|
namespace XMLTool
|
||||||
@ -38,6 +43,8 @@ namespace XMLTool
|
|||||||
public Score score;
|
public Score score;
|
||||||
|
|
||||||
public Body3D body3d;
|
public Body3D body3d;
|
||||||
|
|
||||||
|
public Knowledge knowledge;
|
||||||
}
|
}
|
||||||
|
|
||||||
public class Device
|
public class Device
|
||||||
@ -67,6 +74,8 @@ namespace XMLTool
|
|||||||
public string sum;
|
public string sum;
|
||||||
public string bind;
|
public string bind;
|
||||||
public float value;
|
public float value;
|
||||||
|
public string time;
|
||||||
|
public string timeFormat = "yyyy-MM-dd HH:mm:ss";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -207,6 +216,32 @@ namespace XMLTool
|
|||||||
public string isOff;
|
public string isOff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class Knowledge
|
||||||
|
{
|
||||||
|
public class Item
|
||||||
|
{
|
||||||
|
public class Component
|
||||||
|
{
|
||||||
|
public string type;
|
||||||
|
public string size;
|
||||||
|
public string pos;
|
||||||
|
public Action action;
|
||||||
|
}
|
||||||
|
public string title;
|
||||||
|
public string bgImage;
|
||||||
|
public string setPos;
|
||||||
|
public List<Item> subs;
|
||||||
|
public List<Component> components;
|
||||||
|
}
|
||||||
|
public string bgImage;
|
||||||
|
public List<Item> items;
|
||||||
|
public List<Item.Component> components;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public class XmlParser
|
public class XmlParser
|
||||||
{
|
{
|
||||||
public static AppData ParseXml(string xmlString)
|
public static AppData ParseXml(string xmlString)
|
||||||
@ -382,6 +417,7 @@ namespace XMLTool
|
|||||||
module.body3d.parts.Add(part.Name, part);
|
module.body3d.parts.Add(part.Name, part);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// 解析评分
|
||||||
XElement scoreNode = moduleElement.Element("Score");
|
XElement scoreNode = moduleElement.Element("Score");
|
||||||
if (scoreNode != null)
|
if (scoreNode != null)
|
||||||
{
|
{
|
||||||
@ -398,11 +434,70 @@ namespace XMLTool
|
|||||||
name = item.Attribute("name")?.Value,
|
name = item.Attribute("name")?.Value,
|
||||||
sum = item.Attribute("sum")?.Value,
|
sum = item.Attribute("sum")?.Value,
|
||||||
bind = item.Attribute("bind")?.Value,
|
bind = item.Attribute("bind")?.Value,
|
||||||
|
timeFormat = item.Attribute("timeFormat")?.Value,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// 解析知识点
|
||||||
|
var knowledge = moduleElement.Element("Knowledge");
|
||||||
|
if (knowledge != null)
|
||||||
|
{
|
||||||
|
module.knowledge = new Knowledge();
|
||||||
|
module.knowledge.bgImage = knowledge.Attribute("bgImage")?.Value;
|
||||||
|
foreach (var itemXml in knowledge.Elements("Item"))
|
||||||
|
{
|
||||||
|
Knowledge.Item item = ParserKnowledgeItem(itemXml);
|
||||||
|
if (module.knowledge.items == null)
|
||||||
|
{
|
||||||
|
module.knowledge.items = new List<Knowledge.Item>();
|
||||||
|
}
|
||||||
|
module.knowledge.items.Add(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
module.knowledge.components = ParserKnowledgeComponet(knowledge);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Knowledge.Item ParserKnowledgeItem(XElement itemXml)
|
||||||
|
{
|
||||||
|
Knowledge.Item item = new Knowledge.Item();
|
||||||
|
item.title = itemXml.Attribute("title")?.Value;
|
||||||
|
item.bgImage = itemXml.Attribute("bgImage")?.Value;
|
||||||
|
item.setPos = itemXml.Attribute("setPos")?.Value;
|
||||||
|
item.components = ParserKnowledgeComponet(itemXml);
|
||||||
|
foreach (var subXml in itemXml.Elements("Item"))
|
||||||
|
{
|
||||||
|
if (item.subs == null)
|
||||||
|
{
|
||||||
|
item.subs = new List<Knowledge.Item>();
|
||||||
|
}
|
||||||
|
// 增加子物体
|
||||||
|
item.subs.Add(ParserKnowledgeItem(subXml));
|
||||||
|
}
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static List<Knowledge.Item.Component> ParserKnowledgeComponet(XElement xmlData)
|
||||||
|
{
|
||||||
|
List<Knowledge.Item.Component> list = null;
|
||||||
|
foreach (var componentXml in xmlData.Elements("Component"))
|
||||||
|
{
|
||||||
|
if (list == null)
|
||||||
|
{
|
||||||
|
list = new List<Knowledge.Item.Component>();
|
||||||
|
}
|
||||||
|
Knowledge.Item.Component component = new Knowledge.Item.Component();
|
||||||
|
component.type = componentXml.Attribute("type")?.Value;
|
||||||
|
component.pos = componentXml.Attribute("pos")?.Value;
|
||||||
|
component.size = componentXml.Attribute("size")?.Value;
|
||||||
|
component.action = ParseAction(componentXml.Element("Action"));
|
||||||
|
list.Add(component);
|
||||||
|
}
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private static Body3D.Body ParseBody(XElement bodyElement, Body parent = null)
|
private static Body3D.Body ParseBody(XElement bodyElement, Body parent = null)
|
||||||
{
|
{
|
||||||
Body3D.Body body = new Body3D.Body
|
Body3D.Body body = new Body3D.Body
|
||||||
@ -1575,6 +1670,61 @@ namespace XMLTool
|
|||||||
newAction = act;
|
newAction = act;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case "ImageSelectMap":
|
||||||
|
{
|
||||||
|
var act = new ImageSelectMapAction();
|
||||||
|
XAttribute scoreName = action.Attribute("scoreName");
|
||||||
|
if (scoreName != null)
|
||||||
|
{
|
||||||
|
act.args.Add("scoreName", scoreName.Value);
|
||||||
|
}
|
||||||
|
XAttribute totalScore = action.Attribute("totalScore");
|
||||||
|
if (totalScore != null)
|
||||||
|
{
|
||||||
|
act.args.Add("totalScore", totalScore.Value);
|
||||||
|
}
|
||||||
|
XAttribute rightScore = action.Attribute("rightScore");
|
||||||
|
if (rightScore != null)
|
||||||
|
{
|
||||||
|
act.args.Add("rightScore", rightScore.Value);
|
||||||
|
}
|
||||||
|
XAttribute wrongScore = action.Attribute("wrongScore");
|
||||||
|
if (wrongScore != null)
|
||||||
|
{
|
||||||
|
act.args.Add("wrongScore", wrongScore.Value);
|
||||||
|
}
|
||||||
|
XAttribute rightLabel = action.Attribute("rightLabel");
|
||||||
|
if (rightLabel != null)
|
||||||
|
{
|
||||||
|
act.args.Add("rightLabel", rightLabel.Value);
|
||||||
|
}
|
||||||
|
XAttribute wrongLabel = action.Attribute("wrongLabel");
|
||||||
|
if (wrongLabel != null)
|
||||||
|
{
|
||||||
|
act.args.Add("wrongLabel", wrongLabel.Value);
|
||||||
|
}
|
||||||
|
XAttribute finishedEvent = action.Attribute("finishedEvent");
|
||||||
|
if (finishedEvent != null)
|
||||||
|
{
|
||||||
|
act.args.Add("finishedEvent", finishedEvent.Value);
|
||||||
|
}
|
||||||
|
XAttribute rightBg = action.Attribute("rightBg");
|
||||||
|
if (rightBg != null)
|
||||||
|
{
|
||||||
|
act.args.Add("rightBg", rightBg.Value);
|
||||||
|
}
|
||||||
|
foreach (var itemData in action.Elements("Item"))
|
||||||
|
{
|
||||||
|
act.items.Add(new ImageSelectMapAction.Item()
|
||||||
|
{
|
||||||
|
pic = itemData.Attribute("pic")?.Value,
|
||||||
|
size = itemData.Attribute("rightSize")?.Value,
|
||||||
|
pos = itemData.Attribute("rightPos")?.Value
|
||||||
|
});
|
||||||
|
}
|
||||||
|
newAction = act;
|
||||||
|
}
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
newAction = new Action();
|
newAction = new Action();
|
||||||
break;
|
break;
|
||||||
|
|||||||
1
Assets/StreamingAssets/Timer.txt
Normal file
1
Assets/StreamingAssets/Timer.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
ILBJ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>05<EFBFBD>
<0A><>l<EFBFBD><6C>F<03>)<29>#<1E><>BȲ<42><17>Uv<55>}]<5D>u.<2E><>\G<>
|
||||||
7
Assets/StreamingAssets/Timer.txt.meta
Normal file
7
Assets/StreamingAssets/Timer.txt.meta
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 9b4029b9b6235264f8d2594721eb300a
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/WebPlatform.meta
Normal file
8
Assets/WebPlatform.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8daec37f39bdca34e922be7644ef97c1
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/WebPlatform/LaiYiTe.meta
Normal file
8
Assets/WebPlatform/LaiYiTe.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8f4e4f808ac25d946affe317d1b81545
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
220
Assets/WebPlatform/LaiYiTe/LYTWebGLHelper.cs
Normal file
220
Assets/WebPlatform/LaiYiTe/LYTWebGLHelper.cs
Normal file
@ -0,0 +1,220 @@
|
|||||||
|
using Newtonsoft.Json;
|
||||||
|
using QFramework;
|
||||||
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
using System.Security.Cryptography;
|
||||||
|
using System.Text;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.Events;
|
||||||
|
using UnityEngine.Networking;
|
||||||
|
|
||||||
|
public class LYTWebGLHelper : MonoSingleton<LYTWebGLHelper>
|
||||||
|
{
|
||||||
|
private LYTWebGLHelper() { }
|
||||||
|
public class LabData
|
||||||
|
{
|
||||||
|
public string GUID;
|
||||||
|
public string ExpID;
|
||||||
|
public string HOST = string.Empty;
|
||||||
|
public string PARA1;
|
||||||
|
public string PARA;
|
||||||
|
public string PARA2;
|
||||||
|
}
|
||||||
|
#if UNITY_WEBGL
|
||||||
|
[DllImport("__Internal")]
|
||||||
|
private static extern IntPtr GetURLParameter(string name);
|
||||||
|
#endif
|
||||||
|
string token = string.Empty;
|
||||||
|
|
||||||
|
LabData labData = new LabData();
|
||||||
|
[SerializeField]
|
||||||
|
private TextAsset RSA;
|
||||||
|
private const int RsaKeySize = 2048;
|
||||||
|
|
||||||
|
public string uploadUrl;
|
||||||
|
|
||||||
|
private void Awake()
|
||||||
|
{
|
||||||
|
Init();
|
||||||
|
}
|
||||||
|
public void Init()
|
||||||
|
{
|
||||||
|
#if UNITY_WEBGL && !UNITY_EDITOR
|
||||||
|
|
||||||
|
var paramPtr = GetURLParameter("token");
|
||||||
|
if (paramPtr != IntPtr.Zero)
|
||||||
|
{
|
||||||
|
string value = Marshal.PtrToStringUTF8(paramPtr);
|
||||||
|
//token = value.Replace("%2B", "+");
|
||||||
|
token = value.Replace(" ", "+");
|
||||||
|
Marshal.FreeHGlobal(paramPtr); // 释放分配的内存
|
||||||
|
}
|
||||||
|
Debug.LogError("获取的:" + token);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
RSA = Resources.Load<TextAsset>("LYTWebGL/RSA");
|
||||||
|
if (string.IsNullOrEmpty(token) == false)
|
||||||
|
{
|
||||||
|
string urlData = Decrypt(token);
|
||||||
|
var datas = urlData.Split("&");
|
||||||
|
labData.GUID = datas[0];
|
||||||
|
labData.ExpID = datas[1];
|
||||||
|
labData.HOST = datas[2];
|
||||||
|
labData.PARA1 = datas[3];
|
||||||
|
labData.PARA = datas[4];
|
||||||
|
labData.PARA2 = datas[5];
|
||||||
|
}
|
||||||
|
uploadUrl = Path.Combine(labData.HOST, "public/Exp/AddScore/");
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// Decrypts encrypted text given a RSA private key file path.给定路径的 RSA 私钥文件解
|
||||||
|
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="encryptedText">加密的密文</param>
|
||||||
|
/// <param name="pathToPrivateKey">用于加密的私钥路径.</param>
|
||||||
|
/// <returns>未加密数据的字符串</returns>
|
||||||
|
public string Decrypt(string encryptedText)
|
||||||
|
{
|
||||||
|
using (var rsa = new RSACryptoServiceProvider(RsaKeySize))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string privateXmlKey = RSA.text;
|
||||||
|
rsa.FromXmlString(privateXmlKey);
|
||||||
|
Debug.Log("encryptedText " + encryptedText);
|
||||||
|
var bytesEncrypted = Convert.FromBase64String(encryptedText);
|
||||||
|
string b = Encoding.UTF8.GetString(bytesEncrypted);
|
||||||
|
Debug.Log("byte " + b);
|
||||||
|
//var bytesPlainText = rsa.Decrypt(bytesEncrypted, false);
|
||||||
|
var bytesPlainText = rsa.Decrypt(bytesEncrypted, false);
|
||||||
|
Debug.Log("bytesPlainText " + bytesPlainText);
|
||||||
|
return System.Text.Encoding.UTF8.GetString(bytesPlainText);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
rsa.PersistKeyInCsp = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public void UpLoadData(int totalScore, Expstepvtwolist[] datas)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(labData.GUID))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var data = new UploadData();
|
||||||
|
data.GUID = labData.GUID;
|
||||||
|
int expId = 0;
|
||||||
|
int.TryParse(labData.ExpID, out expId);
|
||||||
|
data.ExpID = expId;
|
||||||
|
data.score = totalScore;
|
||||||
|
data.flag = true;
|
||||||
|
//var list = new List<Expstepvtwolist>();
|
||||||
|
//for (int i = 0; i < stepNames.Count; i++)
|
||||||
|
//{
|
||||||
|
// var step = new Expstepvtwolist();
|
||||||
|
// step.ExpStepName = stepNames[i];
|
||||||
|
// step.maxScore = maxScore[i];
|
||||||
|
// step.score = score[i];
|
||||||
|
// step.seq = i + 1;
|
||||||
|
// list.Add(step);
|
||||||
|
//}
|
||||||
|
data.ExpStepVTwoList = datas;
|
||||||
|
|
||||||
|
StartCoroutine(SendScore(JsonConvert.SerializeObject(data)));
|
||||||
|
}
|
||||||
|
|
||||||
|
IEnumerator SendScore(string json, UnityAction<string> action = null)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(uploadUrl))
|
||||||
|
{
|
||||||
|
Debug.LogError("上传接口地址错误:" + uploadUrl);
|
||||||
|
yield break;
|
||||||
|
}
|
||||||
|
Debug.LogError("上传的数据:" + json);
|
||||||
|
using (UnityWebRequest request = new UnityWebRequest(uploadUrl, "POST"))
|
||||||
|
{
|
||||||
|
request.SetRequestHeader("Content-Type", "application/json");
|
||||||
|
request.uploadHandler = new UploadHandlerRaw(System.Text.Encoding.UTF8.GetBytes(json));
|
||||||
|
request.downloadHandler = new DownloadHandlerBuffer();
|
||||||
|
yield return request.SendWebRequest();
|
||||||
|
// 处理响应
|
||||||
|
if (request.result == UnityWebRequest.Result.ConnectionError ||
|
||||||
|
request.result == UnityWebRequest.Result.ProtocolError)
|
||||||
|
{
|
||||||
|
Debug.LogError($"Upload failed: {request.uri}");
|
||||||
|
Debug.LogError($"Upload failed: {request.error}");
|
||||||
|
Debug.LogError($"Response Code: {request.responseCode}");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Debug.Log("Upload complete!");
|
||||||
|
Debug.Log($"Response Code: {request.responseCode}");
|
||||||
|
Debug.Log($"Server Response: {request.downloadHandler.text}");
|
||||||
|
Response response = JsonConvert.DeserializeObject<Response>(request.downloadHandler.text);
|
||||||
|
Debug.LogError(response.msg);
|
||||||
|
action?.Invoke(response.msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public class UploadData
|
||||||
|
{
|
||||||
|
public string GUID { get; set; }
|
||||||
|
// 实验 ID
|
||||||
|
public int ExpID { get; set; }
|
||||||
|
// 成绩
|
||||||
|
public int score { get; set; }
|
||||||
|
// 标志位:默认值 true
|
||||||
|
public bool flag { get; set; }
|
||||||
|
// 实验步骤列表
|
||||||
|
public Expstepvtwolist[] ExpStepVTwoList { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class Expstepvtwolist
|
||||||
|
{
|
||||||
|
// 实验步骤序号
|
||||||
|
public int seq { get; set; }
|
||||||
|
// 实验步骤名称
|
||||||
|
public string ExpStepName = "";
|
||||||
|
// 实验步骤状态
|
||||||
|
public string StepState = "";
|
||||||
|
// 实验步骤开始时间
|
||||||
|
public string startTime;
|
||||||
|
// 实验步骤结束时间
|
||||||
|
public string endTime;
|
||||||
|
// 实验步骤合理用时:单位秒
|
||||||
|
public int expectTime = 0;
|
||||||
|
// 实验步骤满分:0 ~100,百分制
|
||||||
|
public int maxScore = 100;
|
||||||
|
// 实验步骤得分:0 ~100,百分制
|
||||||
|
public int score = 0;
|
||||||
|
// 实验步骤操作次数
|
||||||
|
public int repeatCount = 1;
|
||||||
|
// 步骤评价:200 字以内
|
||||||
|
public string evaluation = "";
|
||||||
|
// 赋分模型:200 字以内
|
||||||
|
public string scoringModel = "";
|
||||||
|
// 备注
|
||||||
|
public string remarks { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class Response
|
||||||
|
{
|
||||||
|
public string msg;
|
||||||
|
public bool success;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
11
Assets/WebPlatform/LaiYiTe/LYTWebGLHelper.cs.meta
Normal file
11
Assets/WebPlatform/LaiYiTe/LYTWebGLHelper.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c1b108973e2a6cd43bf6b1943d979a23
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/WebPlatform/LaiYiTe/Resrouces.meta
Normal file
8
Assets/WebPlatform/LaiYiTe/Resrouces.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 5da36794a84f2e24aa0626b1466f6360
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/WebPlatform/Plugins.meta
Normal file
8
Assets/WebPlatform/Plugins.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 4a5ff23952c587c48ab012049e07df51
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/WebPlatform/Plugins/WebGL.meta
Normal file
8
Assets/WebPlatform/Plugins/WebGL.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 23a14a5f29ce27c4dab61a5fe698a2e9
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
17
Assets/WebPlatform/Plugins/WebGL/GetParameters.jslib
Normal file
17
Assets/WebPlatform/Plugins/WebGL/GetParameters.jslib
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
mergeInto(LibraryManager.library, {
|
||||||
|
GetURLParameter: function (name) {
|
||||||
|
const paramName = UTF8ToString(name);
|
||||||
|
const search = window.location.search.substring(1);
|
||||||
|
const params = new URLSearchParams(search);
|
||||||
|
const value = params.get(paramName);
|
||||||
|
console.log('GetURLParameter:', value);
|
||||||
|
|
||||||
|
if (value) {
|
||||||
|
var buffer = _malloc((value.length + 1) * 2);
|
||||||
|
stringToUTF8(value, buffer, (value.length + 1) * 2);
|
||||||
|
return buffer;
|
||||||
|
} else {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
32
Assets/WebPlatform/Plugins/WebGL/GetParameters.jslib.meta
Normal file
32
Assets/WebPlatform/Plugins/WebGL/GetParameters.jslib.meta
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: af1b30451ed743d4f81b3f9c8c15baeb
|
||||||
|
PluginImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
iconMap: {}
|
||||||
|
executionOrder: {}
|
||||||
|
defineConstraints: []
|
||||||
|
isPreloaded: 0
|
||||||
|
isOverridable: 0
|
||||||
|
isExplicitlyReferenced: 0
|
||||||
|
validateReferences: 1
|
||||||
|
platformData:
|
||||||
|
- first:
|
||||||
|
Any:
|
||||||
|
second:
|
||||||
|
enabled: 0
|
||||||
|
settings: {}
|
||||||
|
- first:
|
||||||
|
Editor: Editor
|
||||||
|
second:
|
||||||
|
enabled: 0
|
||||||
|
settings:
|
||||||
|
DefaultValueInitialized: true
|
||||||
|
- first:
|
||||||
|
WebGL: WebGL
|
||||||
|
second:
|
||||||
|
enabled: 1
|
||||||
|
settings: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Data/Image/Knowledge/ChangTu.png
Normal file
BIN
Data/Image/Knowledge/ChangTu.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 8.3 MiB |
@ -294,22 +294,24 @@
|
|||||||
</Device>
|
</Device>
|
||||||
|
|
||||||
|
|
||||||
|
<!--timeFormat用于控制输出到实验报告的操作时间格式
|
||||||
|
不需要年月日的时候 HH:mm:ss 即可
|
||||||
|
-->
|
||||||
<Score>
|
<Score>
|
||||||
<Item step="术前准备" name="器械准备" sum="6.5" bind=""/>
|
<Item step="术前准备" name="器械准备" sum="6.5" bind="" timeFormat="yyyy-MM-dd HH:mm:ss"/>
|
||||||
<Item step="术前准备" name="药品准备" sum="5.5" bind=""/>
|
<Item step="术前准备" name="药品准备" sum="5.5" bind="" timeFormat="yyyy-MM-dd HH:mm:ss"/>
|
||||||
<Item step="术前准备" name="耗材准备" sum="15.5" bind=""/>
|
<Item step="术前准备" name="耗材准备" sum="15.5" bind="" timeFormat="yyyy-MM-dd HH:mm:ss"/>
|
||||||
<Item step="术前准备" name="主刀人员准备" sum="10" bind=""/>
|
<Item step="术前准备" name="主刀人员准备" sum="10" bind="" timeFormat="yyyy-MM-dd HH:mm:ss"/>
|
||||||
<Item step="术前准备" name="手术动物准备" sum="10" bind=""/>
|
<Item step="术前准备" name="手术动物准备" sum="10" bind="" timeFormat="yyyy-MM-dd HH:mm:ss"/>
|
||||||
<Item step="术前准备" name="术部剃毛准备" sum="10" bind=""/>
|
<Item step="术前准备" name="术部剃毛准备" sum="10" bind="" timeFormat="yyyy-MM-dd HH:mm:ss"/>
|
||||||
<Item step="术前准备" name="术部消毒准备" sum="10" bind=""/>
|
<Item step="术前准备" name="术部消毒准备" sum="10" bind="" timeFormat="yyyy-MM-dd HH:mm:ss"/>
|
||||||
<Item step="手术过程" name="测试麻醉程度" sum="10" bind=""/>
|
<Item step="手术过程" name="测试麻醉程度" sum="10" bind="" timeFormat="yyyy-MM-dd HH:mm:ss"/>
|
||||||
<Item step="手术过程" name="术部开刀" sum="10" bind=""/>
|
<Item step="手术过程" name="术部开刀" sum="10" bind="" timeFormat="yyyy-MM-dd HH:mm:ss"/>
|
||||||
<Item step="手术过程" name="找出病变小肠" sum="10" bind=""/>
|
<Item step="手术过程" name="找出病变小肠" sum="10" bind="" timeFormat="yyyy-MM-dd HH:mm:ss"/>
|
||||||
<Item step="手术过程" name="去除病变小肠" sum="10" bind=""/>
|
<Item step="手术过程" name="去除病变小肠" sum="10" bind="" timeFormat="yyyy-MM-dd HH:mm:ss"/>
|
||||||
<Item step="手术过程" name="肠端吻合" sum="10" bind=""/>
|
<Item step="手术过程" name="肠端吻合" sum="10" bind="" timeFormat="yyyy-MM-dd HH:mm:ss"/>
|
||||||
<Item step="手术过程" name="缝合切口" sum="10" bind=""/>
|
<Item step="手术过程" name="缝合切口" sum="10" bind="" timeFormat="yyyy-MM-dd HH:mm:ss"/>
|
||||||
<Item step="手术过程" name="缝合后处理" sum="10" bind=""/>
|
<Item step="手术过程" name="缝合后处理" sum="10" bind="" timeFormat="yyyy-MM-dd HH:mm:ss"/>
|
||||||
</Score>
|
</Score>
|
||||||
|
|
||||||
|
|
||||||
@ -338,6 +340,45 @@
|
|||||||
</Step>
|
</Step>
|
||||||
</Operation>
|
</Operation>
|
||||||
|
|
||||||
|
<!--知识点
|
||||||
|
title对应左侧树状图的名字
|
||||||
|
bgImage是右侧的长图
|
||||||
|
Component是长图上挂在的组件 目前仅支持Type=Button的按钮类型
|
||||||
|
Action是动作组 点击按钮后的动作
|
||||||
|
|
||||||
|
Component标签与bgImage属性 可以在根节点Knowledge上也可以在子节点Item上
|
||||||
|
位于根节点时 是全局的 位于Item节点时是切换Item后展示的针对与Item的
|
||||||
|
-->
|
||||||
|
<Knowledge bgImage="Knowledge/ChangTu.png">
|
||||||
|
<Item title="第一步" setPos="0,0">
|
||||||
|
<Item title="第一步_第一个子步骤" bgImage="" setPos="0,100">
|
||||||
|
<Component type="Button" size="200,200" pos="200,-200">
|
||||||
|
<Action type="Log" value="第二步_第二个子步骤"></Action>
|
||||||
|
</Component>
|
||||||
|
<Component type="Button" size="200,200" pos="400,-200">
|
||||||
|
<Action type="Log" value="第二步_第二个子步骤"></Action>
|
||||||
|
</Component>
|
||||||
|
</Item>
|
||||||
|
</Item>
|
||||||
|
<Item title="第二步" setPos="0,400">
|
||||||
|
<Item title="第二步_第一个子步骤" bgImage="" setPos="0,500">
|
||||||
|
<Component type="Button" size="200,200" pos="200,-400">
|
||||||
|
<Action type="Log" value="第二步_第二个子步骤"></Action>
|
||||||
|
</Component>
|
||||||
|
<Component type="Button" size="200,200" pos="400,-400">
|
||||||
|
<Action type="Log" value="第二步_第二个子步骤"></Action>
|
||||||
|
</Component>
|
||||||
|
|
||||||
|
</Item>
|
||||||
|
<Item title="第二步_第二个子步骤" bgImage="" setPos="0,600"></Item>
|
||||||
|
</Item>
|
||||||
|
<Component type="Button" size="932,526" pos="20,-9653">
|
||||||
|
<Action type="Sequence">
|
||||||
|
<Action type="Log" value="第一步_第一个子步骤"></Action>
|
||||||
|
<Action type="Video" value="test.mp4" size="500,500" offset="10,10" finishedEvent="finished" closeEvent="close"></Action>
|
||||||
|
</Action>
|
||||||
|
</Component>
|
||||||
|
</Knowledge>
|
||||||
|
|
||||||
<!--动作组-->
|
<!--动作组-->
|
||||||
<Action name="初始化" type="Sequence">
|
<Action name="初始化" type="Sequence">
|
||||||
@ -386,9 +427,9 @@
|
|||||||
<Action type="Log" value="ddd"></Action>
|
<Action type="Log" value="ddd"></Action>
|
||||||
</Action>
|
</Action>
|
||||||
</Exit>
|
</Exit>
|
||||||
</State>-->
|
</State>
|
||||||
<Transision from="any" to="状态1">
|
<Transision from="any" to="状态1">
|
||||||
<Condition type="ObjClick" value="Cube"></Condition>
|
<Condition type="UIClick" value="Cube"></Condition>
|
||||||
</Transision>
|
</Transision>
|
||||||
<Transision from="初始状态" to="状态2">
|
<Transision from="初始状态" to="状态2">
|
||||||
<Condition type="ObjClick" value="Cube (1)"></Condition>
|
<Condition type="ObjClick" value="Cube (1)"></Condition>
|
||||||
|
|||||||
@ -45,6 +45,7 @@
|
|||||||
"com.unity.modules.video": "1.0.0",
|
"com.unity.modules.video": "1.0.0",
|
||||||
"com.unity.modules.vr": "1.0.0",
|
"com.unity.modules.vr": "1.0.0",
|
||||||
"com.unity.modules.wind": "1.0.0",
|
"com.unity.modules.wind": "1.0.0",
|
||||||
"com.unity.modules.xr": "1.0.0"
|
"com.unity.modules.xr": "1.0.0",
|
||||||
|
"com.unity.assetbundlebrowser": "1.7.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -22,6 +22,13 @@
|
|||||||
"com.unity.modules.uielements": "1.0.0"
|
"com.unity.modules.uielements": "1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"com.unity.assetbundlebrowser": {
|
||||||
|
"version": "1.7.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {},
|
||||||
|
"url": "https://packages.unity.cn"
|
||||||
|
},
|
||||||
"com.unity.burst": {
|
"com.unity.burst": {
|
||||||
"version": "1.8.11",
|
"version": "1.8.11",
|
||||||
"depth": 1,
|
"depth": 1,
|
||||||
|
|||||||
@ -970,4 +970,4 @@ PlayerSettings:
|
|||||||
hmiLoadingImage: {fileID: 0}
|
hmiLoadingImage: {fileID: 0}
|
||||||
platformRequiresReadableAssets: 0
|
platformRequiresReadableAssets: 0
|
||||||
virtualTexturingSupportEnabled: 0
|
virtualTexturingSupportEnabled: 0
|
||||||
insecureHttpOption: 0
|
insecureHttpOption: 2
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user