2024.5.23杨华提交修改1
|
@ -1064,7 +1064,7 @@ GameObject:
|
|||
m_Component:
|
||||
- component: {fileID: 89677427}
|
||||
- component: {fileID: 89677429}
|
||||
- component: {fileID: 89677428}
|
||||
- component: {fileID: 89677430}
|
||||
m_Layer: 5
|
||||
m_Name: SetSystem
|
||||
m_TagString: Untagged
|
||||
|
@ -1092,7 +1092,15 @@ RectTransform:
|
|||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 1050, y: 435}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &89677428
|
||||
--- !u!222 &89677429
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 89677426}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &89677430
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
|
@ -1101,7 +1109,7 @@ MonoBehaviour:
|
|||
m_GameObject: {fileID: 89677426}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
|
@ -1112,24 +1120,13 @@ MonoBehaviour:
|
|||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_Sprite: {fileID: 21300000, guid: fa0c8ad8e6ffc06498c0da332c908fd3, type: 3}
|
||||
m_Type: 0
|
||||
m_PreserveAspect: 0
|
||||
m_FillCenter: 1
|
||||
m_FillMethod: 4
|
||||
m_FillAmount: 1
|
||||
m_FillClockwise: 1
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
--- !u!222 &89677429
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 89677426}
|
||||
m_CullTransparentMesh: 1
|
||||
m_Texture: {fileID: 2800000, guid: fa0c8ad8e6ffc06498c0da332c908fd3, type: 3}
|
||||
m_UVRect:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 0
|
||||
width: 1
|
||||
height: 1
|
||||
--- !u!1 &91025464
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
@ -4740,6 +4737,86 @@ CanvasRenderer:
|
|||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 374859221}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!1 &377429945
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 377429946}
|
||||
- component: {fileID: 377429948}
|
||||
- component: {fileID: 377429947}
|
||||
m_Layer: 5
|
||||
m_Name: Text (Legacy)
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &377429946
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 377429945}
|
||||
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: 2145806250}
|
||||
m_RootOrder: 0
|
||||
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 &377429947
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 377429945}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 0, g: 0.6511247, b: 1, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_FontData:
|
||||
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
|
||||
m_FontSize: 60
|
||||
m_FontStyle: 1
|
||||
m_BestFit: 0
|
||||
m_MinSize: 10
|
||||
m_MaxSize: 60
|
||||
m_Alignment: 4
|
||||
m_AlignByGeometry: 0
|
||||
m_RichText: 1
|
||||
m_HorizontalOverflow: 0
|
||||
m_VerticalOverflow: 0
|
||||
m_LineSpacing: 1
|
||||
m_Text: <
|
||||
--- !u!222 &377429948
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 377429945}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!1 &379354440
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
@ -5505,6 +5582,86 @@ CanvasRenderer:
|
|||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 414392646}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!1 &427238074
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 427238075}
|
||||
- component: {fileID: 427238077}
|
||||
- component: {fileID: 427238076}
|
||||
m_Layer: 5
|
||||
m_Name: Tips
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &427238075
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 427238074}
|
||||
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: 1361738231}
|
||||
m_RootOrder: 1
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 313.4176, y: -35.30591}
|
||||
m_SizeDelta: {x: 547.2349, y: 70.6109}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &427238076
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 427238074}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 0.5896226, g: 0.9458609, b: 1, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_FontData:
|
||||
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
|
||||
m_FontSize: 34
|
||||
m_FontStyle: 0
|
||||
m_BestFit: 0
|
||||
m_MinSize: 10
|
||||
m_MaxSize: 40
|
||||
m_Alignment: 3
|
||||
m_AlignByGeometry: 0
|
||||
m_RichText: 1
|
||||
m_HorizontalOverflow: 0
|
||||
m_VerticalOverflow: 0
|
||||
m_LineSpacing: 1
|
||||
m_Text: "\u4F7F\u7528\u94B3\u5F62\u7535\u6D41\u88681"
|
||||
--- !u!222 &427238077
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 427238074}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!1 &431218845
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
@ -17800,6 +17957,7 @@ GameObject:
|
|||
- component: {fileID: 1067605754}
|
||||
- component: {fileID: 1067605755}
|
||||
- component: {fileID: 1067605756}
|
||||
- component: {fileID: 1067605757}
|
||||
m_Layer: 5
|
||||
m_Name: Canvas
|
||||
m_TagString: Untagged
|
||||
|
@ -18350,6 +18508,25 @@ MonoBehaviour:
|
|||
StopClick: {fileID: 0}
|
||||
path:
|
||||
MP4Name:
|
||||
--- !u!114 &1067605757
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1067605736}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: e44ac87aada1b644dac8d22a4e7e2a82, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
leftBtn: {fileID: 2145806253}
|
||||
rightBtn: {fileID: 1707656242}
|
||||
tips: {fileID: 89677430}
|
||||
tipText: {fileID: 427238076}
|
||||
index: 0
|
||||
imageCount: 0
|
||||
texturesTips: []
|
||||
--- !u!1 &1091536119
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
@ -22907,6 +23084,7 @@ RectTransform:
|
|||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 790965686}
|
||||
- {fileID: 427238075}
|
||||
m_Father: {fileID: 1906731478}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
|
@ -30348,6 +30526,128 @@ CanvasRenderer:
|
|||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1695943083}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!1 &1707656238
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1707656239}
|
||||
- component: {fileID: 1707656241}
|
||||
- component: {fileID: 1707656240}
|
||||
- component: {fileID: 1707656242}
|
||||
m_Layer: 5
|
||||
m_Name: RightBtn
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &1707656239
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1707656238}
|
||||
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: 1787245989}
|
||||
m_Father: {fileID: 1906731478}
|
||||
m_RootOrder: 3
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 1, y: 0.5}
|
||||
m_AnchorMax: {x: 1, y: 0.5}
|
||||
m_AnchoredPosition: {x: -180, y: 0}
|
||||
m_SizeDelta: {x: 100, y: 127.7389}
|
||||
m_Pivot: {x: 1, y: 0.5}
|
||||
--- !u!114 &1707656240
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1707656238}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 0, g: 0.5120332, b: 1, a: 0.13333334}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_Sprite: {fileID: 0}
|
||||
m_Type: 0
|
||||
m_PreserveAspect: 0
|
||||
m_FillCenter: 1
|
||||
m_FillMethod: 4
|
||||
m_FillAmount: 1
|
||||
m_FillClockwise: 1
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
--- !u!222 &1707656241
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1707656238}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &1707656242
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1707656238}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Navigation:
|
||||
m_Mode: 3
|
||||
m_WrapAround: 0
|
||||
m_SelectOnUp: {fileID: 0}
|
||||
m_SelectOnDown: {fileID: 0}
|
||||
m_SelectOnLeft: {fileID: 0}
|
||||
m_SelectOnRight: {fileID: 0}
|
||||
m_Transition: 1
|
||||
m_Colors:
|
||||
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
||||
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
|
||||
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
||||
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
|
||||
m_ColorMultiplier: 1
|
||||
m_FadeDuration: 0.1
|
||||
m_SpriteState:
|
||||
m_HighlightedSprite: {fileID: 0}
|
||||
m_PressedSprite: {fileID: 0}
|
||||
m_SelectedSprite: {fileID: 0}
|
||||
m_DisabledSprite: {fileID: 0}
|
||||
m_AnimationTriggers:
|
||||
m_NormalTrigger: Normal
|
||||
m_HighlightedTrigger: Highlighted
|
||||
m_PressedTrigger: Pressed
|
||||
m_SelectedTrigger: Selected
|
||||
m_DisabledTrigger: Disabled
|
||||
m_Interactable: 1
|
||||
m_TargetGraphic: {fileID: 1707656240}
|
||||
m_OnClick:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
--- !u!1 &1708161586
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
@ -31811,6 +32111,86 @@ CanvasRenderer:
|
|||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1787008123}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!1 &1787245988
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1787245989}
|
||||
- component: {fileID: 1787245991}
|
||||
- component: {fileID: 1787245990}
|
||||
m_Layer: 5
|
||||
m_Name: Text (Legacy)
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &1787245989
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1787245988}
|
||||
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: 1707656239}
|
||||
m_RootOrder: 0
|
||||
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 &1787245990
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1787245988}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 0, g: 0.6511247, b: 1, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_FontData:
|
||||
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
|
||||
m_FontSize: 60
|
||||
m_FontStyle: 1
|
||||
m_BestFit: 0
|
||||
m_MinSize: 10
|
||||
m_MaxSize: 60
|
||||
m_Alignment: 4
|
||||
m_AlignByGeometry: 0
|
||||
m_RichText: 1
|
||||
m_HorizontalOverflow: 0
|
||||
m_VerticalOverflow: 0
|
||||
m_LineSpacing: 1
|
||||
m_Text: '>'
|
||||
--- !u!222 &1787245991
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1787245988}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!1 &1790206773
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
@ -33273,6 +33653,8 @@ RectTransform:
|
|||
m_Children:
|
||||
- {fileID: 1361738231}
|
||||
- {fileID: 89677427}
|
||||
- {fileID: 2145806250}
|
||||
- {fileID: 1707656239}
|
||||
m_Father: {fileID: 277472811}
|
||||
m_RootOrder: 7
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
|
@ -38076,6 +38458,128 @@ CanvasRenderer:
|
|||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2143281895}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!1 &2145806249
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 2145806250}
|
||||
- component: {fileID: 2145806252}
|
||||
- component: {fileID: 2145806251}
|
||||
- component: {fileID: 2145806253}
|
||||
m_Layer: 5
|
||||
m_Name: LeftBtn
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &2145806250
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2145806249}
|
||||
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: 377429946}
|
||||
m_Father: {fileID: 1906731478}
|
||||
m_RootOrder: 2
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0.5}
|
||||
m_AnchorMax: {x: 0, y: 0.5}
|
||||
m_AnchoredPosition: {x: 180, y: 0}
|
||||
m_SizeDelta: {x: 100, y: 127.7389}
|
||||
m_Pivot: {x: 0, y: 0.5}
|
||||
--- !u!114 &2145806251
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2145806249}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 0, g: 0.5120332, b: 1, a: 0.13333334}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_Sprite: {fileID: 0}
|
||||
m_Type: 0
|
||||
m_PreserveAspect: 0
|
||||
m_FillCenter: 1
|
||||
m_FillMethod: 4
|
||||
m_FillAmount: 1
|
||||
m_FillClockwise: 1
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
--- !u!222 &2145806252
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2145806249}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &2145806253
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2145806249}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Navigation:
|
||||
m_Mode: 3
|
||||
m_WrapAround: 0
|
||||
m_SelectOnUp: {fileID: 0}
|
||||
m_SelectOnDown: {fileID: 0}
|
||||
m_SelectOnLeft: {fileID: 0}
|
||||
m_SelectOnRight: {fileID: 0}
|
||||
m_Transition: 1
|
||||
m_Colors:
|
||||
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
||||
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
|
||||
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
||||
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
|
||||
m_ColorMultiplier: 1
|
||||
m_FadeDuration: 0.1
|
||||
m_SpriteState:
|
||||
m_HighlightedSprite: {fileID: 0}
|
||||
m_PressedSprite: {fileID: 0}
|
||||
m_SelectedSprite: {fileID: 0}
|
||||
m_DisabledSprite: {fileID: 0}
|
||||
m_AnimationTriggers:
|
||||
m_NormalTrigger: Normal
|
||||
m_HighlightedTrigger: Highlighted
|
||||
m_PressedTrigger: Pressed
|
||||
m_SelectedTrigger: Selected
|
||||
m_DisabledTrigger: Disabled
|
||||
m_Interactable: 1
|
||||
m_TargetGraphic: {fileID: 2145806251}
|
||||
m_OnClick:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
--- !u!1 &223104166407512384
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
|
|
@ -0,0 +1,78 @@
|
|||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
//============================================================
|
||||
//支持中文,文件使用UTF-8编码
|
||||
//@author Adam
|
||||
//@create 20240522
|
||||
//@company Aadm
|
||||
//
|
||||
//@description:
|
||||
//============================================================
|
||||
namespace Components
|
||||
{
|
||||
public class NPCWaypoints : MonoBehaviour
|
||||
{
|
||||
public Transform[] waypoints; // 路径点数组
|
||||
private int currentWaypoint = 0; // 当前路径点索引
|
||||
private float moveSpeed = 1f; // 移动速度
|
||||
public Animator npcAnimator;
|
||||
public bool isMove = false;
|
||||
public bool isOnce = false;
|
||||
public bool isLooked = true;
|
||||
// Use this for initialization
|
||||
private void Start()
|
||||
{
|
||||
for (int i = 0; i < waypoints.Length; i++)
|
||||
{
|
||||
waypoints[i].GetComponent<MeshRenderer>().enabled = false;
|
||||
}
|
||||
}
|
||||
private void Update()
|
||||
{
|
||||
if (!isMove) return;
|
||||
if (currentWaypoint < waypoints.Length)
|
||||
{
|
||||
float distance = Vector3.Distance(transform.position, waypoints[currentWaypoint].position);
|
||||
if (distance > 0.1f)
|
||||
{
|
||||
if (isLooked)
|
||||
{
|
||||
transform.LookAt(waypoints[currentWaypoint]);
|
||||
isLooked = false;
|
||||
}
|
||||
Vector3 direction = waypoints[currentWaypoint].position - transform.position;
|
||||
transform.Translate(Vector3.forward * moveSpeed * Time.deltaTime);
|
||||
}
|
||||
else
|
||||
{
|
||||
currentWaypoint++;
|
||||
isLooked = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
if (isMove && !isOnce)
|
||||
{
|
||||
npcAnimator.SetBool("isWalk", false);
|
||||
isMove = false;
|
||||
isOnce = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
//[ContextMenu("StartMove")]
|
||||
public void StartMove()
|
||||
{
|
||||
StartCoroutine(WaitMove());
|
||||
}
|
||||
|
||||
private IEnumerator WaitMove()
|
||||
{
|
||||
yield return new WaitForSeconds(3f);
|
||||
npcAnimator.SetBool("isWalk", true);
|
||||
isMove = true;
|
||||
isOnce = false;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 116e73b071222f8499967697228559a1
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -0,0 +1,84 @@
|
|||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
//============================================================
|
||||
//支持中文,文件使用UTF-8编码
|
||||
//@author Adam
|
||||
//@create 20240516
|
||||
//@company LG
|
||||
//
|
||||
//@description:
|
||||
//============================================================
|
||||
|
||||
public class SystemController : MonoBehaviour
|
||||
{
|
||||
public Button leftBtn;
|
||||
public Button rightBtn;
|
||||
public RawImage tips;
|
||||
public Text tipText;
|
||||
public int index = 0;
|
||||
public int imageCount;
|
||||
public Texture2D[] texturesTips;
|
||||
// Use this for initialization
|
||||
private void Start()
|
||||
{
|
||||
texturesTips = LoadSprite("Tips");
|
||||
leftBtn.onClick.AddListener(OnLeft);
|
||||
rightBtn.onClick.AddListener(OnRight);
|
||||
imageCount = texturesTips.Length;
|
||||
tips.texture = texturesTips[index];
|
||||
tipText.text = texturesTips[index].name;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void OnRight()
|
||||
{
|
||||
index++;
|
||||
if (index >= imageCount)
|
||||
{
|
||||
index = imageCount - 1;
|
||||
}
|
||||
tipText.text = texturesTips[index].name;
|
||||
tips.texture = texturesTips[index];
|
||||
}
|
||||
|
||||
public void OnLeft()
|
||||
{
|
||||
index--;
|
||||
if (index < 0)
|
||||
{
|
||||
index = 0;
|
||||
}
|
||||
tipText.text = texturesTips[index].name;
|
||||
tips.texture = texturesTips[index];
|
||||
}
|
||||
public Texture2D[] LoadSprite(string name)
|
||||
{
|
||||
string fileName_1 = Path.Combine(Application.streamingAssetsPath, name);
|
||||
Debug.Log(fileName_1);
|
||||
if (!Directory.Exists(fileName_1))
|
||||
{
|
||||
throw new FileNotFoundException("Could not find file: " + fileName_1);
|
||||
}
|
||||
string[] filePaths = Directory.GetFiles(fileName_1, "*.*", SearchOption.AllDirectories)
|
||||
.Where(s => s.EndsWith(".jpg") || s.EndsWith(".png"))
|
||||
.ToArray();
|
||||
Texture2D[] sprites = new Texture2D[filePaths.Length];
|
||||
for (int i = 0; i < filePaths.Length; i++)
|
||||
{
|
||||
byte[] bytes = File.ReadAllBytes(filePaths[i]);
|
||||
Texture2D texture = new Texture2D(2, 2);
|
||||
texture.LoadImage(bytes);
|
||||
string tipName = filePaths[i].Substring(filePaths[i].LastIndexOf(@"\") + 1, filePaths[i].LastIndexOf('.') - filePaths[i].LastIndexOf('\\') - 1);
|
||||
string[] tempNames = tipName.Split("_");
|
||||
texture.name = tempNames[2];
|
||||
sprites[i] = texture;
|
||||
}
|
||||
return sprites;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
fileFormatVersion: 2
|
||||
guid: e44ac87aada1b644dac8d22a4e7e2a82
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 53ee37c207e32e14d8a743ae9d9ddb8c
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 91ccc6da58c5c8545ab55312718656c3
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: f2ab3149758181f4ca713e1f3489c62f
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -0,0 +1,86 @@
|
|||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 8
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: 3d66Model-9825864-files-1
|
||||
m_Shader: {fileID: 47, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_ValidKeywords:
|
||||
- _EMISSION
|
||||
- _NORMALMAP
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 1
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap: {}
|
||||
disabledShaderPasses: []
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _BumpMap:
|
||||
m_Texture: {fileID: 2800000, guid: 46401282a7a59f9469c8ee4f2d61359b, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailAlbedoMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailMask:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailNormalMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _EmissionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MainTex:
|
||||
m_Texture: {fileID: 2800000, guid: 88d0414c9e7584441943afc141654c72, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MetallicGlossMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _OcclusionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ParallaxMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _SpecGlossMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _BumpScale: 1
|
||||
- _Cutoff: 0.5
|
||||
- _DetailNormalMapScale: 1
|
||||
- _DstBlend: 0
|
||||
- _GlossMapScale: 1
|
||||
- _Glossiness: 0.5
|
||||
- _GlossyReflections: 1
|
||||
- _Metallic: 0
|
||||
- _Mode: 0
|
||||
- _OcclusionStrength: 1
|
||||
- _Parallax: 0.02
|
||||
- _SmoothnessTextureChannel: 0
|
||||
- _SpecularHighlights: 1
|
||||
- _SrcBlend: 1
|
||||
- _UVSec: 0
|
||||
- _ZWrite: 1
|
||||
m_Colors:
|
||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
m_BuildTextureStacks: []
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 9e4f01f5cbefae8439b17d2493397604
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -0,0 +1,159 @@
|
|||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1102 &-5947397917592710247
|
||||
AnimatorState:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: Stand
|
||||
m_Speed: 1
|
||||
m_CycleOffset: 0
|
||||
m_Transitions:
|
||||
- {fileID: -3584095163756711014}
|
||||
m_StateMachineBehaviours: []
|
||||
m_Position: {x: 50, y: 50, z: 0}
|
||||
m_IKOnFeet: 0
|
||||
m_WriteDefaultValues: 0
|
||||
m_Mirror: 0
|
||||
m_SpeedParameterActive: 0
|
||||
m_MirrorParameterActive: 0
|
||||
m_CycleOffsetParameterActive: 0
|
||||
m_TimeParameterActive: 0
|
||||
m_Motion: {fileID: -203655887218126122, guid: 2acc773208dfe3342a32ea7692436303, type: 3}
|
||||
m_Tag:
|
||||
m_SpeedParameter:
|
||||
m_MirrorParameter:
|
||||
m_CycleOffsetParameter:
|
||||
m_TimeParameter:
|
||||
--- !u!1101 &-3584095163756711014
|
||||
AnimatorStateTransition:
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name:
|
||||
m_Conditions:
|
||||
- m_ConditionMode: 1
|
||||
m_ConditionEvent: isWalk
|
||||
m_EventTreshold: 0
|
||||
m_DstStateMachine: {fileID: 0}
|
||||
m_DstState: {fileID: 123349700110745945}
|
||||
m_Solo: 0
|
||||
m_Mute: 0
|
||||
m_IsExit: 0
|
||||
serializedVersion: 3
|
||||
m_TransitionDuration: 0.25
|
||||
m_TransitionOffset: 0
|
||||
m_ExitTime: 0.9820574
|
||||
m_HasExitTime: 0
|
||||
m_HasFixedDuration: 1
|
||||
m_InterruptionSource: 0
|
||||
m_OrderedInterruption: 1
|
||||
m_CanTransitionToSelf: 1
|
||||
--- !u!91 &9100000
|
||||
AnimatorController:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: Women-01
|
||||
serializedVersion: 5
|
||||
m_AnimatorParameters:
|
||||
- m_Name: isWalk
|
||||
m_Type: 4
|
||||
m_DefaultFloat: 0
|
||||
m_DefaultInt: 0
|
||||
m_DefaultBool: 0
|
||||
m_Controller: {fileID: 0}
|
||||
m_AnimatorLayers:
|
||||
- serializedVersion: 5
|
||||
m_Name: Base Layer
|
||||
m_StateMachine: {fileID: 5646184920311110848}
|
||||
m_Mask: {fileID: 0}
|
||||
m_Motions: []
|
||||
m_Behaviours: []
|
||||
m_BlendingMode: 0
|
||||
m_SyncedLayerIndex: -1
|
||||
m_DefaultWeight: 0
|
||||
m_IKPass: 0
|
||||
m_SyncedLayerAffectsTiming: 0
|
||||
m_Controller: {fileID: 9100000}
|
||||
--- !u!1102 &123349700110745945
|
||||
AnimatorState:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: Walking
|
||||
m_Speed: 1
|
||||
m_CycleOffset: 0
|
||||
m_Transitions:
|
||||
- {fileID: 2284494380324349274}
|
||||
m_StateMachineBehaviours: []
|
||||
m_Position: {x: 50, y: 50, z: 0}
|
||||
m_IKOnFeet: 0
|
||||
m_WriteDefaultValues: 0
|
||||
m_Mirror: 0
|
||||
m_SpeedParameterActive: 0
|
||||
m_MirrorParameterActive: 0
|
||||
m_CycleOffsetParameterActive: 0
|
||||
m_TimeParameterActive: 0
|
||||
m_Motion: {fileID: -203655887218126122, guid: 33c62cb424def044290f5749a3e66d34, type: 3}
|
||||
m_Tag:
|
||||
m_SpeedParameter:
|
||||
m_MirrorParameter:
|
||||
m_CycleOffsetParameter:
|
||||
m_TimeParameter:
|
||||
--- !u!1101 &2284494380324349274
|
||||
AnimatorStateTransition:
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name:
|
||||
m_Conditions:
|
||||
- m_ConditionMode: 2
|
||||
m_ConditionEvent: isWalk
|
||||
m_EventTreshold: 0
|
||||
m_DstStateMachine: {fileID: 0}
|
||||
m_DstState: {fileID: -5947397917592710247}
|
||||
m_Solo: 0
|
||||
m_Mute: 0
|
||||
m_IsExit: 0
|
||||
serializedVersion: 3
|
||||
m_TransitionDuration: 0.25
|
||||
m_TransitionOffset: 0
|
||||
m_ExitTime: 0.7413793
|
||||
m_HasExitTime: 0
|
||||
m_HasFixedDuration: 1
|
||||
m_InterruptionSource: 0
|
||||
m_OrderedInterruption: 1
|
||||
m_CanTransitionToSelf: 1
|
||||
--- !u!1107 &5646184920311110848
|
||||
AnimatorStateMachine:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: Base Layer
|
||||
m_ChildStates:
|
||||
- serializedVersion: 1
|
||||
m_State: {fileID: -5947397917592710247}
|
||||
m_Position: {x: 420, y: 230, z: 0}
|
||||
- serializedVersion: 1
|
||||
m_State: {fileID: 123349700110745945}
|
||||
m_Position: {x: 570, y: 410, z: 0}
|
||||
m_ChildStateMachines: []
|
||||
m_AnyStateTransitions: []
|
||||
m_EntryTransitions: []
|
||||
m_StateMachineTransitions: {}
|
||||
m_StateMachineBehaviours: []
|
||||
m_AnyStatePosition: {x: 50, y: 20, z: 0}
|
||||
m_EntryPosition: {x: 50, y: 120, z: 0}
|
||||
m_ExitPosition: {x: 800, y: 120, z: 0}
|
||||
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
|
||||
m_DefaultState: {fileID: -5947397917592710247}
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 929b30606ed3b3544b3e3c185b9b3053
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 9100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: c710d43be8dbf074f84302db553c254b
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
After Width: | Height: | Size: 1.9 MiB |
|
@ -1,12 +1,12 @@
|
|||
fileFormatVersion: 2
|
||||
guid: fa0c8ad8e6ffc06498c0da332c908fd3
|
||||
guid: 88d0414c9e7584441943afc141654c72
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 12
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
enableMipMap: 1
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
|
@ -36,13 +36,13 @@ TextureImporter:
|
|||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 1
|
||||
nPOTScale: 0
|
||||
wrapU: 0
|
||||
wrapV: 0
|
||||
wrapW: 0
|
||||
nPOTScale: 1
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 1
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
|
@ -51,9 +51,9 @@ TextureImporter:
|
|||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
alphaIsTransparency: 0
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 8
|
||||
textureType: 0
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
|
@ -131,7 +131,7 @@ TextureImporter:
|
|||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
spriteID:
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
After Width: | Height: | Size: 2.6 MiB |
|
@ -0,0 +1,147 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 46401282a7a59f9469c8ee4f2d61359b
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 12
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 1
|
||||
sRGBTexture: 0
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMasterTextureLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 0
|
||||
wrapV: 0
|
||||
wrapW: 0
|
||||
nPOTScale: 1
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 0
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 1
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
cookieLightType: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Server
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Android
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID:
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
nameFileIdTable: {}
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -0,0 +1,108 @@
|
|||
fileFormatVersion: 2
|
||||
guid: ee451e45686549b40aacd5af45fdb233
|
||||
ModelImporter:
|
||||
serializedVersion: 21300
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
materials:
|
||||
materialImportMode: 2
|
||||
materialName: 0
|
||||
materialSearch: 1
|
||||
materialLocation: 0
|
||||
animations:
|
||||
legacyGenerateAnimations: 4
|
||||
bakeSimulation: 0
|
||||
resampleCurves: 1
|
||||
optimizeGameObjects: 0
|
||||
removeConstantScaleCurves: 1
|
||||
motionNodeName:
|
||||
rigImportErrors:
|
||||
rigImportWarnings:
|
||||
animationImportErrors:
|
||||
animationImportWarnings:
|
||||
animationRetargetingWarnings:
|
||||
animationDoRetargetingWarnings: 0
|
||||
importAnimatedCustomProperties: 0
|
||||
importConstraints: 0
|
||||
animationCompression: 1
|
||||
animationRotationError: 0.5
|
||||
animationPositionError: 0.5
|
||||
animationScaleError: 0.5
|
||||
animationWrapMode: 0
|
||||
extraExposedTransformPaths: []
|
||||
extraUserProperties: []
|
||||
clipAnimations: []
|
||||
isReadable: 0
|
||||
meshes:
|
||||
lODScreenPercentages: []
|
||||
globalScale: 1
|
||||
meshCompression: 0
|
||||
addColliders: 0
|
||||
useSRGBMaterialColor: 1
|
||||
sortHierarchyByName: 1
|
||||
importVisibility: 1
|
||||
importBlendShapes: 1
|
||||
importCameras: 1
|
||||
importLights: 1
|
||||
nodeNameCollisionStrategy: 1
|
||||
fileIdsGeneration: 2
|
||||
swapUVChannels: 0
|
||||
generateSecondaryUV: 0
|
||||
useFileUnits: 1
|
||||
keepQuads: 0
|
||||
weldVertices: 1
|
||||
bakeAxisConversion: 0
|
||||
preserveHierarchy: 0
|
||||
skinWeightsMode: 0
|
||||
maxBonesPerVertex: 4
|
||||
minBoneWeight: 0.001
|
||||
optimizeBones: 1
|
||||
meshOptimizationFlags: -1
|
||||
indexFormat: 0
|
||||
secondaryUVAngleDistortion: 8
|
||||
secondaryUVAreaDistortion: 15.000001
|
||||
secondaryUVHardAngle: 88
|
||||
secondaryUVMarginMethod: 1
|
||||
secondaryUVMinLightmapResolution: 40
|
||||
secondaryUVMinObjectScale: 1
|
||||
secondaryUVPackMargin: 4
|
||||
useFileScale: 1
|
||||
tangentSpace:
|
||||
normalSmoothAngle: 60
|
||||
normalImportMode: 0
|
||||
tangentImportMode: 3
|
||||
normalCalculationMode: 4
|
||||
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
|
||||
blendShapeNormalImportMode: 1
|
||||
normalSmoothingSource: 0
|
||||
referencedClips:
|
||||
- 2acc773208dfe3342a32ea7692436303
|
||||
- 33c62cb424def044290f5749a3e66d34
|
||||
importAnimation: 1
|
||||
humanDescription:
|
||||
serializedVersion: 3
|
||||
human: []
|
||||
skeleton: []
|
||||
armTwist: 0.5
|
||||
foreArmTwist: 0.5
|
||||
upperLegTwist: 0.5
|
||||
legTwist: 0.5
|
||||
armStretch: 0.05
|
||||
legStretch: 0.05
|
||||
feetSpacing: 0
|
||||
globalScale: 1
|
||||
rootMotionBoneName:
|
||||
hasTranslationDoF: 0
|
||||
hasExtraRoot: 0
|
||||
skeletonHasParents: 1
|
||||
lastHumanDescriptionAvatarSource: {instanceID: 0}
|
||||
autoGenerateAvatarMappingIfUnspecified: 1
|
||||
animationType: 2
|
||||
humanoidOversampling: 1
|
||||
avatarSetup: 0
|
||||
addHumanoidExtraRootOnlyWhenUsingAvatar: 1
|
||||
remapMaterialsIfMaterialImportModeIsNone: 0
|
||||
additionalBone: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -0,0 +1,109 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 2acc773208dfe3342a32ea7692436303
|
||||
ModelImporter:
|
||||
serializedVersion: 21300
|
||||
internalIDToNameTable:
|
||||
- first:
|
||||
74: -203655887218126122
|
||||
second: mixamo.com
|
||||
externalObjects: {}
|
||||
materials:
|
||||
materialImportMode: 2
|
||||
materialName: 0
|
||||
materialSearch: 1
|
||||
materialLocation: 1
|
||||
animations:
|
||||
legacyGenerateAnimations: 4
|
||||
bakeSimulation: 0
|
||||
resampleCurves: 1
|
||||
optimizeGameObjects: 0
|
||||
removeConstantScaleCurves: 1
|
||||
motionNodeName:
|
||||
rigImportErrors:
|
||||
rigImportWarnings:
|
||||
animationImportErrors:
|
||||
animationImportWarnings:
|
||||
animationRetargetingWarnings:
|
||||
animationDoRetargetingWarnings: 0
|
||||
importAnimatedCustomProperties: 0
|
||||
importConstraints: 0
|
||||
animationCompression: 1
|
||||
animationRotationError: 0.5
|
||||
animationPositionError: 0.5
|
||||
animationScaleError: 0.5
|
||||
animationWrapMode: 0
|
||||
extraExposedTransformPaths: []
|
||||
extraUserProperties: []
|
||||
clipAnimations: []
|
||||
isReadable: 0
|
||||
meshes:
|
||||
lODScreenPercentages: []
|
||||
globalScale: 1
|
||||
meshCompression: 0
|
||||
addColliders: 0
|
||||
useSRGBMaterialColor: 1
|
||||
sortHierarchyByName: 1
|
||||
importVisibility: 1
|
||||
importBlendShapes: 1
|
||||
importCameras: 1
|
||||
importLights: 1
|
||||
nodeNameCollisionStrategy: 1
|
||||
fileIdsGeneration: 2
|
||||
swapUVChannels: 0
|
||||
generateSecondaryUV: 0
|
||||
useFileUnits: 1
|
||||
keepQuads: 0
|
||||
weldVertices: 1
|
||||
bakeAxisConversion: 0
|
||||
preserveHierarchy: 0
|
||||
skinWeightsMode: 0
|
||||
maxBonesPerVertex: 4
|
||||
minBoneWeight: 0.001
|
||||
optimizeBones: 1
|
||||
meshOptimizationFlags: -1
|
||||
indexFormat: 0
|
||||
secondaryUVAngleDistortion: 8
|
||||
secondaryUVAreaDistortion: 15.000001
|
||||
secondaryUVHardAngle: 88
|
||||
secondaryUVMarginMethod: 1
|
||||
secondaryUVMinLightmapResolution: 40
|
||||
secondaryUVMinObjectScale: 1
|
||||
secondaryUVPackMargin: 4
|
||||
useFileScale: 1
|
||||
tangentSpace:
|
||||
normalSmoothAngle: 60
|
||||
normalImportMode: 0
|
||||
tangentImportMode: 3
|
||||
normalCalculationMode: 4
|
||||
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
|
||||
blendShapeNormalImportMode: 1
|
||||
normalSmoothingSource: 0
|
||||
referencedClips: []
|
||||
importAnimation: 1
|
||||
humanDescription:
|
||||
serializedVersion: 3
|
||||
human: []
|
||||
skeleton: []
|
||||
armTwist: 0.5
|
||||
foreArmTwist: 0.5
|
||||
upperLegTwist: 0.5
|
||||
legTwist: 0.5
|
||||
armStretch: 0.05
|
||||
legStretch: 0.05
|
||||
feetSpacing: 0
|
||||
globalScale: 1
|
||||
rootMotionBoneName:
|
||||
hasTranslationDoF: 0
|
||||
hasExtraRoot: 0
|
||||
skeletonHasParents: 1
|
||||
lastHumanDescriptionAvatarSource: {instanceID: 0}
|
||||
autoGenerateAvatarMappingIfUnspecified: 1
|
||||
animationType: 2
|
||||
humanoidOversampling: 1
|
||||
avatarSetup: 0
|
||||
addHumanoidExtraRootOnlyWhenUsingAvatar: 1
|
||||
remapMaterialsIfMaterialImportModeIsNone: 0
|
||||
additionalBone: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -0,0 +1,138 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 33c62cb424def044290f5749a3e66d34
|
||||
ModelImporter:
|
||||
serializedVersion: 21300
|
||||
internalIDToNameTable:
|
||||
- first:
|
||||
74: -203655887218126122
|
||||
second: Walking
|
||||
externalObjects: {}
|
||||
materials:
|
||||
materialImportMode: 2
|
||||
materialName: 0
|
||||
materialSearch: 1
|
||||
materialLocation: 1
|
||||
animations:
|
||||
legacyGenerateAnimations: 4
|
||||
bakeSimulation: 0
|
||||
resampleCurves: 1
|
||||
optimizeGameObjects: 0
|
||||
removeConstantScaleCurves: 1
|
||||
motionNodeName:
|
||||
rigImportErrors:
|
||||
rigImportWarnings:
|
||||
animationImportErrors:
|
||||
animationImportWarnings:
|
||||
animationRetargetingWarnings:
|
||||
animationDoRetargetingWarnings: 0
|
||||
importAnimatedCustomProperties: 0
|
||||
importConstraints: 0
|
||||
animationCompression: 1
|
||||
animationRotationError: 0.5
|
||||
animationPositionError: 0.5
|
||||
animationScaleError: 0.5
|
||||
animationWrapMode: 0
|
||||
extraExposedTransformPaths: []
|
||||
extraUserProperties: []
|
||||
clipAnimations:
|
||||
- serializedVersion: 16
|
||||
name: Walking
|
||||
takeName: mixamo.com
|
||||
internalID: 0
|
||||
firstFrame: 0
|
||||
lastFrame: 29
|
||||
wrapMode: 0
|
||||
orientationOffsetY: 0
|
||||
level: 0
|
||||
cycleOffset: 0
|
||||
loop: 0
|
||||
hasAdditiveReferencePose: 0
|
||||
loopTime: 1
|
||||
loopBlend: 0
|
||||
loopBlendOrientation: 0
|
||||
loopBlendPositionY: 0
|
||||
loopBlendPositionXZ: 0
|
||||
keepOriginalOrientation: 0
|
||||
keepOriginalPositionY: 1
|
||||
keepOriginalPositionXZ: 0
|
||||
heightFromFeet: 0
|
||||
mirror: 0
|
||||
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
|
||||
curves: []
|
||||
events: []
|
||||
transformMask: []
|
||||
maskType: 3
|
||||
maskSource: {instanceID: 0}
|
||||
additiveReferencePoseFrame: 0
|
||||
isReadable: 0
|
||||
meshes:
|
||||
lODScreenPercentages: []
|
||||
globalScale: 1
|
||||
meshCompression: 0
|
||||
addColliders: 0
|
||||
useSRGBMaterialColor: 1
|
||||
sortHierarchyByName: 1
|
||||
importVisibility: 1
|
||||
importBlendShapes: 1
|
||||
importCameras: 1
|
||||
importLights: 1
|
||||
nodeNameCollisionStrategy: 1
|
||||
fileIdsGeneration: 2
|
||||
swapUVChannels: 0
|
||||
generateSecondaryUV: 0
|
||||
useFileUnits: 1
|
||||
keepQuads: 0
|
||||
weldVertices: 1
|
||||
bakeAxisConversion: 0
|
||||
preserveHierarchy: 0
|
||||
skinWeightsMode: 0
|
||||
maxBonesPerVertex: 4
|
||||
minBoneWeight: 0.001
|
||||
optimizeBones: 1
|
||||
meshOptimizationFlags: -1
|
||||
indexFormat: 0
|
||||
secondaryUVAngleDistortion: 8
|
||||
secondaryUVAreaDistortion: 15.000001
|
||||
secondaryUVHardAngle: 88
|
||||
secondaryUVMarginMethod: 1
|
||||
secondaryUVMinLightmapResolution: 40
|
||||
secondaryUVMinObjectScale: 1
|
||||
secondaryUVPackMargin: 4
|
||||
useFileScale: 1
|
||||
tangentSpace:
|
||||
normalSmoothAngle: 60
|
||||
normalImportMode: 0
|
||||
tangentImportMode: 3
|
||||
normalCalculationMode: 4
|
||||
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
|
||||
blendShapeNormalImportMode: 1
|
||||
normalSmoothingSource: 0
|
||||
referencedClips: []
|
||||
importAnimation: 1
|
||||
humanDescription:
|
||||
serializedVersion: 3
|
||||
human: []
|
||||
skeleton: []
|
||||
armTwist: 0.5
|
||||
foreArmTwist: 0.5
|
||||
upperLegTwist: 0.5
|
||||
legTwist: 0.5
|
||||
armStretch: 0.05
|
||||
legStretch: 0.05
|
||||
feetSpacing: 0
|
||||
globalScale: 1
|
||||
rootMotionBoneName:
|
||||
hasTranslationDoF: 0
|
||||
hasExtraRoot: 0
|
||||
skeletonHasParents: 1
|
||||
lastHumanDescriptionAvatarSource: {instanceID: 0}
|
||||
autoGenerateAvatarMappingIfUnspecified: 1
|
||||
animationType: 2
|
||||
humanoidOversampling: 1
|
||||
avatarSetup: 0
|
||||
addHumanoidExtraRootOnlyWhenUsingAvatar: 1
|
||||
remapMaterialsIfMaterialImportModeIsNone: 0
|
||||
additionalBone: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -4,7 +4,7 @@ using System.IO;
|
|||
//============================================================
|
||||
//@author YangHua
|
||||
//@create 2016/4/28
|
||||
//@company QianHuo
|
||||
//@company Adam
|
||||
//
|
||||
//@description:把'81-C# Script-NewBehaviourScript.cs.txt'文件,
|
||||
// 修改里面的作者为自己的名字,覆盖到:
|
||||
|
@ -17,7 +17,7 @@ namespace AMLab
|
|||
public class TemplateKeyParser : UnityEditor.AssetModificationProcessor
|
||||
{
|
||||
private static string AUTHOR = "YangHua";
|
||||
private static string COMPANY = "QianHuo";
|
||||
private static string COMPANY = "Adam";
|
||||
public static void OnWillCreateAsset(string path)
|
||||
{
|
||||
//Debug.Log("TempleteKeyParser=>" + path);
|
||||
|
|
|
@ -49,5 +49,6 @@ public class MultimeterRecovery : MonoBehaviour
|
|||
GameManager.Instance.show("0");
|
||||
UIManager.Instance.toolsItemManager.recoverBtn.gameObject.SetActive(true);
|
||||
});
|
||||
btn.gameObject.SetActive(false);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
using Components;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
@ -33,13 +34,14 @@ public class BoxPengZhuang : MonoBehaviour
|
|||
{
|
||||
g1.gameObject.SetActive(true);
|
||||
g1.init(dialogue);
|
||||
gameObject.transform.parent.GetComponent<NPCWaypoints>().StartMove();
|
||||
gameObject.SetActive(false);
|
||||
if (!UIManager.Instance.ganTanHao.KeyGanTanHao.ContainsKey(GlobalFlag.userId))
|
||||
{
|
||||
gameObject.SetActive(false);
|
||||
UIManager.Instance.isBox = true;
|
||||
}
|
||||
await FractionManager.Instance.overAsync(3, 2, "¹¤×÷Ö¤");
|
||||
gameObject.SetActive(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7107,9 +7107,17 @@ PrefabInstance:
|
|||
propertyPath: InitialUrl
|
||||
value: http://127.0.0.1:3633/#/
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 114949863196309792, guid: 3e10f3b6a733e441c8352020cff2f1f6, type: 3}
|
||||
propertyPath: Resolution
|
||||
value: 1.03
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 114949863196309792, guid: 3e10f3b6a733e441c8352020cff2f1f6, type: 3}
|
||||
propertyPath: PixelDensity
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 114949863196309792, guid: 3e10f3b6a733e441c8352020cff2f1f6, type: 3}
|
||||
propertyPath: KeyboardEnabled
|
||||
value: 0
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 114949863196309792, guid: 3e10f3b6a733e441c8352020cff2f1f6, type: 3}
|
||||
propertyPath: NativeOnScreenKeyboardEnabled
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 86a5f6051f694c24db9a746016f56f48
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 7fc8be9ab77ee3e409bf233c1b72d59b
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
Before Width: | Height: | Size: 181 KiB After Width: | Height: | Size: 181 KiB |
|
@ -0,0 +1,7 @@
|
|||
fileFormatVersion: 2
|
||||
guid: fa0c8ad8e6ffc06498c0da332c908fd3
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
After Width: | Height: | Size: 204 KiB |
|
@ -0,0 +1,7 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 0bfa7a6832e7e4d43a2e0bd4d864d1be
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
After Width: | Height: | Size: 227 KiB |
|
@ -0,0 +1,7 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 29c532ebd3ca3ab479ea692f365241db
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
After Width: | Height: | Size: 233 KiB |
|
@ -0,0 +1,7 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 215a210b0d93b4346869b3b6787d906e
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
After Width: | Height: | Size: 220 KiB |
|
@ -0,0 +1,7 @@
|
|||
fileFormatVersion: 2
|
||||
guid: d345cced1b74a5142b27eb68836ac678
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
After Width: | Height: | Size: 260 KiB |
|
@ -0,0 +1,7 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 9a4d1a51adb4ab342b087ffb7cc8330d
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
After Width: | Height: | Size: 258 KiB |
|
@ -0,0 +1,7 @@
|
|||
fileFormatVersion: 2
|
||||
guid: ca8e0d0c113cc1a4b94231081194a617
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
After Width: | Height: | Size: 260 KiB |
|
@ -0,0 +1,7 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 4839ecef7646b364b8a6d72b1b07371a
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
After Width: | Height: | Size: 276 KiB |
|
@ -0,0 +1,7 @@
|
|||
fileFormatVersion: 2
|
||||
guid: ba7996123f612224e83363c787e24560
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
After Width: | Height: | Size: 293 KiB |
|
@ -0,0 +1,7 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 572dfe1dc8853c34e85f6fd74cebb981
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -0,0 +1,7 @@
|
|||
[ScreenCaputre]
|
||||
Resolution = Custom
|
||||
Optional Resolutions : Original , Half , Quarter , Eighth , Sixteenth , Custom
|
||||
CustomValue = 800*600
|
||||
noAudio = false
|
||||
AudioSpeed = 20
|
||||
OpenVideoPlayBack = true
|
|
@ -1 +1 @@
|
|||
Build from LGZN_H at 2024/5/21 13:57:17
|
||||
Build from ADAM at 2024/5/22 16:57:32
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: e1af6d7538e0c4382940c502ac857197
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 3f61b635b575947e9abfac04cb82067f
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: d81ee1045c91f4c79852f85367eb106a
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: e419cc8c4878947a5971402dbdec76f0
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 1038a3399a6af4c639c0851aede5495f
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -0,0 +1,78 @@
|
|||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: MockViewportMaterial
|
||||
m_Shader: {fileID: 10750, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_ShaderKeywords: _ALPHAPREMULTIPLY_ON _GLOSSYREFLECTIONS_OFF _SPECULARHIGHLIGHTS_OFF
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap: {}
|
||||
disabledShaderPasses: []
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _BumpMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailAlbedoMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailMask:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailNormalMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _EmissionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: -1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MainTex:
|
||||
m_Texture: {fileID: 2800000, guid: 9f7b60728c99d4fe6b67e0d86b1e7b5e, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MetallicGlossMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _OcclusionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ParallaxMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Floats:
|
||||
- _BumpScale: 1
|
||||
- _Cutoff: 0.5
|
||||
- _DetailNormalMapScale: 1
|
||||
- _DstBlend: 10
|
||||
- _GlossMapScale: 1
|
||||
- _Glossiness: 0.5
|
||||
- _GlossyReflections: 0
|
||||
- _Metallic: 0
|
||||
- _Mode: 3
|
||||
- _OcclusionStrength: 1
|
||||
- _Parallax: 0.02
|
||||
- _SmoothnessTextureChannel: 0
|
||||
- _SpecularHighlights: 0
|
||||
- _SrcBlend: 1
|
||||
- _UVSec: 0
|
||||
- _ZWrite: 0
|
||||
m_Colors:
|
||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
m_BuildTextureStacks: []
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 1b0611231af614f7b91169ff83a790cd
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: cc28f1f6b8abe41dba1a8aba8c0b501d
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -0,0 +1,196 @@
|
|||
// Copyright (c) 2023 Vuplex Inc. All rights reserved.
|
||||
//
|
||||
// Licensed under the Vuplex Commercial Software Library License, you may
|
||||
// not use this file except in compliance with the License. You may obtain
|
||||
// a copy of the License at
|
||||
//
|
||||
// https://vuplex.com/commercial-library-license
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
#if UNITY_ANDROID
|
||||
#pragma warning disable CS0618
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text.RegularExpressions;
|
||||
using UnityEditor;
|
||||
using UnityEditor.Build;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Rendering;
|
||||
using Vuplex.WebView.Internal;
|
||||
|
||||
namespace Vuplex.WebView.Editor {
|
||||
|
||||
public static class AndroidEditorUtils {
|
||||
|
||||
public static void PreprocessBuild(string productName, string proguardRulesExpectedRelativePath, string nativeLibraryName, bool native2DSupported) {
|
||||
|
||||
_validateGraphicsApi(native2DSupported);
|
||||
_forceInternetPermission();
|
||||
_assertThatOculusLowOverheadModeIsDisabled();
|
||||
_assertThatSrpBatcherIsDisabled();
|
||||
_updateNativePluginSettings(nativeLibraryName);
|
||||
_updateProguardFileIfNeeded(productName, proguardRulesExpectedRelativePath);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Updates the proguard-user.txt file if needed to prevent the names of 3D WebView's Java classes from being obfuscated.
|
||||
/// https://support.vuplex.com/articles/android-minification
|
||||
/// </summary>
|
||||
static void _updateProguardFileIfNeeded(string productName, string neededProguardRulesExpectedRelativePath) {
|
||||
|
||||
var minificationEnabled = false;
|
||||
// minifyDebug and minifyRelease were added in 2020.1.
|
||||
#if UNITY_2020_1_OR_NEWER
|
||||
minificationEnabled = EditorUserBuildSettings.development ? PlayerSettings.Android.minifyDebug : PlayerSettings.Android.minifyRelease;
|
||||
#endif
|
||||
if (!minificationEnabled) {
|
||||
return;
|
||||
}
|
||||
var neededProguardRulesFilePath = EditorUtils.FindFile(Path.Combine(Application.dataPath, neededProguardRulesExpectedRelativePath));
|
||||
var neededProguardRules = File.ReadAllText(neededProguardRulesFilePath);
|
||||
// Note: the prefix and suffix avoid using characters considered special characters in regexes, like parentheses.
|
||||
var prefix = $"# --- Start of section automatically included for {productName} - PLEASE DO NOT EDIT ---";
|
||||
var suffix = $"# --- End of section for {productName} ---";
|
||||
var fullTextToAdd = $"{prefix}\n{neededProguardRules}\n{suffix}";
|
||||
var androidPluginsFolderPath = Path.Combine(Application.dataPath, "Plugins", "Android");
|
||||
var proguardUserFilePath = Path.Combine(androidPluginsFolderPath, "proguard-user.txt");
|
||||
var proguardUserFileExists = File.Exists(proguardUserFilePath);
|
||||
if (proguardUserFileExists) {
|
||||
var existingFileText = File.ReadAllText(proguardUserFilePath);
|
||||
var existingWebViewProguardRulesRegex = new Regex($"{prefix}.*{suffix}", RegexOptions.Singleline);
|
||||
var existingWebViewProguardRulesResult = existingWebViewProguardRulesRegex.Match(existingFileText);
|
||||
if (existingWebViewProguardRulesResult.Success) {
|
||||
if (existingWebViewProguardRulesResult.Value != fullTextToAdd) {
|
||||
// The proguard-user.txt file contains an older version of the rules, so update them.
|
||||
var newFileText = existingFileText.Replace(existingWebViewProguardRulesResult.Value, fullTextToAdd);
|
||||
File.WriteAllText(proguardUserFilePath, newFileText);
|
||||
}
|
||||
} else {
|
||||
// A proguard-user.txt file exists, but it doesn't include the rules yet, so add them.
|
||||
var newFileText = existingFileText + "\n\n" + fullTextToAdd;
|
||||
File.WriteAllText(proguardUserFilePath, newFileText);
|
||||
}
|
||||
} else {
|
||||
// No proguard-user.txt file exists yet, so create the file.
|
||||
Directory.CreateDirectory(androidPluginsFolderPath);
|
||||
File.WriteAllText(proguardUserFilePath, fullTextToAdd);
|
||||
}
|
||||
}
|
||||
|
||||
static void _assertThatSrpBatcherIsDisabled() {
|
||||
|
||||
#if UNITY_2018_2_OR_NEWER && !VUPLEX_DISABLE_SRP_WARNING
|
||||
// Checking renderPipelineAsset is needed to verify that URP is enabled because useScriptableRenderPipelineBatching
|
||||
// can sometimes be true even when the built-in render pipeline is in use.
|
||||
if (GraphicsSettings.useScriptableRenderPipelineBatching && GraphicsSettings.renderPipelineAsset != null) {
|
||||
throw new BuildFailedException("URP settings error: \"SRP Batcher\" is enabled in Universal Render Pipeline (URP) settings, but URP for Android has an issue that prevents 3D WebView's textures from showing up outside of a Canvas. If the project uses a WebViewPrefab, please go to the URP Asset and disable \"SRP Batcher\". In newer versions of URP, it's necessary to click \"Show Additional Properties\" in order to show the SRP Batcher option, like described here: https://docs.unity3d.com/2021.3/Documentation/Manual/SRPBatcher.html . If the project only uses CanvasWebViewPrefab and not WebViewPrefab, you can instead add the scripting symbol VUPLEX_DISABLE_SRP_WARNING to the project to ignore this warning.");
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
static void _assertThatOculusLowOverheadModeIsDisabled() {
|
||||
|
||||
if (!EditorUtils.XRSdkIsEnabled("oculus")) {
|
||||
return;
|
||||
}
|
||||
var lowOverheadModeEnabled = false;
|
||||
#if VUPLEX_OCULUS
|
||||
// The Oculus XR plugin is installed
|
||||
Unity.XR.Oculus.OculusLoader oculusLoader = Unity.XR.Oculus.OculusSettings.CreateInstance<Unity.XR.Oculus.OculusLoader>();
|
||||
Unity.XR.Oculus.OculusSettings oculusSettings = oculusLoader.GetSettings();
|
||||
lowOverheadModeEnabled = oculusSettings.LowOverheadMode;
|
||||
#elif UNITY_2019_2_OR_NEWER && !UNITY_2020_1_OR_NEWER
|
||||
// VROculus.lowOverheadMode is only supported from Unity 2019.2 - 2019.4
|
||||
lowOverheadModeEnabled = PlayerSettings.VROculus.lowOverheadMode;
|
||||
#endif
|
||||
if (lowOverheadModeEnabled) {
|
||||
throw new BuildFailedException("XR settings error: Vuplex 3D WebView requires that \"Low Overhead Mode\" be disabled in Oculus XR settings. Please disable Low Overhead Mode in Oculus XR settings.");
|
||||
}
|
||||
}
|
||||
|
||||
static void _forceInternetPermission() {
|
||||
|
||||
#if !VUPLEX_ANDROID_DISABLE_REQUIRE_INTERNET
|
||||
if (!PlayerSettings.Android.forceInternetPermission) {
|
||||
PlayerSettings.Android.forceInternetPermission = true;
|
||||
WebViewLogger.LogWarning("Just a heads-up: 3D WebView changed the Android player setting \"Internet Access\" to \"Require\" to ensure that it can fetch web pages from the internet. (This message will only be logged once.)");
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
static void _updateNativePluginSettings(string fileName) {
|
||||
|
||||
#if UNITY_2019_1_OR_NEWER
|
||||
var pluginAbsolutePaths = Directory.GetFiles(Application.dataPath, fileName, SearchOption.AllDirectories).ToList();
|
||||
// PluginImporter.GetAtPath() requires a relative path and doesn't support absolute paths.
|
||||
var pluginRelativePaths = pluginAbsolutePaths.Select(path => path.Replace(Application.dataPath, "Assets"));
|
||||
foreach (var filePath in pluginRelativePaths) {
|
||||
var pluginImporter = (PluginImporter)PluginImporter.GetAtPath(filePath);
|
||||
var changedSettings = false;
|
||||
// Set the libVuplexWebViewAndroid.so or libVuplexWebViewAndroidGecko.so plugin files to be preloaded, which is equivalent to
|
||||
// enabling their "Load on Startup" checkbox. This is done via a script because the .meta files
|
||||
// for these plugins was generated with an older version of Unity in order to be compatible with
|
||||
// 2018.4, which doesn't support the preload option. Enabling preloading is required for Vulkan support.
|
||||
if (!pluginImporter.isPreloaded) {
|
||||
pluginImporter.isPreloaded = true;
|
||||
changedSettings = true;
|
||||
}
|
||||
// Unity 2020.3 and newer support x86_64 for Chrome OS. 3D WebView ships x86_64 libraries, but they
|
||||
// are initially disabled because older versions of Unity can't handle if "CPU" is set to "X86_64".
|
||||
// So, we enable those x86_64 libraries dynamically here.
|
||||
#if UNITY_2020_3_OR_NEWER
|
||||
if (filePath.Contains("x86_64")) {
|
||||
if (!pluginImporter.GetCompatibleWithPlatform(BuildTarget.Android)) {
|
||||
pluginImporter.SetCompatibleWithPlatform(BuildTarget.Android, true);
|
||||
changedSettings = true;
|
||||
}
|
||||
if (pluginImporter.GetPlatformData(BuildTarget.Android, "CPU") != "X86_64") {
|
||||
pluginImporter.SetPlatformData(BuildTarget.Android, "CPU", "X86_64");
|
||||
changedSettings = true;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
if (changedSettings) {
|
||||
pluginImporter.SaveAndReimport();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
static void _validateGraphicsApi(bool native2DSupported) {
|
||||
|
||||
#if !VUPLEX_DISABLE_GRAPHICS_API_WARNING
|
||||
var autoGraphicsApiEnabled = PlayerSettings.GetUseDefaultGraphicsAPIs(BuildTarget.Android);
|
||||
var selectedGraphicsApi = PlayerSettings.GetGraphicsAPIs(BuildTarget.Android)[0];
|
||||
var vulkanEnabled = selectedGraphicsApi == GraphicsDeviceType.Vulkan;
|
||||
if (!(vulkanEnabled || autoGraphicsApiEnabled)) {
|
||||
// OpenGLES is selected, so nothing to warn about.
|
||||
return;
|
||||
}
|
||||
var warningPrefix = autoGraphicsApiEnabled ? "Auto Graphics API is enabled in Player Settings, which means that the Vulkan Graphics API may be used."
|
||||
: "The Vulkan Graphics API is enabled in Player Settings.";
|
||||
#if UNITY_2020_2_OR_NEWER
|
||||
// At build time, XRSettings.enabled is always false, so to check if XR is enabled,
|
||||
// we must instead check whether XRSettings.supportedDevices[0] != "None".
|
||||
var xrDevices = VXUtils.XRSettings.supportedDevices;
|
||||
var xrIsEnabled = xrDevices.Length > 0 && xrDevices[0] != "None";
|
||||
if (!xrIsEnabled) {
|
||||
WebViewLogger.LogWarning($"{warningPrefix} 3D WebView for Android supports Vulkan, but{(native2DSupported ? " unless the application only uses webviews in Native 2D Mode, then" : "")} the target Android devices must support the Vulkan extension VK_ANDROID_external_memory_android_hardware_buffer. That extension is supported on newer devices like Oculus Quest but isn't supported on all Android phones that support Vulkan. If your application is intended for general Android phones, it's recommended to{(native2DSupported ? " either only use Native 2D Mode or to" : "")} change the project's selected Graphics API to OpenGLES in Player Settings.{(native2DSupported ? " If your application is already only using Native 2D Mode, then please ignore this message." : "")} For more details, please see this page: <em>https://support.vuplex.com/articles/vulkan#android</em>");
|
||||
}
|
||||
#if !UNITY_2022_1_OR_NEWER
|
||||
if (PlayerSettings.GetMobileMTRendering(BuildTargetGroup.Android)) {
|
||||
WebViewLogger.LogWarning("Your project has Multithreaded Rendering and Vulkan enabled with a version of Unity older than 2022.1, which may cause web rendering to appear jittery. Unity 2022.1 or newer is recommended if your project requires Multithreaded Rendering to be enabled. For more details, please see this page: <em>https://support.vuplex.com/articles/vulkan</em>");
|
||||
}
|
||||
#endif
|
||||
#else
|
||||
throw new BuildFailedException(warningPrefix + " 3D WebView for Android requires Unity 2020.2 or newer in order to support Vulkan. So, please either upgrade to a newer version of Unity or change the selected Graphics API to OpenGLES in Player Settings.");
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
|
@ -0,0 +1,11 @@
|
|||
fileFormatVersion: 2
|
||||
guid: dd041d4a8ab324bc2899621ed1b3e5d9
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -0,0 +1,108 @@
|
|||
// Copyright (c) 2023 Vuplex Inc. All rights reserved.
|
||||
//
|
||||
// Licensed under the Vuplex Commercial Software Library License, you may
|
||||
// not use this file except in compliance with the License. You may obtain
|
||||
// a copy of the License at
|
||||
//
|
||||
// https://vuplex.com/commercial-library-license
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
using UnityEditor;
|
||||
|
||||
namespace Vuplex.WebView.Editor {
|
||||
|
||||
public abstract class BaseWebViewPrefabInspector : UnityEditor.Editor {
|
||||
|
||||
public virtual void OnEnable() {
|
||||
|
||||
_clickingEnabled = serializedObject.FindProperty("ClickingEnabled");
|
||||
_cursorIconsEnabled = serializedObject.FindProperty("CursorIconsEnabled");
|
||||
_dragMode = serializedObject.FindProperty("DragMode");
|
||||
_dragThreshold = serializedObject.FindProperty("DragThreshold");
|
||||
_hoveringEnabled = serializedObject.FindProperty("HoveringEnabled");
|
||||
_keyboardEnabled = serializedObject.FindProperty("KeyboardEnabled");
|
||||
_logConsoleMessages = serializedObject.FindProperty("LogConsoleMessages");
|
||||
_resolution = serializedObject.FindProperty("Resolution");
|
||||
_initialUrl = serializedObject.FindProperty("InitialUrl");
|
||||
_nativeOnScreenKeyboardEnabled = serializedObject.FindProperty("NativeOnScreenKeyboardEnabled");
|
||||
_pixelDensity = serializedObject.FindProperty("PixelDensity");
|
||||
_remoteDebuggingEnabled = serializedObject.FindProperty("RemoteDebuggingEnabled");
|
||||
_scrollingEnabled = serializedObject.FindProperty("ScrollingEnabled");
|
||||
_scrollingSensitivity = serializedObject.FindProperty("ScrollingSensitivity");
|
||||
}
|
||||
|
||||
public override void OnInspectorGUI() {
|
||||
|
||||
DocumentationLinkDrawer.DrawDocumentationLink(_getDocumentationLink());
|
||||
EditorGUILayout.Space();
|
||||
serializedObject.Update();
|
||||
EditorGUILayout.PropertyField(_initialUrl);
|
||||
EditorGUILayout.PropertyField(_resolution);
|
||||
EditorGUILayout.PropertyField(_dragMode);
|
||||
EditorGUILayout.PropertyField(_keyboardEnabled);
|
||||
|
||||
EditorGUILayout.Space();
|
||||
_renderCustomPlatformSpecificSettings();
|
||||
EditorGUILayout.PropertyField(_nativeOnScreenKeyboardEnabled);
|
||||
EditorGUILayout.PropertyField(_pixelDensity);
|
||||
EditorGUILayout.PropertyField(_cursorIconsEnabled);
|
||||
EditorGUILayout.Space();
|
||||
|
||||
EditorGUILayout.PropertyField(_remoteDebuggingEnabled);
|
||||
EditorGUILayout.PropertyField(_logConsoleMessages);
|
||||
EditorUtils.DrawLink("Troubleshooting help", "https://developer.vuplex.com/webview/troubleshooting", 24);
|
||||
EditorUtils.DrawLink("Remote debugging help", "https://support.vuplex.com/articles/how-to-debug-web-content", 27);
|
||||
EditorGUILayout.Space();
|
||||
EditorGUILayout.Space();
|
||||
#if UNITY_2019_1_OR_NEWER
|
||||
// BeginFoldoutHeaderGroup and EndFoldoutHeaderGroup only exist in Unity 2019.1 and newer.
|
||||
_showOtherSettings = EditorGUILayout.BeginFoldoutHeaderGroup(_showOtherSettings, "Other settings");
|
||||
#else
|
||||
// Fallback to creating a label for the section.
|
||||
_showOtherSettings = true;
|
||||
var style = new UnityEngine.GUIStyle { fontStyle = UnityEngine.FontStyle.Bold };
|
||||
style.normal.textColor = EditorGUIUtility.isProSkin ? new UnityEngine.Color(0.77f, 0.77f, 0.77f) : UnityEngine.Color.black;
|
||||
EditorGUILayout.LabelField("Other settings", style);
|
||||
#endif
|
||||
if (_showOtherSettings) {
|
||||
_renderCustomOtherSettings();
|
||||
EditorGUILayout.PropertyField(_clickingEnabled);
|
||||
EditorGUILayout.PropertyField(_hoveringEnabled);
|
||||
EditorGUILayout.PropertyField(_scrollingEnabled);
|
||||
EditorGUILayout.PropertyField(_scrollingSensitivity);
|
||||
EditorGUILayout.PropertyField(_dragThreshold);
|
||||
}
|
||||
#if UNITY_2019_1_OR_NEWER
|
||||
EditorGUILayout.EndFoldoutHeaderGroup();
|
||||
#endif
|
||||
EditorGUILayout.Space();
|
||||
serializedObject.ApplyModifiedProperties();
|
||||
}
|
||||
|
||||
SerializedProperty _clickingEnabled;
|
||||
SerializedProperty _cursorIconsEnabled;
|
||||
SerializedProperty _dragMode;
|
||||
SerializedProperty _dragThreshold;
|
||||
SerializedProperty _hoveringEnabled;
|
||||
SerializedProperty _keyboardEnabled;
|
||||
SerializedProperty _logConsoleMessages;
|
||||
SerializedProperty _resolution;
|
||||
SerializedProperty _initialUrl;
|
||||
SerializedProperty _nativeOnScreenKeyboardEnabled;
|
||||
SerializedProperty _pixelDensity;
|
||||
SerializedProperty _remoteDebuggingEnabled;
|
||||
SerializedProperty _scrollingEnabled;
|
||||
SerializedProperty _scrollingSensitivity;
|
||||
bool _showOtherSettings;
|
||||
|
||||
protected abstract string _getDocumentationLink();
|
||||
|
||||
protected virtual void _renderCustomOtherSettings() {}
|
||||
|
||||
protected virtual void _renderCustomPlatformSpecificSettings() {}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 12235521ed9354bd29154cb73f4a7c9d
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -0,0 +1,30 @@
|
|||
// Copyright (c) 2023 Vuplex Inc. All rights reserved.
|
||||
//
|
||||
// Licensed under the Vuplex Commercial Software Library License, you may
|
||||
// not use this file except in compliance with the License. You may obtain
|
||||
// a copy of the License at
|
||||
//
|
||||
// https://vuplex.com/commercial-library-license
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
using UnityEditor;
|
||||
|
||||
namespace Vuplex.WebView.Editor {
|
||||
|
||||
/// <summary>
|
||||
/// Adds a "View documentation" link to the inspector.
|
||||
/// </summary>
|
||||
[CustomEditor(typeof(CanvasPointerInputDetector))]
|
||||
public class CanvasPointerInputDetectorInspector : UnityEditor.Editor {
|
||||
|
||||
public override void OnInspectorGUI() {
|
||||
|
||||
DocumentationLinkDrawer.DrawDocumentationLink("https://developer.vuplex.com/webview/IPointerInputDetector");
|
||||
DrawDefaultInspector();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
fileFormatVersion: 2
|
||||
guid: a629eb6a80da745468dc349f3d92563f
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -0,0 +1,44 @@
|
|||
// Copyright (c) 2023 Vuplex Inc. All rights reserved.
|
||||
//
|
||||
// Licensed under the Vuplex Commercial Software Library License, you may
|
||||
// not use this file except in compliance with the License. You may obtain
|
||||
// a copy of the License at
|
||||
//
|
||||
// https://vuplex.com/commercial-library-license
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
using UnityEditor;
|
||||
|
||||
namespace Vuplex.WebView.Editor {
|
||||
|
||||
[CustomEditor(typeof(CanvasWebViewPrefab))]
|
||||
public class CanvasWebViewPrefabInspector : BaseWebViewPrefabInspector {
|
||||
|
||||
public override void OnEnable() {
|
||||
|
||||
base.OnEnable();
|
||||
serializedObject.Update();
|
||||
_native2DModeEnabled = serializedObject.FindProperty("Native2DModeEnabled");
|
||||
}
|
||||
|
||||
SerializedProperty _native2DModeEnabled;
|
||||
|
||||
protected override string _getDocumentationLink() {
|
||||
return "https://developer.vuplex.com/webview/CanvasWebViewPrefab";
|
||||
}
|
||||
|
||||
protected override void _renderCustomOtherSettings() {
|
||||
|
||||
EditorGUILayout.HelpBox("These settings are used with the default rendering mode but are ignored when running in native 2D mode.", MessageType.Info);
|
||||
}
|
||||
|
||||
protected override void _renderCustomPlatformSpecificSettings() {
|
||||
|
||||
EditorGUILayout.PropertyField(_native2DModeEnabled);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
fileFormatVersion: 2
|
||||
guid: bf1bcc6f301554381be0e9bdbbaf04b8
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -0,0 +1,241 @@
|
|||
/*
|
||||
* This file is a copy of Unity's [ConditionalCompilationUtility](https://github.com/Unity-Technologies/ConditionalCompilationUtility/tree/f364090bbda3728e1662074c969c2b7c3c34199b)
|
||||
* with the following modifications:
|
||||
* - Changed the namespace.
|
||||
* - Removed the usage of k_EnableCCU and instead hardcoded the use of the Vuplex OptionalDependencyAttribute class.
|
||||
* - Pasted the license below.
|
||||
* - Updated ForEachAssembly() to catch TypeLoadException in addition to ReflectionTypeLoadException.
|
||||
* - Made it so that if an optional dependency is removed, the scripting symbol for it is removed.
|
||||
* - Made it so that the legacy VUPLEX_CCU scripting symbol previously used by this script is automatically removed from the project.
|
||||
*
|
||||
* Unity Companion License 1.0 ("License")
|
||||
* Copyright (C) 2017-2018 Unity Technologies ApS ("Unity")
|
||||
*
|
||||
* Unity hereby grants to you a worldwide, non-exclusive, no-charge, and royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute the software that is made available with this License ("Software"), subject to the following terms and conditions:
|
||||
*
|
||||
* 1. Unity Companion Use Only. Exercise of the license granted herein is limited to exercise for the creation, use, and/or distribution of applications, software, or other content pursuant to a valid Unity development engine software license ("Engine License"). That means while use of the Software is not limited to use in the software licensed under the Engine License, the Software may not be used for any purpose other than the creation, use, and/or distribution of Engine License-dependent applications, software, or other content. No other exercise of the license granted herein is permitted.
|
||||
*
|
||||
* 2. No Modification of Engine License. Neither this License nor any exercise of the license granted herein modifies the Engine License in any way.
|
||||
*
|
||||
* 3. Ownership & Grant Back to You.
|
||||
*
|
||||
* 3.1 You own your content. In this License, "derivative works" means derivatives of the Software itself--works derived only from the Software by you under this License (for example, modifying the code of the Software itself to improve its efficacy); "derivative works" of the Software do not include, for example, games, apps, or content that you create using the Software. You keep all right, title, and interest to your own content.
|
||||
*
|
||||
* 3.2 Unity owns its content. While you keep all right, title, and interest to your own content per the above, as between Unity and you, Unity will own all right, title, and interest to all intellectual property rights (including patent, trademark, and copyright) in the Software and derivative works of the Software, and you hereby assign and agree to assign all such rights in those derivative works to Unity.
|
||||
*
|
||||
* 3.3 You have a license to those derivative works. Subject to this License, Unity grants to you the same worldwide, non-exclusive, no-charge, and royalty-free copyright license to derivative works of the Software you create as is granted to you for the Software under this License.
|
||||
*
|
||||
* 4. Trademarks. You are not granted any right or license under this License to use any trademarks, service marks, trade names, products names, or branding of Unity or its affiliates ("Trademarks"). Descriptive uses of Trademarks are permitted; see, for example, Unity's Branding Usage Guidelines at https://unity3d.com/public-relations/brand.
|
||||
*
|
||||
* 5. Notices & Third-Party Rights. This License, including the copyright notice above, must be provided in all substantial portions of the Software and derivative works thereof (or, if that is impracticable, in any other location where such notices are customarily placed). Further, if the Software is accompanied by a Unity "third-party notices" or similar file, you acknowledge and agree that software identified in that file is governed by those separate license terms.
|
||||
*
|
||||
* 6. DISCLAIMER, LIMITATION OF LIABILITY. THE SOFTWARE AND ANY DERIVATIVE WORKS THEREOF IS PROVIDED ON AN "AS IS" BASIS, AND IS PROVIDED WITHOUT WARRANTY OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND/OR NONINFRINGEMENT. IN NO EVENT SHALL ANY COPYRIGHT HOLDER OR AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES (WHETHER DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL, INCLUDING PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, LOSS OF USE, DATA, OR PROFITS, AND BUSINESS INTERRUPTION), OR OTHER LIABILITY WHATSOEVER, WHETHER IN AN ACTION OF CONTRACT, TORT, OR OTHERWISE, ARISING FROM OR OUT OF, OR IN CONNECTION WITH, THE SOFTWARE OR ANY DERIVATIVE WORKS THEREOF OR THE USE OF OR OTHER DEALINGS IN SAME, EVEN WHERE ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* 7. USE IS ACCEPTANCE and License Versions. Your receipt and use of the Software constitutes your acceptance of this License and its terms and conditions. Software released by Unity under this License may be modified or updated and the License with it; upon any such modification or update, you will comply with the terms of the updated License for any use of any of the Software under the updated License.
|
||||
*
|
||||
* 8. Use in Compliance with Law and Termination. Your exercise of the license granted herein will at all times be in compliance with applicable law and will not infringe any proprietary rights (including intellectual property rights); this License will terminate immediately on any breach by you of this License.
|
||||
*
|
||||
* 9. Severability. If any provision of this License is held to be unenforceable or invalid, that provision will be enforced to the maximum extent possible and the other provisions will remain in full force and effect.
|
||||
*
|
||||
* 10. Governing Law and Venue. This License is governed by and construed in accordance with the laws of Denmark, except for its conflict of laws rules; the United Nations Convention on Contracts for the International Sale of Goods will not apply. If you reside (or your principal place of business is) within the United States, you and Unity agree to submit to the personal and exclusive jurisdiction of and venue in the state and federal courts located in San Francisco County, California concerning any dispute arising out of this License ("Dispute"). If you reside (or your principal place of business is) outside the United States, you and Unity agree to submit to the personal and exclusive jurisdiction of and venue in the courts located in Copenhagen, Denmark concerning any Dispute.
|
||||
*/
|
||||
#if UNITY_EDITOR
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using UnityEditor;
|
||||
using UnityEditor.Compilation;
|
||||
using Assembly = System.Reflection.Assembly;
|
||||
using Debug = UnityEngine.Debug;
|
||||
using System.Threading;
|
||||
using VuplexOptionalDependencyAttribute = Vuplex.WebView.Editor.OptionalDependencyAttribute;
|
||||
|
||||
namespace Vuplex.WebView.ConditionalCompilation
|
||||
{
|
||||
/// <summary>
|
||||
/// The Conditional Compilation Utility (CCU) will add defines to the build settings once dependendent classes have been detected.
|
||||
/// A goal of the CCU was to not require the CCU itself for other libraries to specify optional dependencies. So, it relies on the
|
||||
/// specification of at least one custom attribute in a project that makes use of it. Here is an example:
|
||||
///
|
||||
/// [Conditional(UNITY_CCU)] // | This is necessary for CCU to pick up the right attributes
|
||||
/// public class OptionalDependencyAttribute : Attribute // | Must derive from System.Attribute
|
||||
/// {
|
||||
/// public string dependentClass; // | Required field specifying the fully qualified dependent class
|
||||
/// public string define; // | Required field specifying the define to add
|
||||
/// }
|
||||
///
|
||||
/// Then, simply specify the assembly attribute(s) you created in any of your C# files:
|
||||
/// [assembly: OptionalDependency("UnityEngine.InputNew.InputSystem", "USE_NEW_INPUT")]
|
||||
/// [assembly: OptionalDependency("Valve.VR.IVRSystem", "ENABLE_STEAMVR_INPUT")]
|
||||
///
|
||||
/// namespace Foo
|
||||
/// {
|
||||
/// ...
|
||||
/// }
|
||||
/// </summary>
|
||||
[InitializeOnLoad]
|
||||
static class ConditionalCompilationUtility
|
||||
{
|
||||
const string k_PreviousUnsuccessfulDefines = "ConditionalCompilationUtility.PreviousUnsuccessfulDefines";
|
||||
|
||||
public static string[] defines { private set; get; }
|
||||
|
||||
static Type _dependencyAttributeType = typeof(VuplexOptionalDependencyAttribute);
|
||||
|
||||
static ConditionalCompilationUtility()
|
||||
{
|
||||
#if UNITY_2017_3_OR_NEWER
|
||||
var errorsFound = false;
|
||||
CompilationPipeline.assemblyCompilationFinished += (outputPath, compilerMessages) =>
|
||||
{
|
||||
var errorCount = compilerMessages.Count(m => m.type == CompilerMessageType.Error && m.message.Contains("CS0246"));
|
||||
if (errorCount > 0 && !errorsFound)
|
||||
{
|
||||
var previousDefines = EditorPrefs.GetString(k_PreviousUnsuccessfulDefines);
|
||||
var currentDefines = string.Join(";", defines);
|
||||
if (currentDefines != previousDefines)
|
||||
{
|
||||
// Store the last set of unsuccessful defines to avoid ping-ponging
|
||||
EditorPrefs.SetString(k_PreviousUnsuccessfulDefines, currentDefines);
|
||||
|
||||
// Since there were errors in compilation, try removing any dependency defines
|
||||
UpdateDependencies(true);
|
||||
}
|
||||
errorsFound = true;
|
||||
}
|
||||
};
|
||||
|
||||
AssemblyReloadEvents.afterAssemblyReload += () =>
|
||||
{
|
||||
if (!errorsFound)
|
||||
UpdateDependencies();
|
||||
};
|
||||
#else
|
||||
UpdateDependencies();
|
||||
#endif
|
||||
}
|
||||
|
||||
static void UpdateDependencies(bool reset = false)
|
||||
{
|
||||
var buildTargetGroup = EditorUserBuildSettings.selectedBuildTargetGroup;
|
||||
if (buildTargetGroup == BuildTargetGroup.Unknown)
|
||||
{
|
||||
var propertyInfo = typeof(EditorUserBuildSettings).GetProperty("activeBuildTargetGroup", BindingFlags.Static | BindingFlags.NonPublic);
|
||||
if (propertyInfo != null)
|
||||
buildTargetGroup = (BuildTargetGroup)propertyInfo.GetValue(null, null);
|
||||
}
|
||||
|
||||
var previousProjectDefines = PlayerSettings.GetScriptingDefineSymbolsForGroup(buildTargetGroup);
|
||||
var projectDefines = previousProjectDefines.Split(';').ToList();
|
||||
var ccuDefines = new List<string>();
|
||||
|
||||
var conditionalAttributeType = typeof(ConditionalAttribute);
|
||||
|
||||
const string kDependentClass = "dependentClass";
|
||||
const string kDefine = "define";
|
||||
|
||||
var dependencies = new Dictionary<string, string>();
|
||||
ForEachAssembly(assembly =>
|
||||
{
|
||||
var typeAttributes = assembly.GetCustomAttributes(_dependencyAttributeType, false);
|
||||
foreach (var typeAttribute in typeAttributes)
|
||||
{
|
||||
// These fields were already validated in a previous step
|
||||
var dependentClass = _dependencyAttributeType.GetField(kDependentClass).GetValue(typeAttribute) as string;
|
||||
var define = _dependencyAttributeType.GetField(kDefine).GetValue(typeAttribute) as string;
|
||||
|
||||
if (!string.IsNullOrEmpty(dependentClass) && !string.IsNullOrEmpty(define) && !dependencies.ContainsKey(dependentClass))
|
||||
dependencies.Add(dependentClass, define);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
ForEachAssembly(assembly =>
|
||||
{
|
||||
foreach (var dependency in dependencies)
|
||||
{
|
||||
var typeName = dependency.Key;
|
||||
var define = dependency.Value;
|
||||
|
||||
var type = assembly.GetType(typeName);
|
||||
if (type != null)
|
||||
{
|
||||
if (!projectDefines.Contains(define, StringComparer.OrdinalIgnoreCase))
|
||||
projectDefines.Add(define);
|
||||
|
||||
ccuDefines.Add(define);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Remove scripting symbols for optional dependencies that have been removed.
|
||||
foreach (var define in dependencies.Values)
|
||||
{
|
||||
if (projectDefines.Contains(define) && !ccuDefines.Contains(define))
|
||||
projectDefines.Remove(define);
|
||||
}
|
||||
|
||||
// Remove the legacy VUPLEX_CCU scripting symbol that this script used to add.
|
||||
if (projectDefines.Contains("VUPLEX_CCU"))
|
||||
projectDefines.Remove("VUPLEX_CCU");
|
||||
|
||||
if (reset)
|
||||
{
|
||||
foreach (var define in dependencies.Values)
|
||||
{
|
||||
projectDefines.Remove(define);
|
||||
}
|
||||
|
||||
ccuDefines.Clear();
|
||||
}
|
||||
|
||||
ConditionalCompilationUtility.defines = ccuDefines.ToArray();
|
||||
|
||||
var newDefines = string.Join(";", projectDefines.ToArray());
|
||||
if (previousProjectDefines != newDefines)
|
||||
PlayerSettings.SetScriptingDefineSymbolsForGroup(buildTargetGroup, newDefines);
|
||||
}
|
||||
|
||||
static void ForEachAssembly(Action<Assembly> callback)
|
||||
{
|
||||
var assemblies = AppDomain.CurrentDomain.GetAssemblies();
|
||||
foreach (var assembly in assemblies)
|
||||
{
|
||||
try
|
||||
{
|
||||
callback(assembly);
|
||||
}
|
||||
catch (Exception ex) when (ex is ReflectionTypeLoadException || ex is TypeLoadException)
|
||||
{
|
||||
// Skip any assemblies that don't load properly
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void ForEachType(Action<Type> callback)
|
||||
{
|
||||
ForEachAssembly(assembly =>
|
||||
{
|
||||
var types = assembly.GetTypes();
|
||||
foreach (var t in types)
|
||||
callback(t);
|
||||
});
|
||||
}
|
||||
|
||||
static IEnumerable<Type> GetAssignableTypes(Type type, Func<Type, bool> predicate = null)
|
||||
{
|
||||
var list = new List<Type>();
|
||||
ForEachType(t =>
|
||||
{
|
||||
if (type.IsAssignableFrom(t) && !t.IsInterface && !t.IsAbstract && (predicate == null || predicate(t)))
|
||||
list.Add(t);
|
||||
});
|
||||
|
||||
return list;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
|
@ -0,0 +1,11 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 55a3f084f6ac84e1db970f412e251da0
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -0,0 +1,30 @@
|
|||
// Copyright (c) 2023 Vuplex Inc. All rights reserved.
|
||||
//
|
||||
// Licensed under the Vuplex Commercial Software Library License, you may
|
||||
// not use this file except in compliance with the License. You may obtain
|
||||
// a copy of the License at
|
||||
//
|
||||
// https://vuplex.com/commercial-library-license
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
using UnityEditor;
|
||||
|
||||
namespace Vuplex.WebView.Editor {
|
||||
|
||||
/// <summary>
|
||||
/// Adds a "View documentation" link to the inspector.
|
||||
/// </summary>
|
||||
[CustomEditor(typeof(DefaultPointerInputDetector))]
|
||||
public class DefaultPointerInputDetectorInspector : UnityEditor.Editor {
|
||||
|
||||
public override void OnInspectorGUI() {
|
||||
|
||||
DocumentationLinkDrawer.DrawDocumentationLink("https://developer.vuplex.com/webview/IPointerInputDetector");
|
||||
DrawDefaultInspector();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
fileFormatVersion: 2
|
||||
guid: a4161c7b2198c4efcbd3123708e4091a
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -0,0 +1,29 @@
|
|||
// Copyright (c) 2023 Vuplex Inc. All rights reserved.
|
||||
//
|
||||
// Licensed under the Vuplex Commercial Software Library License, you may
|
||||
// not use this file except in compliance with the License. You may obtain
|
||||
// a copy of the License at
|
||||
//
|
||||
// https://vuplex.com/commercial-library-license
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
using UnityEngine;
|
||||
using UnityEditor;
|
||||
|
||||
namespace Vuplex.WebView.Editor {
|
||||
|
||||
public static class DocumentationLinkDrawer {
|
||||
|
||||
/// <summary>
|
||||
/// Draws a "View documentation" link.
|
||||
/// </summary>
|
||||
public static void DrawDocumentationLink(string url) {
|
||||
|
||||
EditorUtils.DrawLink("View documentation", url, 23);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 15705ab5708a341e0a98cb0af0b6fa84
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -0,0 +1,154 @@
|
|||
// Copyright (c) 2023 Vuplex Inc. All rights reserved.
|
||||
//
|
||||
// Licensed under the Vuplex Commercial Software Library License, you may
|
||||
// not use this file except in compliance with the License. You may obtain
|
||||
// a copy of the License at
|
||||
//
|
||||
// https://vuplex.com/commercial-library-license
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
using UnityEditor;
|
||||
using Vuplex.WebView.Internal;
|
||||
|
||||
namespace Vuplex.WebView.Editor {
|
||||
|
||||
public static class EditorUtils {
|
||||
|
||||
public static void CopyAndReplaceDirectory(string srcPath, string dstPath, bool ignoreMetaFiles = true) {
|
||||
|
||||
if (Directory.Exists(dstPath)) {
|
||||
Directory.Delete(dstPath, true);
|
||||
}
|
||||
if (File.Exists(dstPath)) {
|
||||
File.Delete(dstPath);
|
||||
}
|
||||
Directory.CreateDirectory(dstPath);
|
||||
|
||||
foreach (var file in Directory.GetFiles(srcPath)) {
|
||||
if (!ignoreMetaFiles || Path.GetExtension(file) != ".meta") {
|
||||
File.Copy(file, Path.Combine(dstPath, Path.GetFileName(file)));
|
||||
}
|
||||
}
|
||||
foreach (var dir in Directory.GetDirectories(srcPath)) {
|
||||
CopyAndReplaceDirectory(dir, Path.Combine(dstPath, Path.GetFileName(dir)), ignoreMetaFiles);
|
||||
}
|
||||
}
|
||||
|
||||
public static void DrawLink(string linkText, string url, int underlineLength) {
|
||||
|
||||
var linkStyle = new GUIStyle {
|
||||
richText = true,
|
||||
padding = new RectOffset {
|
||||
top = 2,
|
||||
bottom = 2
|
||||
}
|
||||
};
|
||||
var linkClicked = GUILayout.Button(
|
||||
EditorUtils.TextWithColor(linkText, EditorUtils.GetLinkColor()),
|
||||
linkStyle
|
||||
);
|
||||
var linkRect = GUILayoutUtility.GetLastRect();
|
||||
EditorGUIUtility.AddCursorRect(linkRect, MouseCursor.Link);
|
||||
|
||||
// Unity's editor GUI doesn't support underlines, so fake it.
|
||||
var underscores = new string[underlineLength];
|
||||
for (var i = 0; i < underlineLength; i++) {
|
||||
underscores[i] = "_";
|
||||
}
|
||||
var underline = String.Join("", underscores);
|
||||
|
||||
GUI.Label(
|
||||
linkRect,
|
||||
EditorUtils.TextWithColor(underline, EditorUtils.GetLinkColor()),
|
||||
new GUIStyle {
|
||||
richText = true,
|
||||
padding = new RectOffset {
|
||||
top = 4,
|
||||
bottom = 2
|
||||
}
|
||||
});
|
||||
if (linkClicked) {
|
||||
Application.OpenURL(url);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the path to a given directory, searching for it if needed.
|
||||
/// If `directoryToSearch` isn't provided, `Application.dataPath` is used.
|
||||
/// </summary>
|
||||
public static string FindDirectory(string expectedPath, string directoryToSearch = null, string[] ignorePaths = null) {
|
||||
|
||||
if (Directory.Exists(expectedPath)) {
|
||||
return expectedPath;
|
||||
}
|
||||
// The directory isn't in the expected location, so fall back to finding it.
|
||||
var directoryName = Path.GetFileName(expectedPath);
|
||||
if (directoryToSearch == null) {
|
||||
directoryToSearch = Application.dataPath;
|
||||
}
|
||||
var directories = Directory.GetDirectories(directoryToSearch, directoryName, SearchOption.AllDirectories);
|
||||
if (ignorePaths != null) {
|
||||
directories = directories.ToList().Where(d => !ignorePaths.Contains(d)).ToArray();
|
||||
}
|
||||
return _returnOnePathOrThrow(directories, expectedPath, directoryToSearch, true);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the path to a given file, searching for it if needed.
|
||||
/// If `directoryToSearch` isn't provided, `Application.dataPath` is used.
|
||||
/// </summary>
|
||||
public static string FindFile(string expectedPath, string directoryToSearch = null) {
|
||||
|
||||
if (File.Exists(expectedPath)) {
|
||||
return expectedPath;
|
||||
}
|
||||
// The file isn't in the expected location, so fall back to finding it.
|
||||
var fileName = Path.GetFileName(expectedPath);
|
||||
if (directoryToSearch == null) {
|
||||
directoryToSearch = Application.dataPath;
|
||||
}
|
||||
var files = Directory.GetFiles(directoryToSearch, fileName, SearchOption.AllDirectories);
|
||||
return _returnOnePathOrThrow(files, expectedPath, directoryToSearch);
|
||||
}
|
||||
|
||||
public static string GetLinkColor() => EditorGUIUtility.isProSkin ? "#7faef0ff" : "#11468aff";
|
||||
|
||||
public static string TextWithColor(string text, string color) => $"<color={color}>{text}</color>";
|
||||
|
||||
public static bool XRSdkIsEnabled(string sdkNameFragment) {
|
||||
|
||||
// This approach is taken because the legacy Oculus XR plugin identifies itself as "Oculus", but
|
||||
// the new XR plugin shows up as two devices named "oculus input" and "oculus display". Similarly,
|
||||
// the MockHMD plugin used to identify itself as "MockHMD" but now it shows up as "MockHMD Head Tracking"
|
||||
// and "MockHMD Display".
|
||||
foreach (var sdkName in VXUtils.XRSettings.supportedDevices) {
|
||||
if (sdkName.ToLowerInvariant().Contains(sdkNameFragment.ToLowerInvariant())) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
static string _returnOnePathOrThrow(string[] paths, string expectedPath, string directorySearched, bool isDirectory = false) {
|
||||
|
||||
var itemName = isDirectory ? "directory" : "file";
|
||||
if (paths.Length == 1) {
|
||||
return paths[0];
|
||||
}
|
||||
var targetFileOrDirectoryName = Path.GetFileName(expectedPath);
|
||||
if (paths.Length > 1) {
|
||||
var joinedPaths = String.Join(", ", paths);
|
||||
throw new Exception($"Unable to determine which version of the {itemName} {targetFileOrDirectoryName} to use because multiple instances ({paths.Length}) were unexpectedly found in the directory {directorySearched}. Please review the list of instances found and remove duplicates so that there is only one: {joinedPaths}");
|
||||
}
|
||||
throw new Exception($"Unable to locate the {itemName} {targetFileOrDirectoryName}. It's not in the expected location ({expectedPath}), and no instances were found in the directory {directorySearched}. To resolve this issue, please try deleting your existing Assets/Vuplex directory and reinstalling 3D WebView.");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 70f8251b128d6ed4fb9dfd2c185496cc
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -0,0 +1,28 @@
|
|||
// Copyright (c) 2023 Vuplex Inc. All rights reserved.
|
||||
//
|
||||
// Licensed under the Vuplex Commercial Software Library License, you may
|
||||
// not use this file except in compliance with the License. You may obtain
|
||||
// a copy of the License at
|
||||
//
|
||||
// https://vuplex.com/commercial-library-license
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
using UnityEngine;
|
||||
using UnityEditor;
|
||||
using Vuplex.WebView.Internal;
|
||||
|
||||
namespace Vuplex.WebView.Editor {
|
||||
|
||||
[CustomPropertyDrawer(typeof(LabelAttribute))]
|
||||
class LabelDrawer : PropertyDrawer {
|
||||
|
||||
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) {
|
||||
|
||||
EditorGUI.PropertyField(position, property, new GUIContent((attribute as LabelAttribute).Label, property.tooltip));
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
fileFormatVersion: 2
|
||||
guid: f7cc4d471c1d54e75b87468526b602cd
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -0,0 +1,37 @@
|
|||
// Copyright (c) 2023 Vuplex Inc. All rights reserved.
|
||||
//
|
||||
// Licensed under the Vuplex Commercial Software Library License, you may
|
||||
// not use this file except in compliance with the License. You may obtain
|
||||
// a copy of the License at
|
||||
//
|
||||
// https://vuplex.com/commercial-library-license
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
#if UNITY_EDITOR
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using Vuplex.WebView.ConditionalCompilation;
|
||||
|
||||
namespace Vuplex.WebView.Editor {
|
||||
|
||||
/// <summary>
|
||||
/// From the example of how to use Unity's ConditionalCompilationUtility:
|
||||
/// https://github.com/Unity-Technologies/ConditionalCompilationUtility/tree/f364090bbda3728e1662074c969c2b7c3c34199b
|
||||
/// </summary>
|
||||
[AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)]
|
||||
// Refer to System.Attribute by its full name in case the project has a class named "Attribute" in the global namespace.
|
||||
public class OptionalDependencyAttribute : System.Attribute {
|
||||
public string dependentClass;
|
||||
public string define;
|
||||
|
||||
public OptionalDependencyAttribute(string dependentClass, string define) {
|
||||
this.dependentClass = dependentClass;
|
||||
this.define = define;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
|
@ -0,0 +1,11 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 36b97f9b079074ee685a6ee41adc0f3b
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -0,0 +1,27 @@
|
|||
// Copyright (c) 2023 Vuplex Inc. All rights reserved.
|
||||
//
|
||||
// Licensed under the Vuplex Commercial Software Library License, you may
|
||||
// not use this file except in compliance with the License. You may obtain
|
||||
// a copy of the License at
|
||||
//
|
||||
// https://vuplex.com/commercial-library-license
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
// This can't be imported as just OptionalDependencyAttribute because
|
||||
// it would clash with other packages that define that attribute, like
|
||||
// XR Interaction Toolkit.
|
||||
#if UNITY_EDITOR
|
||||
using VuplexOptionalDependencyAttribute = Vuplex.WebView.Editor.OptionalDependencyAttribute;
|
||||
|
||||
// Detect if specific packages are installed and, if so,
|
||||
// define scripting symbols so that 3D WebView can handle them.
|
||||
[assembly: VuplexOptionalDependency("Unity.XR.Oculus.OculusLoader", "VUPLEX_OCULUS")]
|
||||
[assembly: VuplexOptionalDependency("OVRProjectConfig", "VUPLEX_OCULUS_PROJECT_CONFIG")]
|
||||
[assembly: VuplexOptionalDependency("UnityEngine.XR.Interaction.Toolkit.XRBaseInteractor", "VUPLEX_XR_INTERACTION_TOOLKIT")]
|
||||
[assembly: VuplexOptionalDependency("Microsoft.MixedReality.Toolkit.MixedRealityToolkit", "VUPLEX_MRTK")]
|
||||
[assembly: VuplexOptionalDependency("Vuplex.WebView.StandaloneWebPlugin", "VUPLEX_STANDALONE")]
|
||||
#endif
|
|
@ -0,0 +1,11 @@
|
|||
fileFormatVersion: 2
|
||||
guid: e6ee0f86057d9439896db7eb0e9cf5da
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -0,0 +1,25 @@
|
|||
// Copyright (c) 2023 Vuplex Inc. All rights reserved.
|
||||
//
|
||||
// Licensed under the Vuplex Commercial Software Library License, you may
|
||||
// not use this file except in compliance with the License. You may obtain
|
||||
// a copy of the License at
|
||||
//
|
||||
// https://vuplex.com/commercial-library-license
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
using UnityEditor;
|
||||
|
||||
namespace Vuplex.WebView.Editor {
|
||||
|
||||
[CustomEditor(typeof(WebViewPrefab))]
|
||||
public class WebViewPrefabInspector : BaseWebViewPrefabInspector {
|
||||
|
||||
protected override string _getDocumentationLink() {
|
||||
return "https://developer.vuplex.com/webview/WebViewPrefab";
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
fileFormatVersion: 2
|
||||
guid: b88a73aa4eea34b3eb0c643e900629a0
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 7db53a5c7645d49dc9cb47325b1c4c44
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: c9e0722a5d73544aea97fc9f27d57a28
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
After Width: | Height: | Size: 412 KiB |
|
@ -0,0 +1,140 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 9f7b60728c99d4fe6b67e0d86b1e7b5e
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 1
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 1
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: -1
|
||||
aniso: -1
|
||||
mipBias: -100
|
||||
wrapU: -1
|
||||
wrapV: -1
|
||||
wrapW: -1
|
||||
nPOTScale: 1
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 0
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
applyGammaDecoding: 1
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: iPhone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 1
|
||||
- serializedVersion: 3
|
||||
buildTarget: Android
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 1
|
||||
- serializedVersion: 3
|
||||
buildTarget: Windows Store Apps
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 1
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID:
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: e215f6e969624419f9f78abee1aacc76
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: d50ed4d84413b4b38aef9d7a59ed5f22
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -0,0 +1,91 @@
|
|||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: AndroidWebMaterial
|
||||
m_Shader: {fileID: 4800000, guid: 6e30a287c37c64ea8a78626f476223bb, type: 3}
|
||||
m_ShaderKeywords: FLIP_Y _ALPHATEST_ON _STEREOMODE_NONE
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: 3000
|
||||
stringTagMap: {}
|
||||
disabledShaderPasses: []
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _BumpMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailAlbedoMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailMask:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailNormalMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _EmissionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: -1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MainTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MetallicGlossMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _OcclusionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ParallaxMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Floats:
|
||||
- _BumpScale: 1
|
||||
- _ColorMask: 15
|
||||
- _Cutoff: 0.5
|
||||
- _DetailNormalMapScale: 1
|
||||
- _DstBlend: 0
|
||||
- _EnableGammaCorrection: 0
|
||||
- _FlipX: 0
|
||||
- _FlipY: 1
|
||||
- _Gamma: 0.6
|
||||
- _GlossMapScale: 1
|
||||
- _Glossiness: 0.5
|
||||
- _GlossyReflections: 1
|
||||
- _Metallic: 0
|
||||
- _Mode: 1
|
||||
- _OcclusionStrength: 1
|
||||
- _OverrideStereoToMono: 0
|
||||
- _Parallax: 0.02
|
||||
- _SmoothnessTextureChannel: 0
|
||||
- _SpecularHighlights: 1
|
||||
- _SrcBlend: 1
|
||||
- _Stencil: 0
|
||||
- _StencilComp: 8
|
||||
- _StencilOp: 0
|
||||
- _StencilReadMask: 255
|
||||
- _StencilWriteMask: 255
|
||||
- _StereoMode: 0
|
||||
- _UVSec: 0
|
||||
- _ZWrite: 1
|
||||
m_Colors:
|
||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _CropRect: {r: 0, g: 0, b: 0, a: 0}
|
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
- _VideoCutoutRect: {r: 0, g: 0, b: 0, a: 0}
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: b330f1b65a93d4b708726acb581f07b0
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -0,0 +1,91 @@
|
|||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: DefaultWebMaterial
|
||||
m_Shader: {fileID: 4800000, guid: 4e653f72759f94e82b22355692823efe, type: 3}
|
||||
m_ShaderKeywords: FLIP_Y _ALPHATEST_ON _STEREOMODE_NONE
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: 3000
|
||||
stringTagMap: {}
|
||||
disabledShaderPasses: []
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _BumpMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailAlbedoMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailMask:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailNormalMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _EmissionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: -1, y: -1}
|
||||
m_Offset: {x: 1, y: 1}
|
||||
- _MainTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MetallicGlossMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _OcclusionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ParallaxMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Floats:
|
||||
- _BumpScale: 1
|
||||
- _ColorMask: 15
|
||||
- _Cutoff: 0.5
|
||||
- _DetailNormalMapScale: 1
|
||||
- _DstBlend: 0
|
||||
- _EnableGammaCorrection: 0
|
||||
- _FlipX: 0
|
||||
- _FlipY: 1
|
||||
- _Gamma: 0.6
|
||||
- _GlossMapScale: 1
|
||||
- _Glossiness: 0.5
|
||||
- _GlossyReflections: 1
|
||||
- _Metallic: 0
|
||||
- _Mode: 1
|
||||
- _OcclusionStrength: 1
|
||||
- _OverrideStereoToMono: 0
|
||||
- _Parallax: 0.02
|
||||
- _SmoothnessTextureChannel: 0
|
||||
- _SpecularHighlights: 1
|
||||
- _SrcBlend: 1
|
||||
- _Stencil: 0
|
||||
- _StencilComp: 8
|
||||
- _StencilOp: 0
|
||||
- _StencilReadMask: 255
|
||||
- _StencilWriteMask: 255
|
||||
- _StereoMode: 0
|
||||
- _UVSec: 0
|
||||
- _ZWrite: 1
|
||||
m_Colors:
|
||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _CropRect: {r: 0, g: 0, b: 0, a: 0}
|
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
- _VideoCutoutRect: {r: 0, g: 0, b: 0, a: 0}
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: c1ebc368a4559473c933b46a16a9cc9e
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|