This commit is contained in:
陈思海 2025-12-10 17:38:31 +08:00
parent 21be7278cb
commit 0c654d8ae4
22 changed files with 1639 additions and 2289 deletions

View File

@ -17,7 +17,7 @@ MonoBehaviour:
- EntryId: 74156087 - EntryId: 74156087
SectionId: 80328242 SectionId: 80328242
Key: Input.actiondsad.movedsa Key: Input.actiondsad.movedsa
Value: Value: move ru
- EntryId: 94373125 - EntryId: 94373125
SectionId: 80328242 SectionId: 80328242
Key: Input.action.usedas Key: Input.action.usedas
@ -51,7 +51,7 @@ MonoBehaviour:
- EntryId: 74156087 - EntryId: 74156087
SectionId: 80328242 SectionId: 80328242
Key: Input.actiondsad.movedsa Key: Input.actiondsad.movedsa
Value: Value: Move
- EntryId: 94373125 - EntryId: 94373125
SectionId: 80328242 SectionId: 80328242
Key: Input.action.usedas Key: Input.action.usedas
@ -85,11 +85,11 @@ MonoBehaviour:
- EntryId: 74156087 - EntryId: 74156087
SectionId: 80328242 SectionId: 80328242
Key: Input.actiondsad.movedsa Key: Input.actiondsad.movedsa
Value: Value: move jp
- EntryId: 94373125 - EntryId: 94373125
SectionId: 80328242 SectionId: 80328242
Key: Input.action.usedas Key: Input.action.usedas
Value: Value: USE FUCK U JP
- EntryId: 41381430 - EntryId: 41381430
SectionId: 80328242 SectionId: 80328242
Key: Input.action.jumpdsad Key: Input.action.jumpdsad

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,216 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!213 &21300000
Sprite:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: EmojiOne_12
m_Rect:
serializedVersion: 2
x: 4
y: 4
width: 120
height: 120
m_Offset: {x: 0, y: 0}
m_Border: {x: 0, y: 0, z: 0, w: 0}
m_PixelsToUnits: 100
m_Pivot: {x: 0.5, y: 0.5}
m_Extrude: 1
m_IsPolygon: 0
m_AtlasName:
m_PackingTag:
m_RenderDataKey:
dffef66376be4fa480fb02b19edbe903: 21300022
m_AtlasTags: []
m_SpriteAtlas: {fileID: 0}
m_RD:
serializedVersion: 3
texture: {fileID: 2800000, guid: dffef66376be4fa480fb02b19edbe903, type: 3}
alphaTexture: {fileID: 0}
secondaryTextures: []
m_SubMeshes:
- serializedVersion: 2
firstByte: 0
indexCount: 6
topology: 0
baseVertex: 0
firstVertex: 0
vertexCount: 4
localAABB:
m_Center: {x: 0, y: 0, z: 0}
m_Extent: {x: 0, y: 0, z: 0}
m_IndexBuffer: 030000000100020001000000
m_VertexData:
serializedVersion: 3
m_VertexCount: 4
m_Channels:
- stream: 0
offset: 0
format: 0
dimension: 3
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 1
offset: 0
format: 0
dimension: 2
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
m_DataSize: 80
_typelessdata: 9a9919bf9a99193f000000009a99193f9a9919bf000000009a99193f9a99193f000000009a9919bf9a9919bf00000000f0ffff3b0000783e0000783ef0ffff3b0000783e0000783ef0ffff3bf0ffff3b
m_Bindpose: []
textureRect:
serializedVersion: 2
x: 4
y: 4
width: 120
height: 120
textureRectOffset: {x: 0, y: 0}
atlasRectOffset: {x: -1, y: -1}
settingsRaw: 64
uvTransform: {x: 100, y: 64, z: 100, w: 64}
downscaleMultiplier: 1
m_AtlasRD:
serializedVersion: 3
texture: {fileID: 2800000, guid: dffef66376be4fa480fb02b19edbe903, type: 3}
alphaTexture: {fileID: 0}
secondaryTextures: []
m_SubMeshes:
- serializedVersion: 2
firstByte: 0
indexCount: 6
topology: 0
baseVertex: 0
firstVertex: 0
vertexCount: 4
localAABB:
m_Center: {x: 0, y: 0, z: 0}
m_Extent: {x: 0, y: 0, z: 0}
m_IndexBuffer: 030000000100020001000000
m_VertexData:
serializedVersion: 3
m_VertexCount: 4
m_Channels:
- stream: 0
offset: 0
format: 0
dimension: 3
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 1
offset: 0
format: 0
dimension: 2
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
- stream: 0
offset: 0
format: 0
dimension: 0
m_DataSize: 80
_typelessdata: 9a9919bf9a99193f000000009a99193f9a9919bf000000009a99193f9a99193f000000009a9919bf9a9919bf00000000f0ffff3b0000783e0000783ef0ffff3b0000783e0000783ef0ffff3bf0ffff3b
m_Bindpose: []
textureRect:
serializedVersion: 2
x: 4
y: 4
width: 120
height: 120
textureRectOffset: {x: 0, y: 0}
atlasRectOffset: {x: -1, y: -1}
settingsRaw: 64
uvTransform: {x: 100, y: 64, z: 100, w: 64}
downscaleMultiplier: 1
m_PhysicsShape:
- - {x: -0.59999996, y: 0.59999996}
- {x: -0.59999996, y: -0.59999996}
- {x: 0.59999996, y: -0.59999996}
- {x: 0.59999996, y: 0.59999996}
m_Bones: []
m_SpriteID: 412349a150598d14da4d7140df5c0286

View File

@ -1,7 +1,8 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 002e269efc288864b9fe6b6c51d15935 guid: 068091d572066f043aa79b9beace61ea
DefaultImporter: NativeFormatImporter:
externalObjects: {} externalObjects: {}
mainObjectFileID: 21300000
userData: userData:
assetBundleName: assetBundleName:
assetBundleVariant: assetBundleVariant:

View File

@ -808,6 +808,142 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 215982991} m_GameObject: {fileID: 215982991}
m_CullTransparentMesh: 1 m_CullTransparentMesh: 1
--- !u!1 &344668135
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 344668136}
- component: {fileID: 344668138}
- component: {fileID: 344668137}
m_Layer: 5
m_Name: UXTextMeshPro
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &344668136
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 344668135}
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: 501104430}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 160, y: 30}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &344668137
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 344668135}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: bd17b8b605f2ba540bac156b5cf5ac77, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: USE FUCK U
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 7cdd102360e32234383f8e3f40da47a9, type: 2}
m_sharedMaterial: {fileID: -1232377485662373643, guid: 7cdd102360e32234383f8e3f40da47a9, 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_StyleSheet: {fileID: 0}
m_TextStyleHashCode: -1183493901
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 36
m_fontSizeBase: 36
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 1
m_VerticalAlignment: 256
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_enableWordWrapping: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_IsTextObjectScaleStatic: 0
m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
m_localizationID: 94373125
m_localizationKey: Input.action.usedas
--- !u!222 &344668138
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 344668135}
m_CullTransparentMesh: 1
--- !u!1 &346489238 --- !u!1 &346489238
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -1381,6 +1517,11 @@ RectTransform:
- {fileID: 1466314556} - {fileID: 1466314556}
- {fileID: 2043214059} - {fileID: 2043214059}
- {fileID: 1240218065} - {fileID: 1240218065}
- {fileID: 1461120293}
- {fileID: 1268519739}
- {fileID: 953234183}
- {fileID: 1108824070}
- {fileID: 344668136}
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0} m_AnchorMin: {x: 0, y: 0}
@ -2568,6 +2709,7 @@ MonoBehaviour:
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
actions: {fileID: -944628639613478452, guid: 916c72588b6bc6e48a022e8c82e6438f, type: 3} actions: {fileID: -944628639613478452, guid: 916c72588b6bc6e48a022e8c82e6438f, type: 3}
inputGlyphDatabase: {fileID: 11400000, guid: 6ae7129e9026e8348b9d222e9d0d6f68, type: 2}
fileName: input_bindings.json fileName: input_bindings.json
debugMode: 1 debugMode: 1
--- !u!1 &734992815 --- !u!1 &734992815
@ -3397,6 +3539,54 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 933311483} m_GameObject: {fileID: 933311483}
m_CullTransparentMesh: 1 m_CullTransparentMesh: 1
--- !u!1 &953234182
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 953234183}
- component: {fileID: 953234184}
m_Layer: 5
m_Name: GameObject (2)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &953234183
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 953234182}
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: 501104430}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 100, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &953234184
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 953234182}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f7d3bd4152cc45d18982984253cfb298, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &983400299 --- !u!1 &983400299
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -3602,7 +3792,6 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 6bacb75074f6f194a8047ae2fd93d01e, type: 3} m_Script: {fileID: 11500000, guid: 6bacb75074f6f194a8047ae2fd93d01e, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
database: {fileID: 11400000, guid: 6ae7129e9026e8348b9d222e9d0d6f68, type: 2}
audioSource: {fileID: 1036822060} audioSource: {fileID: 1036822060}
hotButtons: hotButtons:
- {fileID: 0} - {fileID: 0}
@ -3831,6 +4020,54 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1091182236} m_GameObject: {fileID: 1091182236}
m_CullTransparentMesh: 1 m_CullTransparentMesh: 1
--- !u!1 &1108824069
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1108824070}
- component: {fileID: 1108824071}
m_Layer: 5
m_Name: GameObject (3)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1108824070
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1108824069}
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: 501104430}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 100, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1108824071
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1108824069}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f7d3bd4152cc45d18982984253cfb298, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &1174001929 --- !u!1 &1174001929
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -4264,6 +4501,54 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1261491487} m_GameObject: {fileID: 1261491487}
m_CullTransparentMesh: 1 m_CullTransparentMesh: 1
--- !u!1 &1268519738
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1268519739}
- component: {fileID: 1268519740}
m_Layer: 5
m_Name: GameObject (1)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1268519739
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1268519738}
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: 501104430}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 100, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1268519740
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1268519738}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f7d3bd4152cc45d18982984253cfb298, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &1276959926 --- !u!1 &1276959926
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -4790,6 +5075,54 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1302014481} m_GameObject: {fileID: 1302014481}
m_CullTransparentMesh: 1 m_CullTransparentMesh: 1
--- !u!1 &1461120292
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1461120293}
- component: {fileID: 1461120294}
m_Layer: 5
m_Name: GameObject
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1461120293
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1461120292}
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: 501104430}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 100, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1461120294
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1461120292}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f7d3bd4152cc45d18982984253cfb298, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &1466314555 stripped --- !u!1 &1466314555 stripped
GameObject: GameObject:
m_CorrespondingSourceObject: {fileID: 2393741490227731184, guid: 5a0830a080d75784b9f03b1659413301, type: 3} m_CorrespondingSourceObject: {fileID: 2393741490227731184, guid: 5a0830a080d75784b9f03b1659413301, type: 3}
@ -5523,7 +5856,7 @@ PrefabInstance:
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 2393741488666459665, guid: 5a0830a080d75784b9f03b1659413301, type: 3} - target: {fileID: 2393741488666459665, guid: 5a0830a080d75784b9f03b1659413301, type: 3}
propertyPath: m_SizeDelta.x propertyPath: m_SizeDelta.x
value: 92.01 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 2393741488666459665, guid: 5a0830a080d75784b9f03b1659413301, type: 3} - target: {fileID: 2393741488666459665, guid: 5a0830a080d75784b9f03b1659413301, type: 3}
propertyPath: m_SizeDelta.y propertyPath: m_SizeDelta.y
@ -5531,7 +5864,7 @@ PrefabInstance:
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 2393741488666459665, guid: 5a0830a080d75784b9f03b1659413301, type: 3} - target: {fileID: 2393741488666459665, guid: 5a0830a080d75784b9f03b1659413301, type: 3}
propertyPath: m_AnchoredPosition.x propertyPath: m_AnchoredPosition.x
value: 86.005005 value: 40
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 2393741488666459665, guid: 5a0830a080d75784b9f03b1659413301, type: 3} - target: {fileID: 2393741488666459665, guid: 5a0830a080d75784b9f03b1659413301, type: 3}
propertyPath: m_AnchoredPosition.y propertyPath: m_AnchoredPosition.y

View File

@ -12,57 +12,67 @@ public static class GlyphService
/// </summary> /// </summary>
public static InputGlyphDatabase Database { get; set; } public static InputGlyphDatabase Database { get; set; }
public static string GetBindingDisplay(InputAction action, InputGlyphDatabase db = null) public static string GetBindingControlPath(InputAction action, InputDeviceWatcher.InputDeviceCategory? deviceOverride = null)
{ {
if (action == null) return string.Empty; if (action == null) return string.Empty;
var control = GetBindingControl(action); var binding = GetBindingControl(action, deviceOverride);
return control != null ? control.displayName : string.Empty; return binding.hasOverrides ? binding.effectivePath : binding.path;
} }
public static string GetBindingControlPath(InputAction action, InputDeviceWatcher.InputDeviceCategory? deviceOverride = null, InputGlyphDatabase db = null) public static bool TryGetTMPTagForActionPath(InputActionReference reference, InputDeviceWatcher.InputDeviceCategory device, out string tag, out string displayFallback, InputGlyphDatabase db = null)
{ {
if (action == null) return string.Empty; string path = GetBindingControlPath(reference, device);
var control = GetBindingControl(action, deviceOverride); return TryGetTMPTagForActionPath(path, device, out tag, out displayFallback, db);
return control != null ? $"{(control.device?.displayName ?? "Unknown")}/{control.displayName}" : string.Empty;
} }
/// <summary> public static bool TryGetUISpriteForActionPath(InputActionReference reference, InputDeviceWatcher.InputDeviceCategory device, out Sprite sprite, InputGlyphDatabase db = null)
/// 根据当前设备类别(或传入的 deviceOverride尝试在 action.controls 中找到匹配的 control。
/// 匹配策略:检查 control.device.displayName 是否包含类别提示词(忽略大小写)。
/// 如果没有匹配项则返回第一个 control作为最后的退路或 null。
/// </summary>
public static InputControl GetBindingControl(InputAction action, InputDeviceWatcher.InputDeviceCategory? deviceOverride = null)
{ {
if (action == null) return null; string path = GetBindingControlPath(reference, device);
return TryGetUISpriteForActionPath(path, device, out sprite, db);
}
public static bool TryGetTMPTagForActionPath(string controlPath, InputDeviceWatcher.InputDeviceCategory device, out string tag, out string displayFallback, InputGlyphDatabase db = null)
{
tag = null;
displayFallback = null;
db = db ?? Database;
displayFallback = GetDisplayNameFromControlPath(controlPath);
var sprite = db.FindSprite(controlPath, device) ?? db.FindSprite(controlPath, InputDeviceWatcher.InputDeviceCategory.Keyboard);
var spriteName = sprite == null ? string.Empty : sprite.name;
tag = $"<sprite name=\"{spriteName}\">";
return true;
}
public static bool TryGetUISpriteForActionPath(string controlPath, InputDeviceWatcher.InputDeviceCategory device, out Sprite sprite, InputGlyphDatabase db = null)
{
sprite = null;
db = db ?? Database;
if (string.IsNullOrEmpty(controlPath) || db == null) return false;
sprite = db.FindSprite(controlPath, device) ?? db.FindSprite(controlPath, InputDeviceWatcher.InputDeviceCategory.Keyboard);
return sprite != null;
}
static InputBinding GetBindingControl(InputAction action, InputDeviceWatcher.InputDeviceCategory? deviceOverride = null)
{
if (action == null) return default;
var curCategory = deviceOverride ?? InputDeviceWatcher.CurrentCategory; var curCategory = deviceOverride ?? InputDeviceWatcher.CurrentCategory;
var hints = GetDeviceHintsForCategory(curCategory); var hints = GetDeviceHintsForCategory(curCategory);
// 首先找匹配 hints 的 control foreach (var binding in action.bindings)
foreach (var control in action.controls)
{ {
var deviceName = control.device?.displayName ?? string.Empty; var deviceName = binding.path ?? string.Empty;
if (hints.Any(h => deviceName.IndexOf(h, StringComparison.OrdinalIgnoreCase) >= 0)) if (hints.Any(h => deviceName.IndexOf(h, StringComparison.OrdinalIgnoreCase) >= 0))
{ {
return control; return binding;
} }
} }
// 如果没有匹配,尝试返回第一个 gamepad/keyboard 优先的 control更健壮 return default;
if (action.controls.Count > 0)
{
// 优先返回 keyboard/mouse 类型(如果当前类别是 keyboard
if (curCategory == InputDeviceWatcher.InputDeviceCategory.Keyboard)
{
var k = action.controls.FirstOrDefault(c => (c.device?.displayName ?? "").IndexOf("Keyboard", StringComparison.OrdinalIgnoreCase) >= 0)
?? action.controls.First();
return k;
}
return action.controls.First();
}
return null;
} }
static string[] GetDeviceHintsForCategory(InputDeviceWatcher.InputDeviceCategory cat) static string[] GetDeviceHintsForCategory(InputDeviceWatcher.InputDeviceCategory cat)
@ -76,76 +86,17 @@ public static class GlyphService
case InputDeviceWatcher.InputDeviceCategory.PlayStation: case InputDeviceWatcher.InputDeviceCategory.PlayStation:
return new[] { "DualShock", "DualSense", "PlayStation", "Gamepad" }; return new[] { "DualShock", "DualSense", "PlayStation", "Gamepad" };
default: default:
return new[] { "Gamepad", "Joystick", "Keyboard", "Mouse" }; return new[] { "XInput", "Xbox", "Gamepad" };
} }
} }
/// <summary>
/// 尝试根据 controlPath 和设备获取 TMP sprite 标签;如果失败会返回 displayFallback可直接显示的文字 public static string GetDisplayNameFromInputAction(InputAction reference)
/// 逻辑:
/// 1) 使用传入 db 或静态 Database
/// 2) 先在指定设备表中查找 entry找不到则回退到 Keyboard 表;
/// 3) 如果 table 或 tmpAsset 缺失 或 entry.Sprite 缺失,则用 displayFallback从 controlPath 提取最后段或控制名)。
/// </summary>
public static bool TryGetTMPTagForActionPath(string controlPath, InputDeviceWatcher.InputDeviceCategory device, out string tag, out string displayFallback, InputGlyphDatabase db = null)
{ {
tag = null; string controlPath=GetBindingControlPath(reference, InputDeviceWatcher.CurrentCategory);
displayFallback = null; return GetDisplayNameFromControlPath(controlPath);
db = db ?? Database;
if (string.IsNullOrEmpty(controlPath) || db == null)
{
displayFallback = GetDisplayNameFromControlPath(controlPath);
return false;
} }
public static string GetDisplayNameFromControlPath(string controlPath)
var entry = db.FindEntryByControlPath(controlPath, device);
if (entry == null)
{
// 设备缺失或没有 entry -> 回退 keyboard
entry = db.FindEntryByControlPath(controlPath, InputDeviceWatcher.InputDeviceCategory.Keyboard);
}
if (entry == null)
{
displayFallback = GetDisplayNameFromControlPath(controlPath);
return false;
}
// 查找对应表(优先目标设备,再 keyboard
var table = db.GetTable(device) ?? db.GetTable(InputDeviceWatcher.InputDeviceCategory.Keyboard);
if (table == null || table.tmpAsset == null)
{
displayFallback = GetDisplayNameFromControlPath(controlPath);
return false;
}
var sprite = entry.Sprite;
if (sprite == null)
{
displayFallback = GetDisplayNameFromControlPath(controlPath);
return false;
}
var spriteName = sprite.name;
tag = $"<sprite name=\"{spriteName}\">";
return true;
}
public static bool TryGetUISpriteForActionPath(string controlPath, InputDeviceWatcher.InputDeviceCategory device, out Sprite sprite, InputGlyphDatabase db = null)
{
sprite = null;
db = db ?? Database;
if (string.IsNullOrEmpty(controlPath) || db == null) return false;
var entry = db.FindEntryByControlPath(controlPath, device) ?? db.FindEntryByControlPath(controlPath, InputDeviceWatcher.InputDeviceCategory.Keyboard);
if (entry == null) return false;
if (entry.Sprite == null) return false;
sprite = entry.Sprite;
return true;
}
static string GetDisplayNameFromControlPath(string controlPath)
{ {
if (string.IsNullOrEmpty(controlPath)) return string.Empty; if (string.IsNullOrEmpty(controlPath)) return string.Empty;
var parts = controlPath.Split('/'); var parts = controlPath.Split('/');

View File

@ -1,4 +1,5 @@
// InputBindingManager.cs // InputBindingManager.cs
using System; using System;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
@ -8,6 +9,7 @@ using System.Threading.Tasks;
using UnityEngine; using UnityEngine;
using UnityEngine.InputSystem; using UnityEngine.InputSystem;
using System.Reactive.Subjects; using System.Reactive.Subjects;
using AlicizaX.InputGlyph;
using RxUnit = System.Reactive.Unit; using RxUnit = System.Reactive.Unit;
namespace InputRemapper namespace InputRemapper
@ -18,6 +20,9 @@ namespace InputRemapper
[Tooltip("InputActionAsset to manage")] [Tooltip("InputActionAsset to manage")]
public InputActionAsset actions; public InputActionAsset actions;
[SerializeField] private InputGlyphDatabase inputGlyphDatabase;
public string fileName = "input_bindings.json"; public string fileName = "input_bindings.json";
public bool debugMode = false; public bool debugMode = false;
@ -52,6 +57,7 @@ namespace InputRemapper
private void Awake() private void Awake()
{ {
GlyphService.Database = inputGlyphDatabase;
if (actions == null) if (actions == null)
{ {
Debug.LogError("InputBindingManager: InputActionAsset not assigned."); Debug.LogError("InputBindingManager: InputActionAsset not assigned.");
@ -60,7 +66,14 @@ namespace InputRemapper
BuildActionMap(); BuildActionMap();
try { defaultBindingsJson = actions.SaveBindingOverridesAsJson(); } catch { defaultBindingsJson = string.Empty; } try
{
defaultBindingsJson = actions.SaveBindingOverridesAsJson();
}
catch
{
defaultBindingsJson = string.Empty;
}
if (File.Exists(SavePath)) if (File.Exists(SavePath))
{ {
@ -74,7 +87,10 @@ namespace InputRemapper
if (debugMode) Debug.Log($"Loaded overrides from {SavePath}"); if (debugMode) Debug.Log($"Loaded overrides from {SavePath}");
} }
} }
catch (Exception ex) { Debug.LogError("Failed to load overrides: " + ex); } catch (Exception ex)
{
Debug.LogError("Failed to load overrides: " + ex);
}
} }
OnInputsInit.OnNext(RxUnit.Default); OnInputsInit.OnNext(RxUnit.Default);
@ -181,7 +197,6 @@ namespace InputRemapper
} }
} }
// Simple BindingPath (no glyph caching)
public sealed class BindingPath public sealed class BindingPath
{ {
public string bindingPath; public string bindingPath;
@ -215,7 +230,9 @@ namespace InputRemapper
public RebindContext(InputAction action, int bindingIndex, string overridePath) public RebindContext(InputAction action, int bindingIndex, string overridePath)
{ {
this.action = action; this.bindingIndex = bindingIndex; this.overridePath = overridePath; this.action = action;
this.bindingIndex = bindingIndex;
this.overridePath = overridePath;
} }
public override bool Equals(object obj) public override bool Equals(object obj)
@ -237,6 +254,7 @@ namespace InputRemapper
{ {
if (map.Value.actions.TryGetValue(actionName, out var a)) return a.action; if (map.Value.actions.TryGetValue(actionName, out var a)) return a.action;
} }
Debug.LogError($"[InputBindingManager] Could not find action '{actionName}'"); Debug.LogError($"[InputBindingManager] Could not find action '{actionName}'");
return null; return null;
} }
@ -270,7 +288,9 @@ namespace InputRemapper
{ {
foreach (var ctx in Instance.preparedRebinds) foreach (var ctx in Instance.preparedRebinds)
{ {
if (string.IsNullOrEmpty(ctx.overridePath)) { } if (string.IsNullOrEmpty(ctx.overridePath))
{
}
else if (ctx.overridePath == NULL_BINDING) ctx.action.RemoveBindingOverride(ctx.bindingIndex); else if (ctx.overridePath == NULL_BINDING) ctx.action.RemoveBindingOverride(ctx.bindingIndex);
else ctx.action.ApplyBindingOverride(ctx.bindingIndex, ctx.overridePath); else ctx.action.ApplyBindingOverride(ctx.bindingIndex, ctx.overridePath);
@ -365,10 +385,13 @@ namespace InputRemapper
{ {
if (ctx.overridePath == bindingPath && (ctx.action != currentAction || (ctx.action == currentAction && ctx.bindingIndex != currentIndex))) if (ctx.overridePath == bindingPath && (ctx.action != currentAction || (ctx.action == currentAction && ctx.bindingIndex != currentIndex)))
{ {
duplicate = ctx; return true; duplicate = ctx;
return true;
} }
} }
duplicate = null; return false;
duplicate = null;
return false;
} }
private bool AnyBindingPath(string bindingPath, InputAction currentAction, int currentIndex, out (InputAction action, int bindingIndex) duplicate) private bool AnyBindingPath(string bindingPath, InputAction currentAction, int currentIndex, out (InputAction action, int bindingIndex) duplicate)
@ -389,7 +412,9 @@ namespace InputRemapper
} }
} }
} }
duplicate = default; return false;
duplicate = default;
return false;
} }
private void PrepareRebind(RebindContext context) private void PrepareRebind(RebindContext context)
@ -424,7 +449,11 @@ namespace InputRemapper
using (var sw = new StreamWriter(SavePath, false)) await sw.WriteAsync(json); using (var sw = new StreamWriter(SavePath, false)) await sw.WriteAsync(json);
if (debugMode) Debug.Log($"Overrides saved to {SavePath}"); if (debugMode) Debug.Log($"Overrides saved to {SavePath}");
} }
catch (Exception ex) { Debug.LogError("Failed to save overrides: " + ex); throw; } catch (Exception ex)
{
Debug.LogError("Failed to save overrides: " + ex);
throw;
}
} }
public async Task ResetToDefaultAsync() public async Task ResetToDefaultAsync()
@ -444,7 +473,10 @@ namespace InputRemapper
await WriteOverridesToDiskAsync(); await WriteOverridesToDiskAsync();
if (debugMode) Debug.Log("Reset to default and saved."); if (debugMode) Debug.Log("Reset to default and saved.");
} }
catch (Exception ex) { Debug.LogError("Failed to reset defaults: " + ex); } catch (Exception ex)
{
Debug.LogError("Failed to reset defaults: " + ex);
}
} }
public static BindingPath GetBindingPath(string actionName, int bindingIndex = 0) public static BindingPath GetBindingPath(string actionName, int bindingIndex = 0)
@ -456,6 +488,7 @@ namespace InputRemapper
if (action.bindings.TryGetValue(bindingIndex, out var binding)) return binding.bindingPath; if (action.bindings.TryGetValue(bindingIndex, out var binding)) return binding.bindingPath;
} }
} }
return null; return null;
} }

File diff suppressed because it is too large Load Diff

View File

@ -16,7 +16,8 @@ namespace AlicizaX.InputGlyph
[Serializable] [Serializable]
public class DeviceGlyphTable public class DeviceGlyphTable
{ {
public InputDeviceWatcher.InputDeviceCategory deviceType; // 改为使用字符串名称来区分 table会序列化
public string deviceName;
public TMP_SpriteAsset tmpAsset; public TMP_SpriteAsset tmpAsset;
public List<GlyphEntry> entries = new List<GlyphEntry>(); public List<GlyphEntry> entries = new List<GlyphEntry>();
} }
@ -26,28 +27,69 @@ namespace AlicizaX.InputGlyph
{ {
public List<DeviceGlyphTable> tables = new List<DeviceGlyphTable>(); public List<DeviceGlyphTable> tables = new List<DeviceGlyphTable>();
public DeviceGlyphTable GetTable(InputDeviceWatcher.InputDeviceCategory device) // 当 FindEntryByControlPath 传空 path 时返回的占位 sprite
public Sprite placeholderSprite;
// 按名字获取 tablename 精确匹配,不区分大小写)
public DeviceGlyphTable GetTable(string deviceName)
{ {
if (string.IsNullOrEmpty(deviceName)) return null;
if (tables == null) return null; if (tables == null) return null;
for (int i = 0; i < tables.Count; ++i) for (int i = 0; i < tables.Count; ++i)
if (tables[i].deviceType == device) {
return tables[i]; var t = tables[i];
if (t == null) continue;
if (string.Equals(t.deviceName, deviceName, StringComparison.OrdinalIgnoreCase))
return t;
}
return null; return null;
} }
// 为兼容保留接受枚举并映射为常用名称Keyboard, Xbox, PlayStation
public DeviceGlyphTable GetTable(InputDeviceWatcher.InputDeviceCategory device)
{
string name = "Other";
switch (device)
{
case InputDeviceWatcher.InputDeviceCategory.Keyboard: name = "Keyboard"; break;
case InputDeviceWatcher.InputDeviceCategory.Xbox: name = "Xbox"; break;
case InputDeviceWatcher.InputDeviceCategory.PlayStation: name = "PlayStation"; break;
default: name = "Xbox"; break; // 与原逻辑相同Other -> Xbox
}
return GetTable(name);
}
public Sprite FindSprite(string controlPath, InputDeviceWatcher.InputDeviceCategory device)
{
var entry = FindEntryByControlPath(controlPath, device);
if (string.IsNullOrEmpty(controlPath) || entry == null)
{
return placeholderSprite;
}
return entry.Sprite;
}
public GlyphEntry FindEntryByControlPath(string controlPath, InputDeviceWatcher.InputDeviceCategory device) public GlyphEntry FindEntryByControlPath(string controlPath, InputDeviceWatcher.InputDeviceCategory device)
{ {
if (string.IsNullOrEmpty(controlPath)) return null;
var t = GetTable(device); var t = GetTable(device);
if (t != null) if (t != null)
{ {
for (int i = 0; i < t.entries.Count; ++i) for (int i = 0; i < t.entries.Count; ++i)
{ {
var e = t.entries[i]; var e = t.entries[i];
if (e.action.controls.Count <= 0) continue; if (e == null) continue;
if (e.action == null) continue;
var matchPath = $"{e.action.controls[0].device.displayName}/{e.action.controls[0].displayName}"; if (e.action.bindings.Count <= 0) continue;
if (string.Equals(matchPath, controlPath, StringComparison.OrdinalIgnoreCase)) return e; foreach (var binding in e.action.bindings)
{
if (string.Equals(controlPath, binding.path, StringComparison.OrdinalIgnoreCase))
{
return e;
}
}
} }
} }

View File

@ -12,26 +12,45 @@ using TMPro;
public class InputGlyphDatabaseEditor : Editor public class InputGlyphDatabaseEditor : Editor
{ {
SerializedProperty tablesProp; SerializedProperty tablesProp;
SerializedProperty placeholderSpriteProp;
InputGlyphDatabase db; InputGlyphDatabase db;
// 动态标签索引范围0 .. tablesCount 为各表,最后一个 index = tablesCount 为 Settings
int tabIndex = 0; int tabIndex = 0;
string[] tabNames = new string[] { "Keyboard", "Xbox", "PlayStation", "Other" };
// Pagination // 添加表时使用的临时 UI 状态
const int itemsPerPage = 10; // 10 items per page as requested bool showAddField = false;
int currentPage = 0; string newTableName = "";
// 每个表的搜索字符串与分页状态editor 内存,不序列化)
List<string> searchStrings = new List<string>();
List<int> currentPages = new List<int>();
// 常量
const int itemsPerPage = 10;
// 缩小后的预览尺寸
const int previewSize = 52;
void OnEnable() void OnEnable()
{ {
db = target as InputGlyphDatabase; db = target as InputGlyphDatabase;
tablesProp = serializedObject.FindProperty("tables"); tablesProp = serializedObject.FindProperty("tables");
placeholderSpriteProp = serializedObject.FindProperty("placeholderSprite");
// Ensure serialized list exists
if (tablesProp == null) if (tablesProp == null)
{ {
// If the field name is different, user should fix it in their class or here.
Debug.LogError("Could not find serialized property 'tables' on InputGlyphDatabase. Check field name."); Debug.LogError("Could not find serialized property 'tables' on InputGlyphDatabase. Check field name.");
return;
} }
// 如果没有默认的 Keyboard/Xbox/PlayStation 三个表则确保创建(便于迁移)
EnsureDefaultTable("Keyboard");
EnsureDefaultTable("Xbox");
EnsureDefaultTable("PlayStation");
// 初始化 editor 状态列表,长度与 tablesProp 对应
SyncEditorListsWithTables();
} }
public override void OnInspectorGUI() public override void OnInspectorGUI()
@ -39,82 +58,258 @@ public class InputGlyphDatabaseEditor : Editor
serializedObject.Update(); serializedObject.Update();
if (db == null || tablesProp == null) return; if (db == null || tablesProp == null) return;
EditorGUILayout.Space(); // 顶部工具栏(与 Save 按钮风格一致),同时放置 Settings 按钮
tabIndex = GUILayout.Toolbar(tabIndex, tabNames, GUILayout.Height(24)); EditorGUILayout.BeginHorizontal(EditorStyles.toolbar);
var curDevice = (InputDeviceWatcher.InputDeviceCategory)tabIndex; GUILayout.Space(4);
// Ensure all 4 tables exist (serialized-safe) if (GUILayout.Button("Save Asset", EditorStyles.toolbarButton))
EnsureTableFor(InputDeviceWatcher.InputDeviceCategory.Keyboard);
EnsureTableFor(InputDeviceWatcher.InputDeviceCategory.Xbox);
EnsureTableFor(InputDeviceWatcher.InputDeviceCategory.PlayStation);
var tableProp = GetTablePropertyFor(curDevice);
if (tableProp == null)
{ {
EditorGUILayout.HelpBox("Table not found (this should not happen).", MessageType.Warning);
serializedObject.ApplyModifiedProperties();
return;
}
EditorGUILayout.BeginVertical("box");
EditorGUILayout.LabelField(curDevice.ToString(), EditorStyles.boldLabel);
var tmpAssetProp = tableProp.FindPropertyRelative("tmpAsset");
EditorGUILayout.PropertyField(tmpAssetProp, new GUIContent("TMP Sprite Asset"));
EditorGUILayout.BeginHorizontal();
if (GUILayout.Button("Parse TMP Asset"))
{
ParseTMPAssetIntoTableSerialized(tableProp);
}
if (GUILayout.Button("Clear"))
{
var entriesProp = tableProp.FindPropertyRelative("entries");
entriesProp.arraySize = 0;
serializedObject.ApplyModifiedProperties(); serializedObject.ApplyModifiedProperties();
EditorUtility.SetDirty(db); EditorUtility.SetDirty(db);
currentPage = 0; AssetDatabase.SaveAssets();
}
GUILayout.FlexibleSpace();
// + 按钮:切换显示新增输入区域
if (GUILayout.Button(showAddField ? "Cancel +" : "+ Add Table", EditorStyles.toolbarButton, GUILayout.Width(110)))
{
showAddField = !showAddField;
newTableName = "";
}
// Settings 按钮也放在这个 toolbar 上(风格保持一致)
int settingsIndex = tablesProp != null ? tablesProp.arraySize : 0;
bool settingsSelected = (tabIndex == settingsIndex);
if (GUILayout.Toggle(settingsSelected, "Settings", EditorStyles.toolbarButton, GUILayout.Width(90)) != settingsSelected)
{
// 切换到 settings 页面或从 settings 切回第一个 table如果取消
tabIndex = (tabIndex == settingsIndex) ? 0 : settingsIndex;
} }
EditorGUILayout.EndHorizontal(); EditorGUILayout.EndHorizontal();
EditorGUILayout.Space(); // 如果正在新增,展示一个横向输入框(下方,同 toolbar 风格)
if (showAddField)
{
EditorGUILayout.BeginHorizontal(EditorStyles.toolbar);
GUILayout.Label("Name:", GUILayout.Width(40));
newTableName = EditorGUILayout.TextField(newTableName);
if (GUILayout.Button("Add", EditorStyles.toolbarButton, GUILayout.Width(80)))
{
string trimmed = newTableName != null ? newTableName.Trim() : "";
if (string.IsNullOrEmpty(trimmed))
{
EditorUtility.DisplayDialog("Invalid Name", "Table name cannot be empty.", "OK");
}
else
{
// 唯一性检查(不区分大小写)
bool exists = false;
for (int i = 0; i < tablesProp.arraySize; ++i)
{
var t = tablesProp.GetArrayElementAtIndex(i);
var nameProp = t.FindPropertyRelative("deviceName");
if (nameProp != null && string.Equals(nameProp.stringValue, trimmed, StringComparison.OrdinalIgnoreCase))
{
exists = true; break;
}
}
if (exists)
{
EditorUtility.DisplayDialog("Duplicate", "A table with that name already exists.", "OK");
}
else
{
int newIndex = tablesProp.arraySize;
tablesProp.InsertArrayElementAtIndex(newIndex);
var newTable = tablesProp.GetArrayElementAtIndex(newIndex);
var nameProp = newTable.FindPropertyRelative("deviceName");
if (nameProp != null) nameProp.stringValue = trimmed;
var tmpAssetProp = newTable.FindPropertyRelative("tmpAsset");
if (tmpAssetProp != null) tmpAssetProp.objectReferenceValue = null;
var entriesProp = newTable.FindPropertyRelative("entries");
if (entriesProp != null) entriesProp.arraySize = 0;
serializedObject.ApplyModifiedProperties();
EditorUtility.SetDirty(db);
// 重新 sync editor lists
SyncEditorListsWithTables();
showAddField = false;
tabIndex = tablesProp.arraySize - 1; // 选择新建的 tab
}
}
}
if (GUILayout.Button("Cancel", EditorStyles.toolbarButton, GUILayout.Width(80)))
{
showAddField = false;
newTableName = "";
}
EditorGUILayout.EndHorizontal();
}
EditorGUILayout.Space(6);
// 绘制标签行(来自 tables 的 deviceName但不再包含 SettingsSettings 已在上方 toolbar
EditorGUILayout.BeginHorizontal(EditorStyles.toolbar);
int tablesCount = tablesProp.arraySize;
for (int i = 0; i < tablesCount; ++i)
{
var t = tablesProp.GetArrayElementAtIndex(i);
var nameProp = t.FindPropertyRelative("deviceName");
string name = nameProp != null ? nameProp.stringValue : ("Table " + i);
bool selected = (tabIndex == i);
// 采用 toolbarButton 风格的 toggle
if (GUILayout.Toggle(selected, name, EditorStyles.toolbarButton, GUILayout.MinWidth(60)))
{
tabIndex = i;
}
// 每个表右侧加一个小删除按钮Settings 不在这里)
if (GUILayout.Button("×", EditorStyles.toolbarButton, GUILayout.Width(22)))
{
// 二次确认
if (EditorUtility.DisplayDialog("Delete Table?",
$"Delete table '{name}' and all its entries? This cannot be undone.", "Delete", "Cancel"))
{
tablesProp.DeleteArrayElementAtIndex(i);
serializedObject.ApplyModifiedProperties();
EditorUtility.SetDirty(db);
// 调整 tabIndex 与 editor 状态
SyncEditorListsWithTables();
tabIndex = Mathf.Clamp(tabIndex, 0, Math.Max(0, tablesProp.arraySize - 1));
return; // 直接返回防止继续绘制已修改的 serializedObject
}
}
}
EditorGUILayout.EndHorizontal();
EditorGUILayout.Space(8);
// 绘制选中页内容(如果是 Settings 或某个 table
EditorGUILayout.BeginVertical("box");
if (tabIndex == tablesProp.arraySize)
{
// Settings 页
EditorGUILayout.LabelField("Settings", EditorStyles.boldLabel);
EditorGUILayout.Space(4);
EditorGUILayout.PropertyField(placeholderSpriteProp, new GUIContent("Placeholder Sprite"));
Sprite placeholder = placeholderSpriteProp.objectReferenceValue as Sprite;
EditorGUILayout.Space(6);
EditorGUILayout.LabelField("Preview", EditorStyles.miniBoldLabel);
if (placeholder != null)
{
Texture2D preview = AssetPreview.GetAssetPreview(placeholder);
if (preview == null) preview = AssetPreview.GetMiniThumbnail(placeholder);
if (preview != null) GUILayout.Label(preview, GUILayout.Width(previewSize), GUILayout.Height(previewSize));
else EditorGUILayout.ObjectField(placeholder, typeof(Sprite), false, GUILayout.Width(previewSize), GUILayout.Height(previewSize));
}
else
{
EditorGUILayout.HelpBox("No placeholder sprite assigned. If FindEntryByControlPath receives an empty path, it will return null.", MessageType.Info);
}
}
else
{
// Table 页
if (tabIndex < 0 || tabIndex >= tablesProp.arraySize)
{
EditorGUILayout.HelpBox("Invalid table index.", MessageType.Error);
}
else
{
var tableProp = tablesProp.GetArrayElementAtIndex(tabIndex);
// 去掉顶部显示 table 名称的 label
// var nameProp = tableProp.FindPropertyRelative("deviceName");
// string tableName = nameProp != null ? nameProp.stringValue : $"Table {tabIndex}";
// EditorGUILayout.LabelField(tableName, EditorStyles.boldLabel);
// Ensure editor lists 长度一致
EnsureEditorListsLength();
// 搜索框:尽量使用 EditorStyles.toolbarSearchField去掉左侧标题和 clear 按钮)
GUILayout.BeginHorizontal();
GUIStyle searchStyle = EditorStyles.toolbarSearchField ?? EditorStyles.textField;
searchStrings[tabIndex] = GUILayout.TextField(searchStrings[tabIndex] ?? "", searchStyle);
GUILayout.EndHorizontal();
EditorGUILayout.Space(6);
// 将 TMP Sprite Asset 的选择框 与 Parse / Clear 按钮 水平显示
var tmpAssetProp = tableProp.FindPropertyRelative("tmpAsset");
EditorGUILayout.BeginHorizontal();
GUILayout.Label("TMP Sprite Asset", GUILayout.Width(140));
EditorGUILayout.PropertyField(tmpAssetProp, GUIContent.none, GUILayout.ExpandWidth(true));
if (GUILayout.Button("Parse TMP Asset", GUILayout.Width(120))) ParseTMPAssetIntoTableSerialized(tableProp);
if (GUILayout.Button("Clear", GUILayout.Width(80)))
{
var entriesProp = tableProp.FindPropertyRelative("entries");
if (entriesProp != null) entriesProp.arraySize = 0;
serializedObject.ApplyModifiedProperties();
EditorUtility.SetDirty(db);
currentPages[tabIndex] = 0;
}
EditorGUILayout.EndHorizontal();
EditorGUILayout.Space(6);
var entries = tableProp.FindPropertyRelative("entries"); var entries = tableProp.FindPropertyRelative("entries");
if (entries != null) if (entries != null)
{ {
int total = entries.arraySize; int total = entries.arraySize;
int totalPages = Mathf.Max(1, (total + itemsPerPage - 1) / itemsPerPage); // collect matched indices by searching sprite.name
currentPage = Mathf.Clamp(currentPage, 0, totalPages - 1); List<int> matchedIndices = new List<int>();
string query = (searchStrings[tabIndex] ?? "").Trim();
for (int i = 0; i < total; ++i)
{
var eProp = entries.GetArrayElementAtIndex(i);
if (eProp == null) continue;
var spriteProp = eProp.FindPropertyRelative("Sprite");
Sprite s = spriteProp.objectReferenceValue as Sprite;
string name = s != null ? s.name : "";
if (string.IsNullOrEmpty(query) || name.IndexOf(query, StringComparison.OrdinalIgnoreCase) >= 0)
{
matchedIndices.Add(i);
}
}
// Pagination controls int matchedTotal = matchedIndices.Count;
int totalPages = Mathf.Max(1, (matchedTotal + itemsPerPage - 1) / itemsPerPage);
currentPages[tabIndex] = Mathf.Clamp(currentPages[tabIndex], 0, totalPages - 1);
// pagination controls (toolbar 风格)
EditorGUILayout.BeginHorizontal(); EditorGUILayout.BeginHorizontal();
if (GUILayout.Button("<<", GUILayout.Width(40))) { currentPage = 0; } if (GUILayout.Button("<<", EditorStyles.miniButtonLeft, GUILayout.Width(36))) { currentPages[tabIndex] = 0; }
if (GUILayout.Button("<", GUILayout.Width(40))) { currentPage = Mathf.Max(0, currentPage - 1); } if (GUILayout.Button("<", EditorStyles.miniButtonMid, GUILayout.Width(36))) { currentPages[tabIndex] = Mathf.Max(0, currentPages[tabIndex] - 1); }
GUILayout.FlexibleSpace(); GUILayout.FlexibleSpace();
EditorGUILayout.LabelField(string.Format("Page {0}/{1}", currentPage + 1, totalPages), GUILayout.Width(100)); EditorGUILayout.LabelField(string.Format("Page {0}/{1}", currentPages[tabIndex] + 1, totalPages), GUILayout.Width(120));
GUILayout.FlexibleSpace(); GUILayout.FlexibleSpace();
if (GUILayout.Button(">", GUILayout.Width(40))) { currentPage = Mathf.Min(totalPages - 1, currentPage + 1); } if (GUILayout.Button(">", EditorStyles.miniButtonMid, GUILayout.Width(36))) { currentPages[tabIndex] = Mathf.Min(totalPages - 1, currentPages[tabIndex] + 1); }
if (GUILayout.Button(">>", GUILayout.Width(40))) { currentPage = totalPages - 1; } if (GUILayout.Button(">>", EditorStyles.miniButtonRight, GUILayout.Width(36))) { currentPages[tabIndex] = totalPages - 1; }
EditorGUILayout.EndHorizontal(); EditorGUILayout.EndHorizontal();
EditorGUILayout.Space(4); EditorGUILayout.Space(4);
int start = currentPage * itemsPerPage; int start = currentPages[tabIndex] * itemsPerPage;
int end = Mathf.Min(start + itemsPerPage, total); int end = Math.Min(start + itemsPerPage, matchedTotal);
for (int i = start; i < end; ++i) for (int mi = start; mi < end; ++mi)
{ {
int i = matchedIndices[mi];
var eProp = entries.GetArrayElementAtIndex(i); var eProp = entries.GetArrayElementAtIndex(i);
if (eProp == null) continue; if (eProp == null) continue;
// 使用稍小的间距并减小 preview 大小
using (new EditorGUILayout.HorizontalScope("box")) using (new EditorGUILayout.HorizontalScope("box"))
{ {
// Left column: sprite preview (fixed width) // 左列 sprite 预览(固定宽)
using (new EditorGUILayout.VerticalScope(GUILayout.Width(80))) using (new EditorGUILayout.VerticalScope(GUILayout.Width(80)))
{ {
var spriteProp = eProp.FindPropertyRelative("Sprite"); var spriteProp = eProp.FindPropertyRelative("Sprite");
@ -127,75 +322,64 @@ public class InputGlyphDatabaseEditor : Editor
if (preview == null) preview = AssetPreview.GetMiniThumbnail(s); if (preview == null) preview = AssetPreview.GetMiniThumbnail(s);
if (preview != null) if (preview != null)
{ {
GUILayout.Label(preview, GUILayout.Width(64), GUILayout.Height(64)); GUILayout.Label(preview, GUILayout.Width(previewSize), GUILayout.Height(previewSize));
} }
else else
{ {
EditorGUILayout.PropertyField(spriteProp, GUIContent.none, GUILayout.Width(64), GUILayout.Height(64)); EditorGUILayout.PropertyField(spriteProp, GUIContent.none, GUILayout.Width(previewSize), GUILayout.Height(previewSize));
} }
} }
else else
{ {
EditorGUILayout.PropertyField(spriteProp, GUIContent.none, GUILayout.Width(64), GUILayout.Height(64)); EditorGUILayout.PropertyField(spriteProp, GUIContent.none, GUILayout.Width(previewSize), GUILayout.Height(previewSize));
} }
} }
// Right column: path + action should take the remaining width // 右列 action 字段
EditorGUILayout.BeginVertical(); EditorGUILayout.BeginVertical();
var actionProp = eProp.FindPropertyRelative("action"); var actionProp = eProp.FindPropertyRelative("action");
EditorGUILayout.Space(2); EditorGUILayout.Space(2);
EditorGUILayout.PropertyField(actionProp, GUIContent.none, GUILayout.ExpandWidth(true)); EditorGUILayout.PropertyField(actionProp, GUIContent.none, GUILayout.ExpandWidth(true));
// if (glyphEntry != null && glyphEntry.action != null)
// {
//
// }
EditorGUILayout.EndVertical(); EditorGUILayout.EndVertical();
} }
EditorGUILayout.Space(4);
}
if (matchedTotal == 0)
{
EditorGUILayout.HelpBox("No entries match the search.", MessageType.Info);
}
}
}
}
EditorGUILayout.EndVertical();
EditorGUILayout.Space(6); EditorGUILayout.Space(6);
}
}
EditorGUILayout.EndVertical();
EditorGUILayout.Space();
if (GUILayout.Button("Save Asset"))
{
serializedObject.ApplyModifiedProperties();
EditorUtility.SetDirty(db);
AssetDatabase.SaveAssets();
}
serializedObject.ApplyModifiedProperties(); serializedObject.ApplyModifiedProperties();
} }
// Ensure a table for the device exists. Uses serialized properties (adds element if necessary). // Ensure table with name exists (用于初次迁移)
void EnsureTableFor(InputDeviceWatcher.InputDeviceCategory device) void EnsureDefaultTable(string name)
{ {
if (tablesProp == null) return; if (tablesProp == null) return;
// Search existing entries
for (int i = 0; i < tablesProp.arraySize; ++i) for (int i = 0; i < tablesProp.arraySize; ++i)
{ {
var t = tablesProp.GetArrayElementAtIndex(i); var t = tablesProp.GetArrayElementAtIndex(i);
var devProp = t.FindPropertyRelative("deviceType"); var nameProp = t.FindPropertyRelative("deviceName");
if (devProp != null && devProp.enumValueIndex == (int)device) if (nameProp != null && string.Equals(nameProp.stringValue, name, StringComparison.OrdinalIgnoreCase))
return; // exists return;
} }
// Not found -> append new element
int idx = tablesProp.arraySize; int idx = tablesProp.arraySize;
tablesProp.InsertArrayElementAtIndex(idx); // Inserts a copy if exists, otherwise default tablesProp.InsertArrayElementAtIndex(idx);
var newTable = tablesProp.GetArrayElementAtIndex(idx); var newTable = tablesProp.GetArrayElementAtIndex(idx);
var deviceNameProp = newTable.FindPropertyRelative("deviceName");
var deviceTypeProp = newTable.FindPropertyRelative("deviceType"); if (deviceNameProp != null) deviceNameProp.stringValue = name;
if (deviceTypeProp != null) deviceTypeProp.enumValueIndex = (int)device;
var tmpAssetProp = newTable.FindPropertyRelative("tmpAsset"); var tmpAssetProp = newTable.FindPropertyRelative("tmpAsset");
if (tmpAssetProp != null) tmpAssetProp.objectReferenceValue = null; if (tmpAssetProp != null) tmpAssetProp.objectReferenceValue = null;
var entriesProp = newTable.FindPropertyRelative("entries"); var entriesProp = newTable.FindPropertyRelative("entries");
if (entriesProp != null) entriesProp.arraySize = 0; if (entriesProp != null) entriesProp.arraySize = 0;
@ -203,22 +387,26 @@ public class InputGlyphDatabaseEditor : Editor
EditorUtility.SetDirty(db); EditorUtility.SetDirty(db);
} }
// Return the SerializedProperty representing the DeviceGlyphTable that matches device void SyncEditorListsWithTables()
SerializedProperty GetTablePropertyFor(InputDeviceWatcher.InputDeviceCategory device)
{ {
if (tablesProp == null) return null; int count = tablesProp != null ? tablesProp.arraySize : 0;
for (int i = 0; i < tablesProp.arraySize; ++i) if (searchStrings == null) searchStrings = new List<string>();
{ if (currentPages == null) currentPages = new List<int>();
var t = tablesProp.GetArrayElementAtIndex(i);
var devProp = t.FindPropertyRelative("deviceType"); while (searchStrings.Count < count) searchStrings.Add("");
if (devProp != null && devProp.enumValueIndex == (int)device) while (currentPages.Count < count) currentPages.Add(0);
return t;
while (searchStrings.Count > count) searchStrings.RemoveAt(searchStrings.Count - 1);
while (currentPages.Count > count) currentPages.RemoveAt(currentPages.Count - 1);
} }
return null; void EnsureEditorListsLength()
{
if (tablesProp == null) return;
SyncEditorListsWithTables();
} }
// Parse TMP Sprite Asset and populate entries (serialized) // Parse TMP Sprite Asset into table (保持你原有实现)
void ParseTMPAssetIntoTableSerialized(SerializedProperty tableProp) void ParseTMPAssetIntoTableSerialized(SerializedProperty tableProp)
{ {
if (tableProp == null) return; if (tableProp == null) return;
@ -249,20 +437,12 @@ public class InputGlyphDatabaseEditor : Editor
var glyph = ch.glyph as TMP_SpriteGlyph; var glyph = ch.glyph as TMP_SpriteGlyph;
if (glyph != null && glyph.sprite != null) s = glyph.sprite; if (glyph != null && glyph.sprite != null) s = glyph.sprite;
} }
catch catch { }
{
}
if (s == null && atlas != null) if (s == null && atlas != null)
{ {
try try { s = atlas.GetSprite(name); }
{ catch { s = null; }
s = atlas.GetSprite(name);
}
catch
{
s = null;
}
if (s == null) if (s == null)
{ {
@ -271,9 +451,7 @@ public class InputGlyphDatabaseEditor : Editor
var m = typeof(SpriteAtlas).GetMethod("GetSprite", new Type[] { typeof(string) }); var m = typeof(SpriteAtlas).GetMethod("GetSprite", new Type[] { typeof(string) });
if (m != null) s = m.Invoke(atlas, new object[] { name }) as Sprite; if (m != null) s = m.Invoke(atlas, new object[] { name }) as Sprite;
} }
catch catch { }
{
}
} }
} }
@ -313,14 +491,10 @@ public class InputGlyphDatabaseEditor : Editor
} }
} }
// Create new entry and assign fields
int newIndex = entriesProp.arraySize; int newIndex = entriesProp.arraySize;
entriesProp.InsertArrayElementAtIndex(newIndex); entriesProp.InsertArrayElementAtIndex(newIndex);
var entryProp = entriesProp.GetArrayElementAtIndex(newIndex); var entryProp = entriesProp.GetArrayElementAtIndex(newIndex);
var spriteProp = entryProp.FindPropertyRelative("Sprite"); var spriteProp = entryProp.FindPropertyRelative("Sprite");
if (spriteProp != null) spriteProp.objectReferenceValue = s; if (spriteProp != null) spriteProp.objectReferenceValue = s;
} }
@ -351,9 +525,7 @@ public class InputGlyphDatabaseEditor : Editor
var val = p.GetValue(asset, null) as SpriteAtlas; var val = p.GetValue(asset, null) as SpriteAtlas;
if (val != null) return val; if (val != null) return val;
} }
catch catch { }
{
}
} }
} }

View File

@ -31,8 +31,7 @@ public class InputGlyphImage : MonoBehaviour
{ {
if (actionReference == null || actionReference.action == null || targetImage == null) return; if (actionReference == null || actionReference.action == null || targetImage == null) return;
InputDeviceWatcher.InputDeviceCategory deviceCategory = InputDeviceWatcher.CurrentCategory; InputDeviceWatcher.InputDeviceCategory deviceCategory = InputDeviceWatcher.CurrentCategory;
string path = GlyphService.GetBindingControlPath(actionReference); if (GlyphService.TryGetUISpriteForActionPath(actionReference, deviceCategory, out Sprite sprite))
if (GlyphService.TryGetUISpriteForActionPath(path, deviceCategory, out Sprite sprite))
{ {
targetImage.sprite = sprite; targetImage.sprite = sprite;
} }

View File

@ -1,4 +1,5 @@
// TestRebindScript.cs // TestRebindScript.cs
using System; using System;
using System.Threading.Tasks; using System.Threading.Tasks;
using TMPro; using TMPro;
@ -9,23 +10,19 @@ using UnityEngine.UI;
public class TestRebindScript : MonoBehaviour public class TestRebindScript : MonoBehaviour
{ {
[Header("UI")] [Header("UI")] public UXButton btn;
public UXButton btn;
public TextMeshProUGUI bindKeyText; public TextMeshProUGUI bindKeyText;
public Image targetImage; public Image targetImage;
[Tooltip("如果不使用 actionReference则用 name 在全局 manager 查找")] [Tooltip("如果不使用 actionReference则用 name 在全局 manager 查找")]
public string actionName = "movement"; public string actionName = "movement";
[Header("Optional composite part (WASD style)")] [Header("Optional composite part (WASD style)")] [Tooltip("如果需要绑定 composite 的某一部分(例如 Up/Down/Left/Right填这个留空表示绑定非 composite 或整体 binding")]
[Tooltip("如果需要绑定 composite 的某一部分(例如 Up/Down/Left/Right填这个留空表示绑定非 composite 或整体 binding")]
public string compositePartName = ""; public string compositePartName = "";
[Header("Behavior")] [Header("Behavior")] [Tooltip("如果 true在 Prepare 后自动调用 ConfirmApply() 并保存;否则等待手动 ConfirmPrepared()/CancelPrepared()")]
[Tooltip("如果 true在 Prepare 后自动调用 ConfirmApply() 并保存;否则等待手动 ConfirmPrepared()/CancelPrepared()")]
public bool autoConfirm = false; public bool autoConfirm = false;
private int targetBindingIndex = -1;
private IDisposable prepareSub; private IDisposable prepareSub;
private IDisposable applySub; private IDisposable applySub;
private IDisposable rebindEndSub; private IDisposable rebindEndSub;
@ -34,8 +31,6 @@ public class TestRebindScript : MonoBehaviour
{ {
if (btn != null) btn.onClick.AddListener(OnBtnClicked); if (btn != null) btn.onClick.AddListener(OnBtnClicked);
InputDeviceWatcher.OnDeviceChanged += OnDeviceChanged; InputDeviceWatcher.OnDeviceChanged += OnDeviceChanged;
ResolveBindingIndex();
UpdateBindingText(); UpdateBindingText();
if (InputBindingManager.Instance != null) if (InputBindingManager.Instance != null)
@ -74,26 +69,13 @@ public class TestRebindScript : MonoBehaviour
return InputBindingManager.Action(actionName); return InputBindingManager.Action(actionName);
} }
private void ResolveBindingIndex()
{
var action = GetAction();
if (action == null)
{
Debug.LogError($"TestRebindScript: Action not found ('{actionName}').");
targetBindingIndex = -1;
return;
}
// Ask manager to choose best index for keyboard and optional composite part
targetBindingIndex = InputBindingManager.Instance.FindBestBindingIndexForKeyboard(action, string.IsNullOrEmpty(compositePartName) ? null : compositePartName);
}
private bool IsTargetContext(InputRemapper.InputBindingManager.RebindContext ctx) private bool IsTargetContext(InputRemapper.InputBindingManager.RebindContext ctx)
{ {
if (ctx == null || ctx.action == null) return false; if (ctx == null || ctx.action == null) return false;
var action = GetAction(); var action = GetAction();
if (action == null) return false; if (action == null) return false;
return ctx.action == action && ctx.bindingIndex == targetBindingIndex; return ctx.action == action;
} }
private void OnBtnClicked() private void OnBtnClicked()
@ -116,7 +98,11 @@ public class TestRebindScript : MonoBehaviour
if (task == null) return false; if (task == null) return false;
return await task; return await task;
} }
catch (Exception ex) { Debug.LogError(ex); return false; } catch (Exception ex)
{
Debug.LogError(ex);
return false;
}
} }
public void CancelPrepared() public void CancelPrepared()
@ -135,21 +121,11 @@ public class TestRebindScript : MonoBehaviour
return; return;
} }
// Ensure binding index is refreshed (action/bindings may change)
if (targetBindingIndex < 0 || targetBindingIndex >= action.bindings.Count)
ResolveBindingIndex();
if (targetBindingIndex < 0) string disp = GlyphService.GetBindingControlPath(action, InputDeviceWatcher.CurrentCategory);
{ bindKeyText.text = GlyphService.GetDisplayNameFromInputAction(action);
bindKeyText.text = "<no binding>";
if (targetImage != null) targetImage.sprite = null;
return;
}
string disp = action.GetBindingDisplayString(targetBindingIndex);
bindKeyText.text = string.IsNullOrEmpty(disp) ? "<unbound>" : disp;
// **Important**: use GlyphService with InputAction and device category (not manager-internal path)
try try
{ {
var deviceCat = InputDeviceWatcher.CurrentCategory; var deviceCat = InputDeviceWatcher.CurrentCategory;

View File

@ -666,7 +666,18 @@
{ {
"name": "", "name": "",
"id": "d1e2e650-d247-4fab-a06c-5a6fb5ccd2a5", "id": "d1e2e650-d247-4fab-a06c-5a6fb5ccd2a5",
"path": "*/{Cancel}", "path": "<Gamepad>/buttonEast",
"interactions": "",
"processors": "",
"groups": "",
"action": "Cancel",
"isComposite": false,
"isPartOfComposite": false
},
{
"name": "",
"id": "1a2a3800-59d9-452a-b7a7-e3968ddab191",
"path": "<Keyboard>/escape",
"interactions": "", "interactions": "",
"processors": "", "processors": "",
"groups": "", "groups": "",

View File

@ -9,11 +9,8 @@ using UnityEngine.UI;
public class TestAudioPlay : MonoBehaviour public class TestAudioPlay : MonoBehaviour
{ {
public InputGlyphDatabase database;
public AudioSource audioSource; public AudioSource audioSource;
[SerializeField] private UXHotkeyButton[] hotButtons; [SerializeField] private UXHotkeyButton[] hotButtons;
Slider slider;
private Selectable Selectable;
public class UXAuditoHelper : IUXAudioHelper public class UXAuditoHelper : IUXAudioHelper
{ {
private AudioSource _audioSource; private AudioSource _audioSource;
@ -51,7 +48,6 @@ public class TestAudioPlay : MonoBehaviour
private void Awake() private void Awake()
{ {
GlyphService.Database = database;
UXComponentExtensionsHelper.SetAudioHelper(new UXAuditoHelper(audioSource)); UXComponentExtensionsHelper.SetAudioHelper(new UXAuditoHelper(audioSource));
BindHotKeys(); BindHotKeys();
} }

View File

@ -1,27 +1,57 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: dffef66376be4fa480fb02b19edbe903 guid: dffef66376be4fa480fb02b19edbe903
TextureImporter: TextureImporter:
fileIDToRecycleName: internalIDToNameTable:
21300000: EmojiOne_0 - first:
21300002: EmojiOne_1 213: 21300000
21300004: EmojiOne_2 second: EmojiOne_0
21300006: EmojiOne_3 - first:
21300008: EmojiOne_4 213: 21300002
21300010: EmojiOne_6 second: EmojiOne_1
21300012: EmojiOne_7 - first:
21300014: EmojiOne_8 213: 21300004
21300016: EmojiOne_9 second: EmojiOne_2
21300018: EmojiOne_10 - first:
21300020: EmojiOne_11 213: 21300006
21300022: EmojiOne_12 second: EmojiOne_3
21300024: EmojiOne_13 - first:
21300026: EmojiOne_5 213: 21300008
21300028: EmojiOne_14 second: EmojiOne_4
- first:
213: 21300010
second: EmojiOne_6
- first:
213: 21300012
second: EmojiOne_7
- first:
213: 21300014
second: EmojiOne_8
- first:
213: 21300016
second: EmojiOne_9
- first:
213: 21300018
second: EmojiOne_10
- first:
213: 21300020
second: EmojiOne_11
- first:
213: 21300022
second: EmojiOne_12
- first:
213: 21300024
second: EmojiOne_13
- first:
213: 21300026
second: EmojiOne_5
- first:
213: 21300028
second: EmojiOne_14
externalObjects: {} externalObjects: {}
serializedVersion: 5 serializedVersion: 13
mipmaps: mipmaps:
mipMapMode: 0 mipMapMode: 0
enableMipMap: 1 enableMipMap: 0
sRGBTexture: 1 sRGBTexture: 1
linearTexture: 0 linearTexture: 0
fadeOut: 0 fadeOut: 0
@ -35,7 +65,12 @@ TextureImporter:
externalNormalMap: 0 externalNormalMap: 0
heightScale: 0.25 heightScale: 0.25
normalMapFilter: 0 normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0 isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0 grayScaleToAlpha: 0
generateCubemap: 6 generateCubemap: 6
cubemapConvolution: 0 cubemapConvolution: 0
@ -44,9 +79,9 @@ TextureImporter:
maxTextureSize: 2048 maxTextureSize: 2048
textureSettings: textureSettings:
serializedVersion: 2 serializedVersion: 2
filterMode: -1 filterMode: 1
aniso: -1 aniso: 1
mipBias: -1 mipBias: 0
wrapU: 1 wrapU: 1
wrapV: 1 wrapV: 1
wrapW: 1 wrapW: 1
@ -58,19 +93,26 @@ TextureImporter:
spriteMeshType: 1 spriteMeshType: 1
alignment: 0 alignment: 0
spritePivot: {x: 0.5, y: 0.5} spritePivot: {x: 0.5, y: 0.5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100 spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1 alphaUsage: 1
alphaIsTransparency: 1 alphaIsTransparency: 1
spriteTessellationDetail: -1 spriteTessellationDetail: -1
textureType: 0 textureType: 8
textureShape: 1 textureShape: 1
singleChannelComponent: 0 singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0 maxTextureSizeSet: 0
compressionQualitySet: 0 compressionQualitySet: 0
textureFormatSet: 0 textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 1
swizzle: 50462976
cookieLightType: 1
platformSettings: platformSettings:
- serializedVersion: 2 - serializedVersion: 3
buildTarget: DefaultTexturePlatform buildTarget: DefaultTexturePlatform
maxTextureSize: 512 maxTextureSize: 512
resizeAlgorithm: 0 resizeAlgorithm: 0
@ -80,8 +122,10 @@ TextureImporter:
crunchedCompression: 0 crunchedCompression: 0
allowsAlphaSplitting: 0 allowsAlphaSplitting: 0
overridden: 0 overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0 androidETC2FallbackOverride: 0
- serializedVersion: 2 forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone buildTarget: Standalone
maxTextureSize: 512 maxTextureSize: 512
resizeAlgorithm: 0 resizeAlgorithm: 0
@ -91,8 +135,10 @@ TextureImporter:
crunchedCompression: 0 crunchedCompression: 0
allowsAlphaSplitting: 0 allowsAlphaSplitting: 0
overridden: 0 overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0 androidETC2FallbackOverride: 0
- serializedVersion: 2 forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: iPhone buildTarget: iPhone
maxTextureSize: 512 maxTextureSize: 512
resizeAlgorithm: 0 resizeAlgorithm: 0
@ -102,8 +148,10 @@ TextureImporter:
crunchedCompression: 0 crunchedCompression: 0
allowsAlphaSplitting: 0 allowsAlphaSplitting: 0
overridden: 0 overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0 androidETC2FallbackOverride: 0
- serializedVersion: 2 forceMaximumCompressionQuality_BC6H_BC7: 1
- serializedVersion: 3
buildTarget: Android buildTarget: Android
maxTextureSize: 512 maxTextureSize: 512
resizeAlgorithm: 0 resizeAlgorithm: 0
@ -113,7 +161,22 @@ TextureImporter:
crunchedCompression: 0 crunchedCompression: 0
allowsAlphaSplitting: 0 allowsAlphaSplitting: 0
overridden: 0 overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0 androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 1
- serializedVersion: 3
buildTarget: WebGL
maxTextureSize: 512
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet: spriteSheet:
serializedVersion: 2 serializedVersion: 2
sprites: sprites:
@ -121,18 +184,19 @@ TextureImporter:
name: EmojiOne_0 name: EmojiOne_0
rect: rect:
serializedVersion: 2 serializedVersion: 2
x: 0 x: 4
y: 384 y: 388
width: 128 width: 120
height: 128 height: 120
alignment: 0 alignment: 0
pivot: {x: 0.5, y: 0.5} pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0} border: {x: 0, y: 0, z: 0, w: 0}
outline: [] outline: []
physicsShape: [] physicsShape: []
tessellationDetail: 0 tessellationDetail: 0
bones: [] bones: []
spriteID: 4bcc36da2108f2c4ba3de5c921d25c3c spriteID: 4bcc36da2108f2c4ba3de5c921d25c3c
internalID: 21300000
vertices: [] vertices: []
indices: indices:
edges: [] edges: []
@ -141,18 +205,19 @@ TextureImporter:
name: EmojiOne_1 name: EmojiOne_1
rect: rect:
serializedVersion: 2 serializedVersion: 2
x: 128 x: 132
y: 384 y: 388
width: 128 width: 120
height: 128 height: 120
alignment: 0 alignment: 0
pivot: {x: 0.5, y: 0.5} pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0} border: {x: 0, y: 0, z: 0, w: 0}
outline: [] outline: []
physicsShape: [] physicsShape: []
tessellationDetail: 0 tessellationDetail: 0
bones: [] bones: []
spriteID: e9eea8093eaeaee4d901c4553f572c22 spriteID: e9eea8093eaeaee4d901c4553f572c22
internalID: 21300002
vertices: [] vertices: []
indices: indices:
edges: [] edges: []
@ -161,18 +226,19 @@ TextureImporter:
name: EmojiOne_2 name: EmojiOne_2
rect: rect:
serializedVersion: 2 serializedVersion: 2
x: 256 x: 260
y: 384 y: 388
width: 128 width: 120
height: 128 height: 120
alignment: 0 alignment: 0
pivot: {x: 0.5, y: 0.5} pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0} border: {x: 0, y: 0, z: 0, w: 0}
outline: [] outline: []
physicsShape: [] physicsShape: []
tessellationDetail: 0 tessellationDetail: 0
bones: [] bones: []
spriteID: 49451da35411dcc42a3692e39b0fde70 spriteID: 49451da35411dcc42a3692e39b0fde70
internalID: 21300004
vertices: [] vertices: []
indices: indices:
edges: [] edges: []
@ -181,18 +247,19 @@ TextureImporter:
name: EmojiOne_3 name: EmojiOne_3
rect: rect:
serializedVersion: 2 serializedVersion: 2
x: 384 x: 388
y: 384 y: 388
width: 128 width: 120
height: 128 height: 120
alignment: 0 alignment: 0
pivot: {x: 0.5, y: 0.5} pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0} border: {x: 0, y: 0, z: 0, w: 0}
outline: [] outline: []
physicsShape: [] physicsShape: []
tessellationDetail: 0 tessellationDetail: 0
bones: [] bones: []
spriteID: f65709664b924904790c850a50ca82bc spriteID: f65709664b924904790c850a50ca82bc
internalID: 21300006
vertices: [] vertices: []
indices: indices:
edges: [] edges: []
@ -201,18 +268,19 @@ TextureImporter:
name: EmojiOne_4 name: EmojiOne_4
rect: rect:
serializedVersion: 2 serializedVersion: 2
x: 0 x: 4
y: 256 y: 260
width: 128 width: 120
height: 128 height: 120
alignment: 0 alignment: 0
pivot: {x: 0.5, y: 0.5} pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0} border: {x: 0, y: 0, z: 0, w: 0}
outline: [] outline: []
physicsShape: [] physicsShape: []
tessellationDetail: 0 tessellationDetail: 0
bones: [] bones: []
spriteID: 5b92c568a5ec9ad4b9ed90e271f1c9a8 spriteID: 5b92c568a5ec9ad4b9ed90e271f1c9a8
internalID: 21300008
vertices: [] vertices: []
indices: indices:
edges: [] edges: []
@ -221,18 +289,19 @@ TextureImporter:
name: EmojiOne_6 name: EmojiOne_6
rect: rect:
serializedVersion: 2 serializedVersion: 2
x: 256 x: 260
y: 256 y: 260
width: 128 width: 120
height: 128 height: 120
alignment: 0 alignment: 0
pivot: {x: 0.5, y: 0.5} pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0} border: {x: 0, y: 0, z: 0, w: 0}
outline: [] outline: []
physicsShape: [] physicsShape: []
tessellationDetail: 0 tessellationDetail: 0
bones: [] bones: []
spriteID: b10f2b48b7281594bb8a24a6511a35af spriteID: b10f2b48b7281594bb8a24a6511a35af
internalID: 21300010
vertices: [] vertices: []
indices: indices:
edges: [] edges: []
@ -241,18 +310,19 @@ TextureImporter:
name: EmojiOne_7 name: EmojiOne_7
rect: rect:
serializedVersion: 2 serializedVersion: 2
x: 384 x: 388
y: 256 y: 260
width: 128 width: 120
height: 128 height: 120
alignment: 0 alignment: 0
pivot: {x: 0.5, y: 0.5} pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0} border: {x: 0, y: 0, z: 0, w: 0}
outline: [] outline: []
physicsShape: [] physicsShape: []
tessellationDetail: 0 tessellationDetail: 0
bones: [] bones: []
spriteID: 10a600f9329dc2246a897e89f4d283cd spriteID: 10a600f9329dc2246a897e89f4d283cd
internalID: 21300012
vertices: [] vertices: []
indices: indices:
edges: [] edges: []
@ -261,18 +331,19 @@ TextureImporter:
name: EmojiOne_8 name: EmojiOne_8
rect: rect:
serializedVersion: 2 serializedVersion: 2
x: 0 x: 4
y: 128 y: 132
width: 128 width: 120
height: 128 height: 120
alignment: 0 alignment: 0
pivot: {x: 0.5, y: 0.5} pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0} border: {x: 0, y: 0, z: 0, w: 0}
outline: [] outline: []
physicsShape: [] physicsShape: []
tessellationDetail: 0 tessellationDetail: 0
bones: [] bones: []
spriteID: 66cffa363b90ab14787d8a5b90cf4502 spriteID: 66cffa363b90ab14787d8a5b90cf4502
internalID: 21300014
vertices: [] vertices: []
indices: indices:
edges: [] edges: []
@ -281,18 +352,19 @@ TextureImporter:
name: EmojiOne_9 name: EmojiOne_9
rect: rect:
serializedVersion: 2 serializedVersion: 2
x: 128 x: 132
y: 128 y: 132
width: 128 width: 120
height: 128 height: 120
alignment: 0 alignment: 0
pivot: {x: 0.5, y: 0.5} pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0} border: {x: 0, y: 0, z: 0, w: 0}
outline: [] outline: []
physicsShape: [] physicsShape: []
tessellationDetail: 0 tessellationDetail: 0
bones: [] bones: []
spriteID: 55cf3d409c9b89349b1e1bdc1cc224ad spriteID: 55cf3d409c9b89349b1e1bdc1cc224ad
internalID: 21300016
vertices: [] vertices: []
indices: indices:
edges: [] edges: []
@ -301,18 +373,19 @@ TextureImporter:
name: EmojiOne_10 name: EmojiOne_10
rect: rect:
serializedVersion: 2 serializedVersion: 2
x: 256 x: 260
y: 128 y: 132
width: 128 width: 120
height: 128 height: 120
alignment: 0 alignment: 0
pivot: {x: 0.5, y: 0.5} pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0} border: {x: 0, y: 0, z: 0, w: 0}
outline: [] outline: []
physicsShape: [] physicsShape: []
tessellationDetail: 0 tessellationDetail: 0
bones: [] bones: []
spriteID: 2a9e58eaf96feef42bcefa1cf257193f spriteID: 2a9e58eaf96feef42bcefa1cf257193f
internalID: 21300018
vertices: [] vertices: []
indices: indices:
edges: [] edges: []
@ -321,18 +394,19 @@ TextureImporter:
name: EmojiOne_11 name: EmojiOne_11
rect: rect:
serializedVersion: 2 serializedVersion: 2
x: 384 x: 388
y: 128 y: 132
width: 128 width: 120
height: 128 height: 120
alignment: 0 alignment: 0
pivot: {x: 0.5, y: 0.5} pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0} border: {x: 0, y: 0, z: 0, w: 0}
outline: [] outline: []
physicsShape: [] physicsShape: []
tessellationDetail: 0 tessellationDetail: 0
bones: [] bones: []
spriteID: 2489120affc155840ae6a7be2e93ce19 spriteID: 2489120affc155840ae6a7be2e93ce19
internalID: 21300020
vertices: [] vertices: []
indices: indices:
edges: [] edges: []
@ -341,18 +415,19 @@ TextureImporter:
name: EmojiOne_12 name: EmojiOne_12
rect: rect:
serializedVersion: 2 serializedVersion: 2
x: 0 x: 4
y: 0 y: 4
width: 128 width: 120
height: 128 height: 120
alignment: 0 alignment: 0
pivot: {x: 0.5, y: 0.5} pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0} border: {x: 0, y: 0, z: 0, w: 0}
outline: [] outline: []
physicsShape: [] physicsShape: []
tessellationDetail: 0 tessellationDetail: 0
bones: [] bones: []
spriteID: 412349a150598d14da4d7140df5c0286 spriteID: 412349a150598d14da4d7140df5c0286
internalID: 21300022
vertices: [] vertices: []
indices: indices:
edges: [] edges: []
@ -361,18 +436,19 @@ TextureImporter:
name: EmojiOne_13 name: EmojiOne_13
rect: rect:
serializedVersion: 2 serializedVersion: 2
x: 128 x: 132
y: 0 y: 4
width: 128 width: 120
height: 128 height: 120
alignment: 0 alignment: 0
pivot: {x: 0.5, y: 0.5} pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0} border: {x: 0, y: 0, z: 0, w: 0}
outline: [] outline: []
physicsShape: [] physicsShape: []
tessellationDetail: 0 tessellationDetail: 0
bones: [] bones: []
spriteID: a937464b42bb3634782dea34c6becb6c spriteID: a937464b42bb3634782dea34c6becb6c
internalID: 21300024
vertices: [] vertices: []
indices: indices:
edges: [] edges: []
@ -381,10 +457,10 @@ TextureImporter:
name: EmojiOne_5 name: EmojiOne_5
rect: rect:
serializedVersion: 2 serializedVersion: 2
x: 256 x: 132
y: 0 y: 260
width: 128 width: 120
height: 128 height: 120
alignment: 0 alignment: 0
pivot: {x: 0, y: 0} pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0} border: {x: 0, y: 0, z: 0, w: 0}
@ -393,6 +469,7 @@ TextureImporter:
tessellationDetail: 0 tessellationDetail: 0
bones: [] bones: []
spriteID: b0f933b217682124dbfc5e6b89abe3d0 spriteID: b0f933b217682124dbfc5e6b89abe3d0
internalID: 21300026
vertices: [] vertices: []
indices: indices:
edges: [] edges: []
@ -401,10 +478,10 @@ TextureImporter:
name: EmojiOne_14 name: EmojiOne_14
rect: rect:
serializedVersion: 2 serializedVersion: 2
x: 128 x: 260
y: 256 y: 4
width: 128 width: 120
height: 128 height: 120
alignment: 0 alignment: 0
pivot: {x: 0, y: 0} pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0} border: {x: 0, y: 0, z: 0, w: 0}
@ -413,6 +490,28 @@ TextureImporter:
tessellationDetail: 0 tessellationDetail: 0
bones: [] bones: []
spriteID: f7235c763afe4434e8bb666750a41096 spriteID: f7235c763afe4434e8bb666750a41096
internalID: 21300028
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: EmojiOne_15
rect:
serializedVersion: 2
x: 388
y: 4
width: 120
height: 120
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: a436e8e6563ab82468bdca71043fbfa4
internalID: -1093879911
vertices: [] vertices: []
indices: indices:
edges: [] edges: []
@ -421,11 +520,31 @@ TextureImporter:
physicsShape: [] physicsShape: []
bones: [] bones: []
spriteID: 3e32d8f5477abfc43b19066e8ad5032e spriteID: 3e32d8f5477abfc43b19066e8ad5032e
internalID: 0
vertices: [] vertices: []
indices: indices:
edges: [] edges: []
weights: [] weights: []
spritePackingTag: secondaryTextures: []
nameFileIdTable:
EmojiOne_0: 21300000
EmojiOne_1: 21300002
EmojiOne_10: 21300018
EmojiOne_11: 21300020
EmojiOne_12: 21300022
EmojiOne_13: 21300024
EmojiOne_14: 21300028
EmojiOne_15: -1093879911
EmojiOne_2: 21300004
EmojiOne_3: 21300006
EmojiOne_4: 21300008
EmojiOne_5: 21300026
EmojiOne_6: 21300010
EmojiOne_7: 21300012
EmojiOne_8: 21300014
EmojiOne_9: 21300016
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData: userData:
assetBundleName: assetBundleName:
assetBundleVariant: assetBundleVariant:

View File

@ -1 +1 @@
{"bindings":[{"action":"input.map.player/input.action.movement","id":"15d59094-85d1-408d-b565-724532c15263","path":"<Keyboard>/v","interactions":"null","processors":"null"}]} {"bindings":[{"action":"input.map.player/input.action.movement","id":"15d59094-85d1-408d-b565-724532c15263","path":"<Keyboard>/2","interactions":"null","processors":"null"}]}

@ -1 +1 @@
Subproject commit da3a43a2a647bf7c28cb247024f84ae0a28b54ff Subproject commit 57c49b1e2f59087abbfb6b2f64970dc558145a7a

@ -1 +1 @@
Subproject commit d17eaaaa8b9fbdc64b1e1b1cf48c7b9d79957fb7 Subproject commit 5084130abe0668f57385437cc92a68a542238fd0

View File

@ -30,10 +30,10 @@ EditorUserSettings:
value: 54010c54510c5a5f5a0a0973477b0a4414151a2b757925367a7e4a6ab1b66260 value: 54010c54510c5a5f5a0a0973477b0a4414151a2b757925367a7e4a6ab1b66260
flags: 0 flags: 0
RecentlyUsedSceneGuid-7: RecentlyUsedSceneGuid-7:
value: 50500404540c580d0f0b5e7543725b44424f4c7a7b7c7734747e4f36e4b1676d value: 5a07065703500c59585e0e7748770d44444f4a737d2d7f35787d4f63e0b26668
flags: 0 flags: 0
RecentlyUsedSceneGuid-8: RecentlyUsedSceneGuid-8:
value: 5a07065703500c59585e0e7748770d44444f4a737d2d7f35787d4f63e0b26668 value: 50500404540c580d0f0b5e7543725b44424f4c7a7b7c7734747e4f36e4b1676d
flags: 0 flags: 0
RecentlyUsedSceneGuid-9: RecentlyUsedSceneGuid-9:
value: 015450045700505d0f0a5f2313260a444e164b2e757b76652c2d4d32bab0313a value: 015450045700505d0f0a5f2313260a444e164b2e757b76652c2d4d32bab0313a

View File

@ -19,12 +19,64 @@ MonoBehaviour:
width: 1920 width: 1920
height: 997 height: 997
m_ShowMode: 4 m_ShowMode: 4
m_Title: Inspector m_Title: Hierarchy
m_RootView: {fileID: 2} m_RootView: {fileID: 4}
m_MinSize: {x: 875, y: 300} m_MinSize: {x: 875, y: 300}
m_MaxSize: {x: 10000, y: 10000} m_MaxSize: {x: 10000, y: 10000}
m_Maximized: 1 m_Maximized: 1
--- !u!114 &2 --- !u!114 &2
MonoBehaviour:
m_ObjectHideFlags: 52
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: 12006, guid: 0000000000000000e000000000000000, type: 0}
m_Name: GameView
m_EditorClassIdentifier:
m_Children: []
m_Position:
serializedVersion: 2
x: 0
y: 491
width: 612
height: 456
m_MinSize: {x: 50, y: 50}
m_MaxSize: {x: 4000, y: 4000}
m_ActualView: {fileID: 14}
m_Panes:
- {fileID: 14}
m_Selected: 0
m_LastSelected: 0
--- !u!114 &3
MonoBehaviour:
m_ObjectHideFlags: 52
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: 12010, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier:
m_Children:
- {fileID: 8}
- {fileID: 2}
m_Position:
serializedVersion: 2
x: 0
y: 0
width: 612
height: 947
m_MinSize: {x: 100, y: 100}
m_MaxSize: {x: 8096, y: 16192}
vertical: 1
controlID: 17
draggingID: 0
--- !u!114 &4
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 52 m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
@ -37,9 +89,9 @@ MonoBehaviour:
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
m_Children: m_Children:
- {fileID: 3}
- {fileID: 5} - {fileID: 5}
- {fileID: 4} - {fileID: 7}
- {fileID: 6}
m_Position: m_Position:
serializedVersion: 2 serializedVersion: 2
x: 0 x: 0
@ -52,7 +104,7 @@ MonoBehaviour:
m_TopViewHeight: 30 m_TopViewHeight: 30
m_UseBottomView: 1 m_UseBottomView: 1
m_BottomViewHeight: 20 m_BottomViewHeight: 20
--- !u!114 &3 --- !u!114 &5
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 52 m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
@ -74,7 +126,7 @@ MonoBehaviour:
m_MinSize: {x: 0, y: 0} m_MinSize: {x: 0, y: 0}
m_MaxSize: {x: 0, y: 0} m_MaxSize: {x: 0, y: 0}
m_LastLoadedLayoutName: m_LastLoadedLayoutName:
--- !u!114 &4 --- !u!114 &6
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 52 m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
@ -95,7 +147,7 @@ MonoBehaviour:
height: 20 height: 20
m_MinSize: {x: 0, y: 0} m_MinSize: {x: 0, y: 0}
m_MaxSize: {x: 0, y: 0} m_MaxSize: {x: 0, y: 0}
--- !u!114 &5 --- !u!114 &7
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 52 m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
@ -108,7 +160,7 @@ MonoBehaviour:
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
m_Children: m_Children:
- {fileID: 6} - {fileID: 3}
- {fileID: 9} - {fileID: 9}
- {fileID: 12} - {fileID: 12}
- {fileID: 13} - {fileID: 13}
@ -121,35 +173,9 @@ MonoBehaviour:
m_MinSize: {x: 400, y: 100} m_MinSize: {x: 400, y: 100}
m_MaxSize: {x: 32384, y: 16192} m_MaxSize: {x: 32384, y: 16192}
vertical: 0 vertical: 0
controlID: 155 controlID: 144
draggingID: 0 draggingID: 0
--- !u!114 &6 --- !u!114 &8
MonoBehaviour:
m_ObjectHideFlags: 52
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: 12010, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier:
m_Children:
- {fileID: 7}
- {fileID: 8}
m_Position:
serializedVersion: 2
x: 0
y: 0
width: 468
height: 947
m_MinSize: {x: 100, y: 100}
m_MaxSize: {x: 8096, y: 16192}
vertical: 1
controlID: 25
draggingID: 0
--- !u!114 &7
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 52 m_ObjectHideFlags: 52
m_CorrespondingSourceObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
@ -166,42 +192,16 @@ MonoBehaviour:
serializedVersion: 2 serializedVersion: 2
x: 0 x: 0
y: 0 y: 0
width: 468 width: 612
height: 363 height: 491
m_MinSize: {x: 201, y: 221} m_MinSize: {x: 200, y: 200}
m_MaxSize: {x: 4001, y: 4021} m_MaxSize: {x: 4000, y: 4000}
m_ActualView: {fileID: 16} m_ActualView: {fileID: 16}
m_Panes: m_Panes:
- {fileID: 15} - {fileID: 15}
- {fileID: 16} - {fileID: 16}
m_Selected: 1 m_Selected: 1
m_LastSelected: 0 m_LastSelected: 0
--- !u!114 &8
MonoBehaviour:
m_ObjectHideFlags: 52
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: 12006, guid: 0000000000000000e000000000000000, type: 0}
m_Name: GameView
m_EditorClassIdentifier:
m_Children: []
m_Position:
serializedVersion: 2
x: 0
y: 363
width: 468
height: 584
m_MinSize: {x: 51, y: 71}
m_MaxSize: {x: 4001, y: 4021}
m_ActualView: {fileID: 14}
m_Panes:
- {fileID: 14}
m_Selected: 0
m_LastSelected: 0
--- !u!114 &9 --- !u!114 &9
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 52 m_ObjectHideFlags: 52
@ -219,14 +219,14 @@ MonoBehaviour:
- {fileID: 11} - {fileID: 11}
m_Position: m_Position:
serializedVersion: 2 serializedVersion: 2
x: 468 x: 612
y: 0 y: 0
width: 288 width: 333
height: 947 height: 947
m_MinSize: {x: 100, y: 100} m_MinSize: {x: 100, y: 100}
m_MaxSize: {x: 8096, y: 16192} m_MaxSize: {x: 8096, y: 16192}
vertical: 1 vertical: 1
controlID: 69 controlID: 49
draggingID: 0 draggingID: 0
--- !u!114 &10 --- !u!114 &10
MonoBehaviour: MonoBehaviour:
@ -245,8 +245,8 @@ MonoBehaviour:
serializedVersion: 2 serializedVersion: 2
x: 0 x: 0
y: 0 y: 0
width: 288 width: 333
height: 601 height: 461
m_MinSize: {x: 202, y: 221} m_MinSize: {x: 202, y: 221}
m_MaxSize: {x: 4002, y: 4021} m_MaxSize: {x: 4002, y: 4021}
m_ActualView: {fileID: 17} m_ActualView: {fileID: 17}
@ -270,9 +270,9 @@ MonoBehaviour:
m_Position: m_Position:
serializedVersion: 2 serializedVersion: 2
x: 0 x: 0
y: 601 y: 461
width: 288 width: 333
height: 346 height: 486
m_MinSize: {x: 102, y: 121} m_MinSize: {x: 102, y: 121}
m_MaxSize: {x: 4002, y: 4021} m_MaxSize: {x: 4002, y: 4021}
m_ActualView: {fileID: 18} m_ActualView: {fileID: 18}
@ -295,9 +295,9 @@ MonoBehaviour:
m_Children: [] m_Children: []
m_Position: m_Position:
serializedVersion: 2 serializedVersion: 2
x: 756 x: 945
y: 0 y: 0
width: 183 width: 332
height: 947 height: 947
m_MinSize: {x: 232, y: 271} m_MinSize: {x: 232, y: 271}
m_MaxSize: {x: 10002, y: 10021} m_MaxSize: {x: 10002, y: 10021}
@ -321,9 +321,9 @@ MonoBehaviour:
m_Children: [] m_Children: []
m_Position: m_Position:
serializedVersion: 2 serializedVersion: 2
x: 939 x: 1277
y: 0 y: 0
width: 981 width: 643
height: 947 height: 947
m_MinSize: {x: 276, y: 71} m_MinSize: {x: 276, y: 71}
m_MaxSize: {x: 4001, y: 4021} m_MaxSize: {x: 4001, y: 4021}
@ -353,9 +353,9 @@ MonoBehaviour:
m_Pos: m_Pos:
serializedVersion: 2 serializedVersion: 2
x: 0 x: 0
y: 436 y: 564
width: 467 width: 611
height: 563 height: 435
m_SerializedDataModeController: m_SerializedDataModeController:
m_DataMode: 0 m_DataMode: 0
m_PreferredDataMode: 0 m_PreferredDataMode: 0
@ -408,10 +408,10 @@ MonoBehaviour:
serializedVersion: 2 serializedVersion: 2
x: 0 x: 0
y: 21 y: 21
width: 467 width: 611
height: 542 height: 414
m_Scale: {x: 0.24322917, y: 0.24322918} m_Scale: {x: 0.31822917, y: 0.31822917}
m_Translation: {x: 233.5, y: 271} m_Translation: {x: 305.5, y: 207}
m_MarginLeft: 0 m_MarginLeft: 0
m_MarginRight: 0 m_MarginRight: 0
m_MarginTop: 0 m_MarginTop: 0
@ -419,12 +419,12 @@ MonoBehaviour:
m_LastShownAreaInsideMargins: m_LastShownAreaInsideMargins:
serializedVersion: 2 serializedVersion: 2
x: -960 x: -960
y: -1114.1755 y: -650.4746
width: 1920 width: 1920
height: 2228.351 height: 1300.9492
m_MinimalGUI: 1 m_MinimalGUI: 1
m_defaultScale: 0.24322917 m_defaultScale: 0.31822917
m_LastWindowPixelSize: {x: 467, y: 563} m_LastWindowPixelSize: {x: 611, y: 435}
m_ClearInEditMode: 1 m_ClearInEditMode: 1
m_NoCameraWarning: 1 m_NoCameraWarning: 1
m_LowResolutionForAspectRatios: 01000000000000000000 m_LowResolutionForAspectRatios: 01000000000000000000
@ -451,9 +451,9 @@ MonoBehaviour:
m_Pos: m_Pos:
serializedVersion: 2 serializedVersion: 2
x: 0 x: 0
y: 73 y: 79
width: 518 width: 365
height: 926 height: 915
m_SerializedDataModeController: m_SerializedDataModeController:
m_DataMode: 0 m_DataMode: 0
m_PreferredDataMode: 0 m_PreferredDataMode: 0
@ -522,8 +522,8 @@ MonoBehaviour:
serializedVersion: 2 serializedVersion: 2
x: 0 x: 0
y: 73 y: 73
width: 467 width: 611
height: 342 height: 470
m_SerializedDataModeController: m_SerializedDataModeController:
m_DataMode: 0 m_DataMode: 0
m_PreferredDataMode: 0 m_PreferredDataMode: 0
@ -538,8 +538,8 @@ MonoBehaviour:
floating: 0 floating: 0
collapsed: 0 collapsed: 0
displayed: 1 displayed: 1
snapOffset: {x: -179, y: -26} snapOffset: {x: -174, y: -26}
snapOffsetDelta: {x: 0, y: 0} snapOffsetDelta: {x: -5, y: 0}
snapCorner: 3 snapCorner: 3
id: Tool Settings id: Tool Settings
index: 0 index: 0
@ -616,9 +616,9 @@ MonoBehaviour:
floating: 0 floating: 0
collapsed: 0 collapsed: 0
displayed: 1 displayed: 1
snapOffset: {x: 24, y: 64} snapOffset: {x: 24, y: -131}
snapOffsetDelta: {x: 0, y: 0} snapOffsetDelta: {x: 0, y: 0}
snapCorner: 0 snapCorner: 2
id: Orientation id: Orientation
index: 0 index: 0
layout: 4 layout: 4
@ -867,7 +867,7 @@ MonoBehaviour:
snapOffsetDelta: {x: 0, y: 0} snapOffsetDelta: {x: 0, y: 0}
snapCorner: 0 snapCorner: 0
id: UnityEditor.SceneViewCameraOverlay id: UnityEditor.SceneViewCameraOverlay
index: 10 index: 9
layout: 4 layout: 4
size: {x: 0, y: 0} size: {x: 0, y: 0}
sizeOverriden: 0 sizeOverriden: 0
@ -1064,9 +1064,9 @@ MonoBehaviour:
m_PlayAudio: 0 m_PlayAudio: 0
m_AudioPlay: 0 m_AudioPlay: 0
m_Position: m_Position:
m_Target: {x: 1241.503, y: 212.77849, z: -0.5889411} m_Target: {x: 1194.6714, y: 398.0959, z: -5.0133038}
speed: 2 speed: 2
m_Value: {x: 1241.503, y: 212.77849, z: -0.5889411} m_Value: {x: 1194.6714, y: 398.0959, z: -5.0133038}
m_RenderMode: 0 m_RenderMode: 0
m_CameraMode: m_CameraMode:
drawMode: 0 drawMode: 0
@ -1116,9 +1116,9 @@ MonoBehaviour:
speed: 2 speed: 2
m_Value: {x: 0, y: 0, z: 0, w: 1} m_Value: {x: 0, y: 0, z: 0, w: 1}
m_Size: m_Size:
m_Target: 161.9702 m_Target: 694.8482
speed: 2 speed: 2
m_Value: 161.9702 m_Value: 694.8482
m_Ortho: m_Ortho:
m_Target: 1 m_Target: 1
speed: 2 speed: 2
@ -1163,10 +1163,10 @@ MonoBehaviour:
m_Tooltip: m_Tooltip:
m_Pos: m_Pos:
serializedVersion: 2 serializedVersion: 2
x: 468 x: 612
y: 73 y: 73
width: 286 width: 331
height: 580 height: 440
m_SerializedDataModeController: m_SerializedDataModeController:
m_DataMode: 0 m_DataMode: 0
m_PreferredDataMode: 0 m_PreferredDataMode: 0
@ -1182,7 +1182,7 @@ MonoBehaviour:
scrollPos: {x: 0, y: 0} scrollPos: {x: 0, y: 0}
m_SelectedIDs: m_SelectedIDs:
m_LastClickedID: 0 m_LastClickedID: 0
m_ExpandedIDs: b0faffff006e0000 m_ExpandedIDs: c8faffff286e0000
m_RenameOverlay: m_RenameOverlay:
m_UserAcceptedRename: 0 m_UserAcceptedRename: 0
m_Name: m_Name:
@ -1198,7 +1198,7 @@ MonoBehaviour:
m_IsRenaming: 0 m_IsRenaming: 0
m_OriginalEventType: 11 m_OriginalEventType: 11
m_IsRenamingFilename: 0 m_IsRenamingFilename: 0
m_ClientGUIView: {fileID: 10} m_ClientGUIView: {fileID: 8}
m_SearchString: m_SearchString:
m_ExpandedScenes: [] m_ExpandedScenes: []
m_CurrenRootInstanceID: 0 m_CurrenRootInstanceID: 0
@ -1226,10 +1226,10 @@ MonoBehaviour:
m_Tooltip: m_Tooltip:
m_Pos: m_Pos:
serializedVersion: 2 serializedVersion: 2
x: 468 x: 612
y: 674 y: 534
width: 286 width: 331
height: 325 height: 465
m_SerializedDataModeController: m_SerializedDataModeController:
m_DataMode: 0 m_DataMode: 0
m_PreferredDataMode: 0 m_PreferredDataMode: 0
@ -1260,9 +1260,9 @@ MonoBehaviour:
m_Tooltip: m_Tooltip:
m_Pos: m_Pos:
serializedVersion: 2 serializedVersion: 2
x: 756 x: 945
y: 73 y: 73
width: 181 width: 330
height: 926 height: 926
m_SerializedDataModeController: m_SerializedDataModeController:
m_DataMode: 0 m_DataMode: 0
@ -1283,9 +1283,9 @@ MonoBehaviour:
m_SceneHandles: m_SceneHandles:
m_ShowAllHits: 0 m_ShowAllHits: 0
m_SkipHidden: 0 m_SkipHidden: 0
m_SearchArea: 0 m_SearchArea: 1
m_Folders: m_Folders:
- Assets/InputGlyph - Assets
m_Globs: [] m_Globs: []
m_OriginalText: m_OriginalText:
m_ImportLogFlags: 0 m_ImportLogFlags: 0
@ -1301,7 +1301,7 @@ MonoBehaviour:
scrollPos: {x: 0, y: 0} scrollPos: {x: 0, y: 0}
m_SelectedIDs: e48c0000 m_SelectedIDs: e48c0000
m_LastClickedID: 36068 m_LastClickedID: 36068
m_ExpandedIDs: 00000000e86f0000987200004e74000050740000527400005474000056740000587400005a7400005c7400005e74000060740000627400006474000066740000687400006a7400006c7400006e74000070740000727400007474000076740000787400007a7400007c7400007e74000080740000827400008474000086740000887400008a7400008c7400008e74000090740000927400009474000096740000987400009a7400009c7400009e740000a0740000a2740000a4740000a6740000a8740000aa740000ac740000ae740000b0740000b2740000b4740000b6740000b8740000ba740000bc740000be740000c0740000c2740000c4740000c6740000c8740000ca740000cc740000ce740000d0740000d2740000d4740000d6740000d8740000da740000dc740000de740000e0740000e2740000e4740000e6740000e8740000ea740000ec740000ee740000f0740000f2740000f4740000f6740000f8740000fa740000fc740000fe74000000750000027500000475000006750000087500000a7500000c7500000e75000010750000127500001475000016750000187500001a7500001c7500001e75000020750000227500002475000026750000287500002a7500002c7500002e75000030750000327500003475000036750000387500003a7500003c7500003e75000040750000427500004475000046750000487500004a7500004c7500004e75000050750000527500005475000056750000587500005a7500005c7500005e75000060750000627500006475000066750000687500006a7500006c7500006e75000070750000727500007475000076750000787500007a7500007c7500007e75000080750000827500008475000086750000887500008a7500008c7500008e75000090750000927500009475000096750000987500009a7500009c7500009e750000a0750000a2750000a4750000a6750000a8750000aa750000ac750000ae750000b0750000b2750000b4750000b6750000b8750000ba750000bc750000be750000c0750000c2750000c4750000c6750000c8750000ca750000cc750000ce750000d0750000d2750000d4750000d6750000d8750000da750000dc750000de750000e0750000e2750000e4750000e6750000e8750000ea750000ec750000ee750000f0750000f2750000f4750000f6750000f8750000fa750000fc750000fe75000000760000027600000476000006760000087600000a7600000c7600000e7600001076000012760000147600001676000018760000 m_ExpandedIDs: 0000000006740000087400000a7400000c7400000e74000010740000127400001474000016740000187400001a7400001c7400001e74000020740000227400002474000026740000287400002a7400002c7400002e74000030740000327400003474000036740000387400003a7400003c7400003e74000040740000427400004474000046740000487400004a7400004c7400004e74000050740000527400005474000056740000587400005a7400005c7400005e74000060740000627400006474000066740000687400006a7400006c7400006e74000070740000727400007474000076740000787400007a7400007c7400007e74000080740000827400008474000086740000887400008a7400008c7400008e74000090740000927400009474000096740000987400009a7400009c7400009e740000a0740000a2740000a4740000a6740000a8740000aa740000ac740000ae740000b0740000b2740000b4740000b6740000b8740000ba740000bc740000be740000c0740000c2740000c4740000c6740000c8740000ca740000cc740000ce740000d0740000d2740000d4740000d6740000d8740000da740000dc740000de740000e0740000e2740000e4740000e6740000e8740000ea740000ec740000ee740000f0740000f2740000f4740000f6740000f8740000fa740000fc740000fe74000000750000027500000475000006750000087500000a7500000c7500000e75000010750000127500001475000016750000187500001a7500001c7500001e75000020750000227500002475000026750000287500002a7500002c7500002e75000030750000327500003475000036750000387500003a7500003c7500003e75000040750000427500004475000046750000487500004a7500004c7500004e75000050750000527500005475000056750000587500005a7500005c7500005e75000060750000627500006475000066750000687500006a7500006c7500006e75000070750000727500007475000076750000787500007a7500007c7500007e75000080750000827500008475000086750000887500008a7500008c7500008e75000090750000927500009475000096750000987500009a7500009c7500009e750000a0750000a2750000a4750000a6750000a8750000aa750000ac750000ae750000b0750000b2750000b4750000b6750000b8750000ba750000bc750000be750000c0750000c2750000c4750000
m_RenameOverlay: m_RenameOverlay:
m_UserAcceptedRename: 0 m_UserAcceptedRename: 0
m_Name: m_Name:
@ -1329,21 +1329,21 @@ MonoBehaviour:
scrollPos: {x: 0, y: 0} scrollPos: {x: 0, y: 0}
m_SelectedIDs: m_SelectedIDs:
m_LastClickedID: 0 m_LastClickedID: 0
m_ExpandedIDs: ffffffff00000000e86f0000987200004e74000050740000527400005474000056740000587400005a7400005c7400005e74000060740000627400006474000066740000687400006a7400006c7400006e74000070740000727400007474000076740000787400007a7400007c7400007e74000080740000827400008474000086740000887400008a7400008c7400008e74000090740000927400009474000096740000987400009a7400009c7400009e740000a0740000a2740000a4740000a6740000a8740000aa740000ac740000ae740000b0740000b2740000b4740000b6740000b8740000ba740000bc740000be740000c0740000c2740000c4740000c6740000c8740000ca740000cc740000ce740000d0740000d2740000d4740000d6740000d8740000da740000dc740000de740000e0740000e2740000e4740000e6740000e8740000ea740000ec740000ee740000f0740000f2740000f4740000f6740000f8740000fa740000fc740000fe74000000750000027500000475000006750000087500000a7500000c7500000e75000010750000127500001475000016750000187500001a7500001c7500001e75000020750000227500002475000026750000287500002a7500002c7500002e75000030750000327500003475000036750000387500003a7500003c7500003e75000040750000427500004475000046750000487500004a7500004c7500004e75000050750000527500005475000056750000587500005a7500005c7500005e75000060750000627500006475000066750000687500006a7500006c7500006e75000070750000727500007475000076750000787500007a7500007c7500007e75000080750000827500008475000086750000887500008a7500008c7500008e75000090750000927500009475000096750000987500009a7500009c7500009e750000a0750000a2750000a4750000a6750000a8750000aa750000ac750000ae750000b0750000b2750000b4750000b6750000b8750000ba750000bc750000be750000c0750000c2750000c4750000c6750000c8750000ca750000cc750000ce750000d0750000d2750000d4750000d6750000d8750000da750000dc750000de750000e0750000e2750000e4750000e6750000e8750000ea750000ec750000ee750000f0750000f2750000f4750000f6750000f8750000fa750000fc750000fe75000000760000027600000476000006760000087600000a7600000c7600000e7600001076000012760000147600001676000018760000 m_ExpandedIDs: ffffffff0000000006740000087400000a7400000c7400000e74000010740000127400001474000016740000187400001a7400001c7400001e74000020740000227400002474000026740000287400002a7400002c7400002e74000030740000327400003474000036740000387400003a7400003c7400003e74000040740000427400004474000046740000487400004a7400004c7400004e74000050740000527400005474000056740000587400005a7400005c7400005e74000060740000627400006474000066740000687400006a7400006c7400006e74000070740000727400007474000076740000787400007a7400007c7400007e74000080740000827400008474000086740000887400008a7400008c7400008e74000090740000927400009474000096740000987400009a7400009c7400009e740000a0740000a2740000a4740000a6740000a8740000aa740000ac740000ae740000b0740000b2740000b4740000b6740000b8740000ba740000bc740000be740000c0740000c2740000c4740000c6740000c8740000ca740000cc740000ce740000d0740000d2740000d4740000d6740000d8740000da740000dc740000de740000e0740000e2740000e4740000e6740000e8740000ea740000ec740000ee740000f0740000f2740000f4740000f6740000f8740000fa740000fc740000fe74000000750000027500000475000006750000087500000a7500000c7500000e75000010750000127500001475000016750000187500001a7500001c7500001e75000020750000227500002475000026750000287500002a7500002c7500002e75000030750000327500003475000036750000387500003a7500003c7500003e75000040750000427500004475000046750000487500004a7500004c7500004e75000050750000527500005475000056750000587500005a7500005c7500005e75000060750000627500006475000066750000687500006a7500006c7500006e75000070750000727500007475000076750000787500007a7500007c7500007e75000080750000827500008475000086750000887500008a7500008c7500008e75000090750000927500009475000096750000987500009a7500009c7500009e750000a0750000a2750000a4750000a6750000a8750000aa750000ac750000ae750000b0750000b2750000b4750000b6750000b8750000ba750000bc750000be750000c0750000c2750000c4750000
m_RenameOverlay: m_RenameOverlay:
m_UserAcceptedRename: 0 m_UserAcceptedRename: 0
m_Name: m_Name: InputBindingManager
m_OriginalName: m_OriginalName: InputBindingManager
m_EditFieldRect: m_EditFieldRect:
serializedVersion: 2 serializedVersion: 2
x: 0 x: 0
y: 0 y: 0
width: 0 width: 0
height: 0 height: 0
m_UserData: 0 m_UserData: 10908
m_IsWaitingForDelay: 0 m_IsWaitingForDelay: 0
m_IsRenaming: 0 m_IsRenaming: 0
m_OriginalEventType: 11 m_OriginalEventType: 0
m_IsRenamingFilename: 1 m_IsRenamingFilename: 1
m_ClientGUIView: {fileID: 12} m_ClientGUIView: {fileID: 12}
m_SearchString: m_SearchString:
@ -1405,9 +1405,9 @@ MonoBehaviour:
m_Tooltip: m_Tooltip:
m_Pos: m_Pos:
serializedVersion: 2 serializedVersion: 2
x: 939 x: 1277
y: 73 y: 73
width: 980 width: 642
height: 926 height: 926
m_SerializedDataModeController: m_SerializedDataModeController:
m_DataMode: 0 m_DataMode: 0
@ -1422,11 +1422,11 @@ MonoBehaviour:
m_ObjectsLockedBeforeSerialization: [] m_ObjectsLockedBeforeSerialization: []
m_InstanceIDsLockedBeforeSerialization: m_InstanceIDsLockedBeforeSerialization:
m_PreviewResizer: m_PreviewResizer:
m_CachedPref: 151 m_CachedPref: 318
m_ControlHash: 1412526313 m_ControlHash: 1412526313
m_PrefName: Preview_InspectorPreview m_PrefName: Preview_InspectorPreview
m_LastInspectedObjectInstanceID: -1 m_LastInspectedObjectInstanceID: -1
m_LastVerticalScrollValue: 0 m_LastVerticalScrollValue: 459
m_GlobalObjectId: m_GlobalObjectId:
m_InspectorMode: 0 m_InspectorMode: 0
m_LockTracker: m_LockTracker: