修改
This commit is contained in:
parent
21be7278cb
commit
0c654d8ae4
@ -17,7 +17,7 @@ MonoBehaviour:
|
||||
- EntryId: 74156087
|
||||
SectionId: 80328242
|
||||
Key: Input.actiondsad.movedsa
|
||||
Value:
|
||||
Value: move ru
|
||||
- EntryId: 94373125
|
||||
SectionId: 80328242
|
||||
Key: Input.action.usedas
|
||||
@ -51,7 +51,7 @@ MonoBehaviour:
|
||||
- EntryId: 74156087
|
||||
SectionId: 80328242
|
||||
Key: Input.actiondsad.movedsa
|
||||
Value:
|
||||
Value: Move
|
||||
- EntryId: 94373125
|
||||
SectionId: 80328242
|
||||
Key: Input.action.usedas
|
||||
@ -85,11 +85,11 @@ MonoBehaviour:
|
||||
- EntryId: 74156087
|
||||
SectionId: 80328242
|
||||
Key: Input.actiondsad.movedsa
|
||||
Value:
|
||||
Value: move jp
|
||||
- EntryId: 94373125
|
||||
SectionId: 80328242
|
||||
Key: Input.action.usedas
|
||||
Value:
|
||||
Value: USE FUCK U JP
|
||||
- EntryId: 41381430
|
||||
SectionId: 80328242
|
||||
Key: Input.action.jumpdsad
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
216
Client/Assets/EmojiOne_12.asset
Normal file
216
Client/Assets/EmojiOne_12.asset
Normal 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
|
||||
@ -1,7 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 002e269efc288864b9fe6b6c51d15935
|
||||
DefaultImporter:
|
||||
guid: 068091d572066f043aa79b9beace61ea
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 21300000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -808,6 +808,142 @@ CanvasRenderer:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 215982991}
|
||||
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
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -1381,6 +1517,11 @@ RectTransform:
|
||||
- {fileID: 1466314556}
|
||||
- {fileID: 2043214059}
|
||||
- {fileID: 1240218065}
|
||||
- {fileID: 1461120293}
|
||||
- {fileID: 1268519739}
|
||||
- {fileID: 953234183}
|
||||
- {fileID: 1108824070}
|
||||
- {fileID: 344668136}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
@ -2568,6 +2709,7 @@ MonoBehaviour:
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
actions: {fileID: -944628639613478452, guid: 916c72588b6bc6e48a022e8c82e6438f, type: 3}
|
||||
inputGlyphDatabase: {fileID: 11400000, guid: 6ae7129e9026e8348b9d222e9d0d6f68, type: 2}
|
||||
fileName: input_bindings.json
|
||||
debugMode: 1
|
||||
--- !u!1 &734992815
|
||||
@ -3397,6 +3539,54 @@ CanvasRenderer:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 933311483}
|
||||
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
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -3602,7 +3792,6 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: 6bacb75074f6f194a8047ae2fd93d01e, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
database: {fileID: 11400000, guid: 6ae7129e9026e8348b9d222e9d0d6f68, type: 2}
|
||||
audioSource: {fileID: 1036822060}
|
||||
hotButtons:
|
||||
- {fileID: 0}
|
||||
@ -3831,6 +4020,54 @@ CanvasRenderer:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1091182236}
|
||||
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
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -4264,6 +4501,54 @@ CanvasRenderer:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1261491487}
|
||||
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
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -4790,6 +5075,54 @@ CanvasRenderer:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1302014481}
|
||||
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
|
||||
GameObject:
|
||||
m_CorrespondingSourceObject: {fileID: 2393741490227731184, guid: 5a0830a080d75784b9f03b1659413301, type: 3}
|
||||
@ -5523,7 +5856,7 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2393741488666459665, guid: 5a0830a080d75784b9f03b1659413301, type: 3}
|
||||
propertyPath: m_SizeDelta.x
|
||||
value: 92.01
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2393741488666459665, guid: 5a0830a080d75784b9f03b1659413301, type: 3}
|
||||
propertyPath: m_SizeDelta.y
|
||||
@ -5531,7 +5864,7 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2393741488666459665, guid: 5a0830a080d75784b9f03b1659413301, type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
value: 86.005005
|
||||
value: 40
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2393741488666459665, guid: 5a0830a080d75784b9f03b1659413301, type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
|
||||
@ -12,57 +12,67 @@ public static class GlyphService
|
||||
/// </summary>
|
||||
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;
|
||||
var control = GetBindingControl(action);
|
||||
return control != null ? control.displayName : string.Empty;
|
||||
var binding = GetBindingControl(action, deviceOverride);
|
||||
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;
|
||||
var control = GetBindingControl(action, deviceOverride);
|
||||
return control != null ? $"{(control.device?.displayName ?? "Unknown")}/{control.displayName}" : string.Empty;
|
||||
string path = GetBindingControlPath(reference, device);
|
||||
return TryGetTMPTagForActionPath(path, device, out tag, out displayFallback, db);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 根据当前设备类别(或传入的 deviceOverride)尝试在 action.controls 中找到匹配的 control。
|
||||
/// 匹配策略:检查 control.device.displayName 是否包含类别提示词(忽略大小写)。
|
||||
/// 如果没有匹配项则返回第一个 control(作为最后的退路),或 null。
|
||||
/// </summary>
|
||||
public static InputControl GetBindingControl(InputAction action, InputDeviceWatcher.InputDeviceCategory? deviceOverride = null)
|
||||
public static bool TryGetUISpriteForActionPath(InputActionReference reference, InputDeviceWatcher.InputDeviceCategory device, out Sprite sprite, InputGlyphDatabase db = 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 hints = GetDeviceHintsForCategory(curCategory);
|
||||
|
||||
// 首先找匹配 hints 的 control
|
||||
foreach (var control in action.controls)
|
||||
foreach (var binding in action.bindings)
|
||||
{
|
||||
var deviceName = control.device?.displayName ?? string.Empty;
|
||||
var deviceName = binding.path ?? string.Empty;
|
||||
if (hints.Any(h => deviceName.IndexOf(h, StringComparison.OrdinalIgnoreCase) >= 0))
|
||||
{
|
||||
return control;
|
||||
return binding;
|
||||
}
|
||||
}
|
||||
|
||||
// 如果没有匹配,尝试返回第一个 gamepad/keyboard 优先的 control(更健壮)
|
||||
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;
|
||||
return default;
|
||||
}
|
||||
|
||||
static string[] GetDeviceHintsForCategory(InputDeviceWatcher.InputDeviceCategory cat)
|
||||
@ -76,76 +86,17 @@ public static class GlyphService
|
||||
case InputDeviceWatcher.InputDeviceCategory.PlayStation:
|
||||
return new[] { "DualShock", "DualSense", "PlayStation", "Gamepad" };
|
||||
default:
|
||||
return new[] { "Gamepad", "Joystick", "Keyboard", "Mouse" };
|
||||
return new[] { "XInput", "Xbox", "Gamepad" };
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 尝试根据 controlPath 和设备获取 TMP sprite 标签;如果失败会返回 displayFallback(可直接显示的文字)。
|
||||
/// 逻辑:
|
||||
/// 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)
|
||||
|
||||
public static string GetDisplayNameFromInputAction(InputAction reference)
|
||||
{
|
||||
tag = null;
|
||||
displayFallback = null;
|
||||
db = db ?? Database;
|
||||
if (string.IsNullOrEmpty(controlPath) || db == null)
|
||||
{
|
||||
displayFallback = GetDisplayNameFromControlPath(controlPath);
|
||||
return false;
|
||||
}
|
||||
|
||||
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;
|
||||
string controlPath=GetBindingControlPath(reference, InputDeviceWatcher.CurrentCategory);
|
||||
return GetDisplayNameFromControlPath(controlPath);
|
||||
}
|
||||
|
||||
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)
|
||||
public static string GetDisplayNameFromControlPath(string controlPath)
|
||||
{
|
||||
if (string.IsNullOrEmpty(controlPath)) return string.Empty;
|
||||
var parts = controlPath.Split('/');
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
// InputBindingManager.cs
|
||||
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
@ -8,6 +9,7 @@ using System.Threading.Tasks;
|
||||
using UnityEngine;
|
||||
using UnityEngine.InputSystem;
|
||||
using System.Reactive.Subjects;
|
||||
using AlicizaX.InputGlyph;
|
||||
using RxUnit = System.Reactive.Unit;
|
||||
|
||||
namespace InputRemapper
|
||||
@ -18,6 +20,9 @@ namespace InputRemapper
|
||||
|
||||
[Tooltip("InputActionAsset to manage")]
|
||||
public InputActionAsset actions;
|
||||
|
||||
[SerializeField] private InputGlyphDatabase inputGlyphDatabase;
|
||||
|
||||
public string fileName = "input_bindings.json";
|
||||
public bool debugMode = false;
|
||||
|
||||
@ -52,6 +57,7 @@ namespace InputRemapper
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
GlyphService.Database = inputGlyphDatabase;
|
||||
if (actions == null)
|
||||
{
|
||||
Debug.LogError("InputBindingManager: InputActionAsset not assigned.");
|
||||
@ -60,7 +66,14 @@ namespace InputRemapper
|
||||
|
||||
BuildActionMap();
|
||||
|
||||
try { defaultBindingsJson = actions.SaveBindingOverridesAsJson(); } catch { defaultBindingsJson = string.Empty; }
|
||||
try
|
||||
{
|
||||
defaultBindingsJson = actions.SaveBindingOverridesAsJson();
|
||||
}
|
||||
catch
|
||||
{
|
||||
defaultBindingsJson = string.Empty;
|
||||
}
|
||||
|
||||
if (File.Exists(SavePath))
|
||||
{
|
||||
@ -74,7 +87,10 @@ namespace InputRemapper
|
||||
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);
|
||||
@ -181,7 +197,6 @@ namespace InputRemapper
|
||||
}
|
||||
}
|
||||
|
||||
// Simple BindingPath (no glyph caching)
|
||||
public sealed class BindingPath
|
||||
{
|
||||
public string bindingPath;
|
||||
@ -215,7 +230,9 @@ namespace InputRemapper
|
||||
|
||||
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)
|
||||
@ -237,6 +254,7 @@ namespace InputRemapper
|
||||
{
|
||||
if (map.Value.actions.TryGetValue(actionName, out var a)) return a.action;
|
||||
}
|
||||
|
||||
Debug.LogError($"[InputBindingManager] Could not find action '{actionName}'");
|
||||
return null;
|
||||
}
|
||||
@ -270,7 +288,9 @@ namespace InputRemapper
|
||||
{
|
||||
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 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)))
|
||||
{
|
||||
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)
|
||||
@ -389,7 +412,9 @@ namespace InputRemapper
|
||||
}
|
||||
}
|
||||
}
|
||||
duplicate = default; return false;
|
||||
|
||||
duplicate = default;
|
||||
return false;
|
||||
}
|
||||
|
||||
private void PrepareRebind(RebindContext context)
|
||||
@ -424,7 +449,11 @@ namespace InputRemapper
|
||||
using (var sw = new StreamWriter(SavePath, false)) await sw.WriteAsync(json);
|
||||
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()
|
||||
@ -435,16 +464,19 @@ namespace InputRemapper
|
||||
else
|
||||
{
|
||||
foreach (var map in actionMap)
|
||||
foreach (var a in map.Value.actions)
|
||||
for (int b = 0; b < a.Value.action.bindings.Count; b++)
|
||||
a.Value.action.RemoveBindingOverride(b);
|
||||
foreach (var a in map.Value.actions)
|
||||
for (int b = 0; b < a.Value.action.bindings.Count; b++)
|
||||
a.Value.action.RemoveBindingOverride(b);
|
||||
}
|
||||
|
||||
RefreshBindingPathsFromActions();
|
||||
await WriteOverridesToDiskAsync();
|
||||
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)
|
||||
@ -456,6 +488,7 @@ namespace InputRemapper
|
||||
if (action.bindings.TryGetValue(bindingIndex, out var binding)) return binding.bindingPath;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -16,7 +16,8 @@ namespace AlicizaX.InputGlyph
|
||||
[Serializable]
|
||||
public class DeviceGlyphTable
|
||||
{
|
||||
public InputDeviceWatcher.InputDeviceCategory deviceType;
|
||||
// 改为使用字符串名称来区分 table(会序列化)
|
||||
public string deviceName;
|
||||
public TMP_SpriteAsset tmpAsset;
|
||||
public List<GlyphEntry> entries = new List<GlyphEntry>();
|
||||
}
|
||||
@ -26,28 +27,69 @@ namespace AlicizaX.InputGlyph
|
||||
{
|
||||
public List<DeviceGlyphTable> tables = new List<DeviceGlyphTable>();
|
||||
|
||||
public DeviceGlyphTable GetTable(InputDeviceWatcher.InputDeviceCategory device)
|
||||
// 当 FindEntryByControlPath 传空 path 时返回的占位 sprite
|
||||
public Sprite placeholderSprite;
|
||||
|
||||
// 按名字获取 table(name 精确匹配,不区分大小写)
|
||||
public DeviceGlyphTable GetTable(string deviceName)
|
||||
{
|
||||
if (string.IsNullOrEmpty(deviceName)) return null;
|
||||
if (tables == null) return null;
|
||||
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;
|
||||
}
|
||||
|
||||
// 为兼容保留:接受枚举并映射为常用名称(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)
|
||||
{
|
||||
if (string.IsNullOrEmpty(controlPath)) return null;
|
||||
var t = GetTable(device);
|
||||
if (t != null)
|
||||
{
|
||||
for (int i = 0; i < t.entries.Count; ++i)
|
||||
{
|
||||
var e = t.entries[i];
|
||||
if (e.action.controls.Count <= 0) continue;
|
||||
|
||||
var matchPath = $"{e.action.controls[0].device.displayName}/{e.action.controls[0].displayName}";
|
||||
if (string.Equals(matchPath, controlPath, StringComparison.OrdinalIgnoreCase)) return e;
|
||||
if (e == null) continue;
|
||||
if (e.action == null) continue;
|
||||
if (e.action.bindings.Count <= 0) continue;
|
||||
foreach (var binding in e.action.bindings)
|
||||
{
|
||||
if (string.Equals(controlPath, binding.path, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
return e;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -12,26 +12,45 @@ using TMPro;
|
||||
public class InputGlyphDatabaseEditor : Editor
|
||||
{
|
||||
SerializedProperty tablesProp;
|
||||
SerializedProperty placeholderSpriteProp;
|
||||
InputGlyphDatabase db;
|
||||
|
||||
// 动态标签索引(范围:0 .. tablesCount 为各表,最后一个 index = tablesCount 为 Settings)
|
||||
int tabIndex = 0;
|
||||
string[] tabNames = new string[] { "Keyboard", "Xbox", "PlayStation", "Other" };
|
||||
|
||||
// Pagination
|
||||
const int itemsPerPage = 10; // 10 items per page as requested
|
||||
int currentPage = 0;
|
||||
// 添加表时使用的临时 UI 状态
|
||||
bool showAddField = false;
|
||||
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()
|
||||
{
|
||||
db = target as InputGlyphDatabase;
|
||||
tablesProp = serializedObject.FindProperty("tables");
|
||||
placeholderSpriteProp = serializedObject.FindProperty("placeholderSprite");
|
||||
|
||||
// Ensure serialized list exists
|
||||
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.");
|
||||
return;
|
||||
}
|
||||
|
||||
// 如果没有默认的 Keyboard/Xbox/PlayStation 三个表则确保创建(便于迁移)
|
||||
EnsureDefaultTable("Keyboard");
|
||||
EnsureDefaultTable("Xbox");
|
||||
EnsureDefaultTable("PlayStation");
|
||||
|
||||
// 初始化 editor 状态列表,长度与 tablesProp 对应
|
||||
SyncEditorListsWithTables();
|
||||
}
|
||||
|
||||
public override void OnInspectorGUI()
|
||||
@ -39,163 +58,328 @@ public class InputGlyphDatabaseEditor : Editor
|
||||
serializedObject.Update();
|
||||
if (db == null || tablesProp == null) return;
|
||||
|
||||
EditorGUILayout.Space();
|
||||
tabIndex = GUILayout.Toolbar(tabIndex, tabNames, GUILayout.Height(24));
|
||||
var curDevice = (InputDeviceWatcher.InputDeviceCategory)tabIndex;
|
||||
// 顶部工具栏(与 Save 按钮风格一致),同时放置 Settings 按钮
|
||||
EditorGUILayout.BeginHorizontal(EditorStyles.toolbar);
|
||||
GUILayout.Space(4);
|
||||
|
||||
// Ensure all 4 tables exist (serialized-safe)
|
||||
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();
|
||||
EditorUtility.SetDirty(db);
|
||||
currentPage = 0;
|
||||
}
|
||||
|
||||
EditorGUILayout.EndHorizontal();
|
||||
|
||||
EditorGUILayout.Space();
|
||||
|
||||
var entries = tableProp.FindPropertyRelative("entries");
|
||||
if (entries != null)
|
||||
{
|
||||
int total = entries.arraySize;
|
||||
int totalPages = Mathf.Max(1, (total + itemsPerPage - 1) / itemsPerPage);
|
||||
currentPage = Mathf.Clamp(currentPage, 0, totalPages - 1);
|
||||
|
||||
// Pagination controls
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
if (GUILayout.Button("<<", GUILayout.Width(40))) { currentPage = 0; }
|
||||
if (GUILayout.Button("<", GUILayout.Width(40))) { currentPage = Mathf.Max(0, currentPage - 1); }
|
||||
|
||||
GUILayout.FlexibleSpace();
|
||||
EditorGUILayout.LabelField(string.Format("Page {0}/{1}", currentPage + 1, totalPages), GUILayout.Width(100));
|
||||
GUILayout.FlexibleSpace();
|
||||
|
||||
if (GUILayout.Button(">", GUILayout.Width(40))) { currentPage = Mathf.Min(totalPages - 1, currentPage + 1); }
|
||||
if (GUILayout.Button(">>", GUILayout.Width(40))) { currentPage = totalPages - 1; }
|
||||
EditorGUILayout.EndHorizontal();
|
||||
|
||||
EditorGUILayout.Space(4);
|
||||
|
||||
int start = currentPage * itemsPerPage;
|
||||
int end = Mathf.Min(start + itemsPerPage, total);
|
||||
|
||||
for (int i = start; i < end; ++i)
|
||||
{
|
||||
var eProp = entries.GetArrayElementAtIndex(i);
|
||||
|
||||
if (eProp == null) continue;
|
||||
|
||||
using (new EditorGUILayout.HorizontalScope("box"))
|
||||
{
|
||||
// Left column: sprite preview (fixed width)
|
||||
using (new EditorGUILayout.VerticalScope(GUILayout.Width(80)))
|
||||
{
|
||||
var spriteProp = eProp.FindPropertyRelative("Sprite");
|
||||
Sprite s = spriteProp.objectReferenceValue as Sprite;
|
||||
EditorGUILayout.LabelField(s != null ? s.name : "<missing>", EditorStyles.boldLabel);
|
||||
|
||||
if (s != null)
|
||||
{
|
||||
Texture2D preview = AssetPreview.GetAssetPreview(s);
|
||||
if (preview == null) preview = AssetPreview.GetMiniThumbnail(s);
|
||||
if (preview != null)
|
||||
{
|
||||
GUILayout.Label(preview, GUILayout.Width(64), GUILayout.Height(64));
|
||||
}
|
||||
else
|
||||
{
|
||||
EditorGUILayout.PropertyField(spriteProp, GUIContent.none, GUILayout.Width(64), GUILayout.Height(64));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
EditorGUILayout.PropertyField(spriteProp, GUIContent.none, GUILayout.Width(64), GUILayout.Height(64));
|
||||
}
|
||||
}
|
||||
|
||||
// Right column: path + action should take the remaining width
|
||||
EditorGUILayout.BeginVertical();
|
||||
|
||||
var actionProp = eProp.FindPropertyRelative("action");
|
||||
EditorGUILayout.Space(2);
|
||||
|
||||
EditorGUILayout.PropertyField(actionProp, GUIContent.none, GUILayout.ExpandWidth(true));
|
||||
// if (glyphEntry != null && glyphEntry.action != null)
|
||||
// {
|
||||
//
|
||||
// }
|
||||
EditorGUILayout.EndVertical();
|
||||
}
|
||||
|
||||
EditorGUILayout.Space(6);
|
||||
}
|
||||
}
|
||||
|
||||
EditorGUILayout.EndVertical();
|
||||
|
||||
EditorGUILayout.Space();
|
||||
if (GUILayout.Button("Save Asset"))
|
||||
if (GUILayout.Button("Save Asset", EditorStyles.toolbarButton))
|
||||
{
|
||||
serializedObject.ApplyModifiedProperties();
|
||||
EditorUtility.SetDirty(db);
|
||||
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();
|
||||
|
||||
// 如果正在新增,展示一个横向输入框(下方,同 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),但不再包含 Settings(Settings 已在上方 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");
|
||||
if (entries != null)
|
||||
{
|
||||
int total = entries.arraySize;
|
||||
// collect matched indices by searching sprite.name
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
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();
|
||||
if (GUILayout.Button("<<", EditorStyles.miniButtonLeft, GUILayout.Width(36))) { currentPages[tabIndex] = 0; }
|
||||
if (GUILayout.Button("<", EditorStyles.miniButtonMid, GUILayout.Width(36))) { currentPages[tabIndex] = Mathf.Max(0, currentPages[tabIndex] - 1); }
|
||||
|
||||
GUILayout.FlexibleSpace();
|
||||
EditorGUILayout.LabelField(string.Format("Page {0}/{1}", currentPages[tabIndex] + 1, totalPages), GUILayout.Width(120));
|
||||
GUILayout.FlexibleSpace();
|
||||
|
||||
if (GUILayout.Button(">", EditorStyles.miniButtonMid, GUILayout.Width(36))) { currentPages[tabIndex] = Mathf.Min(totalPages - 1, currentPages[tabIndex] + 1); }
|
||||
if (GUILayout.Button(">>", EditorStyles.miniButtonRight, GUILayout.Width(36))) { currentPages[tabIndex] = totalPages - 1; }
|
||||
EditorGUILayout.EndHorizontal();
|
||||
|
||||
EditorGUILayout.Space(4);
|
||||
|
||||
int start = currentPages[tabIndex] * itemsPerPage;
|
||||
int end = Math.Min(start + itemsPerPage, matchedTotal);
|
||||
|
||||
for (int mi = start; mi < end; ++mi)
|
||||
{
|
||||
int i = matchedIndices[mi];
|
||||
var eProp = entries.GetArrayElementAtIndex(i);
|
||||
if (eProp == null) continue;
|
||||
|
||||
// 使用稍小的间距并减小 preview 大小
|
||||
using (new EditorGUILayout.HorizontalScope("box"))
|
||||
{
|
||||
// 左列 sprite 预览(固定宽)
|
||||
using (new EditorGUILayout.VerticalScope(GUILayout.Width(80)))
|
||||
{
|
||||
var spriteProp = eProp.FindPropertyRelative("Sprite");
|
||||
Sprite s = spriteProp.objectReferenceValue as Sprite;
|
||||
EditorGUILayout.LabelField(s != null ? s.name : "<missing>", EditorStyles.boldLabel);
|
||||
|
||||
if (s != null)
|
||||
{
|
||||
Texture2D preview = AssetPreview.GetAssetPreview(s);
|
||||
if (preview == null) preview = AssetPreview.GetMiniThumbnail(s);
|
||||
if (preview != null)
|
||||
{
|
||||
GUILayout.Label(preview, GUILayout.Width(previewSize), GUILayout.Height(previewSize));
|
||||
}
|
||||
else
|
||||
{
|
||||
EditorGUILayout.PropertyField(spriteProp, GUIContent.none, GUILayout.Width(previewSize), GUILayout.Height(previewSize));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
EditorGUILayout.PropertyField(spriteProp, GUIContent.none, GUILayout.Width(previewSize), GUILayout.Height(previewSize));
|
||||
}
|
||||
}
|
||||
|
||||
// 右列 action 字段
|
||||
EditorGUILayout.BeginVertical();
|
||||
var actionProp = eProp.FindPropertyRelative("action");
|
||||
EditorGUILayout.Space(2);
|
||||
EditorGUILayout.PropertyField(actionProp, GUIContent.none, GUILayout.ExpandWidth(true));
|
||||
EditorGUILayout.EndVertical();
|
||||
}
|
||||
|
||||
EditorGUILayout.Space(4);
|
||||
}
|
||||
|
||||
if (matchedTotal == 0)
|
||||
{
|
||||
EditorGUILayout.HelpBox("No entries match the search.", MessageType.Info);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
EditorGUILayout.EndVertical();
|
||||
|
||||
EditorGUILayout.Space(6);
|
||||
|
||||
serializedObject.ApplyModifiedProperties();
|
||||
}
|
||||
|
||||
// Ensure a table for the device exists. Uses serialized properties (adds element if necessary).
|
||||
void EnsureTableFor(InputDeviceWatcher.InputDeviceCategory device)
|
||||
// Ensure table with name exists (用于初次迁移)
|
||||
void EnsureDefaultTable(string name)
|
||||
{
|
||||
if (tablesProp == null) return;
|
||||
|
||||
// Search existing entries
|
||||
for (int i = 0; i < tablesProp.arraySize; ++i)
|
||||
{
|
||||
var t = tablesProp.GetArrayElementAtIndex(i);
|
||||
var devProp = t.FindPropertyRelative("deviceType");
|
||||
if (devProp != null && devProp.enumValueIndex == (int)device)
|
||||
return; // exists
|
||||
var nameProp = t.FindPropertyRelative("deviceName");
|
||||
if (nameProp != null && string.Equals(nameProp.stringValue, name, StringComparison.OrdinalIgnoreCase))
|
||||
return;
|
||||
}
|
||||
|
||||
// Not found -> append new element
|
||||
int idx = tablesProp.arraySize;
|
||||
tablesProp.InsertArrayElementAtIndex(idx); // Inserts a copy if exists, otherwise default
|
||||
tablesProp.InsertArrayElementAtIndex(idx);
|
||||
var newTable = tablesProp.GetArrayElementAtIndex(idx);
|
||||
|
||||
var deviceTypeProp = newTable.FindPropertyRelative("deviceType");
|
||||
if (deviceTypeProp != null) deviceTypeProp.enumValueIndex = (int)device;
|
||||
|
||||
var deviceNameProp = newTable.FindPropertyRelative("deviceName");
|
||||
if (deviceNameProp != null) deviceNameProp.stringValue = name;
|
||||
var tmpAssetProp = newTable.FindPropertyRelative("tmpAsset");
|
||||
if (tmpAssetProp != null) tmpAssetProp.objectReferenceValue = null;
|
||||
|
||||
var entriesProp = newTable.FindPropertyRelative("entries");
|
||||
if (entriesProp != null) entriesProp.arraySize = 0;
|
||||
|
||||
@ -203,22 +387,26 @@ public class InputGlyphDatabaseEditor : Editor
|
||||
EditorUtility.SetDirty(db);
|
||||
}
|
||||
|
||||
// Return the SerializedProperty representing the DeviceGlyphTable that matches device
|
||||
SerializedProperty GetTablePropertyFor(InputDeviceWatcher.InputDeviceCategory device)
|
||||
void SyncEditorListsWithTables()
|
||||
{
|
||||
if (tablesProp == null) return null;
|
||||
for (int i = 0; i < tablesProp.arraySize; ++i)
|
||||
{
|
||||
var t = tablesProp.GetArrayElementAtIndex(i);
|
||||
var devProp = t.FindPropertyRelative("deviceType");
|
||||
if (devProp != null && devProp.enumValueIndex == (int)device)
|
||||
return t;
|
||||
}
|
||||
int count = tablesProp != null ? tablesProp.arraySize : 0;
|
||||
if (searchStrings == null) searchStrings = new List<string>();
|
||||
if (currentPages == null) currentPages = new List<int>();
|
||||
|
||||
return null;
|
||||
while (searchStrings.Count < count) searchStrings.Add("");
|
||||
while (currentPages.Count < count) currentPages.Add(0);
|
||||
|
||||
while (searchStrings.Count > count) searchStrings.RemoveAt(searchStrings.Count - 1);
|
||||
while (currentPages.Count > count) currentPages.RemoveAt(currentPages.Count - 1);
|
||||
}
|
||||
|
||||
// Parse TMP Sprite Asset and populate entries (serialized)
|
||||
void EnsureEditorListsLength()
|
||||
{
|
||||
if (tablesProp == null) return;
|
||||
SyncEditorListsWithTables();
|
||||
}
|
||||
|
||||
// Parse TMP Sprite Asset into table (保持你原有实现)
|
||||
void ParseTMPAssetIntoTableSerialized(SerializedProperty tableProp)
|
||||
{
|
||||
if (tableProp == null) return;
|
||||
@ -249,20 +437,12 @@ public class InputGlyphDatabaseEditor : Editor
|
||||
var glyph = ch.glyph as TMP_SpriteGlyph;
|
||||
if (glyph != null && glyph.sprite != null) s = glyph.sprite;
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
catch { }
|
||||
|
||||
if (s == null && atlas != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
s = atlas.GetSprite(name);
|
||||
}
|
||||
catch
|
||||
{
|
||||
s = null;
|
||||
}
|
||||
try { s = atlas.GetSprite(name); }
|
||||
catch { s = null; }
|
||||
|
||||
if (s == null)
|
||||
{
|
||||
@ -271,9 +451,7 @@ public class InputGlyphDatabaseEditor : Editor
|
||||
var m = typeof(SpriteAtlas).GetMethod("GetSprite", new Type[] { typeof(string) });
|
||||
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;
|
||||
entriesProp.InsertArrayElementAtIndex(newIndex);
|
||||
var entryProp = entriesProp.GetArrayElementAtIndex(newIndex);
|
||||
|
||||
var spriteProp = entryProp.FindPropertyRelative("Sprite");
|
||||
|
||||
|
||||
if (spriteProp != null) spriteProp.objectReferenceValue = s;
|
||||
}
|
||||
|
||||
@ -351,9 +525,7 @@ public class InputGlyphDatabaseEditor : Editor
|
||||
var val = p.GetValue(asset, null) as SpriteAtlas;
|
||||
if (val != null) return val;
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -31,8 +31,7 @@ public class InputGlyphImage : MonoBehaviour
|
||||
{
|
||||
if (actionReference == null || actionReference.action == null || targetImage == null) return;
|
||||
InputDeviceWatcher.InputDeviceCategory deviceCategory = InputDeviceWatcher.CurrentCategory;
|
||||
string path = GlyphService.GetBindingControlPath(actionReference);
|
||||
if (GlyphService.TryGetUISpriteForActionPath(path, deviceCategory, out Sprite sprite))
|
||||
if (GlyphService.TryGetUISpriteForActionPath(actionReference, deviceCategory, out Sprite sprite))
|
||||
{
|
||||
targetImage.sprite = sprite;
|
||||
}
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
// TestRebindScript.cs
|
||||
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using TMPro;
|
||||
@ -9,23 +10,19 @@ using UnityEngine.UI;
|
||||
|
||||
public class TestRebindScript : MonoBehaviour
|
||||
{
|
||||
[Header("UI")]
|
||||
public UXButton btn;
|
||||
[Header("UI")] public UXButton btn;
|
||||
public TextMeshProUGUI bindKeyText;
|
||||
public Image targetImage;
|
||||
|
||||
[Tooltip("如果不使用 actionReference,则用 name 在全局 manager 查找")]
|
||||
public string actionName = "movement";
|
||||
|
||||
[Header("Optional composite part (WASD style)")]
|
||||
[Tooltip("如果需要绑定 composite 的某一部分(例如 Up/Down/Left/Right),填这个;留空表示绑定非 composite 或整体 binding")]
|
||||
[Header("Optional composite part (WASD style)")] [Tooltip("如果需要绑定 composite 的某一部分(例如 Up/Down/Left/Right),填这个;留空表示绑定非 composite 或整体 binding")]
|
||||
public string compositePartName = "";
|
||||
|
||||
[Header("Behavior")]
|
||||
[Tooltip("如果 true,在 Prepare 后自动调用 ConfirmApply() 并保存;否则等待手动 ConfirmPrepared()/CancelPrepared()")]
|
||||
[Header("Behavior")] [Tooltip("如果 true,在 Prepare 后自动调用 ConfirmApply() 并保存;否则等待手动 ConfirmPrepared()/CancelPrepared()")]
|
||||
public bool autoConfirm = false;
|
||||
|
||||
private int targetBindingIndex = -1;
|
||||
private IDisposable prepareSub;
|
||||
private IDisposable applySub;
|
||||
private IDisposable rebindEndSub;
|
||||
@ -34,8 +31,6 @@ public class TestRebindScript : MonoBehaviour
|
||||
{
|
||||
if (btn != null) btn.onClick.AddListener(OnBtnClicked);
|
||||
InputDeviceWatcher.OnDeviceChanged += OnDeviceChanged;
|
||||
|
||||
ResolveBindingIndex();
|
||||
UpdateBindingText();
|
||||
|
||||
if (InputBindingManager.Instance != null)
|
||||
@ -74,26 +69,13 @@ public class TestRebindScript : MonoBehaviour
|
||||
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)
|
||||
{
|
||||
if (ctx == null || ctx.action == null) return false;
|
||||
var action = GetAction();
|
||||
if (action == null) return false;
|
||||
return ctx.action == action && ctx.bindingIndex == targetBindingIndex;
|
||||
return ctx.action == action;
|
||||
}
|
||||
|
||||
private void OnBtnClicked()
|
||||
@ -116,7 +98,11 @@ public class TestRebindScript : MonoBehaviour
|
||||
if (task == null) return false;
|
||||
return await task;
|
||||
}
|
||||
catch (Exception ex) { Debug.LogError(ex); return false; }
|
||||
catch (Exception ex)
|
||||
{
|
||||
Debug.LogError(ex);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public void CancelPrepared()
|
||||
@ -135,21 +121,11 @@ public class TestRebindScript : MonoBehaviour
|
||||
return;
|
||||
}
|
||||
|
||||
// Ensure binding index is refreshed (action/bindings may change)
|
||||
if (targetBindingIndex < 0 || targetBindingIndex >= action.bindings.Count)
|
||||
ResolveBindingIndex();
|
||||
|
||||
if (targetBindingIndex < 0)
|
||||
{
|
||||
bindKeyText.text = "<no binding>";
|
||||
if (targetImage != null) targetImage.sprite = null;
|
||||
return;
|
||||
}
|
||||
string disp = GlyphService.GetBindingControlPath(action, InputDeviceWatcher.CurrentCategory);
|
||||
bindKeyText.text = GlyphService.GetDisplayNameFromInputAction(action);
|
||||
|
||||
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
|
||||
{
|
||||
var deviceCat = InputDeviceWatcher.CurrentCategory;
|
||||
|
||||
@ -666,7 +666,18 @@
|
||||
{
|
||||
"name": "",
|
||||
"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": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@ -9,11 +9,8 @@ using UnityEngine.UI;
|
||||
|
||||
public class TestAudioPlay : MonoBehaviour
|
||||
{
|
||||
public InputGlyphDatabase database;
|
||||
public AudioSource audioSource;
|
||||
[SerializeField] private UXHotkeyButton[] hotButtons;
|
||||
Slider slider;
|
||||
private Selectable Selectable;
|
||||
public class UXAuditoHelper : IUXAudioHelper
|
||||
{
|
||||
private AudioSource _audioSource;
|
||||
@ -51,7 +48,6 @@ public class TestAudioPlay : MonoBehaviour
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
GlyphService.Database = database;
|
||||
UXComponentExtensionsHelper.SetAudioHelper(new UXAuditoHelper(audioSource));
|
||||
BindHotKeys();
|
||||
}
|
||||
|
||||
@ -1,27 +1,57 @@
|
||||
fileFormatVersion: 2
|
||||
guid: dffef66376be4fa480fb02b19edbe903
|
||||
TextureImporter:
|
||||
fileIDToRecycleName:
|
||||
21300000: EmojiOne_0
|
||||
21300002: EmojiOne_1
|
||||
21300004: EmojiOne_2
|
||||
21300006: EmojiOne_3
|
||||
21300008: EmojiOne_4
|
||||
21300010: EmojiOne_6
|
||||
21300012: EmojiOne_7
|
||||
21300014: EmojiOne_8
|
||||
21300016: EmojiOne_9
|
||||
21300018: EmojiOne_10
|
||||
21300020: EmojiOne_11
|
||||
21300022: EmojiOne_12
|
||||
21300024: EmojiOne_13
|
||||
21300026: EmojiOne_5
|
||||
21300028: EmojiOne_14
|
||||
internalIDToNameTable:
|
||||
- first:
|
||||
213: 21300000
|
||||
second: EmojiOne_0
|
||||
- first:
|
||||
213: 21300002
|
||||
second: EmojiOne_1
|
||||
- first:
|
||||
213: 21300004
|
||||
second: EmojiOne_2
|
||||
- first:
|
||||
213: 21300006
|
||||
second: EmojiOne_3
|
||||
- first:
|
||||
213: 21300008
|
||||
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: {}
|
||||
serializedVersion: 5
|
||||
serializedVersion: 13
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 1
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
@ -35,7 +65,12 @@ TextureImporter:
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
flipGreenChannel: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMipmapLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
@ -44,9 +79,9 @@ TextureImporter:
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: -1
|
||||
aniso: -1
|
||||
mipBias: -1
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 1
|
||||
@ -58,19 +93,26 @@ TextureImporter:
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 0
|
||||
textureType: 8
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 1
|
||||
swizzle: 50462976
|
||||
cookieLightType: 1
|
||||
platformSettings:
|
||||
- serializedVersion: 2
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 512
|
||||
resizeAlgorithm: 0
|
||||
@ -80,8 +122,10 @@ TextureImporter:
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
- serializedVersion: 2
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 512
|
||||
resizeAlgorithm: 0
|
||||
@ -91,8 +135,10 @@ TextureImporter:
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
- serializedVersion: 2
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: iPhone
|
||||
maxTextureSize: 512
|
||||
resizeAlgorithm: 0
|
||||
@ -102,8 +148,10 @@ TextureImporter:
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
- serializedVersion: 2
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 1
|
||||
- serializedVersion: 3
|
||||
buildTarget: Android
|
||||
maxTextureSize: 512
|
||||
resizeAlgorithm: 0
|
||||
@ -113,7 +161,22 @@ TextureImporter:
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 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:
|
||||
serializedVersion: 2
|
||||
sprites:
|
||||
@ -121,18 +184,19 @@ TextureImporter:
|
||||
name: EmojiOne_0
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 384
|
||||
width: 128
|
||||
height: 128
|
||||
x: 4
|
||||
y: 388
|
||||
width: 120
|
||||
height: 120
|
||||
alignment: 0
|
||||
pivot: {x: 0.5, y: 0.5}
|
||||
pivot: {x: 0, y: 0}
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
outline: []
|
||||
physicsShape: []
|
||||
tessellationDetail: 0
|
||||
bones: []
|
||||
spriteID: 4bcc36da2108f2c4ba3de5c921d25c3c
|
||||
internalID: 21300000
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
@ -141,18 +205,19 @@ TextureImporter:
|
||||
name: EmojiOne_1
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 128
|
||||
y: 384
|
||||
width: 128
|
||||
height: 128
|
||||
x: 132
|
||||
y: 388
|
||||
width: 120
|
||||
height: 120
|
||||
alignment: 0
|
||||
pivot: {x: 0.5, y: 0.5}
|
||||
pivot: {x: 0, y: 0}
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
outline: []
|
||||
physicsShape: []
|
||||
tessellationDetail: 0
|
||||
bones: []
|
||||
spriteID: e9eea8093eaeaee4d901c4553f572c22
|
||||
internalID: 21300002
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
@ -161,18 +226,19 @@ TextureImporter:
|
||||
name: EmojiOne_2
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 256
|
||||
y: 384
|
||||
width: 128
|
||||
height: 128
|
||||
x: 260
|
||||
y: 388
|
||||
width: 120
|
||||
height: 120
|
||||
alignment: 0
|
||||
pivot: {x: 0.5, y: 0.5}
|
||||
pivot: {x: 0, y: 0}
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
outline: []
|
||||
physicsShape: []
|
||||
tessellationDetail: 0
|
||||
bones: []
|
||||
spriteID: 49451da35411dcc42a3692e39b0fde70
|
||||
internalID: 21300004
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
@ -181,18 +247,19 @@ TextureImporter:
|
||||
name: EmojiOne_3
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 384
|
||||
y: 384
|
||||
width: 128
|
||||
height: 128
|
||||
x: 388
|
||||
y: 388
|
||||
width: 120
|
||||
height: 120
|
||||
alignment: 0
|
||||
pivot: {x: 0.5, y: 0.5}
|
||||
pivot: {x: 0, y: 0}
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
outline: []
|
||||
physicsShape: []
|
||||
tessellationDetail: 0
|
||||
bones: []
|
||||
spriteID: f65709664b924904790c850a50ca82bc
|
||||
internalID: 21300006
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
@ -201,18 +268,19 @@ TextureImporter:
|
||||
name: EmojiOne_4
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 256
|
||||
width: 128
|
||||
height: 128
|
||||
x: 4
|
||||
y: 260
|
||||
width: 120
|
||||
height: 120
|
||||
alignment: 0
|
||||
pivot: {x: 0.5, y: 0.5}
|
||||
pivot: {x: 0, y: 0}
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
outline: []
|
||||
physicsShape: []
|
||||
tessellationDetail: 0
|
||||
bones: []
|
||||
spriteID: 5b92c568a5ec9ad4b9ed90e271f1c9a8
|
||||
internalID: 21300008
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
@ -221,18 +289,19 @@ TextureImporter:
|
||||
name: EmojiOne_6
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 256
|
||||
y: 256
|
||||
width: 128
|
||||
height: 128
|
||||
x: 260
|
||||
y: 260
|
||||
width: 120
|
||||
height: 120
|
||||
alignment: 0
|
||||
pivot: {x: 0.5, y: 0.5}
|
||||
pivot: {x: 0, y: 0}
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
outline: []
|
||||
physicsShape: []
|
||||
tessellationDetail: 0
|
||||
bones: []
|
||||
spriteID: b10f2b48b7281594bb8a24a6511a35af
|
||||
internalID: 21300010
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
@ -241,18 +310,19 @@ TextureImporter:
|
||||
name: EmojiOne_7
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 384
|
||||
y: 256
|
||||
width: 128
|
||||
height: 128
|
||||
x: 388
|
||||
y: 260
|
||||
width: 120
|
||||
height: 120
|
||||
alignment: 0
|
||||
pivot: {x: 0.5, y: 0.5}
|
||||
pivot: {x: 0, y: 0}
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
outline: []
|
||||
physicsShape: []
|
||||
tessellationDetail: 0
|
||||
bones: []
|
||||
spriteID: 10a600f9329dc2246a897e89f4d283cd
|
||||
internalID: 21300012
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
@ -261,18 +331,19 @@ TextureImporter:
|
||||
name: EmojiOne_8
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 128
|
||||
width: 128
|
||||
height: 128
|
||||
x: 4
|
||||
y: 132
|
||||
width: 120
|
||||
height: 120
|
||||
alignment: 0
|
||||
pivot: {x: 0.5, y: 0.5}
|
||||
pivot: {x: 0, y: 0}
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
outline: []
|
||||
physicsShape: []
|
||||
tessellationDetail: 0
|
||||
bones: []
|
||||
spriteID: 66cffa363b90ab14787d8a5b90cf4502
|
||||
internalID: 21300014
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
@ -281,18 +352,19 @@ TextureImporter:
|
||||
name: EmojiOne_9
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 128
|
||||
y: 128
|
||||
width: 128
|
||||
height: 128
|
||||
x: 132
|
||||
y: 132
|
||||
width: 120
|
||||
height: 120
|
||||
alignment: 0
|
||||
pivot: {x: 0.5, y: 0.5}
|
||||
pivot: {x: 0, y: 0}
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
outline: []
|
||||
physicsShape: []
|
||||
tessellationDetail: 0
|
||||
bones: []
|
||||
spriteID: 55cf3d409c9b89349b1e1bdc1cc224ad
|
||||
internalID: 21300016
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
@ -301,18 +373,19 @@ TextureImporter:
|
||||
name: EmojiOne_10
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 256
|
||||
y: 128
|
||||
width: 128
|
||||
height: 128
|
||||
x: 260
|
||||
y: 132
|
||||
width: 120
|
||||
height: 120
|
||||
alignment: 0
|
||||
pivot: {x: 0.5, y: 0.5}
|
||||
pivot: {x: 0, y: 0}
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
outline: []
|
||||
physicsShape: []
|
||||
tessellationDetail: 0
|
||||
bones: []
|
||||
spriteID: 2a9e58eaf96feef42bcefa1cf257193f
|
||||
internalID: 21300018
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
@ -321,18 +394,19 @@ TextureImporter:
|
||||
name: EmojiOne_11
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 384
|
||||
y: 128
|
||||
width: 128
|
||||
height: 128
|
||||
x: 388
|
||||
y: 132
|
||||
width: 120
|
||||
height: 120
|
||||
alignment: 0
|
||||
pivot: {x: 0.5, y: 0.5}
|
||||
pivot: {x: 0, y: 0}
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
outline: []
|
||||
physicsShape: []
|
||||
tessellationDetail: 0
|
||||
bones: []
|
||||
spriteID: 2489120affc155840ae6a7be2e93ce19
|
||||
internalID: 21300020
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
@ -341,18 +415,19 @@ TextureImporter:
|
||||
name: EmojiOne_12
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 0
|
||||
width: 128
|
||||
height: 128
|
||||
x: 4
|
||||
y: 4
|
||||
width: 120
|
||||
height: 120
|
||||
alignment: 0
|
||||
pivot: {x: 0.5, y: 0.5}
|
||||
pivot: {x: 0, y: 0}
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
outline: []
|
||||
physicsShape: []
|
||||
tessellationDetail: 0
|
||||
bones: []
|
||||
spriteID: 412349a150598d14da4d7140df5c0286
|
||||
internalID: 21300022
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
@ -361,18 +436,19 @@ TextureImporter:
|
||||
name: EmojiOne_13
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 128
|
||||
y: 0
|
||||
width: 128
|
||||
height: 128
|
||||
x: 132
|
||||
y: 4
|
||||
width: 120
|
||||
height: 120
|
||||
alignment: 0
|
||||
pivot: {x: 0.5, y: 0.5}
|
||||
pivot: {x: 0, y: 0}
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
outline: []
|
||||
physicsShape: []
|
||||
tessellationDetail: 0
|
||||
bones: []
|
||||
spriteID: a937464b42bb3634782dea34c6becb6c
|
||||
internalID: 21300024
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
@ -381,10 +457,10 @@ TextureImporter:
|
||||
name: EmojiOne_5
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 256
|
||||
y: 0
|
||||
width: 128
|
||||
height: 128
|
||||
x: 132
|
||||
y: 260
|
||||
width: 120
|
||||
height: 120
|
||||
alignment: 0
|
||||
pivot: {x: 0, y: 0}
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
@ -393,6 +469,7 @@ TextureImporter:
|
||||
tessellationDetail: 0
|
||||
bones: []
|
||||
spriteID: b0f933b217682124dbfc5e6b89abe3d0
|
||||
internalID: 21300026
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
@ -401,10 +478,10 @@ TextureImporter:
|
||||
name: EmojiOne_14
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 128
|
||||
y: 256
|
||||
width: 128
|
||||
height: 128
|
||||
x: 260
|
||||
y: 4
|
||||
width: 120
|
||||
height: 120
|
||||
alignment: 0
|
||||
pivot: {x: 0, y: 0}
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
@ -413,6 +490,28 @@ TextureImporter:
|
||||
tessellationDetail: 0
|
||||
bones: []
|
||||
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: []
|
||||
indices:
|
||||
edges: []
|
||||
@ -421,11 +520,31 @@ TextureImporter:
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 3e32d8f5477abfc43b19066e8ad5032e
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
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:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
||||
@ -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
|
||||
@ -30,10 +30,10 @@ EditorUserSettings:
|
||||
value: 54010c54510c5a5f5a0a0973477b0a4414151a2b757925367a7e4a6ab1b66260
|
||||
flags: 0
|
||||
RecentlyUsedSceneGuid-7:
|
||||
value: 50500404540c580d0f0b5e7543725b44424f4c7a7b7c7734747e4f36e4b1676d
|
||||
value: 5a07065703500c59585e0e7748770d44444f4a737d2d7f35787d4f63e0b26668
|
||||
flags: 0
|
||||
RecentlyUsedSceneGuid-8:
|
||||
value: 5a07065703500c59585e0e7748770d44444f4a737d2d7f35787d4f63e0b26668
|
||||
value: 50500404540c580d0f0b5e7543725b44424f4c7a7b7c7734747e4f36e4b1676d
|
||||
flags: 0
|
||||
RecentlyUsedSceneGuid-9:
|
||||
value: 015450045700505d0f0a5f2313260a444e164b2e757b76652c2d4d32bab0313a
|
||||
|
||||
@ -19,12 +19,64 @@ MonoBehaviour:
|
||||
width: 1920
|
||||
height: 997
|
||||
m_ShowMode: 4
|
||||
m_Title: Inspector
|
||||
m_RootView: {fileID: 2}
|
||||
m_Title: Hierarchy
|
||||
m_RootView: {fileID: 4}
|
||||
m_MinSize: {x: 875, y: 300}
|
||||
m_MaxSize: {x: 10000, y: 10000}
|
||||
m_Maximized: 1
|
||||
--- !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:
|
||||
m_ObjectHideFlags: 52
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
@ -37,9 +89,9 @@ MonoBehaviour:
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Children:
|
||||
- {fileID: 3}
|
||||
- {fileID: 5}
|
||||
- {fileID: 4}
|
||||
- {fileID: 7}
|
||||
- {fileID: 6}
|
||||
m_Position:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
@ -52,7 +104,7 @@ MonoBehaviour:
|
||||
m_TopViewHeight: 30
|
||||
m_UseBottomView: 1
|
||||
m_BottomViewHeight: 20
|
||||
--- !u!114 &3
|
||||
--- !u!114 &5
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 52
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
@ -74,7 +126,7 @@ MonoBehaviour:
|
||||
m_MinSize: {x: 0, y: 0}
|
||||
m_MaxSize: {x: 0, y: 0}
|
||||
m_LastLoadedLayoutName:
|
||||
--- !u!114 &4
|
||||
--- !u!114 &6
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 52
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
@ -95,7 +147,7 @@ MonoBehaviour:
|
||||
height: 20
|
||||
m_MinSize: {x: 0, y: 0}
|
||||
m_MaxSize: {x: 0, y: 0}
|
||||
--- !u!114 &5
|
||||
--- !u!114 &7
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 52
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
@ -108,7 +160,7 @@ MonoBehaviour:
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Children:
|
||||
- {fileID: 6}
|
||||
- {fileID: 3}
|
||||
- {fileID: 9}
|
||||
- {fileID: 12}
|
||||
- {fileID: 13}
|
||||
@ -121,35 +173,9 @@ MonoBehaviour:
|
||||
m_MinSize: {x: 400, y: 100}
|
||||
m_MaxSize: {x: 32384, y: 16192}
|
||||
vertical: 0
|
||||
controlID: 155
|
||||
controlID: 144
|
||||
draggingID: 0
|
||||
--- !u!114 &6
|
||||
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
|
||||
--- !u!114 &8
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 52
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
@ -166,42 +192,16 @@ MonoBehaviour:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 0
|
||||
width: 468
|
||||
height: 363
|
||||
m_MinSize: {x: 201, y: 221}
|
||||
m_MaxSize: {x: 4001, y: 4021}
|
||||
width: 612
|
||||
height: 491
|
||||
m_MinSize: {x: 200, y: 200}
|
||||
m_MaxSize: {x: 4000, y: 4000}
|
||||
m_ActualView: {fileID: 16}
|
||||
m_Panes:
|
||||
- {fileID: 15}
|
||||
- {fileID: 16}
|
||||
m_Selected: 1
|
||||
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
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 52
|
||||
@ -219,14 +219,14 @@ MonoBehaviour:
|
||||
- {fileID: 11}
|
||||
m_Position:
|
||||
serializedVersion: 2
|
||||
x: 468
|
||||
x: 612
|
||||
y: 0
|
||||
width: 288
|
||||
width: 333
|
||||
height: 947
|
||||
m_MinSize: {x: 100, y: 100}
|
||||
m_MaxSize: {x: 8096, y: 16192}
|
||||
vertical: 1
|
||||
controlID: 69
|
||||
controlID: 49
|
||||
draggingID: 0
|
||||
--- !u!114 &10
|
||||
MonoBehaviour:
|
||||
@ -245,8 +245,8 @@ MonoBehaviour:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 0
|
||||
width: 288
|
||||
height: 601
|
||||
width: 333
|
||||
height: 461
|
||||
m_MinSize: {x: 202, y: 221}
|
||||
m_MaxSize: {x: 4002, y: 4021}
|
||||
m_ActualView: {fileID: 17}
|
||||
@ -270,9 +270,9 @@ MonoBehaviour:
|
||||
m_Position:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 601
|
||||
width: 288
|
||||
height: 346
|
||||
y: 461
|
||||
width: 333
|
||||
height: 486
|
||||
m_MinSize: {x: 102, y: 121}
|
||||
m_MaxSize: {x: 4002, y: 4021}
|
||||
m_ActualView: {fileID: 18}
|
||||
@ -295,9 +295,9 @@ MonoBehaviour:
|
||||
m_Children: []
|
||||
m_Position:
|
||||
serializedVersion: 2
|
||||
x: 756
|
||||
x: 945
|
||||
y: 0
|
||||
width: 183
|
||||
width: 332
|
||||
height: 947
|
||||
m_MinSize: {x: 232, y: 271}
|
||||
m_MaxSize: {x: 10002, y: 10021}
|
||||
@ -321,9 +321,9 @@ MonoBehaviour:
|
||||
m_Children: []
|
||||
m_Position:
|
||||
serializedVersion: 2
|
||||
x: 939
|
||||
x: 1277
|
||||
y: 0
|
||||
width: 981
|
||||
width: 643
|
||||
height: 947
|
||||
m_MinSize: {x: 276, y: 71}
|
||||
m_MaxSize: {x: 4001, y: 4021}
|
||||
@ -353,9 +353,9 @@ MonoBehaviour:
|
||||
m_Pos:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 436
|
||||
width: 467
|
||||
height: 563
|
||||
y: 564
|
||||
width: 611
|
||||
height: 435
|
||||
m_SerializedDataModeController:
|
||||
m_DataMode: 0
|
||||
m_PreferredDataMode: 0
|
||||
@ -408,10 +408,10 @@ MonoBehaviour:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 21
|
||||
width: 467
|
||||
height: 542
|
||||
m_Scale: {x: 0.24322917, y: 0.24322918}
|
||||
m_Translation: {x: 233.5, y: 271}
|
||||
width: 611
|
||||
height: 414
|
||||
m_Scale: {x: 0.31822917, y: 0.31822917}
|
||||
m_Translation: {x: 305.5, y: 207}
|
||||
m_MarginLeft: 0
|
||||
m_MarginRight: 0
|
||||
m_MarginTop: 0
|
||||
@ -419,12 +419,12 @@ MonoBehaviour:
|
||||
m_LastShownAreaInsideMargins:
|
||||
serializedVersion: 2
|
||||
x: -960
|
||||
y: -1114.1755
|
||||
y: -650.4746
|
||||
width: 1920
|
||||
height: 2228.351
|
||||
height: 1300.9492
|
||||
m_MinimalGUI: 1
|
||||
m_defaultScale: 0.24322917
|
||||
m_LastWindowPixelSize: {x: 467, y: 563}
|
||||
m_defaultScale: 0.31822917
|
||||
m_LastWindowPixelSize: {x: 611, y: 435}
|
||||
m_ClearInEditMode: 1
|
||||
m_NoCameraWarning: 1
|
||||
m_LowResolutionForAspectRatios: 01000000000000000000
|
||||
@ -451,9 +451,9 @@ MonoBehaviour:
|
||||
m_Pos:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 73
|
||||
width: 518
|
||||
height: 926
|
||||
y: 79
|
||||
width: 365
|
||||
height: 915
|
||||
m_SerializedDataModeController:
|
||||
m_DataMode: 0
|
||||
m_PreferredDataMode: 0
|
||||
@ -522,8 +522,8 @@ MonoBehaviour:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 73
|
||||
width: 467
|
||||
height: 342
|
||||
width: 611
|
||||
height: 470
|
||||
m_SerializedDataModeController:
|
||||
m_DataMode: 0
|
||||
m_PreferredDataMode: 0
|
||||
@ -538,8 +538,8 @@ MonoBehaviour:
|
||||
floating: 0
|
||||
collapsed: 0
|
||||
displayed: 1
|
||||
snapOffset: {x: -179, y: -26}
|
||||
snapOffsetDelta: {x: 0, y: 0}
|
||||
snapOffset: {x: -174, y: -26}
|
||||
snapOffsetDelta: {x: -5, y: 0}
|
||||
snapCorner: 3
|
||||
id: Tool Settings
|
||||
index: 0
|
||||
@ -616,9 +616,9 @@ MonoBehaviour:
|
||||
floating: 0
|
||||
collapsed: 0
|
||||
displayed: 1
|
||||
snapOffset: {x: 24, y: 64}
|
||||
snapOffset: {x: 24, y: -131}
|
||||
snapOffsetDelta: {x: 0, y: 0}
|
||||
snapCorner: 0
|
||||
snapCorner: 2
|
||||
id: Orientation
|
||||
index: 0
|
||||
layout: 4
|
||||
@ -867,7 +867,7 @@ MonoBehaviour:
|
||||
snapOffsetDelta: {x: 0, y: 0}
|
||||
snapCorner: 0
|
||||
id: UnityEditor.SceneViewCameraOverlay
|
||||
index: 10
|
||||
index: 9
|
||||
layout: 4
|
||||
size: {x: 0, y: 0}
|
||||
sizeOverriden: 0
|
||||
@ -1064,9 +1064,9 @@ MonoBehaviour:
|
||||
m_PlayAudio: 0
|
||||
m_AudioPlay: 0
|
||||
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
|
||||
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_CameraMode:
|
||||
drawMode: 0
|
||||
@ -1116,9 +1116,9 @@ MonoBehaviour:
|
||||
speed: 2
|
||||
m_Value: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_Size:
|
||||
m_Target: 161.9702
|
||||
m_Target: 694.8482
|
||||
speed: 2
|
||||
m_Value: 161.9702
|
||||
m_Value: 694.8482
|
||||
m_Ortho:
|
||||
m_Target: 1
|
||||
speed: 2
|
||||
@ -1163,10 +1163,10 @@ MonoBehaviour:
|
||||
m_Tooltip:
|
||||
m_Pos:
|
||||
serializedVersion: 2
|
||||
x: 468
|
||||
x: 612
|
||||
y: 73
|
||||
width: 286
|
||||
height: 580
|
||||
width: 331
|
||||
height: 440
|
||||
m_SerializedDataModeController:
|
||||
m_DataMode: 0
|
||||
m_PreferredDataMode: 0
|
||||
@ -1182,7 +1182,7 @@ MonoBehaviour:
|
||||
scrollPos: {x: 0, y: 0}
|
||||
m_SelectedIDs:
|
||||
m_LastClickedID: 0
|
||||
m_ExpandedIDs: b0faffff006e0000
|
||||
m_ExpandedIDs: c8faffff286e0000
|
||||
m_RenameOverlay:
|
||||
m_UserAcceptedRename: 0
|
||||
m_Name:
|
||||
@ -1198,7 +1198,7 @@ MonoBehaviour:
|
||||
m_IsRenaming: 0
|
||||
m_OriginalEventType: 11
|
||||
m_IsRenamingFilename: 0
|
||||
m_ClientGUIView: {fileID: 10}
|
||||
m_ClientGUIView: {fileID: 8}
|
||||
m_SearchString:
|
||||
m_ExpandedScenes: []
|
||||
m_CurrenRootInstanceID: 0
|
||||
@ -1226,10 +1226,10 @@ MonoBehaviour:
|
||||
m_Tooltip:
|
||||
m_Pos:
|
||||
serializedVersion: 2
|
||||
x: 468
|
||||
y: 674
|
||||
width: 286
|
||||
height: 325
|
||||
x: 612
|
||||
y: 534
|
||||
width: 331
|
||||
height: 465
|
||||
m_SerializedDataModeController:
|
||||
m_DataMode: 0
|
||||
m_PreferredDataMode: 0
|
||||
@ -1260,9 +1260,9 @@ MonoBehaviour:
|
||||
m_Tooltip:
|
||||
m_Pos:
|
||||
serializedVersion: 2
|
||||
x: 756
|
||||
x: 945
|
||||
y: 73
|
||||
width: 181
|
||||
width: 330
|
||||
height: 926
|
||||
m_SerializedDataModeController:
|
||||
m_DataMode: 0
|
||||
@ -1283,9 +1283,9 @@ MonoBehaviour:
|
||||
m_SceneHandles:
|
||||
m_ShowAllHits: 0
|
||||
m_SkipHidden: 0
|
||||
m_SearchArea: 0
|
||||
m_SearchArea: 1
|
||||
m_Folders:
|
||||
- Assets/InputGlyph
|
||||
- Assets
|
||||
m_Globs: []
|
||||
m_OriginalText:
|
||||
m_ImportLogFlags: 0
|
||||
@ -1301,7 +1301,7 @@ MonoBehaviour:
|
||||
scrollPos: {x: 0, y: 0}
|
||||
m_SelectedIDs: e48c0000
|
||||
m_LastClickedID: 36068
|
||||
m_ExpandedIDs: 00000000e86f0000987200004e74000050740000527400005474000056740000587400005a7400005c7400005e74000060740000627400006474000066740000687400006a7400006c7400006e74000070740000727400007474000076740000787400007a7400007c7400007e74000080740000827400008474000086740000887400008a7400008c7400008e74000090740000927400009474000096740000987400009a7400009c7400009e740000a0740000a2740000a4740000a6740000a8740000aa740000ac740000ae740000b0740000b2740000b4740000b6740000b8740000ba740000bc740000be740000c0740000c2740000c4740000c6740000c8740000ca740000cc740000ce740000d0740000d2740000d4740000d6740000d8740000da740000dc740000de740000e0740000e2740000e4740000e6740000e8740000ea740000ec740000ee740000f0740000f2740000f4740000f6740000f8740000fa740000fc740000fe74000000750000027500000475000006750000087500000a7500000c7500000e75000010750000127500001475000016750000187500001a7500001c7500001e75000020750000227500002475000026750000287500002a7500002c7500002e75000030750000327500003475000036750000387500003a7500003c7500003e75000040750000427500004475000046750000487500004a7500004c7500004e75000050750000527500005475000056750000587500005a7500005c7500005e75000060750000627500006475000066750000687500006a7500006c7500006e75000070750000727500007475000076750000787500007a7500007c7500007e75000080750000827500008475000086750000887500008a7500008c7500008e75000090750000927500009475000096750000987500009a7500009c7500009e750000a0750000a2750000a4750000a6750000a8750000aa750000ac750000ae750000b0750000b2750000b4750000b6750000b8750000ba750000bc750000be750000c0750000c2750000c4750000c6750000c8750000ca750000cc750000ce750000d0750000d2750000d4750000d6750000d8750000da750000dc750000de750000e0750000e2750000e4750000e6750000e8750000ea750000ec750000ee750000f0750000f2750000f4750000f6750000f8750000fa750000fc750000fe75000000760000027600000476000006760000087600000a7600000c7600000e7600001076000012760000147600001676000018760000
|
||||
m_ExpandedIDs: 0000000006740000087400000a7400000c7400000e74000010740000127400001474000016740000187400001a7400001c7400001e74000020740000227400002474000026740000287400002a7400002c7400002e74000030740000327400003474000036740000387400003a7400003c7400003e74000040740000427400004474000046740000487400004a7400004c7400004e74000050740000527400005474000056740000587400005a7400005c7400005e74000060740000627400006474000066740000687400006a7400006c7400006e74000070740000727400007474000076740000787400007a7400007c7400007e74000080740000827400008474000086740000887400008a7400008c7400008e74000090740000927400009474000096740000987400009a7400009c7400009e740000a0740000a2740000a4740000a6740000a8740000aa740000ac740000ae740000b0740000b2740000b4740000b6740000b8740000ba740000bc740000be740000c0740000c2740000c4740000c6740000c8740000ca740000cc740000ce740000d0740000d2740000d4740000d6740000d8740000da740000dc740000de740000e0740000e2740000e4740000e6740000e8740000ea740000ec740000ee740000f0740000f2740000f4740000f6740000f8740000fa740000fc740000fe74000000750000027500000475000006750000087500000a7500000c7500000e75000010750000127500001475000016750000187500001a7500001c7500001e75000020750000227500002475000026750000287500002a7500002c7500002e75000030750000327500003475000036750000387500003a7500003c7500003e75000040750000427500004475000046750000487500004a7500004c7500004e75000050750000527500005475000056750000587500005a7500005c7500005e75000060750000627500006475000066750000687500006a7500006c7500006e75000070750000727500007475000076750000787500007a7500007c7500007e75000080750000827500008475000086750000887500008a7500008c7500008e75000090750000927500009475000096750000987500009a7500009c7500009e750000a0750000a2750000a4750000a6750000a8750000aa750000ac750000ae750000b0750000b2750000b4750000b6750000b8750000ba750000bc750000be750000c0750000c2750000c4750000
|
||||
m_RenameOverlay:
|
||||
m_UserAcceptedRename: 0
|
||||
m_Name:
|
||||
@ -1329,21 +1329,21 @@ MonoBehaviour:
|
||||
scrollPos: {x: 0, y: 0}
|
||||
m_SelectedIDs:
|
||||
m_LastClickedID: 0
|
||||
m_ExpandedIDs: ffffffff00000000e86f0000987200004e74000050740000527400005474000056740000587400005a7400005c7400005e74000060740000627400006474000066740000687400006a7400006c7400006e74000070740000727400007474000076740000787400007a7400007c7400007e74000080740000827400008474000086740000887400008a7400008c7400008e74000090740000927400009474000096740000987400009a7400009c7400009e740000a0740000a2740000a4740000a6740000a8740000aa740000ac740000ae740000b0740000b2740000b4740000b6740000b8740000ba740000bc740000be740000c0740000c2740000c4740000c6740000c8740000ca740000cc740000ce740000d0740000d2740000d4740000d6740000d8740000da740000dc740000de740000e0740000e2740000e4740000e6740000e8740000ea740000ec740000ee740000f0740000f2740000f4740000f6740000f8740000fa740000fc740000fe74000000750000027500000475000006750000087500000a7500000c7500000e75000010750000127500001475000016750000187500001a7500001c7500001e75000020750000227500002475000026750000287500002a7500002c7500002e75000030750000327500003475000036750000387500003a7500003c7500003e75000040750000427500004475000046750000487500004a7500004c7500004e75000050750000527500005475000056750000587500005a7500005c7500005e75000060750000627500006475000066750000687500006a7500006c7500006e75000070750000727500007475000076750000787500007a7500007c7500007e75000080750000827500008475000086750000887500008a7500008c7500008e75000090750000927500009475000096750000987500009a7500009c7500009e750000a0750000a2750000a4750000a6750000a8750000aa750000ac750000ae750000b0750000b2750000b4750000b6750000b8750000ba750000bc750000be750000c0750000c2750000c4750000c6750000c8750000ca750000cc750000ce750000d0750000d2750000d4750000d6750000d8750000da750000dc750000de750000e0750000e2750000e4750000e6750000e8750000ea750000ec750000ee750000f0750000f2750000f4750000f6750000f8750000fa750000fc750000fe75000000760000027600000476000006760000087600000a7600000c7600000e7600001076000012760000147600001676000018760000
|
||||
m_ExpandedIDs: ffffffff0000000006740000087400000a7400000c7400000e74000010740000127400001474000016740000187400001a7400001c7400001e74000020740000227400002474000026740000287400002a7400002c7400002e74000030740000327400003474000036740000387400003a7400003c7400003e74000040740000427400004474000046740000487400004a7400004c7400004e74000050740000527400005474000056740000587400005a7400005c7400005e74000060740000627400006474000066740000687400006a7400006c7400006e74000070740000727400007474000076740000787400007a7400007c7400007e74000080740000827400008474000086740000887400008a7400008c7400008e74000090740000927400009474000096740000987400009a7400009c7400009e740000a0740000a2740000a4740000a6740000a8740000aa740000ac740000ae740000b0740000b2740000b4740000b6740000b8740000ba740000bc740000be740000c0740000c2740000c4740000c6740000c8740000ca740000cc740000ce740000d0740000d2740000d4740000d6740000d8740000da740000dc740000de740000e0740000e2740000e4740000e6740000e8740000ea740000ec740000ee740000f0740000f2740000f4740000f6740000f8740000fa740000fc740000fe74000000750000027500000475000006750000087500000a7500000c7500000e75000010750000127500001475000016750000187500001a7500001c7500001e75000020750000227500002475000026750000287500002a7500002c7500002e75000030750000327500003475000036750000387500003a7500003c7500003e75000040750000427500004475000046750000487500004a7500004c7500004e75000050750000527500005475000056750000587500005a7500005c7500005e75000060750000627500006475000066750000687500006a7500006c7500006e75000070750000727500007475000076750000787500007a7500007c7500007e75000080750000827500008475000086750000887500008a7500008c7500008e75000090750000927500009475000096750000987500009a7500009c7500009e750000a0750000a2750000a4750000a6750000a8750000aa750000ac750000ae750000b0750000b2750000b4750000b6750000b8750000ba750000bc750000be750000c0750000c2750000c4750000
|
||||
m_RenameOverlay:
|
||||
m_UserAcceptedRename: 0
|
||||
m_Name:
|
||||
m_OriginalName:
|
||||
m_Name: InputBindingManager
|
||||
m_OriginalName: InputBindingManager
|
||||
m_EditFieldRect:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 0
|
||||
width: 0
|
||||
height: 0
|
||||
m_UserData: 0
|
||||
m_UserData: 10908
|
||||
m_IsWaitingForDelay: 0
|
||||
m_IsRenaming: 0
|
||||
m_OriginalEventType: 11
|
||||
m_OriginalEventType: 0
|
||||
m_IsRenamingFilename: 1
|
||||
m_ClientGUIView: {fileID: 12}
|
||||
m_SearchString:
|
||||
@ -1405,9 +1405,9 @@ MonoBehaviour:
|
||||
m_Tooltip:
|
||||
m_Pos:
|
||||
serializedVersion: 2
|
||||
x: 939
|
||||
x: 1277
|
||||
y: 73
|
||||
width: 980
|
||||
width: 642
|
||||
height: 926
|
||||
m_SerializedDataModeController:
|
||||
m_DataMode: 0
|
||||
@ -1422,11 +1422,11 @@ MonoBehaviour:
|
||||
m_ObjectsLockedBeforeSerialization: []
|
||||
m_InstanceIDsLockedBeforeSerialization:
|
||||
m_PreviewResizer:
|
||||
m_CachedPref: 151
|
||||
m_CachedPref: 318
|
||||
m_ControlHash: 1412526313
|
||||
m_PrefName: Preview_InspectorPreview
|
||||
m_LastInspectedObjectInstanceID: -1
|
||||
m_LastVerticalScrollValue: 0
|
||||
m_LastVerticalScrollValue: 459
|
||||
m_GlobalObjectId:
|
||||
m_InspectorMode: 0
|
||||
m_LockTracker:
|
||||
|
||||
Loading…
Reference in New Issue
Block a user