1.InputGlyph组件绑定整合
2.自动分析复合引用 动态切换绑定类型 移除旧的复杂多组件
3.增加热键测试
This commit is contained in:
陈思海 2026-03-20 13:51:22 +08:00
parent a894e5d830
commit 7a4d51f17c
40 changed files with 2795 additions and 391 deletions

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,720 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &2250200393461343296
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2269812296799592093}
- component: {fileID: 4967705687032036858}
- component: {fileID: 8671132774583373232}
m_Layer: 5
m_Name: Text (TMP)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &2269812296799592093
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2250200393461343296}
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: 1952737634300265141}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &4967705687032036858
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2250200393461343296}
m_CullTransparentMesh: 1
--- !u!114 &8671132774583373232
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2250200393461343296}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: ESC
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: 4281479730
m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, 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: 24
m_fontSizeBase: 24
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 2
m_VerticalAlignment: 512
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_enableWordWrapping: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_IsTextObjectScaleStatic: 0
m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!1 &2311959964182908462
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1952737634300265141}
- component: {fileID: 4991061408298750992}
- component: {fileID: 7071825580151310782}
- component: {fileID: 8761522827132804065}
- component: {fileID: 8719642127045836727}
m_Layer: 5
m_Name: Btn@EscTest
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1952737634300265141
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2311959964182908462}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 2269812296799592093}
m_Father: {fileID: 8257909214662256014}
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: -338, y: 189}
m_SizeDelta: {x: 160, y: 70.43}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &4991061408298750992
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2311959964182908462}
m_CullTransparentMesh: 1
--- !u!114 &7071825580151310782
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2311959964182908462}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 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_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
m_Type: 1
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!114 &8761522827132804065
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2311959964182908462}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d7e92b092d584bb39e5239463f064cbe, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 1
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_SelectedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 7071825580151310782}
m_ChildTransitions: []
hoverAudioClip: {fileID: 0}
clickAudioClip: {fileID: 0}
m_OnClick:
m_PersistentCalls:
m_Calls: []
--- !u!114 &8719642127045836727
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2311959964182908462}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ad0e473486c04dc19b468f2b20675091, type: 3}
m_Name:
m_EditorClassIdentifier:
_component: {fileID: 8761522827132804065}
_hotkeyAction: {fileID: -3091621134156909817, guid: b603efb45eabf544d9f962c635627a64, type: 3}
_hotkeyPressType: 1
--- !u!1 &2463822960161463633
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3507794895457544733}
- component: {fileID: 8663509290114971407}
- component: {fileID: 1220648307684761898}
m_Layer: 5
m_Name: Text (TMP)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &3507794895457544733
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2463822960161463633}
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: 6065029552973930630}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8663509290114971407
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2463822960161463633}
m_CullTransparentMesh: 1
--- !u!114 &1220648307684761898
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2463822960161463633}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: G
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: 4281479730
m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, 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: 24
m_fontSizeBase: 24
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 2
m_VerticalAlignment: 512
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_enableWordWrapping: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_IsTextObjectScaleStatic: 0
m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!1 &3269233401169902524
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2302914967387190456}
- component: {fileID: 8880627474244438114}
- component: {fileID: 6046943012167044752}
m_Layer: 5
m_Name: Image
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &2302914967387190456
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3269233401169902524}
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: 8257909214662256014}
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: 900, y: 500}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8880627474244438114
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3269233401169902524}
m_CullTransparentMesh: 1
--- !u!114 &6046943012167044752
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3269233401169902524}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0.4716981, g: 0.3048238, b: 0.3048238, 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_Sprite: {fileID: 0}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &3802536979087650729
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8257909214662256014}
- component: {fileID: 3538879237153299783}
- component: {fileID: 2650058657611945293}
- component: {fileID: 7349756297182561896}
m_Layer: 5
m_Name: UILogicTestAlert
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &8257909214662256014
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3802536979087650729}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 2302914967387190456}
- {fileID: 1952737634300265141}
- {fileID: 6065029552973930630}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!223 &3538879237153299783
Canvas:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3802536979087650729}
m_Enabled: 1
serializedVersion: 3
m_RenderMode: 0
m_Camera: {fileID: 0}
m_PlaneDistance: 100
m_PixelPerfect: 0
m_ReceivesEvents: 1
m_OverrideSorting: 0
m_OverridePixelPerfect: 0
m_SortingBucketNormalizedSize: 0
m_VertexColorAlwaysGammaSpace: 1
m_AdditionalShaderChannelsFlag: 31
m_UpdateRectTransformForStandalone: 0
m_SortingLayerID: 0
m_SortingOrder: 0
m_TargetDisplay: 0
--- !u!114 &2650058657611945293
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3802536979087650729}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
m_Name:
m_EditorClassIdentifier:
m_IgnoreReversedGraphics: 1
m_BlockingObjects: 0
m_BlockingMask:
serializedVersion: 2
m_Bits: 4294967295
--- !u!114 &7349756297182561896
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3802536979087650729}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 03b1a1a765ce78b4ea4ee026785671f7, type: 3}
m_Name:
m_EditorClassIdentifier:
mBtnEscTest: {fileID: 8761522827132804065}
mBtnGTest: {fileID: 6868640316405957368}
--- !u!1 &6865905647236409969
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6065029552973930630}
- component: {fileID: 203961062154527688}
- component: {fileID: 8043258928828313028}
- component: {fileID: 6868640316405957368}
- component: {fileID: 8209225795803149929}
m_Layer: 5
m_Name: Btn@GTest
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &6065029552973930630
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6865905647236409969}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 3507794895457544733}
m_Father: {fileID: 8257909214662256014}
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: 19, y: 118}
m_SizeDelta: {x: 160, y: 70.43}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &203961062154527688
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6865905647236409969}
m_CullTransparentMesh: 1
--- !u!114 &8043258928828313028
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6865905647236409969}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 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_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
m_Type: 1
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!114 &6868640316405957368
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6865905647236409969}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d7e92b092d584bb39e5239463f064cbe, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 1
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_SelectedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 8043258928828313028}
m_ChildTransitions: []
hoverAudioClip: {fileID: 0}
clickAudioClip: {fileID: 0}
m_OnClick:
m_PersistentCalls:
m_Calls: []
--- !u!114 &8209225795803149929
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6865905647236409969}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ad0e473486c04dc19b468f2b20675091, type: 3}
m_Name:
m_EditorClassIdentifier:
_component: {fileID: 6868640316405957368}
_hotkeyAction: {fileID: -4328105232246941011, guid: b603efb45eabf544d9f962c635627a64, type: 3}
_hotkeyPressType: 1

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 6c71b0671f6a82747a5405628e110163
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,233 @@
{
"name": "New Controls",
"maps": [
{
"name": "Player",
"id": "512009e6-7638-4d62-8a35-3f35f90f2b43",
"actions": [
{
"name": "ESC",
"type": "Button",
"id": "abdbc7da-3acd-4474-b223-39fdb1e3f2f2",
"expectedControlType": "Button",
"processors": "",
"interactions": "",
"initialStateCheck": false
},
{
"name": "G",
"type": "Button",
"id": "c521c87b-a5fd-40b2-b2a6-05e6e7a65f14",
"expectedControlType": "Button",
"processors": "",
"interactions": "",
"initialStateCheck": false
},
{
"name": "e",
"type": "Button",
"id": "7fc5f791-ccdb-4aff-a8ec-fbc58f988dfb",
"expectedControlType": "Button",
"processors": "",
"interactions": "",
"initialStateCheck": false
},
{
"name": "Q",
"type": "Button",
"id": "6cd217db-56bc-4760-9f7b-b2e828d98e0f",
"expectedControlType": "Button",
"processors": "",
"interactions": "",
"initialStateCheck": false
},
{
"name": "Move",
"type": "Value",
"id": "d8a5ae9d-2af1-4358-9655-485d53bf6610",
"expectedControlType": "Vector2",
"processors": "",
"interactions": "",
"initialStateCheck": true
},
{
"name": "DDDD",
"type": "Value",
"id": "07534715-b34d-440b-a152-33ff41dfb432",
"expectedControlType": "Vector2",
"processors": "",
"interactions": "",
"initialStateCheck": true
}
],
"bindings": [
{
"name": "",
"id": "6cc43d82-d1f4-4fbe-8e7c-e64d4b013a8b",
"path": "<Keyboard>/escape",
"interactions": "",
"processors": "",
"groups": "",
"action": "ESC",
"isComposite": false,
"isPartOfComposite": false
},
{
"name": "",
"id": "dce7cbf7-cf89-4bce-81ae-5b752b0f2158",
"path": "<Keyboard>/g",
"interactions": "",
"processors": "",
"groups": "",
"action": "G",
"isComposite": false,
"isPartOfComposite": false
},
{
"name": "",
"id": "98f277b0-1524-403b-9c49-6623277bb0b1",
"path": "<Keyboard>/e",
"interactions": "",
"processors": "",
"groups": "",
"action": "e",
"isComposite": false,
"isPartOfComposite": false
},
{
"name": "",
"id": "4b12483b-2ec0-4471-8892-1edbf91c6ec9",
"path": "<Keyboard>/q",
"interactions": "",
"processors": "",
"groups": "",
"action": "Q",
"isComposite": false,
"isPartOfComposite": false
},
{
"name": "2D Vector",
"id": "364edce4-94de-400f-bd7d-a0e26c4b63a5",
"path": "2DVector",
"interactions": "",
"processors": "",
"groups": "",
"action": "Move",
"isComposite": true,
"isPartOfComposite": false
},
{
"name": "up",
"id": "7ba2155e-a2e4-469d-b876-68e2cd891559",
"path": "",
"interactions": "",
"processors": "",
"groups": "",
"action": "Move",
"isComposite": false,
"isPartOfComposite": true
},
{
"name": "down",
"id": "78b77f29-f184-4d5e-9c66-25e55cbd20ad",
"path": "",
"interactions": "",
"processors": "",
"groups": "",
"action": "Move",
"isComposite": false,
"isPartOfComposite": true
},
{
"name": "left",
"id": "995e684a-0311-42ca-8e23-d2280c27aa94",
"path": "",
"interactions": "",
"processors": "",
"groups": "",
"action": "Move",
"isComposite": false,
"isPartOfComposite": true
},
{
"name": "right",
"id": "7a00e004-e18a-411c-9733-ab2928ec2fe3",
"path": "",
"interactions": "",
"processors": "",
"groups": "",
"action": "Move",
"isComposite": false,
"isPartOfComposite": true
},
{
"name": "",
"id": "3009f940-05cf-41c0-94a6-24c66c065a45",
"path": "<Gamepad>/leftStick",
"interactions": "",
"processors": "",
"groups": "",
"action": "Move",
"isComposite": false,
"isPartOfComposite": false
},
{
"name": "Keyboard",
"id": "7f47550b-0ab6-4278-ad69-58cb97ddae4e",
"path": "2DVector",
"interactions": "",
"processors": "",
"groups": "",
"action": "DDDD",
"isComposite": true,
"isPartOfComposite": false
},
{
"name": "up",
"id": "1536a548-2bb7-4c72-b313-652ccd127b9b",
"path": "<Keyboard>/w",
"interactions": "",
"processors": "",
"groups": "",
"action": "DDDD",
"isComposite": false,
"isPartOfComposite": true
},
{
"name": "down",
"id": "624971f8-1550-4cba-9533-092f28a97187",
"path": "<Keyboard>/s",
"interactions": "",
"processors": "",
"groups": "",
"action": "DDDD",
"isComposite": false,
"isPartOfComposite": true
},
{
"name": "left",
"id": "f7f4a643-75ef-4997-99a2-48cc4de3837e",
"path": "<Keyboard>/a",
"interactions": "",
"processors": "",
"groups": "",
"action": "DDDD",
"isComposite": false,
"isPartOfComposite": true
},
{
"name": "right",
"id": "e845bdab-7d0b-4d4b-ab73-86df48423c39",
"path": "<Keyboard>/d",
"interactions": "",
"processors": "",
"groups": "",
"action": "DDDD",
"isComposite": false,
"isPartOfComposite": true
}
]
}
],
"controlSchemes": []
}

View File

@ -0,0 +1,14 @@
fileFormatVersion: 2
guid: b603efb45eabf544d9f962c635627a64
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 8404be70184654265930450def6a9037, type: 3}
generateWrapperCode: 0
wrapperCodePath:
wrapperClassName:
wrapperCodeNamespace:

View File

@ -166,6 +166,121 @@ Transform:
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1770697516
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1770697520}
- component: {fileID: 1770697519}
- component: {fileID: 1770697518}
- component: {fileID: 1770697517}
m_Layer: 0
m_Name: GameObject
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &1770697517
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1770697516}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 330876e70d2a63a46b715c69efd1c482, type: 3}
m_Name:
m_EditorClassIdentifier:
mBtnETest: {fileID: 0}
mBtnEscTest: {fileID: 0}
mBtnQTest: {fileID: 0}
mBtnTest: {fileID: 0}
mImgBackGround: {fileID: 0}
mScrollViewTestList: {fileID: 0}
mTextTitl: {fileID: 0}
--- !u!114 &1770697518
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1770697516}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ad0e473486c04dc19b468f2b20675091, type: 3}
m_Name:
m_EditorClassIdentifier:
_component: {fileID: 1770697519}
_hotkeyAction: {fileID: -1316427639250784054, guid: b603efb45eabf544d9f962c635627a64, type: 3}
_hotkeyPressType: 1
--- !u!114 &1770697519
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1770697516}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d7e92b092d584bb39e5239463f064cbe, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 1
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_SelectedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 0}
m_ChildTransitions: []
hoverAudioClip: {fileID: 0}
clickAudioClip: {fileID: 0}
m_OnClick:
m_PersistentCalls:
m_Calls: []
--- !u!4 &1770697520
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1770697516}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 998.3771, y: 1000.3188, z: 671.488}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &7354943399308362261
PrefabInstance:
m_ObjectHideFlags: 0
@ -233,3 +348,4 @@ SceneRoots:
m_Roots:
- {fileID: 7354943399308362261}
- {fileID: 954605702}
- {fileID: 1770697520}

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: bb7e653c16f0005419e1eb9226655176
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -95,7 +95,7 @@ public class InputBindingManager : MonoSingleton<InputBindingManager>
if (actions == null)
{
Debug.LogError("InputBindingManager: InputActionAsset not assigned.");
Log.Error("InputBindingManager: InputActionAsset not assigned.");
return;
}
@ -107,7 +107,7 @@ public class InputBindingManager : MonoSingleton<InputBindingManager>
}
catch (Exception ex)
{
Debug.LogWarning($"[InputBindingManager] Failed to save default bindings: {ex.Message}");
Log.Warning($"[InputBindingManager] Failed to save default bindings: {ex.Message}");
defaultBindingsJson = string.Empty;
}
@ -123,13 +123,13 @@ public class InputBindingManager : MonoSingleton<InputBindingManager>
BindingsChanged?.Invoke();
if (debugMode)
{
Debug.Log($"Loaded overrides from {SavePath}");
Log.Info($"Loaded overrides from {SavePath}");
}
}
}
catch (Exception ex)
{
Debug.LogError("Failed to load overrides: " + ex);
Log.Error("Failed to load overrides: " + ex);
}
}
@ -193,7 +193,7 @@ public class InputBindingManager : MonoSingleton<InputBindingManager>
{
actionLookup.Remove(actionName);
ambiguousActionNames.Add(actionName);
Debug.LogWarning($"[InputBindingManager] Duplicate action name '{actionName}' detected. Use 'MapName/{actionName}' to resolve it.");
Log.Warning($"[InputBindingManager] Duplicate action name '{actionName}' detected. Use 'MapName/{actionName}' to resolve it.");
}
return;
@ -398,11 +398,11 @@ public class InputBindingManager : MonoSingleton<InputBindingManager>
if (instance.ambiguousActionNames.Contains(actionName))
{
Debug.LogError($"[InputBindingManager] Action name '{actionName}' is ambiguous. Use 'MapName/{actionName}' instead.");
Log.Error($"[InputBindingManager] Action name '{actionName}' is ambiguous. Use 'MapName/{actionName}' instead.");
return null;
}
Debug.LogError($"[InputBindingManager] Could not find action '{actionName}'");
Log.Error($"[InputBindingManager] Could not find action '{actionName}'");
return null;
}
@ -439,7 +439,7 @@ public class InputBindingManager : MonoSingleton<InputBindingManager>
int bindingIndex = Instance.FindBestBindingIndexForKeyboard(action, compositePartName);
if (bindingIndex < 0)
{
Debug.LogError($"[InputBindingManager] No suitable binding found for action '{actionName}' (part={compositePartName ?? "<null>"})");
Log.Error($"[InputBindingManager] No suitable binding found for action '{actionName}' (part={compositePartName ?? "<null>"})");
return;
}
@ -448,7 +448,7 @@ public class InputBindingManager : MonoSingleton<InputBindingManager>
Instance.OnRebindStart?.Invoke();
if (Instance.debugMode)
{
Debug.Log("[InputBindingManager] Rebind started");
Log.Info("[InputBindingManager] Rebind started");
}
}
@ -501,14 +501,14 @@ public class InputBindingManager : MonoSingleton<InputBindingManager>
Instance.isApplyPending = false;
if (Instance.debugMode)
{
Debug.Log("[InputBindingManager] Apply confirmed and saved.");
Log.Info("[InputBindingManager] Apply confirmed and saved.");
}
return true;
}
catch (Exception ex)
{
Debug.LogError("[InputBindingManager] Failed to apply binds: " + ex);
Log.Error("[InputBindingManager] Failed to apply binds: " + ex);
Instance.OnApply?.Invoke(false, null);
return false;
}
@ -531,7 +531,7 @@ public class InputBindingManager : MonoSingleton<InputBindingManager>
Instance.OnApply?.Invoke(false, discardedContexts);
if (Instance.debugMode)
{
Debug.Log("[InputBindingManager] Prepared rebinds discarded.");
Log.Info("[InputBindingManager] Prepared rebinds discarded.");
}
}
@ -578,7 +578,7 @@ public class InputBindingManager : MonoSingleton<InputBindingManager>
{
if (debugMode)
{
Debug.Log("[InputBindingManager] Rebind completed");
Log.Info("[InputBindingManager] Rebind completed");
}
actions.Enable();
@ -589,7 +589,7 @@ public class InputBindingManager : MonoSingleton<InputBindingManager>
{
if (debugMode)
{
Debug.Log("[InputBindingManager] Rebind cancelled");
Log.Info("[InputBindingManager] Rebind cancelled");
}
actions.Enable();
@ -668,7 +668,7 @@ public class InputBindingManager : MonoSingleton<InputBindingManager>
OnRebindPrepare?.Invoke(context);
if (debugMode)
{
Debug.Log($"Prepared rebind: {context} -> {context.overridePath}");
Log.Info($"Prepared rebind: {context} -> {context.overridePath}");
}
}
}
@ -682,12 +682,12 @@ public class InputBindingManager : MonoSingleton<InputBindingManager>
using (var sw = new StreamWriter(SavePath, false)) await sw.WriteAsync(json);
if (debugMode)
{
Debug.Log($"Overrides saved to {SavePath}");
Log.Info($"Overrides saved to {SavePath}");
}
}
catch (Exception ex)
{
Debug.LogError("Failed to save overrides: " + ex);
Log.Error("Failed to save overrides: " + ex);
throw;
}
}
@ -722,12 +722,12 @@ public class InputBindingManager : MonoSingleton<InputBindingManager>
BindingsChanged?.Invoke();
if (debugMode)
{
Debug.Log("Reset to default and saved.");
Log.Info("Reset to default and saved.");
}
}
catch (Exception ex)
{
Debug.LogError("Failed to reset defaults: " + ex);
Log.Error("Failed to reset defaults: " + ex);
}
}

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 096043edb2be8224f8564b40992f588b
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,303 @@
using System;
using System.Collections.Generic;
using TMPro;
using UnityEditor;
using UnityEngine;
using UnityEngine.InputSystem;
[CustomEditor(typeof(InputGlyph))]
[CanEditMultipleObjects]
public sealed class InputGlyphEditor : Editor
{
private SerializedProperty _actionSourceMode;
private SerializedProperty _actionReference;
private SerializedProperty _hotkeyTrigger;
private SerializedProperty _actionName;
private SerializedProperty _compositePartName;
private SerializedProperty _outputMode;
private SerializedProperty _targetImage;
private SerializedProperty _targetText;
private SerializedProperty _categoryEvents;
private GUIStyle _titleStyle;
private GUIStyle _sectionStyle;
private GUIStyle _hintStyle;
private void OnEnable()
{
_actionSourceMode = serializedObject.FindProperty("actionSourceMode");
_actionReference = serializedObject.FindProperty("actionReference");
_hotkeyTrigger = serializedObject.FindProperty("hotkeyTrigger");
_actionName = serializedObject.FindProperty("actionName");
_compositePartName = serializedObject.FindProperty("compositePartName");
_outputMode = serializedObject.FindProperty("outputMode");
_targetImage = serializedObject.FindProperty("targetImage");
_targetText = serializedObject.FindProperty("targetText");
_categoryEvents = serializedObject.FindProperty("categoryEvents");
BuildStyles();
}
public override void OnInspectorGUI()
{
serializedObject.Update();
DrawSourceSection();
DrawOutputSection();
DrawEventsSection();
serializedObject.ApplyModifiedProperties();
}
private void DrawSourceSection()
{
InputAction resolvedAction = ResolveSelectedAction();
EditorGUILayout.BeginVertical(_sectionStyle);
EditorGUILayout.PropertyField(_actionSourceMode, new GUIContent("Reference Mode"));
DrawSourceFields();
DrawResolvedActionInfo(resolvedAction);
DrawCompositePartField(resolvedAction);
EditorGUILayout.EndVertical();
EditorGUILayout.Space(6f);
}
private void DrawSourceFields()
{
InputGlyph.ActionSourceMode mode = (InputGlyph.ActionSourceMode)_actionSourceMode.enumValueIndex;
switch (mode)
{
case InputGlyph.ActionSourceMode.ActionReference:
EditorGUILayout.PropertyField(_actionReference, new GUIContent("Action Reference"));
EditorGUILayout.LabelField("Use a direct InputActionReference.", _hintStyle);
break;
case InputGlyph.ActionSourceMode.HotkeyTrigger:
EditorGUILayout.PropertyField(_hotkeyTrigger, new GUIContent("Hotkey Trigger"));
Component component = _hotkeyTrigger.objectReferenceValue as Component;
if (component != null && !(component is UnityEngine.UI.IHotkeyTrigger))
{
EditorGUILayout.HelpBox("Hotkey Trigger must implement IHotkeyTrigger.", MessageType.Warning);
}
else
{
EditorGUILayout.LabelField("Reads the action from an external IHotkeyTrigger component.", _hintStyle);
}
break;
case InputGlyph.ActionSourceMode.ActionName:
EditorGUILayout.PropertyField(_actionName, new GUIContent("Action Name"));
EditorGUILayout.LabelField("Supports ActionName or MapName/ActionName.", _hintStyle);
break;
}
}
private void DrawOutputSection()
{
EditorGUILayout.BeginVertical(_sectionStyle);
EditorGUILayout.PropertyField(_outputMode, new GUIContent("Render Mode"));
DrawOutputFields();
EditorGUILayout.EndVertical();
EditorGUILayout.Space(6f);
}
private void DrawOutputFields()
{
InputGlyph.OutputMode mode = (InputGlyph.OutputMode)_outputMode.enumValueIndex;
switch (mode)
{
case InputGlyph.OutputMode.Image:
EditorGUILayout.PropertyField(_targetImage, new GUIContent("Target Image"));
EditorGUILayout.LabelField("Shows the resolved sprite on a Unity UI Image.", _hintStyle);
break;
case InputGlyph.OutputMode.Text:
EditorGUILayout.PropertyField(_targetText, new GUIContent("Target TMP Text"));
EditorGUILayout.LabelField("Uses the current TMP text as a template and replaces {0}.", _hintStyle);
TMP_Text text = _targetText.objectReferenceValue as TMP_Text;
if (text == null)
{
EditorGUILayout.HelpBox("If TMP_Text is empty, the component tries GetComponent<TMP_Text>().", MessageType.None);
}
break;
}
}
private void DrawEventsSection()
{
EditorGUILayout.BeginVertical(_sectionStyle);
EditorGUILayout.PropertyField(_categoryEvents, new GUIContent("Category Events"), true);
EditorGUILayout.EndVertical();
}
private void DrawResolvedActionInfo(InputAction action)
{
if (action == null)
{
return;
}
string mapName = action.actionMap != null ? action.actionMap.name : "<No Map>";
EditorGUILayout.LabelField($"Resolved Action: {mapName}/{action.name}", _hintStyle);
}
private void DrawCompositePartField(InputAction action)
{
List<string> compositeParts = CollectCompositePartNames(action);
if (compositeParts.Count == 0)
{
if (!string.IsNullOrEmpty(_compositePartName.stringValue))
{
_compositePartName.stringValue = string.Empty;
}
return;
}
string[] options = new string[compositeParts.Count + 1];
options[0] = "<None>";
for (int i = 0; i < compositeParts.Count; i++)
{
options[i + 1] = compositeParts[i];
}
int selectedIndex = 0;
for (int i = 0; i < compositeParts.Count; i++)
{
if (string.Equals(compositeParts[i], _compositePartName.stringValue, StringComparison.OrdinalIgnoreCase))
{
selectedIndex = i + 1;
break;
}
}
int newIndex = EditorGUILayout.Popup(new GUIContent("Composite Part"), selectedIndex, options);
_compositePartName.stringValue = newIndex <= 0 ? string.Empty : compositeParts[newIndex - 1];
EditorGUILayout.LabelField("Shown only when the resolved action contains composite bindings.", _hintStyle);
}
private InputAction ResolveSelectedAction()
{
InputGlyph.ActionSourceMode mode = (InputGlyph.ActionSourceMode)_actionSourceMode.enumValueIndex;
switch (mode)
{
case InputGlyph.ActionSourceMode.ActionReference:
InputActionReference actionReference = _actionReference.objectReferenceValue as InputActionReference;
return actionReference != null ? actionReference.action : null;
case InputGlyph.ActionSourceMode.HotkeyTrigger:
Component component = _hotkeyTrigger.objectReferenceValue as Component;
if (component is UnityEngine.UI.IHotkeyTrigger trigger && trigger.HotkeyAction != null)
{
return trigger.HotkeyAction.action;
}
return null;
case InputGlyph.ActionSourceMode.ActionName:
return ResolveActionByName(_actionName.stringValue);
default:
return null;
}
}
private InputAction ResolveActionByName(string actionName)
{
if (string.IsNullOrWhiteSpace(actionName))
{
return null;
}
foreach (InputActionAsset asset in EnumerateInputActionAssets())
{
if (asset == null)
{
continue;
}
InputAction action = asset.FindAction(actionName, false);
if (action != null)
{
return action;
}
}
return null;
}
private IEnumerable<InputActionAsset> EnumerateInputActionAssets()
{
HashSet<InputActionAsset> visited = new HashSet<InputActionAsset>();
InputBindingManager[] managers = Resources.FindObjectsOfTypeAll<InputBindingManager>();
for (int i = 0; i < managers.Length; i++)
{
InputActionAsset asset = managers[i] != null ? managers[i].actions : null;
if (asset != null && visited.Add(asset))
{
yield return asset;
}
}
string[] guids = AssetDatabase.FindAssets("t:InputActionAsset");
for (int i = 0; i < guids.Length; i++)
{
string path = AssetDatabase.GUIDToAssetPath(guids[i]);
InputActionAsset asset = AssetDatabase.LoadAssetAtPath<InputActionAsset>(path);
if (asset != null && visited.Add(asset))
{
yield return asset;
}
}
}
private static List<string> CollectCompositePartNames(InputAction action)
{
List<string> parts = new List<string>();
if (action == null)
{
return parts;
}
HashSet<string> uniqueParts = new HashSet<string>(StringComparer.OrdinalIgnoreCase);
for (int i = 0; i < action.bindings.Count; i++)
{
InputBinding binding = action.bindings[i];
if (!binding.isPartOfComposite || string.IsNullOrWhiteSpace(binding.name))
{
continue;
}
if (uniqueParts.Add(binding.name))
{
parts.Add(binding.name);
}
}
return parts;
}
private void BuildStyles()
{
if (_titleStyle == null)
{
_titleStyle = new GUIStyle(EditorStyles.boldLabel)
{
fontSize = 14
};
}
if (_sectionStyle == null)
{
_sectionStyle = new GUIStyle(EditorStyles.helpBox)
{
padding = new RectOffset(12, 12, 10, 10)
};
}
if (_hintStyle == null)
{
_hintStyle = new GUIStyle(EditorStyles.miniLabel)
{
wordWrap = true
};
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 72d9df70bb4f43f6a73be92b5f332871
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,296 @@
using System;
using System.Collections.Generic;
using AlicizaX;
using TMPro;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.InputSystem;
using UnityEngine.UI;
[AddComponentMenu("UI/Input Glyph")]
public sealed class InputGlyph : InputGlyphBehaviourBase
{
public enum ActionSourceMode
{
ActionReference,
HotkeyTrigger,
ActionName
}
public enum OutputMode
{
Image,
Text
}
[Serializable]
public sealed class DeviceCategoryEvent
{
public InputDeviceWatcher.InputDeviceCategory category;
public UnityEvent onMatched;
public UnityEvent onNotMatched;
}
[Header("Source")]
[SerializeField] private ActionSourceMode actionSourceMode = ActionSourceMode.ActionReference;
[SerializeField] private InputActionReference actionReference;
[SerializeField] private Component hotkeyTrigger;
[SerializeField] private string actionName;
[SerializeField] private string compositePartName;
[Header("Output")]
[SerializeField] private OutputMode outputMode = OutputMode.Image;
[SerializeField] private Image targetImage;
[SerializeField] private TMP_Text targetText;
[Header("Platform Events")]
[SerializeField] private List<DeviceCategoryEvent> categoryEvents = new();
private Sprite _cachedSprite;
private string _templateText;
private string _cachedFormattedText;
private string _cachedReplacementToken;
private bool _hasInvokedCategoryEvent;
private InputDeviceWatcher.InputDeviceCategory _lastInvokedCategory;
#if UNITY_EDITOR
private void OnValidate()
{
AutoAssignHotkeyTrigger();
AutoAssignTarget();
}
#endif
protected override void OnEnable()
{
AutoAssignHotkeyTrigger();
AutoAssignTarget();
CacheTemplateText();
base.OnEnable();
InvokeCategoryEvents(true);
}
protected override void OnDeviceCategoryChanged(
InputDeviceWatcher.InputDeviceCategory previousCategory,
InputDeviceWatcher.InputDeviceCategory newCategory)
{
if (previousCategory == newCategory)
{
return;
}
InvokeCategoryEvents(false);
}
protected override void RefreshGlyph()
{
InputAction action = ResolveAction();
switch (outputMode)
{
case OutputMode.Image:
RefreshImage(action);
break;
case OutputMode.Text:
RefreshText(action);
break;
}
}
private void RefreshImage(InputAction action)
{
if (targetImage == null)
{
return;
}
if (action == null)
{
ClearImage();
return;
}
bool hasSprite = GlyphService.TryGetUISpriteForActionPath(action, compositePartName, CurrentCategory, out Sprite sprite);
if (!hasSprite)
{
sprite = null;
}
if (_cachedSprite != sprite || targetImage.sprite != sprite)
{
_cachedSprite = sprite;
targetImage.sprite = sprite;
}
}
private void RefreshText(InputAction action)
{
if (targetText == null)
{
return;
}
CacheTemplateText();
if (action == null)
{
ResetText();
return;
}
string replacementToken;
if (GlyphService.TryGetTMPTagForActionPath(action, compositePartName, CurrentCategory, out string tag, out string displayFallback))
{
replacementToken = tag;
}
else
{
replacementToken = displayFallback;
}
if (string.IsNullOrEmpty(replacementToken))
{
ResetText();
return;
}
string formattedText = Utility.Text.Format(_templateText, replacementToken);
if (_cachedReplacementToken == replacementToken
&& _cachedFormattedText == formattedText
&& targetText.text == formattedText)
{
return;
}
_cachedReplacementToken = replacementToken;
if (_cachedFormattedText != formattedText || targetText.text != formattedText)
{
_cachedFormattedText = formattedText;
targetText.text = formattedText;
}
}
private InputAction ResolveAction()
{
switch (actionSourceMode)
{
case ActionSourceMode.ActionReference:
return actionReference != null ? actionReference.action : null;
case ActionSourceMode.HotkeyTrigger:
return ResolveHotkeyAction();
case ActionSourceMode.ActionName:
return InputBindingManager.TryGetAction(actionName, out InputAction action) ? action : null;
default:
return null;
}
}
private InputAction ResolveHotkeyAction()
{
IHotkeyTrigger trigger = ResolveHotkeyTrigger();
return trigger != null && trigger.HotkeyAction != null ? trigger.HotkeyAction.action : null;
}
private IHotkeyTrigger ResolveHotkeyTrigger()
{
AutoAssignHotkeyTrigger();
return hotkeyTrigger as IHotkeyTrigger;
}
private void AutoAssignHotkeyTrigger()
{
if (actionSourceMode != ActionSourceMode.HotkeyTrigger || hotkeyTrigger != null)
{
return;
}
if (TryGetComponent(typeof(IHotkeyTrigger), out Component component))
{
hotkeyTrigger = component;
}
}
private void AutoAssignTarget()
{
switch (outputMode)
{
case OutputMode.Image:
if (targetImage == null)
{
targetImage = GetComponent<Image>();
}
break;
case OutputMode.Text:
if (targetText == null)
{
targetText = GetComponent<TMP_Text>();
}
break;
}
}
private void CacheTemplateText()
{
if (targetText == null)
{
return;
}
if (string.IsNullOrEmpty(_templateText))
{
_templateText = targetText.text;
}
}
private void ResetText()
{
_cachedReplacementToken = null;
_cachedFormattedText = null;
if (targetText != null && targetText.text != _templateText)
{
targetText.text = _templateText;
}
}
private void ClearImage()
{
_cachedSprite = null;
if (targetImage != null && targetImage.sprite != null)
{
targetImage.sprite = null;
}
}
private void InvokeCategoryEvents(bool force)
{
if (!force && _hasInvokedCategoryEvent && _lastInvokedCategory == CurrentCategory)
{
return;
}
_hasInvokedCategoryEvent = true;
_lastInvokedCategory = CurrentCategory;
if (categoryEvents == null)
{
return;
}
for (int i = 0; i < categoryEvents.Count; i++)
{
DeviceCategoryEvent categoryEvent = categoryEvents[i];
if (categoryEvent == null)
{
continue;
}
if (categoryEvent.category == CurrentCategory)
{
categoryEvent.onMatched?.Invoke();
}
else
{
categoryEvent.onNotMatched?.Invoke();
}
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 211cfb186fc74ca694ec6f7f4b0fd933
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -20,7 +20,9 @@ public abstract class InputGlyphBehaviourBase : MonoBehaviour
private void HandleDeviceChanged(InputDeviceWatcher.InputDeviceCategory category)
{
InputDeviceWatcher.InputDeviceCategory previousCategory = CurrentCategory;
CurrentCategory = category;
OnDeviceCategoryChanged(previousCategory, category);
RefreshGlyph();
}
@ -29,5 +31,11 @@ public abstract class InputGlyphBehaviourBase : MonoBehaviour
RefreshGlyph();
}
protected virtual void OnDeviceCategoryChanged(
InputDeviceWatcher.InputDeviceCategory previousCategory,
InputDeviceWatcher.InputDeviceCategory newCategory)
{
}
protected abstract void RefreshGlyph();
}

View File

@ -1,65 +0,0 @@
using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.UI;
[RequireComponent(typeof(UXButton))]
public sealed class InputGlyphIHotkeyTrigger : InputGlyphBehaviourBase
{
[SerializeField] private Component button;
[SerializeField] private string compositePartName;
[SerializeField] private Image targetImage;
private Sprite _cachedSprite;
#if UNITY_EDITOR
private void OnValidate()
{
if (button == null && TryGetComponent(typeof(IHotkeyTrigger), out Component c))
{
button = c;
}
}
#endif
protected override void OnEnable()
{
if (button == null && TryGetComponent(typeof(IHotkeyTrigger), out Component c))
{
button = c;
}
if (targetImage == null)
{
targetImage = GetComponent<Image>();
}
base.OnEnable();
}
protected override void RefreshGlyph()
{
InputActionReference actionReference = button != null ? (button as IHotkeyTrigger).HotkeyAction : null;
if (actionReference == null || actionReference.action == null || targetImage == null)
{
if (targetImage != null && _cachedSprite != null)
{
_cachedSprite = null;
targetImage.sprite = null;
}
return;
}
bool hasSprite = GlyphService.TryGetUISpriteForActionPath(actionReference, compositePartName, CurrentCategory, out Sprite sprite);
if (!hasSprite)
{
sprite = null;
}
if (_cachedSprite != sprite)
{
_cachedSprite = sprite;
targetImage.sprite = sprite;
}
}
}

View File

@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: f24ff96430d042109462f373aed1f2cc
timeCreated: 1765870646

View File

@ -1,62 +0,0 @@
using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.UI;
public sealed class InputGlyphImage : InputGlyphBehaviourBase
{
[SerializeField] private InputActionReference actionReference;
[SerializeField] private string compositePartName;
[SerializeField] private Image targetImage;
[SerializeField] private bool hideIfMissing = false;
[SerializeField] private GameObject hideTargetObject;
private Sprite _cachedSprite;
protected override void OnEnable()
{
if (targetImage == null)
{
targetImage = GetComponent<Image>();
}
base.OnEnable();
}
protected override void RefreshGlyph()
{
if (actionReference == null || actionReference.action == null || targetImage == null)
{
if (targetImage != null && _cachedSprite != null)
{
_cachedSprite = null;
targetImage.sprite = null;
}
ApplyVisibility(false);
return;
}
bool hasSprite = GlyphService.TryGetUISpriteForActionPath(actionReference, compositePartName, CurrentCategory, out Sprite sprite);
if (_cachedSprite != sprite)
{
_cachedSprite = sprite;
targetImage.sprite = sprite;
}
ApplyVisibility(hasSprite && sprite != null);
}
private void ApplyVisibility(bool hasSprite)
{
if (hideTargetObject == null)
{
return;
}
bool shouldBeActive = !hideIfMissing || hasSprite;
if (hideTargetObject.activeSelf != shouldBeActive)
{
hideTargetObject.SetActive(shouldBeActive);
}
}
}

View File

@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: 9e40d0d4d3ba4745ac9893991c94131e
timeCreated: 1764917685

View File

@ -1,62 +0,0 @@
using AlicizaX;
using TMPro;
using UnityEngine;
using UnityEngine.InputSystem;
[RequireComponent(typeof(TextMeshProUGUI))]
public sealed class InputGlyphText : InputGlyphBehaviourBase
{
[SerializeField] private InputActionReference actionReference;
[SerializeField] private string compositePartName;
private TMP_Text _textField;
private string _templateText;
private string _cachedFormattedText;
private string _cachedReplacementToken;
protected override void OnEnable()
{
if (_textField == null)
{
_textField = GetComponent<TMP_Text>();
}
if (string.IsNullOrEmpty(_templateText) && _textField != null)
{
_templateText = _textField.text;
}
base.OnEnable();
}
protected override void RefreshGlyph()
{
if (actionReference == null || actionReference.action == null || _textField == null)
{
return;
}
string replacementToken;
if (GlyphService.TryGetTMPTagForActionPath(actionReference, compositePartName, CurrentCategory, out string tag, out string displayFallback))
{
replacementToken = tag;
}
else
{
replacementToken = displayFallback;
}
if (_cachedReplacementToken == replacementToken)
{
return;
}
_cachedReplacementToken = replacementToken;
string formattedText = Utility.Text.Format(_templateText, replacementToken);
if (_cachedFormattedText != formattedText)
{
_cachedFormattedText = formattedText;
_textField.text = formattedText;
}
}
}

View File

@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: 215afdfefaef434db3618081810a0e3d
timeCreated: 1764917669

View File

@ -1,7 +1,7 @@
using UnityEngine;
using UnityEngine.UI;
using AlicizaX.UI;
using TMPro;
using AlicizaX.UI;
using UnityEngine;
using UnityEngine.UI;
using AlicizaX.UI.Runtime;
namespace Game.UI
{
@ -12,21 +12,33 @@ namespace Game.UI
#region Generated by Script Tool
[SerializeField]
private Image mImgBackGround;
public Image ImgBackGround => mImgBackGround;
private UXButton mBtnETest;
public UXButton BtnETest => mBtnETest;
[SerializeField]
private UXButton mBtnEscTest;
public UXButton BtnEscTest => mBtnEscTest;
[SerializeField]
private UXButton mBtnQTest;
public UXButton BtnQTest => mBtnQTest;
[SerializeField]
private UXButton mBtnTest;
public UXButton BtnTest => mBtnTest;
[SerializeField]
private TextMeshProUGUI mTextTitl;
public TextMeshProUGUI TextTitl => mTextTitl;
private UXImage mImgBackGround;
public UXImage ImgBackGround => mImgBackGround;
[SerializeField]
private RecyclerView mScrollViewTestList;
public RecyclerView ScrollViewTestList => mScrollViewTestList;
[SerializeField]
private TextMeshProUGUI mTextTitl;
public TextMeshProUGUI TextTitl => mTextTitl;
#endregion

View File

@ -0,0 +1,24 @@
using UnityEngine;
using UnityEngine.UI;
using AlicizaX.UI.Runtime;
namespace Game.UI
{
[UIRes(ui_UILogicTestAlert.ResTag, EUIResLoadType.AssetBundle)]
public class ui_UILogicTestAlert : UIHolderObjectBase
{
public const string ResTag = "UILogicTestAlert";
#region Generated by Script Tool
[SerializeField]
private UXButton mBtnEscTest;
public UXButton BtnEscTest => mBtnEscTest;
[SerializeField]
private UXButton mBtnGTest;
public UXButton BtnGTest => mBtnGTest;
#endregion
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 03b1a1a765ce78b4ea4ee026785671f7
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -6,6 +6,7 @@ using AlicizaX.UI.Runtime;
using Cysharp.Threading.Tasks;
using Game.UI;
using GameLogic.Event;
using GameLogic.UI;
using UnityEngine;
public class TestData : ISimpleViewData
@ -29,7 +30,28 @@ public class UILoadUpdate : UITabWindow<ui_UILoadUpdateWindow>
{
testDataList.Add(new TestData() { Name = $"TestProp:{i}" });
}
_list.Data = testDataList;
baseui.BtnQTest.onClick.AddListener(OnBtnQTestClick);
baseui.BtnEscTest.onClick.AddListener(OnBtnEscTestClick);
baseui.BtnETest.onClick.AddListener(OnBtnETestClick);
}
private void OnBtnETestClick()
{
Log.Info("Btn E Click");
}
private void OnBtnEscTestClick()
{
Log.Info("Btn Esc Click");
CloseSelf();
}
private void OnBtnQTestClick()
{
Log.Info("Btn Q Click");
}
@ -48,24 +70,6 @@ public class UILoadUpdate : UITabWindow<ui_UILoadUpdateWindow>
private void OnTestClick()
{
// int index = Random.Range(0, 99);
// Debug.Log(index);
// list.RecyclerView.ScrollTo(index, true);
}
protected override void OnOpen()
{
Debug.Log("OnOpen");
}
protected override void OnClose()
{
Debug.Log("OnClose");
}
protected override void OnDestroy()
{
Debug.Log("OnDestroy");
GameApp.UI.ShowUISync<UILogicTestAlert>();
}
}

View File

@ -0,0 +1,29 @@
using AlicizaX;
using AlicizaX.UI.Runtime;
using Game.UI;
namespace GameLogic.UI
{
[UIUpdate]
[Window(UILayer.Tips, false, 3)]
public class UILogicTestAlert : UITabWindow<ui_UILogicTestAlert>
{
protected override void OnInitialize()
{
baseui.BtnEscTest.onClick.AddListener(OnBtnEscTestClick);
baseui.BtnGTest.onClick.AddListener(OnBtnGTestClick);
}
private void OnBtnGTestClick()
{
Log.Info("Alert G Click");
}
private void OnBtnEscTestClick()
{
Log.Info("Alert ESC Click");
CloseSelf();
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 20e52127e6b741c8b3b93665f603692b
timeCreated: 1773976819

View File

@ -10,7 +10,7 @@
"BuildPipeline": "EditorSimulateBuildPipeline",
"PackageName": "DefaultPackage",
"PackageVersion": "Simulate",
"PackageNote": "2026/3/11 11:40:21",
"PackageNote": "2026/3/20 11:28:53",
"AssetList": [
{
"Address": "Click",
@ -54,96 +54,6 @@
"BundleID": 1,
"DependBundleIDs": []
},
{
"Address": "AlicizaX.Framework.Runtime.dll",
"AssetPath": "Assets/Bundles/DLL/AlicizaX.Framework.Runtime.dll.bytes",
"AssetGUID": "",
"AssetTags": [
"DLL"
],
"BundleID": 3,
"DependBundleIDs": []
},
{
"Address": "GameBase.dll",
"AssetPath": "Assets/Bundles/DLL/GameBase.dll.bytes",
"AssetGUID": "",
"AssetTags": [
"DLL"
],
"BundleID": 3,
"DependBundleIDs": []
},
{
"Address": "GameLib.dll",
"AssetPath": "Assets/Bundles/DLL/GameLib.dll.bytes",
"AssetGUID": "",
"AssetTags": [
"DLL"
],
"BundleID": 3,
"DependBundleIDs": []
},
{
"Address": "GameLogic.dll",
"AssetPath": "Assets/Bundles/DLL/GameLogic.dll.bytes",
"AssetGUID": "",
"AssetTags": [
"DLL"
],
"BundleID": 3,
"DependBundleIDs": []
},
{
"Address": "GameProto.dll",
"AssetPath": "Assets/Bundles/DLL/GameProto.dll.bytes",
"AssetGUID": "",
"AssetTags": [
"DLL"
],
"BundleID": 3,
"DependBundleIDs": []
},
{
"Address": "mscorlib.dll",
"AssetPath": "Assets/Bundles/DLL/mscorlib.dll.bytes",
"AssetGUID": "",
"AssetTags": [
"DLL"
],
"BundleID": 3,
"DependBundleIDs": []
},
{
"Address": "System.Core.dll",
"AssetPath": "Assets/Bundles/DLL/System.Core.dll.bytes",
"AssetGUID": "",
"AssetTags": [
"DLL"
],
"BundleID": 3,
"DependBundleIDs": []
},
{
"Address": "UniTask.Runtime.dll",
"AssetPath": "Assets/Bundles/DLL/UniTask.Runtime.dll.bytes",
"AssetGUID": "",
"AssetTags": [
"DLL"
],
"BundleID": 3,
"DependBundleIDs": []
},
{
"Address": "Unity.InputSystem.dll",
"AssetPath": "Assets/Bundles/DLL/Unity.InputSystem.dll.bytes",
"AssetGUID": "",
"AssetTags": [
"DLL"
],
"BundleID": 3,
"DependBundleIDs": []
},
{
"Address": "Map1000",
"AssetPath": "Assets/Bundles/Scenes/Map1000.unity",
@ -151,7 +61,7 @@
"AssetTags": [
"Scenes"
],
"BundleID": 4,
"BundleID": 3,
"DependBundleIDs": []
},
{
@ -171,6 +81,16 @@
"AssetTags": [
"UI"
],
"BundleID": 4,
"DependBundleIDs": []
},
{
"Address": "UILogicTestAlert",
"AssetPath": "Assets/Bundles/UI/Window/UILogicTestAlert.prefab",
"AssetGUID": "",
"AssetTags": [
"UI"
],
"BundleID": 5,
"DependBundleIDs": []
}
@ -214,18 +134,6 @@
],
"DependBundleIDs": []
},
{
"BundleName": "assets_bundles_dll.bundle",
"UnityCRC": 0,
"FileHash": "ba45bd2617fcfa1e64a95d7741dc8012",
"FileCRC": 0,
"FileSize": 4342272,
"Encrypted": false,
"Tags": [
"DLL"
],
"DependBundleIDs": []
},
{
"BundleName": "assets_bundles_scenes_map1000.bundle",
"UnityCRC": 0,
@ -243,7 +151,19 @@
"UnityCRC": 0,
"FileHash": "82253a65841b8f1db612149ec8c9a317",
"FileCRC": 0,
"FileSize": 30683,
"FileSize": 57247,
"Encrypted": false,
"Tags": [
"UI"
],
"DependBundleIDs": []
},
{
"BundleName": "assets_bundles_ui_window_uilogictestalert.bundle",
"UnityCRC": 0,
"FileHash": "cf84038a2a1620e6ff49815bcd8e6a73",
"FileCRC": 0,
"FileSize": 21629,
"Encrypted": false,
"Tags": [
"UI"

@ -1 +1 @@
Subproject commit e7b0f64c056f6ad66a2b08a5b5b7feb2b31a5d2c
Subproject commit 4364f4673d24c4a27062c46526ca5f6687675f5e

View File

@ -21,45 +21,47 @@ MonoBehaviour:
- ViewHolder
UIElementRegexConfigs:
- uiElementRegex: Rect
componentType: RectTransform
componentType: UnityEngine.RectTransform
- uiElementRegex: Obj
componentType: GameObject
- uiElementRegex: Tf
componentType: Transform
componentType: UnityEngine.Transform
- uiElementRegex: Btn
componentType: UXButton
componentType: UnityEngine.UI.UXButton
- uiElementRegex: Slider
componentType: Slider
componentType: UnityEngine.UI.Slider
- uiElementRegex: Img
componentType: UnityEngine.UI.UXImage
- uiElementRegex: RImg
componentType: RawImage
componentType: UnityEngine.UI.RawImage
- uiElementRegex: Scrollbar
componentType: Scrollbar
componentType: UnityEngine.UI.Scrollbar
- uiElementRegex: ScrollRect
componentType: ScrollRect
componentType: UnityEngine.UI.ScrollRect
- uiElementRegex: GLayout
componentType: GridLayoutGroup
componentType: UnityEngine.UI.GridLayoutGroup
- uiElementRegex: HLayout
componentType: HorizontalLayoutGroup
componentType: UnityEngine.UI.HorizontalLayoutGroup
- uiElementRegex: VLayout
componentType: VerticalLayoutGroup
componentType: UnityEngine.UI.VerticalLayoutGroup
- uiElementRegex: Text
componentType: TMPro.TextMeshProUGUI
- uiElementRegex: TogGroup
componentType: UXGroup
componentType: UnityEngine.UI.UXGroup
- uiElementRegex: Mask2D
componentType: RectMask2D
componentType: UnityEngine.UI.RectMask2D
- uiElementRegex: Video
componentType: Video.VideoPlayer
componentType: UnityEngine.Video.VideoPlayer
- uiElementRegex: Input
componentType: TMPro.TMP_InputField
- uiElementRegex: CanvasGroup
componentType: CanvasGroup
componentType: UnityEngine.CanvasGroup
- uiElementRegex: ScrollView
componentType: RecyclerView
componentType: AlicizaX.UI.RecyclerView
- uiElementRegex: Drag
componentType: UXDraggable
componentType: UnityEngine.UI.UXDraggable
- uiElementRegex: Img
componentType: UnityEngine.UI.Image
UIScriptGenerateConfigs:
- ProjectName: MainProject
NameSpace: Game.UI