浏览代码

Added Rebind UI and Setup SO System for Device Display Values

/main
andytouch 4 年前
当前提交
5ad7fa97
共有 44 个文件被更改,包括 3585 次插入118 次删除
  1. 10
      InputSystem_LocalMultiplayer_Project/Assets/Prefabs/Warrior/Warrior.prefab
  2. 10
      InputSystem_LocalMultiplayer_Project/Assets/RenderPipeline/UniversalRenderPipelineAsset.asset
  3. 448
      InputSystem_LocalMultiplayer_Project/Assets/Scenes/Scene_Example_Warriors.unity
  4. 54
      InputSystem_LocalMultiplayer_Project/Assets/Scripts/GameManager.cs
  5. 29
      InputSystem_LocalMultiplayer_Project/Assets/Scripts/PlayerController.cs
  6. 47
      InputSystem_LocalMultiplayer_Project/Assets/Scripts/PlayerUIManager.cs
  7. 64
      InputSystem_LocalMultiplayer_Project/Assets/Warrior/Animations/AnimationController_Warrior.controller
  8. 334
      InputSystem_LocalMultiplayer_Project/Assets/Warrior/Model/Warrior_bindpose.fbx.meta
  9. 8
      InputSystem_LocalMultiplayer_Project/Assets/DistortionTrail.meta
  10. 8
      InputSystem_LocalMultiplayer_Project/Assets/Editor.meta
  11. 1001
      InputSystem_LocalMultiplayer_Project/Assets/Prefabs/UI/Panel_PlayerRebindPanel.prefab
  12. 7
      InputSystem_LocalMultiplayer_Project/Assets/Prefabs/UI/Panel_PlayerRebindPanel.prefab.meta
  13. 81
      InputSystem_LocalMultiplayer_Project/Assets/Prefabs/Warrior/Warrior_Sword.prefab
  14. 7
      InputSystem_LocalMultiplayer_Project/Assets/Prefabs/Warrior/Warrior_Sword.prefab.meta
  15. 139
      InputSystem_LocalMultiplayer_Project/Assets/Prefabs/Warrior/WeaponTrail.prefab
  16. 7
      InputSystem_LocalMultiplayer_Project/Assets/Prefabs/Warrior/WeaponTrail.prefab.meta
  17. 417
      InputSystem_LocalMultiplayer_Project/Assets/Scripts/CustomRebindUIBehaviour.cs
  18. 11
      InputSystem_LocalMultiplayer_Project/Assets/Scripts/CustomRebindUIBehaviour.cs.meta
  19. 62
      InputSystem_LocalMultiplayer_Project/Assets/Scripts/DeviceDisplayConfigurator.cs
  20. 49
      InputSystem_LocalMultiplayer_Project/Assets/Scripts/MenuUIManager.cs
  21. 11
      InputSystem_LocalMultiplayer_Project/Assets/Scripts/MenuUIManager.cs.meta
  22. 24
      InputSystem_LocalMultiplayer_Project/Assets/Scripts/PlayerRebindUIDeviceDisplayBehaviour.cs
  23. 11
      InputSystem_LocalMultiplayer_Project/Assets/Scripts/PlayerRebindUIDeviceDisplayBehaviour.cs.meta
  24. 183
      InputSystem_LocalMultiplayer_Project/Assets/Scripts/ReorderableListUtility.cs
  25. 11
      InputSystem_LocalMultiplayer_Project/Assets/Scripts/ReorderableListUtility.cs.meta
  26. 10
      InputSystem_LocalMultiplayer_Project/Assets/Scripts/SimplifyDeviceString.cs
  27. 11
      InputSystem_LocalMultiplayer_Project/Assets/Scripts/SimplifyDeviceString.cs.meta
  28. 27
      InputSystem_LocalMultiplayer_Project/Assets/DeviceDisplayConfigurator/Device Display Configurator.asset
  29. 8
      InputSystem_LocalMultiplayer_Project/Assets/DeviceDisplayConfigurator/Device Display Configurator.asset.meta
  30. 326
      InputSystem_LocalMultiplayer_Project/Assets/DistortionTrail/ShaderGraph_Distortion.shadergraph
  31. 10
      InputSystem_LocalMultiplayer_Project/Assets/DistortionTrail/ShaderGraph_Distortion.shadergraph.meta
  32. 3
      InputSystem_LocalMultiplayer_Project/Assets/DistortionTrail/Texture_Gradient_Horizontal.png
  33. 91
      InputSystem_LocalMultiplayer_Project/Assets/DistortionTrail/Texture_Gradient_Horizontal.png.meta
  34. 120
      InputSystem_LocalMultiplayer_Project/Assets/DistortionTrail/Weapon_Trail_Distortion_Mat.mat
  35. 8
      InputSystem_LocalMultiplayer_Project/Assets/DistortionTrail/Weapon_Trail_Distortion_Mat.mat.meta
  36. 29
      InputSystem_LocalMultiplayer_Project/Assets/Editor/DeviceDisplayConfiguratorEditor.cs
  37. 11
      InputSystem_LocalMultiplayer_Project/Assets/Editor/DeviceDisplayConfiguratorEditor.cs.meta
  38. 16
      InputSystem_LocalMultiplayer_Project/Assets/Scripts/DeviceColorSchemeAsset.cs
  39. 0
      /InputSystem_LocalMultiplayer_Project/Assets/Scripts/DeviceDisplayConfigurator.cs.meta
  40. 0
      /InputSystem_LocalMultiplayer_Project/Assets/DeviceDisplayConfigurator.meta

10
InputSystem_LocalMultiplayer_Project/Assets/Prefabs/Warrior/Warrior.prefab


m_Children:
- {fileID: 6265031668641214316}
m_Father: {fileID: 8145840457835498163}
m_RootOrder: 3
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &2859122664508458294
MonoBehaviour:

m_Name:
m_EditorClassIdentifier:
playerInput: {fileID: 3528249008770642978}
deviceColorScheme: {fileID: 11400000, guid: 5d513570725678c4eb2de4da43a17e7b, type: 2}
deviceDisplayConfigurator: {fileID: 11400000, guid: 1ae90af367a37dc47b0ecc2b81a75099,
type: 2}
playerDisplayText: {fileID: 5587485868546598810}
--- !u!1001 &1908672398
PrefabInstance:

propertyPath: playerInput
value:
objectReference: {fileID: 3528249008770642978}
- target: {fileID: 4386547555022103130, guid: d4bd9dc1cd45f804f84ad90735c2d05f,
type: 3}
propertyPath: movementSpeed
value: 3
objectReference: {fileID: 0}
- target: {fileID: 7172747186723065525, guid: d4bd9dc1cd45f804f84ad90735c2d05f,
type: 3}
propertyPath: m_Constraints

10
InputSystem_LocalMultiplayer_Project/Assets/RenderPipeline/UniversalRenderPipelineAsset.asset


- {fileID: 11400000, guid: 98e358c94319db140ac8a7d4ff74faf8, type: 2}
m_DefaultRendererIndex: 0
m_RequireDepthTexture: 0
m_RequireOpaqueTexture: 0
m_RequireOpaqueTexture: 1
m_SupportsTerrainHoles: 1
m_SupportsTerrainHoles: 0
m_SupportsHDR: 1
m_MSAA: 2
m_RenderScale: 1

m_AdditionalLightsPerObjectLimit: 4
m_AdditionalLightShadowsSupported: 0
m_AdditionalLightsShadowmapResolution: 512
m_ShadowDistance: 9.93
m_ShadowCascades: 0
m_Cascade2Split: 0.25
m_ShadowDistance: 60
m_ShadowCascades: 1
m_Cascade2Split: 0.25385332
m_Cascade4Split: {x: 0.067, y: 0.2, z: 0.467}
m_ShadowDepthBias: 1
m_ShadowNormalBias: 1

448
InputSystem_LocalMultiplayer_Project/Assets/Scenes/Scene_Example_Warriors.unity


m_TrainingDataDestination: TrainingData
m_LightProbeSampleCountMultiplier: 4
m_LightingDataAsset: {fileID: 0}
m_UseShadowmask: 0
m_UseShadowmask: 1
--- !u!196 &4
NavMeshSettings:
serializedVersion: 2

type: 3}
propertyPath: useOldInputManager
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4244790990042693115, guid: 7040c04d00ad25e4cad0ba1b7d40c3c0,
type: 3}
propertyPath: movementSpeed
value: 3
objectReference: {fileID: 0}
- target: {fileID: 5587485868546598810, guid: 7040c04d00ad25e4cad0ba1b7d40c3c0,
type: 3}

- target: {fileID: 8145840457835730771, guid: 7040c04d00ad25e4cad0ba1b7d40c3c0,
type: 3}
propertyPath: m_IsActive
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 8145840457835730773, guid: 7040c04d00ad25e4cad0ba1b7d40c3c0,
type: 3}
propertyPath: m_IsActive
value: 1
objectReference: {fileID: 0}
- target: {fileID: 8145840457835730795, guid: 7040c04d00ad25e4cad0ba1b7d40c3c0,
type: 3}
propertyPath: m_IsActive
value: 1
objectReference: {fileID: 0}
- target: {fileID: 8145840457845089579, guid: 7040c04d00ad25e4cad0ba1b7d40c3c0,
type: 3}
propertyPath: m_WarningMessage
value:
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 7040c04d00ad25e4cad0ba1b7d40c3c0, type: 3}

m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 122292729}
m_CullTransparentMesh: 0
--- !u!1 &144661831
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 144661832}
m_Layer: 5
m_Name: Panel_Rebind
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &144661832
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 144661831}
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_Children:
- {fileID: 2137092836}
- {fileID: 782418257}
m_Father: {fileID: 1854239563}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 1, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: -483, y: -6}
m_SizeDelta: {x: 849.32, y: -252.2}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!224 &435355510 stripped
RectTransform:
m_CorrespondingSourceObject: {fileID: 1864481344318969274, guid: 1ff0ff9fe1f589244aee9d67ce1c6e58,
type: 3}
m_PrefabInstance: {fileID: 3185944584624660351}
m_PrefabAsset: {fileID: 0}
--- !u!1 &506061763
GameObject:
m_ObjectHideFlags: 0

m_Father: {fileID: 0}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
--- !u!1 &782418256
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 782418257}
- component: {fileID: 782418258}
m_Layer: 5
m_Name: List_RebindOptions
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &782418257
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 782418256}
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_Children:
- {fileID: 435355510}
m_Father: {fileID: 144661832}
m_RootOrder: 1
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: -32.013184}
m_SizeDelta: {x: -1, y: -64}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &782418258
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 782418256}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Padding:
m_Left: 0
m_Right: 0
m_Top: 10
m_Bottom: 0
m_ChildAlignment: 0
m_Spacing: 10
m_ChildForceExpandWidth: 1
m_ChildForceExpandHeight: 0
m_ChildControlWidth: 0
m_ChildControlHeight: 0
m_ChildScaleWidth: 0
m_ChildScaleHeight: 0
--- !u!1 &963194225
GameObject:
m_ObjectHideFlags: 0

m_RequiresDepthTexture: 0
m_RequiresColorTexture: 0
m_Version: 2
--- !u!1 &1063851080 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 4771699827640259325, guid: 1ff0ff9fe1f589244aee9d67ce1c6e58,
type: 3}
m_PrefabInstance: {fileID: 3185944584624660351}
m_PrefabAsset: {fileID: 0}
--- !u!1 &1087725979
GameObject:
m_ObjectHideFlags: 0

m_Script: {fileID: 11500000, guid: ad331c3afd647a044a6343361e5401a9, type: 3}
m_Name:
m_EditorClassIdentifier:
inScenePlayer: {fileID: 2028948613}
spawnMultiplePlayers: 1
playerPrefab: {fileID: 8145840457835730771, guid: 7040c04d00ad25e4cad0ba1b7d40c3c0,
type: 3}

- component: {fileID: 1381499505}
- component: {fileID: 1381499504}
m_Layer: 5
m_Name: TMP_Title_Menu
m_Name: Title_Paused
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0

m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: Menu
m_text: Paused
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}

m_margin: {x: 0, y: 0, z: 0, w: 0}
m_textInfo:
textComponent: {fileID: 1381499504}
characterCount: 4
characterCount: 0
wordCount: 1
wordCount: 0
lineCount: 1
pageCount: 1
lineCount: 0
pageCount: 0
materialCount: 1
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0

- component: {fileID: 1854239562}
- component: {fileID: 1854239561}
- component: {fileID: 1854239560}
- component: {fileID: 1854239564}
m_Layer: 5
m_Name: Canvas_Menu
m_TagString: Untagged

m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1854239559}
m_Enabled: 1
m_Enabled: 0
serializedVersion: 3
m_RenderMode: 0
m_Camera: {fileID: 0}

m_Children:
- {fileID: 82881275}
- {fileID: 1381499503}
- {fileID: 144661832}
m_Father: {fileID: 0}
m_RootOrder: 4
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}

m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0, y: 0}
--- !u!114 &1854239564
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1854239559}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: cfad211f8c6ebe348bfc0d302db7da52, type: 3}
m_Name:
m_EditorClassIdentifier:
menuCanvas: {fileID: 1854239562}
inScenePlayerRebindPanel: {fileID: 1063851080}
playerRebindPanelPrefab: {fileID: 4771699827640259325, guid: 1ff0ff9fe1f589244aee9d67ce1c6e58,
type: 3}
playerRebindListRoot: {fileID: 782418257}
--- !u!1 &1854560536
GameObject:
m_ObjectHideFlags: 0

m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0, y: 0}
--- !u!1 &2028948613 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 8145840457835730771, guid: 7040c04d00ad25e4cad0ba1b7d40c3c0,
type: 3}
m_PrefabInstance: {fileID: 24337591}
m_PrefabAsset: {fileID: 0}
--- !u!1 &2137092835
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2137092836}
- component: {fileID: 2137092838}
- component: {fileID: 2137092837}
m_Layer: 5
m_Name: Title_ControllerSettings
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &2137092836
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2137092835}
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_Children: []
m_Father: {fileID: 144661832}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0.90128434}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0.024902344}
m_SizeDelta: {x: 0, y: 0.050072}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &2137092837
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2137092835}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: Controller Settings
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4294967295
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_outlineColor:
serializedVersion: 2
rgba: 4278190080
m_fontSize: 36
m_fontSizeBase: 36
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_textAlignment: 513
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_enableWordWrapping: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_firstOverflowCharacterIndex: -1
m_linkedTextComponent: {fileID: 0}
m_isLinkedTextComponent: 0
m_isTextTruncated: 0
m_enableKerning: 1
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_ignoreRectMaskCulling: 0
m_ignoreCulling: 1
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_VertexBufferAutoSizeReduction: 1
m_firstVisibleCharacter: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_textInfo:
textComponent: {fileID: 2137092837}
characterCount: 0
spriteCount: 0
spaceCount: 0
wordCount: 0
linkCount: 0
lineCount: 0
pageCount: 0
materialCount: 1
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_spriteAnimator: {fileID: 0}
m_hasFontAssetChanged: 0
m_subTextObjects:
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!222 &2137092838
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2137092835}
m_CullTransparentMesh: 0
--- !u!1001 &3185944584624660351
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 782418257}
m_Modifications:
- target: {fileID: 189306772, guid: 1ff0ff9fe1f589244aee9d67ce1c6e58, type: 3}
propertyPath: m_AnchoredPosition.y
value: -0.000015258789
objectReference: {fileID: 0}
- target: {fileID: 1864481344318969274, guid: 1ff0ff9fe1f589244aee9d67ce1c6e58,
type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1864481344318969274, guid: 1ff0ff9fe1f589244aee9d67ce1c6e58,
type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1864481344318969274, guid: 1ff0ff9fe1f589244aee9d67ce1c6e58,
type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1864481344318969274, guid: 1ff0ff9fe1f589244aee9d67ce1c6e58,
type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1864481344318969274, guid: 1ff0ff9fe1f589244aee9d67ce1c6e58,
type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1864481344318969274, guid: 1ff0ff9fe1f589244aee9d67ce1c6e58,
type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1864481344318969274, guid: 1ff0ff9fe1f589244aee9d67ce1c6e58,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 1864481344318969274, guid: 1ff0ff9fe1f589244aee9d67ce1c6e58,
type: 3}
propertyPath: m_RootOrder
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1864481344318969274, guid: 1ff0ff9fe1f589244aee9d67ce1c6e58,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1864481344318969274, guid: 1ff0ff9fe1f589244aee9d67ce1c6e58,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1864481344318969274, guid: 1ff0ff9fe1f589244aee9d67ce1c6e58,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1864481344318969274, guid: 1ff0ff9fe1f589244aee9d67ce1c6e58,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1864481344318969274, guid: 1ff0ff9fe1f589244aee9d67ce1c6e58,
type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1864481344318969274, guid: 1ff0ff9fe1f589244aee9d67ce1c6e58,
type: 3}
propertyPath: m_SizeDelta.y
value: 100
objectReference: {fileID: 0}
- target: {fileID: 1864481344318969274, guid: 1ff0ff9fe1f589244aee9d67ce1c6e58,
type: 3}
propertyPath: m_AnchorMin.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1864481344318969274, guid: 1ff0ff9fe1f589244aee9d67ce1c6e58,
type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1864481344318969274, guid: 1ff0ff9fe1f589244aee9d67ce1c6e58,
type: 3}
propertyPath: m_AnchorMax.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1864481344318969274, guid: 1ff0ff9fe1f589244aee9d67ce1c6e58,
type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1864481344318969274, guid: 1ff0ff9fe1f589244aee9d67ce1c6e58,
type: 3}
propertyPath: m_Pivot.x
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 1864481344318969274, guid: 1ff0ff9fe1f589244aee9d67ce1c6e58,
type: 3}
propertyPath: m_Pivot.y
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 4771699827640259325, guid: 1ff0ff9fe1f589244aee9d67ce1c6e58,
type: 3}
propertyPath: m_Name
value: Panel_RebindPlayerInput
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 1ff0ff9fe1f589244aee9d67ce1c6e58, type: 3}

54
InputSystem_LocalMultiplayer_Project/Assets/Scripts/GameManager.cs


public class GameManager : Singleton<GameManager>
{
[Header("In-Scene Player Settings")]
public GameObject inScenePlayer;
[Header("Spawn Player Settings")]
public bool spawnMultiplePlayers = false;
public GameObject playerPrefab;

//Spawned Players
private List<PlayerController> spawnedPlayerControllers;
private List<PlayerController> activePlayerControllers;
[Header("UI")]
public GameObject pauseMenu;

SetupMenuUI();
SetupActivePlayers();
}
pauseMenu.SetActive(false);
void SetupMenuUI()
{
MenuUIManager.Instance.ToggleMenu(false);
}
void SetupActivePlayers()
{
activePlayerControllers = new List<PlayerController>(numberOfPlayers);
Destroy(inScenePlayer);
}
else if(!spawnMultiplePlayers)
{
PlayerController inScenePlayerController = inScenePlayer.GetComponent<PlayerController>();
activePlayerControllers.Add(inScenePlayerController);
UpdateMenuUIPlayerList();
spawnedPlayerControllers = new List<PlayerController>(numberOfPlayers);
for(int i = 0; i < numberOfPlayers; i++)
{

spawnedPlayerControllers.Insert(i, spawnedPlayer.GetComponent<PlayerController>());
activePlayerControllers.Insert(i, spawnedPlayer.GetComponent<PlayerController>());
Vector3 randomSpawnPosition = new Vector3(Random.Range(-spawnArea.x, spawnArea.x), 0, Random.Range(-spawnArea.z, spawnArea.z));
spawnedPlayer.transform.position = randomSpawnPosition;

}
UpdateMenuUIPlayerList();
void UpdateMenuUIPlayerList()
{
MenuUIManager.Instance.UpdateRebindPlayerPanelList();
}
pauseMenu.SetActive(newState);
MenuUIManager.Instance.ToggleMenu(newState);
for(int i = 0; i < spawnedPlayerControllers.Count; i++)
for(int i = 0; i < activePlayerControllers.Count; i++)
spawnedPlayerControllers[i].EnablePauseMenuControls();
activePlayerControllers[i].EnablePauseMenuControls();
spawnedPlayerControllers[i].EnableGameplayControls();
activePlayerControllers[i].EnableGameplayControls();
}
public List<PlayerController> GetActivePlayerControllers()
{
return activePlayerControllers;
}
}

29
InputSystem_LocalMultiplayer_Project/Assets/Scripts/PlayerController.cs


[Header("Animation")]
public Animator playerAnimator;
private int playerMovementID;
private int playerAttackID;
[Header("Input")]
public bool useOldInputManager = false;

void Start()
{
FindCamera();
SetupAnimationIDs();
}
void FindCamera()

void SetupAnimationIDs()
{
playerMovementID = Animator.StringToHash("Movement");
playerAttackID = Animator.StringToHash("Attack");
}
void Update()
{
CalculateMovementInput();

{
if(Input.GetKeyDown(KeyCode.Space))
{
playerAnimator.SetTrigger("Attack");
playerAnimator.SetTrigger(playerAttackID);
}
}

void AnimatePlayerMovement()
{
playerAnimator.SetFloat("Movement", inputDirection.sqrMagnitude);
playerAnimator.SetFloat(playerMovementID, inputDirection.sqrMagnitude);
}

public void EnablePauseMenuControls()
{
playerInput.SwitchCurrentActionMap(actionMapMenu);
}
public PlayerInput GetPlayerInput()
{
return playerInput;
}
public int GetPlayerIndex()
{
return playerInput.playerIndex;
}
public void GetPlayerDevice()
{
Debug.Log("" + playerInput.actions.FindAction("Attack"));
}
}

47
InputSystem_LocalMultiplayer_Project/Assets/Scripts/PlayerUIManager.cs


[Header("Input")]
public PlayerInput playerInput;
[Header("Color Schemes")]
public DeviceColorScheme deviceColorScheme;
[Header("Device Display")]
public DeviceDisplayConfigurator deviceDisplayConfigurator;
[Header("UI")]
public TextMeshProUGUI playerDisplayText;

void Start()
{
GetPlayerInputID();
GetPlayerInputDevice();
GetPlayerDeviceDisplayName();
GetPlayerDeviceDisplayColor();
SetDisplayText();
}

}
void GetPlayerInputDevice()
void GetPlayerDeviceDisplayName()
currentPlayerDevice = ConfigureDevice(playerInput.devices[0].ToString());
currentPlayerDevice = deviceDisplayConfigurator.GetDeviceDisplayName(playerInput.devices[0].ToString());
string ConfigureDevice(string currentDevice)
void GetPlayerDeviceDisplayColor()
switch(currentDevice)
{
case "Keyboard:/Keyboard":
currentDeviceColor = deviceColorScheme.keyboard;
return "Keyboard";
break;
case "XInputControllerWindows:/XInputControllerWindows":
currentDeviceColor = deviceColorScheme.xboxController;
return "Xbox Controller";
break;
case "DualShock4GamepadHID:/DualShock4GamepadHID":
currentDeviceColor = deviceColorScheme.playstationController;
return "PlayStation Controller";
break;
case "SwitchProControllerHID:/SwitchProControllerHID":
currentDeviceColor = deviceColorScheme.nintendoSwitchController;
return "Nintendo Switch Controller";
break;
default:
currentDeviceColor = deviceColorScheme.fallbackController;
return currentDevice;
break;
}
currentDeviceColor = deviceDisplayConfigurator.GetDeviceDisplayColor(playerInput.devices[0].ToString());
}
}

64
InputSystem_LocalMultiplayer_Project/Assets/Warrior/Animations/AnimationController_Warrior.controller


m_Mirror: 0
- serializedVersion: 2
m_Motion: {fileID: 7400000, guid: d95ff3ad3e3bb7f4fada1c33e41531f3, type: 3}
m_Threshold: 1
m_Threshold: 0.05
m_Position: {x: 0, y: 0}
m_TimeScale: 1
m_CycleOffset: 0

m_BlendParameterY: Movement
m_MinThreshold: 0
m_MaxThreshold: 1
m_UseAutomaticThresholds: 0
m_MaxThreshold: 0.05
m_UseAutomaticThresholds: 1
--- !u!1101 &-4168186298258568972
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: Attack
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 1447130112401065284}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25
m_TransitionOffset: 0
m_ExitTime: 0.75
m_HasExitTime: 0
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &-3497908041925172846
AnimatorStateTransition:
m_ObjectHideFlags: 1

m_Name: Warrior_Movement
m_Speed: 1
m_CycleOffset: 0
m_Transitions: []
m_Transitions:
- {fileID: -427313075368215229}
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0

m_State: {fileID: -2718701923838152447}
m_Position: {x: 300, y: 190, z: 0}
m_ChildStateMachines: []
m_AnyStateTransitions:
- {fileID: -4168186298258568972}
m_AnyStateTransitions: []
m_AnyStatePosition: {x: 640, y: 90, z: 0}
m_AnyStatePosition: {x: 620, y: 30, z: 0}
--- !u!1101 &-427313075368215229
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: Attack
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 1447130112401065284}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.1
m_TransitionOffset: 0
m_ExitTime: 0.8333333
m_HasExitTime: 0
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!91 &9100000
AnimatorController:
m_ObjectHideFlags: 0

334
InputSystem_LocalMultiplayer_Project/Assets/Warrior/Model/Warrior_bindpose.fbx.meta


type: UnityEngine:Material
assembly: UnityEngine.CoreModule
name: lambert26SG
second: {fileID: 2100000, guid: f5c5dbbff2d9ef142ac545f2c20f7077, type: 2}
second: {fileID: 2100000, guid: 5d0428d25999efc46b73a6461525785a, type: 2}
materials:
materialImportMode: 1
materialName: 0

animationPositionError: 0.5
animationScaleError: 0.5
animationWrapMode: 0
extraExposedTransformPaths:
- unityHumanoidJoint_grp/Weapon_jnt
extraExposedTransformPaths: []
extraUserProperties: []
clipAnimations: []
isReadable: 0

keepQuads: 0
weldVertices: 1
preserveHierarchy: 0
skinWeightsMode: 1
skinWeightsMode: 0
maxBonesPerVertex: 1
minBoneWeight: 0.001
meshOptimizationFlags: -1

humanDescription:
serializedVersion: 3
human: []
skeleton: []
skeleton:
- name: Warrior_bindpose(Clone)
parentName:
position: {x: 0, y: 0, z: 0}
rotation: {x: 0, y: 0, z: 0, w: 1}
scale: {x: 1, y: 1, z: 1}
- name: unityHumanoidJoint_grp
parentName: Warrior_bindpose(Clone)
position: {x: 0, y: -0.035976265, z: 0}
rotation: {x: 0, y: -0, z: -0, w: 1}
scale: {x: 1, y: 1, z: 1}
- name: Weapon_jnt
parentName: unityHumanoidJoint_grp
position: {x: 1.7915499, y: 0.9887566, z: 0}
rotation: {x: -0, y: -0, z: -0, w: 1}
scale: {x: 1, y: 1, z: 1}
- name: Hips
parentName: unityHumanoidJoint_grp
position: {x: 0.000070700284, y: 0.57204556, z: 0.03029277}
rotation: {x: -0, y: -0, z: -0, w: 1}
scale: {x: 1, y: 1, z: 1}
- name: Spine
parentName: Hips
position: {x: -1.734723e-20, y: 0.1562788, z: -8.881784e-18}
rotation: {x: -0, y: -0, z: -0, w: 1}
scale: {x: 1, y: 1, z: 1}
- name: Chest
parentName: Spine
position: {x: -2.602085e-20, y: 0.1643995, z: 6.661338e-17}
rotation: {x: -0, y: -0, z: -0, w: 1}
scale: {x: 1, y: 1, z: 1}
- name: UpperChest
parentName: Chest
position: {x: -0, y: 0.18253559, z: 5.77316e-17}
rotation: {x: -0, y: -0, z: -0, w: 1}
scale: {x: 1, y: 1, z: 1}
- name: Neck
parentName: UpperChest
position: {x: -0, y: 0.2793899, z: 5.77316e-17}
rotation: {x: -0, y: -0, z: -0, w: 1}
scale: {x: 1, y: 1, z: 1}
- name: Head
parentName: Neck
position: {x: -2.602085e-20, y: 0.08659761, z: 5.77316e-17}
rotation: {x: -0, y: -0, z: -0, w: 1}
scale: {x: 1, y: 1, z: 1}
- name: Jaw
parentName: Head
position: {x: -2.6670508e-16, y: -0.0531161, z: 0.04377621}
rotation: {x: 0.8440307, y: -0, z: -0, w: 0.53629494}
scale: {x: 1, y: 1.0000004, z: 1.0000004}
- name: JawTop
parentName: Jaw
position: {x: -8.3006516e-18, y: 0.17003089, z: -5.684342e-16}
rotation: {x: -0, y: -0, z: -0, w: 1}
scale: {x: 1, y: 1.0000004, z: 1.0000004}
- name: LeftEye
parentName: Head
position: {x: -0.059889566, y: 0.06014005, z: 0.1192546}
rotation: {x: -0, y: -0, z: -0, w: 1}
scale: {x: 1, y: 1, z: 1}
- name: RightEye
parentName: Head
position: {x: 0.059889596, y: 0.060143016, z: 0.119254194}
rotation: {x: 1, y: -0, z: -0, w: -6.123234e-17}
scale: {x: 1, y: 1, z: 1}
- name: LeftShoulder
parentName: UpperChest
position: {x: -0.03725221, y: 0.04037486, z: -0.06174582}
rotation: {x: -0, y: -0, z: 0.7071068, w: 0.7071068}
scale: {x: 1.0000002, y: 1.0000002, z: 1}
- name: LeftUpperArm
parentName: LeftShoulder
position: {x: -1.4210851e-15, y: 0.2855958, z: -8.881784e-18}
rotation: {x: -0, y: -0, z: -0, w: 1}
scale: {x: 1.0000002, y: 1.0000002, z: 1}
- name: LeftLowerArm
parentName: LeftUpperArm
position: {x: -2.842171e-16, y: 0.3195471, z: 3.9968027e-17}
rotation: {x: -0, y: -0, z: -0, w: 1}
scale: {x: 1.0000002, y: 1.0000002, z: 1}
- name: LeftHand
parentName: LeftLowerArm
position: {x: -2.1316279e-15, y: 0.360139, z: 1.776357e-17}
rotation: {x: -1.2566397e-10, y: -0.0000000017083754, z: 0.01862478, w: 0.99982655}
scale: {x: 1.0000002, y: 1.0000002, z: 1}
- name: LeftThumbProximal
parentName: LeftHand
position: {x: -0.06266892, y: 0.04087714, z: 0.11991649}
rotation: {x: 0.0023643596, y: -0.8822758, z: -0.47010347, w: -0.024219025}
scale: {x: 1, y: 1.0000002, z: 1.0000002}
- name: LeftThumbIntermediate
parentName: LeftThumbProximal
position: {x: -8.5265126e-16, y: 0.07499472, z: 1.4210849e-16}
rotation: {x: 0.01174239, y: -0.000000014901161, z: 0.000000014901161, w: 0.9999311}
scale: {x: 1.0000001, y: 1.0000001, z: 1.0000002}
- name: LeftThumbDistal
parentName: LeftThumbIntermediate
position: {x: -2.842171e-16, y: 0.06519391, z: 2.842171e-16}
rotation: {x: -0, y: -0, z: -3.4694464e-16, w: 1}
scale: {x: 1.0000001, y: 1.0000001, z: 1.0000002}
- name: LeftIndexProximal
parentName: LeftHand
position: {x: 0.012527979, y: 0.1305674, z: 0.105057895}
rotation: {x: 0.051729362, y: -0.77959377, z: -0.106500685, w: 0.614992}
scale: {x: 1.0000004, y: 1.0000001, z: 1.0000005}
- name: LeftIndexIntermediate
parentName: LeftIndexProximal
position: {x: -0, y: 0.1191626, z: 0.00035531027}
rotation: {x: 0.04243815, y: -0.00000008940696, z: -0.00000008940696, w: 0.99909914}
scale: {x: 0.9999998, y: 0.99999994, z: 0.99999994}
- name: LeftIndexDistal
parentName: LeftIndexIntermediate
position: {x: -7.1054265e-17, y: 0.0659589, z: -2.842171e-16}
rotation: {x: -0, y: 3.5527137e-15, z: 3.7747583e-15, w: 1}
scale: {x: 1, y: 1, z: 1.0000001}
- name: LeftMiddleProximal
parentName: LeftHand
position: {x: 0.028634328, y: 0.1400125, z: 0.028908478}
rotation: {x: 0.041673843, y: -0.72535825, z: -0.080176614, w: 0.68241525}
scale: {x: 1.0000002, y: 1.0000005, z: 1.0000004}
- name: LeftMiddleIntermediate
parentName: LeftMiddleProximal
position: {x: -1.776357e-16, y: 0.1173408, z: 1.1368679e-15}
rotation: {x: 0.040247325, y: 0.000000029802315, z: -0.000000117346616, w: 0.9991898}
scale: {x: 0.9999999, y: 0.9999998, z: 0.9999998}
- name: LeftMiddleDistal
parentName: LeftMiddleIntermediate
position: {x: 3.552714e-17, y: 0.073707566, z: -2.842171e-16}
rotation: {x: -0, y: -0, z: -0, w: 1}
scale: {x: 1.0000001, y: 1.0000004, z: 1.0000001}
- name: LeftRingProximal
parentName: LeftHand
position: {x: 0.029375678, y: 0.1421098, z: -0.0374758}
rotation: {x: 0.036090214, y: -0.6787285, z: -0.07234908, w: 0.72992516}
scale: {x: 1.0000005, y: 1.0000005, z: 1.0000005}
- name: LeftRingIntermediate
parentName: LeftRingProximal
position: {x: -8.881784e-18, y: 0.1266279, z: 2.842171e-16}
rotation: {x: 0.04019187, y: 0.000000059604638, z: -0.00000004097819, w: 0.999192}
scale: {x: 1.0000002, y: 1.0000004, z: 1.0000001}
- name: LeftRingDistal
parentName: LeftRingIntermediate
position: {x: -4.440892e-18, y: 0.07132513, z: 2.8421708e-15}
rotation: {x: -0.000000007450579, y: -0, z: -4.4408913e-15, w: 1}
scale: {x: 1.0000002, y: 1.0000002, z: 1.0000004}
- name: LeftLittleProximal
parentName: LeftHand
position: {x: 0.011241569, y: 0.1369358, z: -0.09443438}
rotation: {x: 0.012987422, y: -0.62910897, z: -0.07470483, w: 0.77360994}
scale: {x: 1.0000002, y: 1.0000002, z: 1.0000001}
- name: LeftLittleIntermediate
parentName: LeftLittleProximal
position: {x: 2.4869e-16, y: 0.1187024, z: 0.003178656}
rotation: {x: 0.05241241, y: 0.00000008940696, z: -0.000000014901159, w: 0.9986255}
scale: {x: 1.0000001, y: 1.0000001, z: 1}
- name: LeftLittleDistal
parentName: LeftLittleIntermediate
position: {x: -0, y: 0.05369346, z: -2.842171e-16}
rotation: {x: -0, y: -0, z: 8.881783e-16, w: 1}
scale: {x: 0.99999994, y: 0.99999994, z: 0.99999994}
- name: RightShoulder
parentName: UpperChest
position: {x: 0.0372522, y: 0.040370498, z: -0.061745867}
rotation: {x: -0.7071068, y: 0.7071068, z: -4.3297806e-17, w: 4.3297806e-17}
scale: {x: 1.0000002, y: 1.0000002, z: 1.0000005}
- name: RightUpperArm
parentName: RightShoulder
position: {x: 4.263256e-16, y: -0.2855961, z: 3.552714e-17}
rotation: {x: -0, y: -0, z: -0, w: 1}
scale: {x: 1.0000002, y: 1.0000002, z: 1.0000005}
- name: RightLowerArm
parentName: RightUpperArm
position: {x: 1.4210849e-16, y: -0.319547, z: 4.8849806e-17}
rotation: {x: -0, y: -0, z: -0, w: 1}
scale: {x: 1.0000002, y: 1.0000002, z: 1.0000005}
- name: RightHand
parentName: RightLowerArm
position: {x: 0.00000016411789, y: -0.36013418, z: 5.3290707e-17}
rotation: {x: -2.6364538e-10, y: -0.0000000033946397, z: -0.01950669, w: -0.99980974}
scale: {x: 1.0000001, y: 1.0000001, z: 1.0000002}
- name: RightThumbProximal
parentName: RightHand
position: {x: 0.062659994, y: -0.04088, z: -0.119916596}
rotation: {x: -0.0023870617, y: 0.8822844, z: 0.47008684, w: 0.024228409}
scale: {x: 1.0000008, y: 1.0000004, z: 1.0000005}
- name: RightThumbIntermediate
parentName: RightThumbProximal
position: {x: -0.0000044831136, y: -0.07499421, z: 0.000002145118}
rotation: {x: 0.0117424205, y: -0.00000002235174, z: -0.000000029802319, w: 0.9999311}
scale: {x: 1, y: 1.0000001, z: 1}
- name: RightThumbDistal
parentName: RightThumbIntermediate
position: {x: 0.000002286178, y: -0.0651939, z: -0.000000279502}
rotation: {x: -0, y: 1.7763564e-15, z: -2.775557e-16, w: 1}
scale: {x: 1.0000001, y: 1.0000001, z: 0.9999998}
- name: RightIndexProximal
parentName: RightHand
position: {x: -0.01253, y: -0.13057, z: -0.105058}
rotation: {x: -0.05171038, y: 0.7795924, z: 0.106508076, w: -0.6149941}
scale: {x: 1.0000002, y: 1.0000004, z: 1.0000004}
- name: RightIndexIntermediate
parentName: RightIndexProximal
position: {x: -0.0000006188589, y: -0.119160004, z: -0.0003560635}
rotation: {x: 0.04248593, y: -0.000000089406946, z: -0.0000035986295, w: 0.9990971}
scale: {x: 1.0000001, y: 1, z: 1}
- name: RightIndexDistal
parentName: RightIndexIntermediate
position: {x: 0.0000016822389, y: -0.06596005, z: 0.000005547344}
rotation: {x: 0.0000000037252894, y: -0, z: -0, w: 1}
scale: {x: 1.0000001, y: 1, z: 1.0000001}
- name: RightMiddleProximal
parentName: RightHand
position: {x: -0.02864, y: -0.14002, z: -0.028908528}
rotation: {x: -0.041649316, y: 0.72535574, z: 0.08019691, w: -0.68241686}
scale: {x: 1.0000004, y: 1.0000004, z: 1.0000001}
- name: RightMiddleIntermediate
parentName: RightMiddleProximal
position: {x: -0.00000042704707, y: -0.117340095, z: -0.000003702289}
rotation: {x: 0.040255513, y: 0.000000029802319, z: -0.0000014975665, w: 0.9991895}
scale: {x: 1.0000002, y: 1.0000001, z: 1.0000001}
- name: RightMiddleDistal
parentName: RightMiddleIntermediate
position: {x: 0.000000258473, y: -0.07371192, z: -0.0000011215759}
rotation: {x: -0, y: -0, z: 8.881781e-16, w: 1}
scale: {x: 0.99999994, y: 1, z: 0.99999994}
- name: RightRingProximal
parentName: RightHand
position: {x: -0.02938, y: -0.14211, z: 0.0374758}
rotation: {x: -0.036090888, y: 0.678731, z: 0.07234196, w: -0.7299235}
scale: {x: 1.0000002, y: 1.0000004, z: 1.0000004}
- name: RightRingIntermediate
parentName: RightRingProximal
position: {x: -0.000000264587, y: -0.1266285, z: 0.000004839053}
rotation: {x: 0.040127717, y: -0.00000008940696, z: -0.0000015255061, w: 0.99919456}
scale: {x: 1, y: 0.99999994, z: 0.9999998}
- name: RightRingDistal
parentName: RightRingIntermediate
position: {x: 0.00000037222398, y: -0.0713269, z: -0.000005825109}
rotation: {x: -0, y: -0, z: -0, w: 1}
scale: {x: 1.0000001, y: 1, z: 0.9999998}
- name: RightLittleProximal
parentName: RightHand
position: {x: -0.0112499995, y: -0.13694, z: 0.094433896}
rotation: {x: -0.012968941, y: 0.62910557, z: 0.07473539, w: -0.7736101}
scale: {x: 1.0000002, y: 1.0000004, z: 1.0000002}
- name: RightLittleIntermediate
parentName: RightLittleProximal
position: {x: 0.000002015652, y: -0.118699394, z: -0.0031840147}
rotation: {x: 0.052417044, y: -0.00000080466253, z: 0.00000259187, w: 0.9986253}
scale: {x: 1.0000004, y: 1.0000001, z: 1.0000002}
- name: RightLittleDistal
parentName: RightLittleIntermediate
position: {x: 0.00000038366508, y: -0.05369871, z: -0.000001868257}
rotation: {x: -0, y: 7.1054257e-15, z: -0, w: 1}
scale: {x: 1.0000001, y: 1, z: 1.0000002}
- name: LeftUpperLeg
parentName: Hips
position: {x: -0.1304611, y: -0.044869207, z: 0.009524257}
rotation: {x: -0, y: -0, z: 1, w: -6.123234e-17}
scale: {x: 1, y: 1, z: 1}
- name: LeftLowerLeg
parentName: LeftUpperLeg
position: {x: -8.8817837e-17, y: 0.2272151, z: 4.440892e-18}
rotation: {x: -0, y: -0, z: -0, w: 1}
scale: {x: 1, y: 1, z: 1}
- name: LeftFoot
parentName: LeftLowerLeg
position: {x: -7.1054265e-17, y: 0.2164765, z: 1.3322679e-17}
rotation: {x: 0.49999997, y: 3.3087225e-24, z: -0, w: 0.8660254}
scale: {x: 1, y: 1, z: 1}
- name: LeftToes
parentName: LeftFoot
position: {x: -1.24345e-16, y: 0.06640343, z: -9.663559e-13}
rotation: {x: -0, y: -0, z: -0, w: 1}
scale: {x: 1, y: 1, z: 1}
- name: RightUpperLeg
parentName: Hips
position: {x: 0.1304613, y: -0.04486955, z: 0.00952423}
rotation: {x: -6.123234e-17, y: 1, z: -6.123234e-17, w: -6.123234e-17}
scale: {x: 1, y: 1, z: 1}
- name: RightLowerLeg
parentName: RightUpperLeg
position: {x: 1.065814e-16, y: -0.22721499, z: -3.1086238e-17}
rotation: {x: -0, y: -0, z: -0, w: 1}
scale: {x: 1, y: 1, z: 1}
- name: RightFoot
parentName: RightLowerLeg
position: {x: 1.065814e-16, y: -0.2164763, z: -8.881784e-18}
rotation: {x: 0.49999997, y: 6.123234e-17, z: 1.06057525e-16, w: 0.8660254}
scale: {x: 1, y: 1, z: 1}
- name: RightToes
parentName: RightFoot
position: {x: -1.776357e-17, y: -0.066403456, z: -0.000000034351167}
rotation: {x: -0, y: -0, z: -3.3087225e-24, w: 1}
scale: {x: 1, y: 1, z: 1}
- name: Left_armor_jnt
parentName: unityHumanoidJoint_grp
position: {x: -0.3771726, y: 1.351555, z: -0.06583249}
rotation: {x: -0, y: -0, z: 0.13052619, w: 0.9914449}
scale: {x: 1, y: 1, z: 1}
- name: Right_armor_jnt
parentName: unityHumanoidJoint_grp
position: {x: 0.377173, y: 1.35155, z: -0.065832496}
rotation: {x: 0.9914449, y: -0.13052619, z: 7.992425e-18, w: -6.07085e-17}
scale: {x: 1, y: 1.0000002, z: 1}
- name: Warrior_Rig
parentName: Warrior_bindpose(Clone)
position: {x: -0, y: 0, z: 0}
rotation: {x: 0, y: -0, z: -0, w: 1}
scale: {x: 1, y: 1, z: 1}
- name: Warrior
parentName: Warrior_Rig
position: {x: -0, y: 0, z: 0}
rotation: {x: 0, y: -0, z: -0, w: 1}
scale: {x: 1, y: 1, z: 1}
- name: Warrior_Weapon
parentName: Warrior
position: {x: -0, y: 0, z: 0}
rotation: {x: 0, y: -0, z: -0, w: 1}
scale: {x: 1, y: 1, z: 1}
- name: Warrior_Body
parentName: Warrior
position: {x: -0, y: 0, z: 0}
rotation: {x: 0, y: -0, z: -0, w: 1}
scale: {x: 1, y: 1, z: 1}
armTwist: 0.5
foreArmTwist: 0.5
upperLegTwist: 0.5

8
InputSystem_LocalMultiplayer_Project/Assets/DistortionTrail.meta


fileFormatVersion: 2
guid: 01e84ccd168ee6b47bde94a3946715a4
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

8
InputSystem_LocalMultiplayer_Project/Assets/Editor.meta


fileFormatVersion: 2
guid: 4b040754be1771c4abd3bff57e84302e
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

1001
InputSystem_LocalMultiplayer_Project/Assets/Prefabs/UI/Panel_PlayerRebindPanel.prefab
文件差异内容过多而无法显示
查看文件

7
InputSystem_LocalMultiplayer_Project/Assets/Prefabs/UI/Panel_PlayerRebindPanel.prefab.meta


fileFormatVersion: 2
guid: 1ff0ff9fe1f589244aee9d67ce1c6e58
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

81
InputSystem_LocalMultiplayer_Project/Assets/Prefabs/Warrior/Warrior_Sword.prefab


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &6637425312572303773
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8711929540508223951}
- component: {fileID: 6369927466620346328}
- component: {fileID: 6606561210411693345}
m_Layer: 0
m_Name: Warrior_Sword
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &8711929540508223951
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6637425312572303773}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -1.838, y: 0, z: -4.319}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &6369927466620346328
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6637425312572303773}
m_Mesh: {fileID: 4300000, guid: 9e52c160328d68b4799c73e4e5cd0ed7, type: 3}
--- !u!23 &6606561210411693345
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6637425312572303773}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 75803c1c5a43b06428b2975fe0d7fc48, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0

7
InputSystem_LocalMultiplayer_Project/Assets/Prefabs/Warrior/Warrior_Sword.prefab.meta


fileFormatVersion: 2
guid: fb2f156c2bd1e104aa57143a8ca00a6f
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

139
InputSystem_LocalMultiplayer_Project/Assets/Prefabs/Warrior/WeaponTrail.prefab


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &8461215612231668206
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8461215612231668207}
- component: {fileID: 8461215612231668204}
m_Layer: 0
m_Name: WeaponTrail
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &8461215612231668207
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8461215612231668206}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 1.777, y: 0.506, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!96 &8461215612231668204
TrailRenderer:
serializedVersion: 2
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8461215612231668206}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 0
m_ReflectionProbeUsage: 0
m_RayTracingMode: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 6ddc3ed69fff44c409ff48f83a177748, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_Time: 30
m_Parameters:
serializedVersion: 3
widthMultiplier: 1
widthCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1
value: 0
inSlope: -2.1708405
outSlope: -2.1708405
tangentMode: 0
weightedMode: 0
inWeight: 0.32124352
outWeight: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
colorGradient:
serializedVersion: 2
key0: {r: 1, g: 1, b: 1, a: 1}
key1: {r: 1, g: 1, b: 1, a: 1}
key2: {r: 0, g: 0, b: 0, a: 0}
key3: {r: 0, g: 0, b: 0, a: 0}
key4: {r: 0, g: 0, b: 0, a: 0}
key5: {r: 0, g: 0, b: 0, a: 0}
key6: {r: 0, g: 0, b: 0, a: 0}
key7: {r: 0, g: 0, b: 0, a: 0}
ctime0: 0
ctime1: 65535
ctime2: 0
ctime3: 0
ctime4: 0
ctime5: 0
ctime6: 0
ctime7: 0
atime0: 0
atime1: 65535
atime2: 65535
atime3: 0
atime4: 0
atime5: 0
atime6: 0
atime7: 0
m_Mode: 0
m_NumColorKeys: 2
m_NumAlphaKeys: 2
numCornerVertices: 0
numCapVertices: 0
alignment: 1
textureMode: 2
shadowBias: 0.5
generateLightingData: 0
m_MinVertexDistance: 0.01
m_Autodestruct: 1
m_Emitting: 1

7
InputSystem_LocalMultiplayer_Project/Assets/Prefabs/Warrior/WeaponTrail.prefab.meta


fileFormatVersion: 2
guid: 7add984aa101198469845a27c4df457b
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

417
InputSystem_LocalMultiplayer_Project/Assets/Scripts/CustomRebindUIBehaviour.cs


using System;
using System.Collections.Generic;
using System.Linq;
using UnityEngine.Events;
using UnityEngine.InputSystem;
using UnityEngine.InputSystem.Utilities;
using UnityEngine.UI;
using UnityEngine;
using TMPro;
////TODO: localization support
////TODO: deal with composites that have parts bound in different control schemes
public class CustomRebindUIBehaviour : MonoBehaviour
{
public InputActionReference actionReference
{
get => m_Action;
set
{
m_Action = value;
UpdateActionLabel();
UpdateBindingDisplay();
}
}
/// <summary>
/// ID (in string form) of the binding that is to be rebound on the action.
/// </summary>
/// <seealso cref="InputBinding.id"/>
public string bindingId
{
get => m_BindingId;
set
{
m_BindingId = value;
UpdateBindingDisplay();
}
}
public InputBinding.DisplayStringOptions displayStringOptions
{
get => m_DisplayStringOptions;
set
{
m_DisplayStringOptions = value;
UpdateBindingDisplay();
}
}
/// <summary>
/// Text component that receives the name of the action. Optional.
/// </summary>
public TextMeshProUGUI actionLabel
{
get => m_ActionLabel;
set
{
m_ActionLabel = value;
UpdateActionLabel();
}
}
/// <summary>
/// Text component that receives the display string of the binding. Can be <c>null</c> in which
/// case the component entirely relies on <see cref="updateBindingUIEvent"/>.
/// </summary>
public TextMeshProUGUI bindingText
{
get => m_BindingText;
set
{
m_BindingText = value;
UpdateBindingDisplay();
}
}
/// <summary>
/// Optional UI that is activated when an interactive rebind is started and deactivated when the rebind
/// is finished. This is normally used to display an overlay over the current UI while the system is
/// waiting for a control to be actuated.
/// </summary>
/// <remarks>
/// If neither <see cref="rebindPrompt"/> nor <c>rebindOverlay</c> is set, the component will temporarily
/// replaced the <see cref="bindingText"/> (if not <c>null</c>) with <c>"Waiting..."</c>.
/// </remarks>
/// <seealso cref="startRebindEvent"/>
/// <seealso cref="rebindPrompt"/>
public GameObject rebindOverlay
{
get => m_RebindOverlay;
set => m_RebindOverlay = value;
}
/// <summary>
/// Event that is triggered every time the UI updates to reflect the current binding.
/// This can be used to tie custom visualizations to bindings.
/// </summary>
public UpdateBindingUIEvent updateBindingUIEvent
{
get
{
if (m_UpdateBindingUIEvent == null)
m_UpdateBindingUIEvent = new UpdateBindingUIEvent();
return m_UpdateBindingUIEvent;
}
}
/// <summary>
/// Event that is triggered when an interactive rebind is started on the action.
/// </summary>
public InteractiveRebindEvent startRebindEvent
{
get
{
if (m_RebindStartEvent == null)
m_RebindStartEvent = new InteractiveRebindEvent();
return m_RebindStartEvent;
}
}
/// <summary>
/// Event that is triggered when an interactive rebind has been completed or canceled.
/// </summary>
public InteractiveRebindEvent stopRebindEvent
{
get
{
if (m_RebindStopEvent == null)
m_RebindStopEvent = new InteractiveRebindEvent();
return m_RebindStopEvent;
}
}
/// <summary>
/// When an interactive rebind is in progress, this is the rebind operation controller.
/// Otherwise, it is <c>null</c>.
/// </summary>
public InputActionRebindingExtensions.RebindingOperation ongoingRebind => m_RebindOperation;
/// <summary>
/// Return the action and binding index for the binding that is targeted by the component
/// according to
/// </summary>
/// <param name="action"></param>
/// <param name="bindingIndex"></param>
/// <returns></returns>
public bool ResolveActionAndBinding(out InputAction action, out int bindingIndex)
{
bindingIndex = -1;
action = m_Action?.action;
if (action == null)
return false;
if (string.IsNullOrEmpty(m_BindingId))
return false;
// Look up binding index.
var bindingId = new Guid(m_BindingId);
bindingIndex = action.bindings.IndexOf(x => x.id == bindingId);
if (bindingIndex == -1)
{
Debug.LogError($"Cannot find binding with ID '{bindingId}' on '{action}'", this);
return false;
}
return true;
}
/// <summary>
/// Trigger a refresh of the currently displayed binding.
/// </summary>
public void UpdateBindingDisplay()
{
var displayString = string.Empty;
var deviceLayoutName = default(string);
var controlPath = default(string);
// Get display string from action.
var action = m_Action?.action;
if (action != null)
{
var bindingIndex = action.bindings.IndexOf(x => x.id.ToString() == m_BindingId);
if (bindingIndex != -1)
displayString = action.GetBindingDisplayString(bindingIndex, out deviceLayoutName, out controlPath, displayStringOptions);
}
// Set on label (if any).
if (m_BindingText != null)
m_BindingText.SetText(displayString);
// Give listeners a chance to configure UI in response.
m_UpdateBindingUIEvent?.Invoke(this, displayString, deviceLayoutName, controlPath);
}
/// <summary>
/// Remove currently applied binding overrides.
/// </summary>
public void ResetToDefault()
{
if (!ResolveActionAndBinding(out var action, out var bindingIndex))
return;
if (action.bindings[bindingIndex].isComposite)
{
// It's a composite. Remove overrides from part bindings.
for (var i = bindingIndex + 1; i < action.bindings.Count && action.bindings[i].isPartOfComposite; ++i)
action.RemoveBindingOverride(i);
}
else
{
action.RemoveBindingOverride(bindingIndex);
}
UpdateBindingDisplay();
}
/// <summary>
/// Initiate an interactive rebind that lets the player actuate a control to choose a new binding
/// for the action.
/// </summary>
public void StartInteractiveRebind()
{
if (!ResolveActionAndBinding(out var action, out var bindingIndex))
return;
// If the binding is a composite, we need to rebind each part in turn.
if (action.bindings[bindingIndex].isComposite)
{
var firstPartIndex = bindingIndex + 1;
if (firstPartIndex < action.bindings.Count && action.bindings[firstPartIndex].isPartOfComposite)
PerformInteractiveRebind(action, firstPartIndex, allCompositeParts: true);
}
else
{
PerformInteractiveRebind(action, bindingIndex);
}
}
private void PerformInteractiveRebind(InputAction action, int bindingIndex, bool allCompositeParts = false)
{
m_RebindOperation?.Cancel(); // Will null out m_RebindOperation.
void CleanUp()
{
m_RebindOperation?.Dispose();
m_RebindOperation = null;
}
// Configure the rebind.
m_RebindOperation = action.PerformInteractiveRebinding(bindingIndex)
.OnCancel(
operation =>
{
m_RebindStopEvent?.Invoke(this, operation);
m_RebindOverlay?.SetActive(false);
UpdateBindingDisplay();
CleanUp();
})
.OnComplete(
operation =>
{
m_RebindOverlay?.SetActive(false);
m_RebindStopEvent?.Invoke(this, operation);
UpdateBindingDisplay();
CleanUp();
// If there's more composite parts we should bind, initiate a rebind
// for the next part.
if (allCompositeParts)
{
var nextBindingIndex = bindingIndex + 1;
if (nextBindingIndex < action.bindings.Count && action.bindings[nextBindingIndex].isPartOfComposite)
PerformInteractiveRebind(action, nextBindingIndex, true);
}
});
// If it's a part binding, show the name of the part in the UI.
var partName = default(string);
if (action.bindings[bindingIndex].isPartOfComposite)
partName = $"Binding '{action.bindings[bindingIndex].name}'. ";
// Bring up rebind overlay, if we have one.
m_RebindOverlay?.SetActive(true);
// Give listeners a chance to act on the rebind starting.
m_RebindStartEvent?.Invoke(this, m_RebindOperation);
m_RebindOperation.Start();
}
protected void OnEnable()
{
if (s_RebindActionUIs == null)
s_RebindActionUIs = new List<CustomRebindUIBehaviour>();
s_RebindActionUIs.Add(this);
if (s_RebindActionUIs.Count == 1)
InputSystem.onActionChange += OnActionChange;
}
protected void OnDisable()
{
m_RebindOperation?.Dispose();
m_RebindOperation = null;
s_RebindActionUIs.Remove(this);
if (s_RebindActionUIs.Count == 0)
{
s_RebindActionUIs = null;
InputSystem.onActionChange -= OnActionChange;
}
}
// When the action system re-resolves bindings, we want to update our UI in response. While this will
// also trigger from changes we made ourselves, it ensures that we react to changes made elsewhere. If
// the user changes keyboard layout, for example, we will get a BoundControlsChanged notification and
// will update our UI to reflect the current keyboard layout.
private static void OnActionChange(object obj, InputActionChange change)
{
if (change != InputActionChange.BoundControlsChanged)
return;
var action = obj as InputAction;
var actionMap = action?.actionMap ?? obj as InputActionMap;
var actionAsset = actionMap?.asset ?? obj as InputActionAsset;
for (var i = 0; i < s_RebindActionUIs.Count; ++i)
{
var component = s_RebindActionUIs[i];
var referencedAction = component.actionReference?.action;
if (referencedAction == null)
continue;
if (referencedAction == action ||
referencedAction.actionMap == actionMap ||
referencedAction.actionMap?.asset == actionAsset)
component.UpdateBindingDisplay();
}
}
[Tooltip("Reference to action that is to be rebound from the UI.")]
[SerializeField]
private InputActionReference m_Action;
[SerializeField]
private string m_BindingId;
[SerializeField]
private InputBinding.DisplayStringOptions m_DisplayStringOptions;
[Tooltip("Text label that will receive the name of the action. Optional. Set to None to have the "
+ "rebind UI not show a label for the action.")]
[SerializeField]
private TextMeshProUGUI m_ActionLabel;
[Tooltip("Text label that will receive the current, formatted binding string.")]
[SerializeField]
private TextMeshProUGUI m_BindingText;
[Tooltip("Optional UI that will be shown while a rebind is in progress.")]
[SerializeField]
private GameObject m_RebindOverlay;
[Tooltip("Event that is triggered when the way the binding is display should be updated. This allows displaying "
+ "bindings in custom ways, e.g. using images instead of text.")]
[SerializeField]
private UpdateBindingUIEvent m_UpdateBindingUIEvent;
[Tooltip("Event that is triggered when an interactive rebind is being initiated. This can be used, for example, "
+ "to implement custom UI behavior while a rebind is in progress. It can also be used to further "
+ "customize the rebind.")]
[SerializeField]
private InteractiveRebindEvent m_RebindStartEvent;
[Tooltip("Event that is triggered when an interactive rebind is complete or has been aborted.")]
[SerializeField]
private InteractiveRebindEvent m_RebindStopEvent;
private InputActionRebindingExtensions.RebindingOperation m_RebindOperation;
private static List<CustomRebindUIBehaviour> s_RebindActionUIs;
// We want the label for the action name to update in edit mode, too, so
// we kick that off from here.
#if UNITY_EDITOR
protected void OnValidate()
{
UpdateActionLabel();
UpdateBindingDisplay();
}
#endif
private void UpdateActionLabel()
{
if (m_ActionLabel != null)
{
var action = m_Action?.action;
m_ActionLabel.text = action != null ? action.name : string.Empty;
}
}
[Serializable]
public class UpdateBindingUIEvent : UnityEvent<CustomRebindUIBehaviour, string, string, string>
{
}
[Serializable]
public class InteractiveRebindEvent : UnityEvent<CustomRebindUIBehaviour, InputActionRebindingExtensions.RebindingOperation>
{
}
}

11
InputSystem_LocalMultiplayer_Project/Assets/Scripts/CustomRebindUIBehaviour.cs.meta


fileFormatVersion: 2
guid: 87aafa8c3edbaeb4eb9e418fbb29a389
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

62
InputSystem_LocalMultiplayer_Project/Assets/Scripts/DeviceDisplayConfigurator.cs


using UnityEngine;
using System.Collections.Generic;
[CreateAssetMenu(fileName = "Device Display Configurator", menuName = "Scriptable Objects/Device Display Configurator", order = 1)]
public class DeviceDisplayConfigurator : ScriptableObject
{
[System.Serializable]
public struct DeviceSettings
{
public string deviceRawPath;
public string deviceDisplayName;
public Color deviceDisplayColor;
}
public List<DeviceSettings> deviceSettings = new List<DeviceSettings>();
private Color fallbackDisplayColor = Color.white;
public string GetDeviceDisplayName(string playerInputDeviceRawPath)
{
string newDisplayName = null;
for(int i = 0; i < deviceSettings.Count; i++)
{
if(deviceSettings[i].deviceRawPath == playerInputDeviceRawPath)
{
newDisplayName = deviceSettings[i].deviceDisplayName;
}
}
if(newDisplayName == null)
{
newDisplayName = playerInputDeviceRawPath;
}
return newDisplayName;
}
public Color GetDeviceDisplayColor(string playerInputDeviceRawPath)
{
Color newDisplayColor = fallbackDisplayColor;
for(int i = 0; i < deviceSettings.Count; i++)
{
if(deviceSettings[i].deviceRawPath == playerInputDeviceRawPath)
{
newDisplayColor = deviceSettings[i].deviceDisplayColor;
}
}
return newDisplayColor;
}
}

49
InputSystem_LocalMultiplayer_Project/Assets/Scripts/MenuUIManager.cs


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.InputSystem;
using UnityEngine.InputSystem.Utilities;
public class MenuUIManager : Singleton<MenuUIManager>
{
[Header("References")]
public Canvas menuCanvas;
[Header("In-Scene Player Panel")]
public GameObject inScenePlayerRebindPanel;
[Header("Player Panel Settings")]
public GameObject playerRebindPanelPrefab;
public Transform playerRebindListRoot;
public void UpdateRebindPlayerPanelList()
{
Destroy(inScenePlayerRebindPanel);
List<PlayerController> activePlayerControllers = GameManager.Instance.GetActivePlayerControllers();
for(int i = 0; i < activePlayerControllers.Count; i++)
{
GameObject spawnedPlayerRebindPanel = Instantiate(playerRebindPanelPrefab, playerRebindListRoot.position, playerRebindListRoot.rotation) as GameObject;
spawnedPlayerRebindPanel.transform.SetParent(playerRebindListRoot, false);
PlayerInput spawnedPlayerInput = activePlayerControllers[i].GetPlayerInput();
int spawnedPlayerIndex = spawnedPlayerInput.playerIndex;
string spawnedPlayerDevicePath = spawnedPlayerInput.devices[0].ToString();
spawnedPlayerRebindPanel.GetComponent<PlayerRebindUIDeviceDisplayBehaviour>().SetupPanelDisplays(spawnedPlayerIndex, spawnedPlayerDevicePath);
}
}
public void ToggleMenu(bool newState)
{
menuCanvas.enabled = newState;
}
}

11
InputSystem_LocalMultiplayer_Project/Assets/Scripts/MenuUIManager.cs.meta


fileFormatVersion: 2
guid: cfad211f8c6ebe348bfc0d302db7da52
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

24
InputSystem_LocalMultiplayer_Project/Assets/Scripts/PlayerRebindUIDeviceDisplayBehaviour.cs


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;
public class PlayerRebindUIDeviceDisplayBehaviour : MonoBehaviour
{
[Header("Device Display")]
public DeviceDisplayConfigurator deviceDisplayConfigurator;
[Header("Display References")]
public TextMeshProUGUI playerIDDisplay;
public TextMeshProUGUI playerDeviceDisplay;
public void SetupPanelDisplays(int playerID, string playerDevicePath)
{
playerIDDisplay.SetText("Player " + (playerID + 1));
playerDeviceDisplay.SetText(deviceDisplayConfigurator.GetDeviceDisplayName(playerDevicePath));
playerDeviceDisplay.color = deviceDisplayConfigurator.GetDeviceDisplayColor(playerDevicePath);
}
}

11
InputSystem_LocalMultiplayer_Project/Assets/Scripts/PlayerRebindUIDeviceDisplayBehaviour.cs.meta


fileFormatVersion: 2
guid: 3f18ceab1bac8124c8f055b165452183
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

183
InputSystem_LocalMultiplayer_Project/Assets/Scripts/ReorderableListUtility.cs


//
// Copyright (c) 2016 Siyuan Wang.
// Licensed under the Apache License Version 2.0. See LICENSE file in the project root for full license information.
//
using System.Collections.Generic;
using UnityEditor;
using UnityEditorInternal;
using UnityEngine;
public static class ReorderableListUtility
{
public static ReorderableList CreateAutoLayout(SerializedProperty property, float columnSpacing = 10f)
{
return CreateAutoLayout(property, true, true, true, true, null, null, columnSpacing);
}
public static ReorderableList CreateAutoLayout(SerializedProperty property, string[] headers, float?[] columnWidth = null, float columnSpacing = 10f)
{
return CreateAutoLayout(property, true, true, true, true, headers, columnWidth, columnSpacing);
}
public static ReorderableList CreateAutoLayout(SerializedProperty property, bool draggable, bool displayHeader, bool displayAddButton, bool displayRemoveButton, float columnSpacing = 10f)
{
return CreateAutoLayout(property, draggable, displayHeader, displayAddButton, displayRemoveButton, null, null, columnSpacing);
}
public static ReorderableList CreateAutoLayout(SerializedProperty property, bool draggable, bool displayHeader, bool displayAddButton, bool displayRemoveButton, string[] headers, float?[] columnWidth = null, float columnSpacing = 10f)
{
var list = new ReorderableList(property.serializedObject, property, draggable, displayHeader, displayAddButton, displayRemoveButton);
var colmuns = new List<Column>();
list.drawElementCallback = DrawElement(list, GetColumnsFunc(list, headers, columnWidth, colmuns), columnSpacing);
list.drawHeaderCallback = DrawHeader(list, GetColumnsFunc(list, headers, columnWidth, colmuns), columnSpacing);
return list;
}
public static bool DoLayoutListWithFoldout(ReorderableList list, string label = null)
{
var property = list.serializedProperty;
property.isExpanded = EditorGUILayout.Foldout(property.isExpanded, label != null ? label : property.displayName);
if (property.isExpanded)
{
list.DoLayoutList();
}
return property.isExpanded;
}
private static ReorderableList.ElementCallbackDelegate DrawElement(ReorderableList list, System.Func<List<Column>> getColumns, float columnSpacing)
{
return (rect, index, isActive, isFocused) =>
{
var property = list.serializedProperty;
var columns = getColumns();
var layouts = CalculateColumnLayout(columns, rect, columnSpacing);
var arect = rect;
arect.height = EditorGUIUtility.singleLineHeight;
for (var ii = 0; ii < columns.Count; ii++)
{
var c = columns[ii];
arect.width = layouts[ii];
EditorGUI.PropertyField(arect, property.GetArrayElementAtIndex(index).FindPropertyRelative(c.PropertyName), GUIContent.none);
arect.x += arect.width + columnSpacing;
}
};
}
private static ReorderableList.HeaderCallbackDelegate DrawHeader(ReorderableList list, System.Func<List<Column>> getColumns, float columnSpacing)
{
return (rect) =>
{
var columns = getColumns();
if (list.draggable)
{
rect.width -= 15;
rect.x += 15;
}
var layouts = CalculateColumnLayout(columns, rect, columnSpacing);
var arect = rect;
arect.height = EditorGUIUtility.singleLineHeight;
for (var ii = 0; ii < columns.Count; ii++)
{
var c = columns[ii];
arect.width = layouts[ii];
EditorGUI.LabelField(arect, c.DisplayName);
arect.x += arect.width + columnSpacing;
}
};
}
private static System.Func<List<Column>> GetColumnsFunc(ReorderableList list, string[] headers, float?[] columnWidth, List<Column> output)
{
var property = list.serializedProperty;
return () =>
{
if (output.Count <= 0 || list.serializedProperty != property)
{
output.Clear();
property = list.serializedProperty;
if (property.isArray && property.arraySize > 0)
{
var it = property.GetArrayElementAtIndex(0).Copy();
var prefix = it.propertyPath;
var index = 0;
if (it.Next(true))
{
do
{
if (it.propertyPath.StartsWith(prefix))
{
var c = new Column();
c.DisplayName = (headers != null && headers.Length > index) ? headers[index] : it.displayName;
c.PropertyName = it.propertyPath.Substring(prefix.Length + 1);
c.Width = (columnWidth != null && columnWidth.Length > index) ? columnWidth[index] : null;
output.Add(c);
}
else
{
break;
}
index += 1;
}
while (it.Next(false));
}
}
}
return output;
};
}
private static List<float> CalculateColumnLayout(List<Column> columns, Rect rect, float columnSpacing)
{
var autoWidth = rect.width;
var autoCount = 0;
foreach (var column in columns)
{
if (column.Width.HasValue)
{
autoWidth -= column.Width.Value;
}
else
{
autoCount += 1;
}
}
autoWidth -= (columns.Count - 1) * columnSpacing;
autoWidth /= autoCount;
var widths = new List<float>(columns.Count);
foreach (var column in columns)
{
if (column.Width.HasValue)
{
widths.Add(column.Width.Value);
}
else
{
widths.Add(autoWidth);
}
}
return widths;
}
private struct Column
{
public string DisplayName;
public string PropertyName;
public float? Width;
}
}

11
InputSystem_LocalMultiplayer_Project/Assets/Scripts/ReorderableListUtility.cs.meta


fileFormatVersion: 2
guid: f80afc2351fc1b34d965907fa53d8db0
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

10
InputSystem_LocalMultiplayer_Project/Assets/Scripts/SimplifyDeviceString.cs


using System.Collections;
using System.Collections.Generic;
public static class SimplifyDeviceString
{
public static string GetName()
{
return "Hello";
}
}

11
InputSystem_LocalMultiplayer_Project/Assets/Scripts/SimplifyDeviceString.cs.meta


fileFormatVersion: 2
guid: 7239265b2b6ab0740a16f8fa4be30d56
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

27
InputSystem_LocalMultiplayer_Project/Assets/DeviceDisplayConfigurator/Device Display Configurator.asset


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fa6f1fbaea804c34cab896669f1e362b, type: 3}
m_Name: Device Display Configurator
m_EditorClassIdentifier:
deviceSettings:
- deviceRawPath: Keyboard:/Keyboard
deviceDisplayName: Keyboard
deviceDisplayColor: {r: 0.7830189, g: 0.7830189, b: 0.7830189, a: 1}
- deviceRawPath: XInputControllerWindows:/XInputControllerWindows
deviceDisplayName: Xbox Controller
deviceDisplayColor: {r: 0.080098376, g: 0.698, b: 0.074377045, a: 1}
- deviceRawPath: DualShock4GamepadHID:/DualShock4GamepadHID
deviceDisplayName: Playstation Controller
deviceDisplayColor: {r: 0.20485054, g: 0.25336775, b: 0.938, a: 1}
- deviceRawPath: SwitchProControllerHID:/SwitchProControllerHID
deviceDisplayName: Nintendo Switch Pro Controller
deviceDisplayColor: {r: 1, g: 0, b: 0.080357075, a: 1}

8
InputSystem_LocalMultiplayer_Project/Assets/DeviceDisplayConfigurator/Device Display Configurator.asset.meta


fileFormatVersion: 2
guid: 1ae90af367a37dc47b0ecc2b81a75099
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 0
userData:
assetBundleName:
assetBundleVariant:

326
InputSystem_LocalMultiplayer_Project/Assets/DistortionTrail/ShaderGraph_Distortion.shadergraph
文件差异内容过多而无法显示
查看文件

10
InputSystem_LocalMultiplayer_Project/Assets/DistortionTrail/ShaderGraph_Distortion.shadergraph.meta


fileFormatVersion: 2
guid: 6f2be88008c45e747b2cbf1018394612
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3}

3
InputSystem_LocalMultiplayer_Project/Assets/DistortionTrail/Texture_Gradient_Horizontal.png

之前 之后
宽度: 200  |  高度: 200  |  大小: 1.5 KiB

91
InputSystem_LocalMultiplayer_Project/Assets/DistortionTrail/Texture_Gradient_Horizontal.png.meta


fileFormatVersion: 2
guid: ff8d2362415c115408cdcf06000dec66
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 10
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: 0
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: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 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
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

120
InputSystem_LocalMultiplayer_Project/Assets/DistortionTrail/Weapon_Trail_Distortion_Mat.mat


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &-7458053655313033853
MonoBehaviour:
m_ObjectHideFlags: 11
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
m_Name:
m_EditorClassIdentifier:
version: 1
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Weapon_Trail_Distortion_Mat
m_Shader: {fileID: -6465566751694194690, guid: 6f2be88008c45e747b2cbf1018394612,
type: 3}
m_ShaderKeywords:
m_LightmapFlags: 0
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- Texture2D_9BF9DBFB:
m_Texture: {fileID: 2800000, guid: ff8d2362415c115408cdcf06000dec66, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _BaseMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _BumpMap:
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}
- _SpecGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- Vector1_229C07CC: 2.19
- Vector1_5DF01ADF: -0.03
- Vector1_90C9BC45: 0.82
- Vector1_BDDAF593: 5.04
- Vector1_DFC0AA35: 0.63
- Vector1_E1EEE93C: 0.71
- _AlphaClip: 0
- _Blend: 0
- _BlendOp: 0
- _BumpScale: 1
- _CameraFadingEnabled: 0
- _CameraFarFadeDistance: 2
- _CameraNearFadeDistance: 1
- _ColorMode: 0
- _Cull: 0
- _Cutoff: 0.5
- _DistortionBlend: 0.5
- _DistortionEnabled: 0
- _DistortionStrength: 1
- _DistortionStrengthScaled: 0
- _DstBlend: 0
- _EmissionEnabled: 0
- _EnvironmentReflections: 1
- _FlipbookMode: 0
- _GlossMapScale: 0
- _Glossiness: 0
- _GlossyReflections: 0
- _LightingEnabled: 0
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _QueueOffset: 0
- _ReceiveShadows: 1
- _Smoothness: 0.5
- _SmoothnessTextureChannel: 0
- _SoftParticlesEnabled: 0
- _SoftParticlesFarFadeDistance: 1
- _SoftParticlesNearFadeDistance: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _Surface: 0
- _WorkflowMode: 1
- _ZWrite: 1
m_Colors:
- Color_7A3A60E1: {r: 1, g: 0, b: 0, a: 0}
- _BaseColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
- _CameraFadeParams: {r: 0, g: Infinity, b: 0, a: 0}
- _Color: {r: 0.5, g: 0.5, b: 0.5, a: 1}
- _ColorAddSubDiff: {r: 0, g: 0, b: 0, a: 0}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _SoftParticleFadeParams: {r: 0, g: 0, b: 0, a: 0}
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}

8
InputSystem_LocalMultiplayer_Project/Assets/DistortionTrail/Weapon_Trail_Distortion_Mat.mat.meta


fileFormatVersion: 2
guid: 6ddc3ed69fff44c409ff48f83a177748
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 0
userData:
assetBundleName:
assetBundleVariant:

29
InputSystem_LocalMultiplayer_Project/Assets/Editor/DeviceDisplayConfiguratorEditor.cs


using UnityEditor;
using UnityEditorInternal;
[CustomEditor(typeof(DeviceDisplayConfigurator))]
[CanEditMultipleObjects]
public class DeviceDisplayConfiguratorEditor : Editor
{
private ReorderableList list2;
public override void OnInspectorGUI()
{
this.serializedObject.Update();
ReorderableListUtility.DoLayoutListWithFoldout(this.list2);
this.serializedObject.ApplyModifiedProperties();
}
private void OnEnable()
{
var property = this.serializedObject.FindProperty("deviceSettings");
this.list2 = ReorderableListUtility.CreateAutoLayout(
property,
new string[] { "Raw Path Name", "Display Name", "Display Color" }
);
}
}

11
InputSystem_LocalMultiplayer_Project/Assets/Editor/DeviceDisplayConfiguratorEditor.cs.meta


fileFormatVersion: 2
guid: 3394780836865e8449248f8ede70a004
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

16
InputSystem_LocalMultiplayer_Project/Assets/Scripts/DeviceColorSchemeAsset.cs


using UnityEngine;
[CreateAssetMenu(fileName = "Device Color Scheme", menuName = "Scriptable Objects/Device Color Scheme", order = 1)]
public class DeviceColorScheme : ScriptableObject
{
[Header("Desktop")]
public Color keyboard;
[Header("Console")]
public Color xboxController;
public Color playstationController;
public Color nintendoSwitchController;
[Header("Fallback")]
public Color fallbackController;
}

/InputSystem_LocalMultiplayer_Project/Assets/Scripts/DeviceColorSchemeAsset.cs.meta → /InputSystem_LocalMultiplayer_Project/Assets/Scripts/DeviceDisplayConfigurator.cs.meta

/InputSystem_LocalMultiplayer_Project/Assets/DeviceColorScheme.meta → /InputSystem_LocalMultiplayer_Project/Assets/DeviceDisplayConfigurator.meta

正在加载...
取消
保存