diff --git a/Assets/Resources/Prefabs/UI/Buttons.meta b/Assets/Resources/Prefabs/UI/Buttons.meta
new file mode 100644
index 00000000..97f7ec59
--- /dev/null
+++ b/Assets/Resources/Prefabs/UI/Buttons.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 5ad60b1404105d44a992ea2ab8e3f35f
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Resources/Prefabs/UI/Buttons/UILanguageButton.prefab b/Assets/Resources/Prefabs/UI/Buttons/UILanguageButton.prefab
new file mode 100644
index 00000000..ba39a398
--- /dev/null
+++ b/Assets/Resources/Prefabs/UI/Buttons/UILanguageButton.prefab
@@ -0,0 +1,1210 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &238222977619879147
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 3821678329481899938}
+ - component: {fileID: 4381782616513115696}
+ m_Layer: 5
+ m_Name: Item
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &3821678329481899938
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 238222977619879147}
+ 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: 1501948135408568943}
+ - {fileID: 2718129866199274839}
+ - {fileID: 4915086782924107062}
+ m_Father: {fileID: 703028475656766602}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0.5}
+ m_AnchorMax: {x: 1, y: 0.5}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 28}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &4381782616513115696
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 238222977619879147}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, 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, g: 0.011764706, b: 0.1764706, a: 1}
+ m_PressedColor: {r: 0, g: 0.011764706, b: 0.1764706, a: 1}
+ m_SelectedColor: {r: 0, g: 0.011764706, b: 0.1764706, a: 1}
+ m_DisabledColor: {r: 0, g: 0.011764706, b: 0.1764706, 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: 4658506914575971518}
+ toggleTransition: 1
+ graphic: {fileID: 1325594002568432994}
+ m_Group: {fileID: 0}
+ onValueChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_IsOn: 1
+--- !u!1 &476747922111644161
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 4105576737578168130}
+ - component: {fileID: 984087900990580649}
+ - component: {fileID: 1627500409349584188}
+ - component: {fileID: 1176564743748845126}
+ m_Layer: 5
+ m_Name: Template
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 0
+--- !u!224 &4105576737578168130
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 476747922111644161}
+ 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: 4909717836101914427}
+ - {fileID: 3373743940211046020}
+ m_Father: {fileID: 645519807822385127}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 0}
+ m_AnchoredPosition: {x: 0, y: 2}
+ m_SizeDelta: {x: 0, y: 150}
+ m_Pivot: {x: 0.5, y: 1}
+--- !u!222 &984087900990580649
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 476747922111644161}
+ m_CullTransparentMesh: 1
+--- !u!114 &1627500409349584188
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 476747922111644161}
+ 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 &1176564743748845126
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 476747922111644161}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 1aa08ab6e0800fa44ae55d278d1423e3, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Content: {fileID: 703028475656766602}
+ m_Horizontal: 0
+ m_Vertical: 1
+ m_MovementType: 2
+ m_Elasticity: 0.1
+ m_Inertia: 1
+ m_DecelerationRate: 0.135
+ m_ScrollSensitivity: 1
+ m_Viewport: {fileID: 4909717836101914427}
+ m_HorizontalScrollbar: {fileID: 0}
+ m_VerticalScrollbar: {fileID: 3469595462109089924}
+ m_HorizontalScrollbarVisibility: 0
+ m_VerticalScrollbarVisibility: 2
+ m_HorizontalScrollbarSpacing: 0
+ m_VerticalScrollbarSpacing: -3
+ m_OnValueChanged:
+ m_PersistentCalls:
+ m_Calls: []
+--- !u!1 &882395667996748505
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1501948135408568943}
+ - component: {fileID: 7400930317347003496}
+ - component: {fileID: 4658506914575971518}
+ m_Layer: 5
+ m_Name: Item Background
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 0
+--- !u!224 &1501948135408568943
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 882395667996748505}
+ 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: 3821678329481899938}
+ 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: -8, y: -8}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &7400930317347003496
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 882395667996748505}
+ m_CullTransparentMesh: 1
+--- !u!114 &4658506914575971518
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 882395667996748505}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 0, g: 0, b: 0, a: 0.23921569}
+ 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 &1797051944141189652
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 213554597436149423}
+ - component: {fileID: 8980221918954261759}
+ - component: {fileID: 4319661916928935979}
+ m_Layer: 5
+ m_Name: Arrow
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &213554597436149423
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1797051944141189652}
+ 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: 645519807822385127}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 1, y: 0.5}
+ m_AnchorMax: {x: 1, y: 0.5}
+ m_AnchoredPosition: {x: -10, y: 0}
+ m_SizeDelta: {x: 16, y: 16}
+ m_Pivot: {x: 1, y: 0.5}
+--- !u!222 &8980221918954261759
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1797051944141189652}
+ m_CullTransparentMesh: 1
+--- !u!114 &4319661916928935979
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1797051944141189652}
+ 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: 21300000, guid: 6561c8152d504364f80de9acecbaa2cc, type: 3}
+ m_Type: 0
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!1 &2454406153148401943
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1688553935695331173}
+ - component: {fileID: 7663678232068019134}
+ - component: {fileID: 6953957855583679197}
+ m_Layer: 5
+ m_Name: Handle
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1688553935695331173
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2454406153148401943}
+ 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: 9128867497734301265}
+ 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: 20, y: 20}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &7663678232068019134
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2454406153148401943}
+ m_CullTransparentMesh: 1
+--- !u!114 &6953957855583679197
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2454406153148401943}
+ 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!1 &3006304934049173255
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2718129866199274839}
+ - component: {fileID: 2477339914993091030}
+ - component: {fileID: 1325594002568432994}
+ m_Layer: 5
+ m_Name: Item Checkmark
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &2718129866199274839
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3006304934049173255}
+ 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: 3821678329481899938}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0.5}
+ m_AnchorMax: {x: 0, y: 0.5}
+ m_AnchoredPosition: {x: 15, y: 0}
+ m_SizeDelta: {x: 20, y: 20}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &2477339914993091030
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3006304934049173255}
+ m_CullTransparentMesh: 1
+--- !u!114 &1325594002568432994
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3006304934049173255}
+ 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: 10901, guid: 0000000000000000f000000000000000, type: 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 &3299904584815164658
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 9128867497734301265}
+ m_Layer: 5
+ m_Name: Sliding Area
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &9128867497734301265
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3299904584815164658}
+ 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: 1688553935695331173}
+ m_Father: {fileID: 3373743940211046020}
+ 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: -20, y: -20}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!1 &3785800383242714044
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 703028475656766602}
+ m_Layer: 5
+ m_Name: Content
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &703028475656766602
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3785800383242714044}
+ 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: 3821678329481899938}
+ m_Father: {fileID: 4909717836101914427}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 1}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 28}
+ m_Pivot: {x: 0.5, y: 1}
+--- !u!1 &4023304302206567949
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 4909717836101914427}
+ - component: {fileID: 7923701471483521520}
+ - component: {fileID: 8013661392776937714}
+ - component: {fileID: 5000763590035306148}
+ m_Layer: 5
+ m_Name: Viewport
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &4909717836101914427
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4023304302206567949}
+ 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: 703028475656766602}
+ m_Father: {fileID: 4105576737578168130}
+ 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: -17, y: 0}
+ m_Pivot: {x: 0, y: 1}
+--- !u!114 &7923701471483521520
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4023304302206567949}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_ShowMaskGraphic: 0
+--- !u!222 &8013661392776937714
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4023304302206567949}
+ m_CullTransparentMesh: 1
+--- !u!114 &5000763590035306148
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4023304302206567949}
+ 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: 21300000, guid: 5b9f5f0f86e19744fbcae99d03a774a5, type: 3}
+ m_Type: 0
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!1 &4121049089239917032
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 645519807822385127}
+ - component: {fileID: 6998836100763657499}
+ - component: {fileID: 3401751133703237379}
+ - component: {fileID: 1041581967906135930}
+ - component: {fileID: 6993504691953077341}
+ m_Layer: 5
+ m_Name: UILanguageButton
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &645519807822385127
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4121049089239917032}
+ 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: 530665040611943220}
+ - {fileID: 213554597436149423}
+ - {fileID: 4105576737578168130}
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 1, y: 0.5}
+ m_AnchorMax: {x: 1, y: 0.5}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 111, y: 30}
+ m_Pivot: {x: 0, y: 0.5}
+--- !u!222 &6998836100763657499
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4121049089239917032}
+ m_CullTransparentMesh: 1
+--- !u!114 &3401751133703237379
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4121049089239917032}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 298abc08e9d2be149aebaa0a2d122619, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!114 &1041581967906135930
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4121049089239917032}
+ m_Enabled: 0
+ 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 &6993504691953077341
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4121049089239917032}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 7b743370ac3e4ec2a1668f5455a8ef8a, 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: 0.11764706, g: 0.20392157, b: 0.4, a: 1}
+ m_HighlightedColor: {r: 0.09411765, g: 0.16862746, b: 0.35686275, a: 1}
+ m_PressedColor: {r: 0.09411765, g: 0.16862746, b: 0.35686275, a: 1}
+ m_SelectedColor: {r: 0.09411765, g: 0.16862746, b: 0.35686275, a: 1}
+ m_DisabledColor: {r: 0.11764706, g: 0.20392157, b: 0.4, 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: 1041581967906135930}
+ m_Template: {fileID: 4105576737578168130}
+ m_CaptionText: {fileID: 8819539204293308730}
+ m_CaptionImage: {fileID: 0}
+ m_Placeholder: {fileID: 0}
+ m_ItemText: {fileID: 4003951170636837589}
+ m_ItemImage: {fileID: 0}
+ m_Value: 0
+ m_MultiSelect: 0
+ m_Options:
+ m_Options:
+ - m_Text: KOR
+ m_Image: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ - m_Text: ENG
+ m_Image: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_OnValueChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_AlphaFadeSpeed: 0.15
+--- !u!1 &6666823209943686380
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 3373743940211046020}
+ - component: {fileID: 7980590978787974866}
+ - component: {fileID: 8281613988229329768}
+ - component: {fileID: 3469595462109089924}
+ m_Layer: 5
+ m_Name: Scrollbar
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &3373743940211046020
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6666823209943686380}
+ 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: 9128867497734301265}
+ m_Father: {fileID: 4105576737578168130}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 1, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 20, y: 0}
+ m_Pivot: {x: 1, y: 1}
+--- !u!222 &7980590978787974866
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6666823209943686380}
+ m_CullTransparentMesh: 1
+--- !u!114 &8281613988229329768
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6666823209943686380}
+ 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: 10907, 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 &3469595462109089924
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6666823209943686380}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 2a4db7a114972834c8e4117be1d82ba3, 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: 6953957855583679197}
+ m_HandleRect: {fileID: 1688553935695331173}
+ m_Direction: 2
+ m_Value: 0
+ m_Size: 1
+ m_NumberOfSteps: 0
+ m_OnValueChanged:
+ m_PersistentCalls:
+ m_Calls: []
+--- !u!1 &8707858354293957721
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 4915086782924107062}
+ - component: {fileID: 8314754907159815933}
+ - component: {fileID: 4003951170636837589}
+ m_Layer: 5
+ m_Name: Item Label
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &4915086782924107062
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8707858354293957721}
+ 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: 3821678329481899938}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 7.5, y: -0.5}
+ m_SizeDelta: {x: -35, y: -3}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &8314754907159815933
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8707858354293957721}
+ m_CullTransparentMesh: 1
+--- !u!114 &4003951170636837589
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8707858354293957721}
+ 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: KOR
+ m_isRightToLeft: 0
+ m_fontAsset: {fileID: 11400000, guid: 08cebd004d97ca742ac80400f37f4eed, type: 2}
+ m_sharedMaterial: {fileID: 4860575619018115804, guid: 08cebd004d97ca742ac80400f37f4eed, type: 2}
+ m_fontSharedMaterials: []
+ m_fontMaterial: {fileID: 0}
+ m_fontMaterials: []
+ m_fontColor32:
+ serializedVersion: 2
+ rgba: 4278190080
+ m_fontColor: {r: 0, g: 0, b: 0, 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: 14
+ m_fontSizeBase: 14
+ m_fontWeight: 400
+ m_enableAutoSizing: 0
+ m_fontSizeMin: 18
+ m_fontSizeMax: 72
+ m_fontStyle: 0
+ m_HorizontalAlignment: 1
+ m_VerticalAlignment: 512
+ m_textAlignment: 65535
+ m_characterSpacing: -2
+ m_wordSpacing: 0
+ m_lineSpacing: 0
+ m_lineSpacingMax: 0
+ m_paragraphSpacing: 0
+ m_charWidthMaxAdj: 0
+ m_TextWrappingMode: 1
+ m_wordWrappingRatios: 0.4
+ m_overflowMode: 0
+ m_linkedTextComponent: {fileID: 0}
+ parentLinkedComponent: {fileID: 0}
+ m_enableKerning: 1
+ m_ActiveFontFeatures: 6e72656b
+ m_enableExtraPadding: 0
+ checkPaddingRequired: 0
+ m_isRichText: 1
+ m_EmojiFallbackSupport: 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 &8710140955813100424
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 530665040611943220}
+ - component: {fileID: 195613613609323586}
+ - component: {fileID: 8819539204293308730}
+ m_Layer: 5
+ m_Name: Label
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &530665040611943220
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8710140955813100424}
+ 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: 645519807822385127}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0.5}
+ m_AnchorMax: {x: 0, y: 0.5}
+ m_AnchoredPosition: {x: 5, y: 0}
+ m_SizeDelta: {x: 31, y: 24}
+ m_Pivot: {x: 0, y: 0.5}
+--- !u!222 &195613613609323586
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8710140955813100424}
+ m_CullTransparentMesh: 1
+--- !u!114 &8819539204293308730
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8710140955813100424}
+ 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: KOR
+ m_isRightToLeft: 0
+ m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
+ m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
+ m_fontSharedMaterials: []
+ m_fontMaterial: {fileID: 0}
+ m_fontMaterials: []
+ m_fontColor32:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontColor: {r: 1, g: 1, b: 1, a: 1}
+ m_enableVertexGradient: 0
+ m_colorMode: 3
+ m_fontColorGradient:
+ topLeft: {r: 1, g: 1, b: 1, a: 1}
+ topRight: {r: 1, g: 1, b: 1, a: 1}
+ bottomLeft: {r: 1, g: 1, b: 1, a: 1}
+ bottomRight: {r: 1, g: 1, b: 1, a: 1}
+ m_fontColorGradientPreset: {fileID: 0}
+ m_spriteAsset: {fileID: 0}
+ m_tintAllSprites: 0
+ m_StyleSheet: {fileID: 0}
+ m_TextStyleHashCode: -1183493901
+ m_overrideHtmlColors: 0
+ m_faceColor:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontSize: 14
+ m_fontSizeBase: 14
+ m_fontWeight: 400
+ m_enableAutoSizing: 0
+ m_fontSizeMin: 18
+ m_fontSizeMax: 72
+ m_fontStyle: 0
+ m_HorizontalAlignment: 4
+ m_VerticalAlignment: 512
+ m_textAlignment: 65535
+ m_characterSpacing: -2
+ m_wordSpacing: 0
+ m_lineSpacing: 0
+ m_lineSpacingMax: 0
+ m_paragraphSpacing: 0
+ m_charWidthMaxAdj: 0
+ m_TextWrappingMode: 1
+ m_wordWrappingRatios: 0.4
+ m_overflowMode: 0
+ m_linkedTextComponent: {fileID: 0}
+ parentLinkedComponent: {fileID: 0}
+ m_enableKerning: 1
+ m_ActiveFontFeatures: 6e72656b
+ m_enableExtraPadding: 0
+ checkPaddingRequired: 0
+ m_isRichText: 1
+ m_EmojiFallbackSupport: 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}
diff --git a/Assets/Resources/Prefabs/UI/Buttons/UILanguageButton.prefab.meta b/Assets/Resources/Prefabs/UI/Buttons/UILanguageButton.prefab.meta
new file mode 100644
index 00000000..00c007ad
--- /dev/null
+++ b/Assets/Resources/Prefabs/UI/Buttons/UILanguageButton.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 12db500810bde2f42b6cc1aa17543fb5
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Resources/Prefabs/UI/Buttons/UISearchInput.prefab b/Assets/Resources/Prefabs/UI/Buttons/UISearchInput.prefab
new file mode 100644
index 00000000..7f84c5f5
--- /dev/null
+++ b/Assets/Resources/Prefabs/UI/Buttons/UISearchInput.prefab
@@ -0,0 +1,811 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &1928778550412568362
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 3549070521602479230}
+ - component: {fileID: 4287760844710852833}
+ - component: {fileID: 607742823154810497}
+ - component: {fileID: 1278875195337434962}
+ - component: {fileID: 4095973766915737330}
+ m_Layer: 5
+ m_Name: UISearchInput
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &3549070521602479230
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1928778550412568362}
+ 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: 4502938537745225681}
+ - {fileID: 1890860600301155531}
+ - {fileID: 5272697919907718161}
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 1, y: 0.5}
+ m_AnchorMax: {x: 1, y: 0.5}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 160, y: 36}
+ m_Pivot: {x: 0, y: 0.5}
+--- !u!222 &4287760844710852833
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1928778550412568362}
+ m_CullTransparentMesh: 1
+--- !u!114 &607742823154810497
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1928778550412568362}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 836d6527858b7494297e122eb69601fd, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!114 &1278875195337434962
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1928778550412568362}
+ m_Enabled: 0
+ 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: 0
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 694507160, guid: fe40b90c67f2f75419562a6fe1003d5b, type: 3}
+ 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 &4095973766915737330
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1928778550412568362}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 2da0c512f12947e489f739169773d7ca, 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: 1278875195337434962}
+ m_TextViewport: {fileID: 1890860600301155531}
+ m_TextComponent: {fileID: 7695301836477375805}
+ m_Placeholder: {fileID: 5154488720832019090}
+ m_VerticalScrollbar: {fileID: 0}
+ m_VerticalScrollbarEventHandler: {fileID: 0}
+ m_LayoutGroup: {fileID: 0}
+ m_ScrollSensitivity: 1
+ m_ContentType: 0
+ m_InputType: 0
+ m_AsteriskChar: 42
+ m_KeyboardType: 0
+ m_LineType: 0
+ m_HideMobileInput: 0
+ m_HideSoftKeyboard: 0
+ m_CharacterValidation: 0
+ m_RegexValue:
+ m_GlobalPointSize: 14
+ m_CharacterLimit: 0
+ m_OnEndEdit:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnSubmit:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnSelect:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnDeselect:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnTextSelection:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnEndTextSelection:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnValueChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnTouchScreenKeyboardStatusChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
+ m_CustomCaretColor: 0
+ m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412}
+ m_Text:
+ m_CaretBlinkRate: 0.85
+ m_CaretWidth: 1
+ m_ReadOnly: 0
+ m_RichText: 1
+ m_GlobalFontAsset: {fileID: 0}
+ m_OnFocusSelectAll: 1
+ m_ResetOnDeActivation: 1
+ m_KeepTextSelectionVisible: 0
+ m_RestoreOriginalTextOnEscape: 1
+ m_isRichTextEditingAllowed: 0
+ m_LineLimit: 0
+ isAlert: 0
+ m_InputValidator: {fileID: 0}
+ m_ShouldActivateOnSelect: 1
+--- !u!1 &3438542737618699616
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 7844129296646170794}
+ - component: {fileID: 936426748953526809}
+ - component: {fileID: 7695301836477375805}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &7844129296646170794
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3438542737618699616}
+ 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: 1890860600301155531}
+ 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 &936426748953526809
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3438542737618699616}
+ m_CullTransparentMesh: 1
+--- !u!114 &7695301836477375805
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3438542737618699616}
+ 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: "\u200B"
+ m_isRightToLeft: 0
+ m_fontAsset: {fileID: 11400000, guid: 08cebd004d97ca742ac80400f37f4eed, type: 2}
+ m_sharedMaterial: {fileID: 4860575619018115804, guid: 08cebd004d97ca742ac80400f37f4eed, 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: 12
+ m_fontSizeBase: 12
+ m_fontWeight: 400
+ m_enableAutoSizing: 0
+ m_fontSizeMin: 18
+ m_fontSizeMax: 72
+ m_fontStyle: 0
+ m_HorizontalAlignment: 1
+ 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_TextWrappingMode: 3
+ m_wordWrappingRatios: 0.4
+ m_overflowMode: 0
+ m_linkedTextComponent: {fileID: 0}
+ parentLinkedComponent: {fileID: 0}
+ m_enableKerning: 1
+ m_ActiveFontFeatures: 6e72656b
+ m_enableExtraPadding: 1
+ checkPaddingRequired: 0
+ m_isRichText: 1
+ m_EmojiFallbackSupport: 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 &3447948940841377002
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 8052970446522842747}
+ - component: {fileID: 7541747247650234515}
+ - component: {fileID: 8739521748137565572}
+ m_Layer: 5
+ m_Name: Line
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 0
+--- !u!224 &8052970446522842747
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3447948940841377002}
+ 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: 1890860600301155531}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 1}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 10, y: -23}
+ m_SizeDelta: {x: 40, y: 1}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &7541747247650234515
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3447948940841377002}
+ m_CullTransparentMesh: 1
+--- !u!114 &8739521748137565572
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3447948940841377002}
+ 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.9622642, g: 0.9622642, b: 0.9622642, a: 1}
+ m_RaycastTarget: 0
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 0
+ 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 &4003586409901263487
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 6560483782444665719}
+ - component: {fileID: 2048538601592092616}
+ - component: {fileID: 5154488720832019090}
+ - component: {fileID: 696716118280799389}
+ m_Layer: 5
+ m_Name: Placeholder
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &6560483782444665719
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4003586409901263487}
+ 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: 1890860600301155531}
+ 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 &2048538601592092616
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4003586409901263487}
+ m_CullTransparentMesh: 1
+--- !u!114 &5154488720832019090
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4003586409901263487}
+ 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: "\uC704\uCE58 \uAC80\uC0C9"
+ m_isRightToLeft: 0
+ m_fontAsset: {fileID: 11400000, guid: 08cebd004d97ca742ac80400f37f4eed, type: 2}
+ m_sharedMaterial: {fileID: 4860575619018115804, guid: 08cebd004d97ca742ac80400f37f4eed, type: 2}
+ m_fontSharedMaterials: []
+ m_fontMaterial: {fileID: 0}
+ m_fontMaterials: []
+ m_fontColor32:
+ serializedVersion: 2
+ rgba: 3741319167
+ m_fontColor: {r: 1, g: 1, b: 1, a: 0.87058824}
+ 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: 12
+ m_fontSizeBase: 12
+ m_fontWeight: 400
+ m_enableAutoSizing: 0
+ m_fontSizeMin: 18
+ m_fontSizeMax: 72
+ m_fontStyle: 0
+ m_HorizontalAlignment: 1
+ 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_TextWrappingMode: 0
+ m_wordWrappingRatios: 0.4
+ m_overflowMode: 0
+ m_linkedTextComponent: {fileID: 0}
+ parentLinkedComponent: {fileID: 0}
+ m_enableKerning: 1
+ m_ActiveFontFeatures: 6e72656b
+ m_enableExtraPadding: 1
+ checkPaddingRequired: 0
+ m_isRichText: 1
+ m_EmojiFallbackSupport: 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!114 &696716118280799389
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4003586409901263487}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_IgnoreLayout: 1
+ m_MinWidth: -1
+ m_MinHeight: -1
+ m_PreferredWidth: -1
+ m_PreferredHeight: -1
+ m_FlexibleWidth: -1
+ m_FlexibleHeight: -1
+ m_LayoutPriority: 1
+--- !u!1 &6023503677689822770
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 5272697919907718161}
+ - component: {fileID: 8757900534283014278}
+ - component: {fileID: 3930243373676917347}
+ - component: {fileID: 3154601933036176681}
+ m_Layer: 5
+ m_Name: SearchButton
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &5272697919907718161
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6023503677689822770}
+ 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: 3549070521602479230}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 1, y: 0.5}
+ m_AnchorMax: {x: 1, y: 0.5}
+ m_AnchoredPosition: {x: -6, y: 16}
+ m_SizeDelta: {x: 28, y: 28}
+ m_Pivot: {x: 1, y: 1}
+--- !u!222 &8757900534283014278
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6023503677689822770}
+ m_CullTransparentMesh: 1
+--- !u!114 &3930243373676917347
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6023503677689822770}
+ 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: -120, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 21300000, guid: b96446804d2e29645827d31952f863cb, type: 3}
+ m_Type: 0
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!114 &3154601933036176681
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6023503677689822770}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Navigation:
+ m_Mode: 3
+ m_WrapAround: 0
+ m_SelectOnUp: {fileID: 0}
+ m_SelectOnDown: {fileID: 0}
+ m_SelectOnLeft: {fileID: 0}
+ m_SelectOnRight: {fileID: 0}
+ m_Transition: 1
+ m_Colors:
+ m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+ m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+ m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+ m_ColorMultiplier: 1
+ m_FadeDuration: 0.1
+ m_SpriteState:
+ m_HighlightedSprite: {fileID: 0}
+ m_PressedSprite: {fileID: 0}
+ m_SelectedSprite: {fileID: 0}
+ m_DisabledSprite: {fileID: 0}
+ m_AnimationTriggers:
+ m_NormalTrigger: Normal
+ m_HighlightedTrigger: Highlighted
+ m_PressedTrigger: Pressed
+ m_SelectedTrigger: Selected
+ m_DisabledTrigger: Disabled
+ m_Interactable: 1
+ m_TargetGraphic: {fileID: 3930243373676917347}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls: []
+--- !u!1 &6814560974940120229
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1890860600301155531}
+ - component: {fileID: 513732089905394585}
+ m_Layer: 5
+ m_Name: Text Area
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1890860600301155531
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6814560974940120229}
+ 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: 8052970446522842747}
+ - {fileID: 6560483782444665719}
+ - {fileID: 7844129296646170794}
+ m_Father: {fileID: 3549070521602479230}
+ 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: 22}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &513732089905394585
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6814560974940120229}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 3312d7739989d2b4e91e6319e9a96d76, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Padding: {x: -8, y: -5, z: -8, w: -5}
+ m_Softness: {x: 0, y: 0}
+--- !u!1 &8350341070115958246
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 4502938537745225681}
+ - component: {fileID: 8272108380190167004}
+ - component: {fileID: 6620080535182918297}
+ m_Layer: 5
+ m_Name: Line
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &4502938537745225681
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8350341070115958246}
+ 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: 3549070521602479230}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 1}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 10, y: -26}
+ m_SizeDelta: {x: -20, y: 1}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &8272108380190167004
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8350341070115958246}
+ m_CullTransparentMesh: 1
+--- !u!114 &6620080535182918297
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8350341070115958246}
+ 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.9622642, g: 0.9622642, b: 0.9622642, a: 0.46666667}
+ m_RaycastTarget: 0
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 0
+ 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
diff --git a/Assets/Resources/Prefabs/UI/Buttons/UISearchInput.prefab.meta b/Assets/Resources/Prefabs/UI/Buttons/UISearchInput.prefab.meta
new file mode 100644
index 00000000..14e63e33
--- /dev/null
+++ b/Assets/Resources/Prefabs/UI/Buttons/UISearchInput.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: ed442d88645f41448a9abe8128c26bbb
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Resources/Prefabs/UI/Buttons/assets.meta b/Assets/Resources/Prefabs/UI/Buttons/assets.meta
new file mode 100644
index 00000000..b57b73aa
--- /dev/null
+++ b/Assets/Resources/Prefabs/UI/Buttons/assets.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 8c2607ee6393233469d54afd9b237601
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Resources/Prefabs/UI/Buttons/assets/image_down_arrow.png b/Assets/Resources/Prefabs/UI/Buttons/assets/image_down_arrow.png
new file mode 100644
index 00000000..292ebd7d
Binary files /dev/null and b/Assets/Resources/Prefabs/UI/Buttons/assets/image_down_arrow.png differ
diff --git a/Assets/Resources/Prefabs/UI/Buttons/assets/image_down_arrow.png.meta b/Assets/Resources/Prefabs/UI/Buttons/assets/image_down_arrow.png.meta
new file mode 100644
index 00000000..2b13db2f
--- /dev/null
+++ b/Assets/Resources/Prefabs/UI/Buttons/assets/image_down_arrow.png.meta
@@ -0,0 +1,143 @@
+fileFormatVersion: 2
+guid: 6561c8152d504364f80de9acecbaa2cc
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 13
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 0
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ flipGreenChannel: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMipmapLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 1
+ mipBias: 0
+ wrapU: 1
+ wrapV: 1
+ wrapW: 0
+ nPOTScale: 0
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 1
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 1
+ spriteTessellationDetail: -1
+ textureType: 8
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 0
+ swizzle: 50462976
+ cookieLightType: 0
+ platformSettings:
+ - serializedVersion: 4
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 64
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 4
+ buildTarget: Standalone
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 4
+ buildTarget: WebGL
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 4
+ buildTarget: WindowsStoreApps
+ maxTextureSize: 2048
+ 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: []
+ outline: []
+ customData:
+ physicsShape: []
+ bones: []
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ spriteCustomMetadata:
+ entries: []
+ nameFileIdTable: {}
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Resources/Prefabs/UI/Buttons/assets/image_topmenubar_search.png b/Assets/Resources/Prefabs/UI/Buttons/assets/image_topmenubar_search.png
new file mode 100644
index 00000000..a24f2f18
Binary files /dev/null and b/Assets/Resources/Prefabs/UI/Buttons/assets/image_topmenubar_search.png differ
diff --git a/Assets/Resources/Prefabs/UI/Buttons/assets/image_topmenubar_search.png.meta b/Assets/Resources/Prefabs/UI/Buttons/assets/image_topmenubar_search.png.meta
new file mode 100644
index 00000000..125a7bf4
--- /dev/null
+++ b/Assets/Resources/Prefabs/UI/Buttons/assets/image_topmenubar_search.png.meta
@@ -0,0 +1,143 @@
+fileFormatVersion: 2
+guid: b96446804d2e29645827d31952f863cb
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 13
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 0
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ flipGreenChannel: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMipmapLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 1
+ mipBias: 0
+ wrapU: 1
+ wrapV: 1
+ wrapW: 0
+ nPOTScale: 0
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 1
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 1
+ spriteTessellationDetail: -1
+ textureType: 8
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 0
+ swizzle: 50462976
+ cookieLightType: 0
+ platformSettings:
+ - serializedVersion: 4
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 64
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 4
+ buildTarget: Standalone
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 4
+ buildTarget: WebGL
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 4
+ buildTarget: WindowsStoreApps
+ maxTextureSize: 2048
+ 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: []
+ outline: []
+ customData:
+ physicsShape: []
+ bones: []
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ spriteCustomMetadata:
+ entries: []
+ nameFileIdTable: {}
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Resources/Prefabs/UI/Factory/AlarmIconManager.prefab b/Assets/Resources/Prefabs/UI/Factory/AlarmIconManager.prefab
index 9a8e1df0..e810e01e 100644
--- a/Assets/Resources/Prefabs/UI/Factory/AlarmIconManager.prefab
+++ b/Assets/Resources/Prefabs/UI/Factory/AlarmIconManager.prefab
@@ -224,7 +224,7 @@ MonoBehaviour:
clusterView: {fileID: 6304868380873761510}
expandedView: {fileID: 952545100964675415}
alarmSingleIconManagerPrefab: {fileID: 7314511769243682470, guid: e9acc8c9a93a2b5409fc01661660b217, type: 3}
- objectYOffset: 0
+ objectYOffset: 10
iconSpacing: 20
expandOffsetX: 0
expandOffsetY: 0
diff --git a/Assets/Resources/log4net.editor.xml b/Assets/Resources/log4net.editor.xml
index 95ed2b8c..85d6d73c 100644
--- a/Assets/Resources/log4net.editor.xml
+++ b/Assets/Resources/log4net.editor.xml
@@ -6,7 +6,7 @@
-
+
@@ -15,7 +15,7 @@
-
+
diff --git a/Assets/Runtime Transform Gizmos/Scripts/Runtime Package Common/Extensions/RectEx.cs b/Assets/Runtime Transform Gizmos/Scripts/Runtime Package Common/Extensions/RectEx.cs
index 06ecdcc8..56d5ebdd 100644
--- a/Assets/Runtime Transform Gizmos/Scripts/Runtime Package Common/Extensions/RectEx.cs
+++ b/Assets/Runtime Transform Gizmos/Scripts/Runtime Package Common/Extensions/RectEx.cs
@@ -32,7 +32,7 @@ namespace RTG
}
///
- /// Places 'rect' below 'other' and sets its center to the same center
+ /// Places 'size' below 'other' and sets its center to the same center
/// as 'other' horizontally.
///
public static Rect PlaceBelowCenterHrz(this Rect rect, Rect other)
diff --git a/Assets/Scenes/SampleProject.unity b/Assets/Scenes/SampleProject.unity
index 4229155e..ca6d5202 100644
--- a/Assets/Scenes/SampleProject.unity
+++ b/Assets/Scenes/SampleProject.unity
@@ -1172,6 +1172,140 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1101428664}
m_CullTransparentMesh: 1
+--- !u!1001 &1316465221
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 1561871830}
+ m_Modifications:
+ - target: {fileID: 645519807822385127, guid: 12db500810bde2f42b6cc1aa17543fb5, type: 3}
+ propertyPath: m_Pivot.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 645519807822385127, guid: 12db500810bde2f42b6cc1aa17543fb5, type: 3}
+ propertyPath: m_Pivot.y
+ value: 0.5
+ objectReference: {fileID: 0}
+ - target: {fileID: 645519807822385127, guid: 12db500810bde2f42b6cc1aa17543fb5, type: 3}
+ propertyPath: m_AnchorMax.x
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 645519807822385127, guid: 12db500810bde2f42b6cc1aa17543fb5, type: 3}
+ propertyPath: m_AnchorMax.y
+ value: 0.5
+ objectReference: {fileID: 0}
+ - target: {fileID: 645519807822385127, guid: 12db500810bde2f42b6cc1aa17543fb5, type: 3}
+ propertyPath: m_AnchorMin.x
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 645519807822385127, guid: 12db500810bde2f42b6cc1aa17543fb5, type: 3}
+ propertyPath: m_AnchorMin.y
+ value: 0.5
+ objectReference: {fileID: 0}
+ - target: {fileID: 645519807822385127, guid: 12db500810bde2f42b6cc1aa17543fb5, type: 3}
+ propertyPath: m_SizeDelta.x
+ value: 87
+ objectReference: {fileID: 0}
+ - target: {fileID: 645519807822385127, guid: 12db500810bde2f42b6cc1aa17543fb5, type: 3}
+ propertyPath: m_SizeDelta.y
+ value: 30
+ objectReference: {fileID: 0}
+ - target: {fileID: 645519807822385127, guid: 12db500810bde2f42b6cc1aa17543fb5, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 645519807822385127, guid: 12db500810bde2f42b6cc1aa17543fb5, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 645519807822385127, guid: 12db500810bde2f42b6cc1aa17543fb5, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 645519807822385127, guid: 12db500810bde2f42b6cc1aa17543fb5, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 645519807822385127, guid: 12db500810bde2f42b6cc1aa17543fb5, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 645519807822385127, guid: 12db500810bde2f42b6cc1aa17543fb5, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 645519807822385127, guid: 12db500810bde2f42b6cc1aa17543fb5, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 645519807822385127, guid: 12db500810bde2f42b6cc1aa17543fb5, type: 3}
+ propertyPath: m_AnchoredPosition.x
+ value: -140
+ objectReference: {fileID: 0}
+ - target: {fileID: 645519807822385127, guid: 12db500810bde2f42b6cc1aa17543fb5, type: 3}
+ propertyPath: m_AnchoredPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 645519807822385127, guid: 12db500810bde2f42b6cc1aa17543fb5, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 645519807822385127, guid: 12db500810bde2f42b6cc1aa17543fb5, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 645519807822385127, guid: 12db500810bde2f42b6cc1aa17543fb5, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 703028475656766602, guid: 12db500810bde2f42b6cc1aa17543fb5, type: 3}
+ propertyPath: m_AnchoredPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1041581967906135930, guid: 12db500810bde2f42b6cc1aa17543fb5, type: 3}
+ propertyPath: m_Enabled
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1688553935695331173, guid: 12db500810bde2f42b6cc1aa17543fb5, type: 3}
+ propertyPath: m_AnchorMax.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1688553935695331173, guid: 12db500810bde2f42b6cc1aa17543fb5, type: 3}
+ propertyPath: m_AnchorMax.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4121049089239917032, guid: 12db500810bde2f42b6cc1aa17543fb5, type: 3}
+ propertyPath: m_Name
+ value: UILanguageButton
+ objectReference: {fileID: 0}
+ - target: {fileID: 4909717836101914427, guid: 12db500810bde2f42b6cc1aa17543fb5, type: 3}
+ propertyPath: m_AnchorMax.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4909717836101914427, guid: 12db500810bde2f42b6cc1aa17543fb5, type: 3}
+ propertyPath: m_AnchorMax.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4909717836101914427, guid: 12db500810bde2f42b6cc1aa17543fb5, type: 3}
+ propertyPath: m_SizeDelta.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6993504691953077341, guid: 12db500810bde2f42b6cc1aa17543fb5, type: 3}
+ propertyPath: m_Options.m_Options.Array.size
+ value: 0
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 12db500810bde2f42b6cc1aa17543fb5, type: 3}
+--- !u!224 &1316465222 stripped
+RectTransform:
+ m_CorrespondingSourceObject: {fileID: 645519807822385127, guid: 12db500810bde2f42b6cc1aa17543fb5, type: 3}
+ m_PrefabInstance: {fileID: 1316465221}
+ m_PrefabAsset: {fileID: 0}
--- !u!1001 &1379798062
PrefabInstance:
m_ObjectHideFlags: 0
@@ -1410,6 +1544,8 @@ RectTransform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
+ - {fileID: 7308135740740370488}
+ - {fileID: 1316465222}
- {fileID: 1101428665}
m_Father: {fileID: 483439351}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -1432,9 +1568,9 @@ MonoBehaviour:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0.24528301, g: 0.24528301, b: 0.24528301, a: 1}
- m_RaycastTarget: 1
+ m_RaycastTarget: 0
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
- m_Maskable: 1
+ m_Maskable: 0
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
@@ -2164,6 +2300,108 @@ PrefabInstance:
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 2266b188915dc8a4b87a3e53e52c5999, type: 3}
+--- !u!1001 &7308135740740370487
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 1561871830}
+ m_Modifications:
+ - target: {fileID: 1928778550412568362, guid: ed442d88645f41448a9abe8128c26bbb, type: 3}
+ propertyPath: m_Name
+ value: UISearchInput
+ objectReference: {fileID: 0}
+ - target: {fileID: 3549070521602479230, guid: ed442d88645f41448a9abe8128c26bbb, type: 3}
+ propertyPath: m_Pivot.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3549070521602479230, guid: ed442d88645f41448a9abe8128c26bbb, type: 3}
+ propertyPath: m_Pivot.y
+ value: 0.5
+ objectReference: {fileID: 0}
+ - target: {fileID: 3549070521602479230, guid: ed442d88645f41448a9abe8128c26bbb, type: 3}
+ propertyPath: m_AnchorMax.x
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 3549070521602479230, guid: ed442d88645f41448a9abe8128c26bbb, type: 3}
+ propertyPath: m_AnchorMax.y
+ value: 0.5
+ objectReference: {fileID: 0}
+ - target: {fileID: 3549070521602479230, guid: ed442d88645f41448a9abe8128c26bbb, type: 3}
+ propertyPath: m_AnchorMin.x
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 3549070521602479230, guid: ed442d88645f41448a9abe8128c26bbb, type: 3}
+ propertyPath: m_AnchorMin.y
+ value: 0.5
+ objectReference: {fileID: 0}
+ - target: {fileID: 3549070521602479230, guid: ed442d88645f41448a9abe8128c26bbb, type: 3}
+ propertyPath: m_SizeDelta.x
+ value: 160
+ objectReference: {fileID: 0}
+ - target: {fileID: 3549070521602479230, guid: ed442d88645f41448a9abe8128c26bbb, type: 3}
+ propertyPath: m_SizeDelta.y
+ value: 28
+ objectReference: {fileID: 0}
+ - target: {fileID: 3549070521602479230, guid: ed442d88645f41448a9abe8128c26bbb, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3549070521602479230, guid: ed442d88645f41448a9abe8128c26bbb, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3549070521602479230, guid: ed442d88645f41448a9abe8128c26bbb, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3549070521602479230, guid: ed442d88645f41448a9abe8128c26bbb, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 3549070521602479230, guid: ed442d88645f41448a9abe8128c26bbb, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3549070521602479230, guid: ed442d88645f41448a9abe8128c26bbb, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3549070521602479230, guid: ed442d88645f41448a9abe8128c26bbb, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3549070521602479230, guid: ed442d88645f41448a9abe8128c26bbb, type: 3}
+ propertyPath: m_AnchoredPosition.x
+ value: -314
+ objectReference: {fileID: 0}
+ - target: {fileID: 3549070521602479230, guid: ed442d88645f41448a9abe8128c26bbb, type: 3}
+ propertyPath: m_AnchoredPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3549070521602479230, guid: ed442d88645f41448a9abe8128c26bbb, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3549070521602479230, guid: ed442d88645f41448a9abe8128c26bbb, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3549070521602479230, guid: ed442d88645f41448a9abe8128c26bbb, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: ed442d88645f41448a9abe8128c26bbb, type: 3}
+--- !u!224 &7308135740740370488 stripped
+RectTransform:
+ m_CorrespondingSourceObject: {fileID: 3549070521602479230, guid: ed442d88645f41448a9abe8128c26bbb, type: 3}
+ m_PrefabInstance: {fileID: 7308135740740370487}
+ m_PrefabAsset: {fileID: 0}
--- !u!1001 &8261569461642068635
PrefabInstance:
m_ObjectHideFlags: 0
diff --git a/Assets/Scripts/SampleProject/AppMain.cs b/Assets/Scripts/SampleProject/AppMain.cs
index 35aa9cf2..8505d63b 100644
--- a/Assets/Scripts/SampleProject/AppMain.cs
+++ b/Assets/Scripts/SampleProject/AppMain.cs
@@ -1,9 +1,10 @@
-using Cysharp.Threading.Tasks;
+using SampleProject.Config;
using System;
using UnityEngine;
using UVC.Core;
using UVC.Data;
-using UVC.Tests;
+using UVC.Locale;
+using UVC.Util;
namespace SampleProject
{
@@ -22,6 +23,7 @@ namespace SampleProject
///
protected override void Init()
{
+ SettupConfig();
SetNetworkInfo();
if (Initialized != null)
{
@@ -34,6 +36,24 @@ namespace SampleProject
//Tester.RunAllTests();
}
+ private void SettupConfig()
+ {
+ if (AppConfig.LoadConfig())
+ {
+ //⺻
+ bool success = LocalizationManager.Instance.LoadDefaultLocalizationData(AppConfig.Config.Language);
+ Debug.Log($"LocalizationManager: LoadDefaultLocalizationData success: {success}");
+ if (!Application.isEditor && Application.platform == RuntimePlatform.WindowsPlayer)
+ {
+ //â
+ if (AppConfig.Config.Window != null)
+ {
+ WindowTools.Instance.Init(AppConfig.Config.Window);
+ }
+ }
+ }
+ }
+
private void SetNetworkInfo()
{
URLList.Add("baseinfo", "http://localhost:8888/baseinfo/00:00");
diff --git a/Assets/Scripts/SampleProject/Config/AppConfig.cs b/Assets/Scripts/SampleProject/Config/AppConfig.cs
new file mode 100644
index 00000000..c438f1b8
--- /dev/null
+++ b/Assets/Scripts/SampleProject/Config/AppConfig.cs
@@ -0,0 +1,52 @@
+using Newtonsoft.Json;
+using System.IO;
+using UnityEngine;
+using static UVC.Util.WindowTools;
+
+namespace SampleProject.Config
+{
+ ///
+ /// 애플리케이션의 설정을 관리하는 클래스입니다. AppConfig.json 파일에서 설정을 로드합니다.
+ ///
+ public class AppConfig
+ {
+ ///
+ /// 로드된 애플리케이션 설정을 담고 있는 정적 인스턴스입니다.
+ ///
+ public static AppConfig Config { get; private set; }
+
+ ///
+ /// Windows 런타임 환경에서 StreamingAssets 폴더의 AppConfig.json 파일로부터 설정을 로드합니다.
+ ///
+ /// 설정 로드 성공 여부를 반환합니다.
+ public static bool LoadConfig()
+ {
+ string path = Path.Combine(Application.streamingAssetsPath, "AppConfig.json");
+ if (File.Exists(path))
+ {
+ string json = File.ReadAllText(path);
+ Config = JsonConvert.DeserializeObject(json);
+ Debug.Log($"AppConfig loaded from {path}");
+ return Config != null;
+ }
+ else
+ {
+ Debug.LogError($"File not found: {path}");
+ }
+
+ return false;
+ }
+
+ ///
+ /// 애플리케이션의 언어 설정입니다.
+ ///
+ [JsonProperty("language")]
+ public string Language { get; set; }
+
+ ///
+ /// 애플리케이션의 창 관련 설정입니다.
+ ///
+ [JsonProperty("window")]
+ public WindowInfoData Window { get; set; }
+ }
+}
diff --git a/Assets/Scripts/SampleProject/Config/AppConfig.cs.meta b/Assets/Scripts/SampleProject/Config/AppConfig.cs.meta
new file mode 100644
index 00000000..ef5315b2
--- /dev/null
+++ b/Assets/Scripts/SampleProject/Config/AppConfig.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: ac974d1504daf8645be61d0e44b60da8
\ No newline at end of file
diff --git a/Assets/Scripts/SampleProject/UI/Menu/SampleProjectTopMenuController.cs b/Assets/Scripts/SampleProject/UI/Menu/SampleProjectTopMenuController.cs
index 448d86e6..c3e2680f 100644
--- a/Assets/Scripts/SampleProject/UI/Menu/SampleProjectTopMenuController.cs
+++ b/Assets/Scripts/SampleProject/UI/Menu/SampleProjectTopMenuController.cs
@@ -73,8 +73,8 @@ namespace SampleProject.UI.Menu
}),
new MenuItemData("language", "menu_language", subMenuItems: new List
{
- new MenuItemData("lang_ko", "menu_lang_korean", new ChangeLanguageCommand("ko-KR")),
- new MenuItemData("lang_en", "menu_lang_english", new ChangeLanguageCommand("en-US")),
+ new MenuItemData("lang_ko", "menu_lang_korean", new ChangeLanguageCommand("ko")),
+ new MenuItemData("lang_en", "menu_lang_english", new ChangeLanguageCommand("en")),
// new MenuItemData("lang_jp", "menu_lang_japanese", new ChangeLanguageCommand("ja-JP")) // 예: 일본어 추가
})
}));
diff --git a/Assets/Scripts/UVC/Extention/LayoutGroupEx.cs b/Assets/Scripts/UVC/Extention/LayoutGroupEx.cs
index d70ce9af..d5a3f6c2 100644
--- a/Assets/Scripts/UVC/Extention/LayoutGroupEx.cs
+++ b/Assets/Scripts/UVC/Extention/LayoutGroupEx.cs
@@ -343,7 +343,7 @@ namespace UVC.Extension
/// 기준이 될 부모 RectTransform입니다.
///
/// [초보자 설명]
- /// 이 메서드는 LayoutGroup 자체의 UI 영역 크기(`sizeDelta`)를 `parentRectTransform`의 실제 렌더링 크기(`rect.width`, `rect.height`)와 동일하게 만듭니다.
+ /// 이 메서드는 LayoutGroup 자체의 UI 영역 크기(`sizeDelta`)를 `parentRectTransform`의 실제 렌더링 크기(`size.width`, `size.height`)와 동일하게 만듭니다.
/// LayoutGroup의 앵커 설정에 따라 `sizeDelta`의 의미가 달라질 수 있지만, 일반적으로 이 메서드는 LayoutGroup이 부모의 영역을 꽉 채우도록 만듭니다.
///
///
diff --git a/Assets/Scripts/UVC/Factory/Alarm/AlarmDetailView.cs b/Assets/Scripts/UVC/Factory/Alarm/AlarmDetailView.cs
index 9f47e0eb..25241a0f 100644
--- a/Assets/Scripts/UVC/Factory/Alarm/AlarmDetailView.cs
+++ b/Assets/Scripts/UVC/Factory/Alarm/AlarmDetailView.cs
@@ -51,7 +51,7 @@ namespace UVC.Factory.Alarm
if (rect != null && detailTxt != null)
{
RectTransform textRect = detailTxt.GetComponent();
- // 현재 배경(rect)의 높이와 텍스트(textRect) 영역 높이의 차이를 계산하여 상하 여백(margin)을 구합니다.
+ // 현재 배경(size)의 높이와 텍스트(textRect) 영역 높이의 차이를 계산하여 상하 여백(margin)을 구합니다.
float marginHeight = rect.rect.height - textRect.rect.height;
// 배경의 높이를 '텍스트의 실제 높이(preferredHeight)' + '상하 여백'으로 설정하여 내용이 잘리지 않게 합니다.
rect.sizeDelta = new Vector2(rect.rect.width, detailTxt.preferredHeight + marginHeight);
diff --git a/Assets/Scripts/UVC/Factory/Alarm/AlarmIconManager.cs b/Assets/Scripts/UVC/Factory/Alarm/AlarmIconManager.cs
index 00293549..4cf190c2 100644
--- a/Assets/Scripts/UVC/Factory/Alarm/AlarmIconManager.cs
+++ b/Assets/Scripts/UVC/Factory/Alarm/AlarmIconManager.cs
@@ -24,7 +24,7 @@ namespace UVC.Factory.Alarm
[Header("UI Layout Settings")]
[Tooltip("3D 설비 객체와 UI 아이콘 사이의 수직(Y) 간격입니다.")]
- [SerializeField] private float objectYOffset = 0f;
+ [SerializeField] private float objectYOffset = 10f;
[Tooltip("아이콘을 펼쳤을 때 개별 아이콘 사이의 간격입니다.")]
[SerializeField] private float iconSpacing = 20f;
[Tooltip("아이콘을 펼쳤을 때의 중심점 X축 오프셋입니다.")]
diff --git a/Assets/Scripts/UVC/Factory/Alarm/AlarmManager.cs b/Assets/Scripts/UVC/Factory/Alarm/AlarmManager.cs
index a3bb0b28..83a4c31d 100644
--- a/Assets/Scripts/UVC/Factory/Alarm/AlarmManager.cs
+++ b/Assets/Scripts/UVC/Factory/Alarm/AlarmManager.cs
@@ -26,17 +26,22 @@ namespace UVC.Factory.Alarm
// 현재 활성화된 알람 UI들을 관리하는 딕셔너리입니다.
// Key: 설비 ID (TRANSPORT_EQP_ID), Value: 해당 설비에 연결된 AlarmIconManager 인스턴스
private Dictionary activeAlarmUIs = new Dictionary();
-
- // 테스트용으로 사용할 AGV 이름 리스트입니다.
- private List agvNames = new List();
-
- // 어떤 알람(Id)이 어떤 AGV(TRANSPORT_EQP_ID)에 할당되었는지 추적하기 위한 딕셔너리입니다.
- private Dictionary alarmAgvNames = new Dictionary();
+
// 씬에 있는 모든 FactoryObject를 관리하는 매니저의 참조입니다.
// 알람 데이터에 포함된 설비 ID를 이용해 실제 3D 객체를 찾기 위해 사용됩니다.
private FactoryObjectManager? dataManager;
+ private bool testMode = false; // 테스트 모드 여부를 나타내는 플래그입니다.
+
+ // 테스트용으로 사용할 AGV 이름 리스트입니다.
+ private List agvNames = new List();
+
+ // 테스트용으로 어떤 알람(Id)이 어떤 AGV(TRANSPORT_EQP_ID)에 할당되었는지 추적하기 위한 딕셔너리입니다.
+ private Dictionary alarmAgvNames = new Dictionary();
+
+ // 테스트용으로, 새로 발생하는 알람에 AGV ID를 순차적으로 할당하기 위한 인덱스입니다.
+ private int agvIdx = 50;
///
/// AlarmManager의 초기화 메서드입니다.
@@ -57,12 +62,15 @@ namespace UVC.Factory.Alarm
// FactoryObjectManager의 인스턴스를 가져와 나중에 사용할 수 있도록 저장합니다.
dataManager = FactoryObjectManager.Instance;
- // 테스트 코드: 실제 데이터가 없을 경우를 대비하여 가상의 AGV 이름 목록을 생성합니다.
- // 현재는 알람 데이터에 AGV 정보가 없는 경우가 많아, 임시로 AGV 이름을 할당하기 위해 사용됩니다.
- for (int i = 1; i <= 115; i++)
+ if (testMode)
{
- //agvNames.Add($"HFF09CNA8{i.ToString("D3")}");
- agvNames.Add($"HFF09CNA8061");
+ // 테스트 코드: 실제 데이터가 없을 경우를 대비하여 가상의 AGV 이름 목록을 생성합니다.
+ // 현재는 알람 데이터에 AGV 정보가 없는 경우가 많아, 임시로 AGV 이름을 할당하기 위해 사용됩니다.
+ for (int i = 1; i <= 115; i++)
+ {
+ //agvNames.Add($"HFF09CNA8{i.ToString("D3")}");
+ agvNames.Add($"HFF09CNA8061");
+ }
}
}
@@ -116,8 +124,7 @@ namespace UVC.Factory.Alarm
AppMain.Instance.MQTTPipeLine.Add(pipelineInfo);
}
- // 테스트용으로, 새로 발생하는 알람에 AGV ID를 순차적으로 할당하기 위한 인덱스입니다.
- int agvIdx = 50;
+
///
/// MQTT 파이프라인으로부터 데이터가 업데이트될 때마다 호출되는 메인 핸들러입니다.
@@ -163,12 +170,15 @@ namespace UVC.Factory.Alarm
// 알람이 해제되지 않았고(CLEAR_TIME == null), 고유 ID가 있는 경우에만 신규 알람으로 처리합니다.
if (item.GetDateTime("CLEAR_TIME") == null && !item.Id.IsNullOrEmpty())
{
- // 테스트 코드: 수신된 알람 데이터에 임시로 AGV ID를 할당합니다.
- item["TRANSPORT_EQP_ID"] = agvNames[agvIdx];
- alarmAgvNames.Add(item.Id!, agvNames[agvIdx]); // 알람 ID와 할당된 AGV ID를 매핑하여 저장합니다.
HandleNewAlarm(item); // 신규 알람 처리 로직 호출
- agvIdx++;
- if (agvIdx >= agvNames.Count) agvIdx = 0; // AGV ID를 순환하며 사용합니다.
+ if (testMode)
+ {
+ // 테스트 코드: 수신된 알람 데이터에 임시로 AGV ID를 할당합니다.
+ item["TRANSPORT_EQP_ID"] = agvNames[agvIdx];
+ alarmAgvNames.Add(item.Id!, agvNames[agvIdx]); // 알람 ID와 할당된 AGV ID를 매핑하여 저장합니다.
+ agvIdx++;
+ if (agvIdx >= agvNames.Count) agvIdx = 0; // AGV ID를 순환하며 사용합니다.
+ }
}
}
@@ -176,9 +186,12 @@ namespace UVC.Factory.Alarm
foreach (var item in ModifiedList.ToList())
{
// 해제되지 않았고, ID가 있으며, 이미 관리 중인 알람인 경우에만 수정 처리합니다.
- if (item.GetDateTime("CLEAR_TIME") == null && !item.Id.IsNullOrEmpty() && alarmAgvNames.ContainsKey(item.Id!))
+ if (item.GetDateTime("CLEAR_TIME") == null && !item.Id.IsNullOrEmpty())
{
- item["TRANSPORT_EQP_ID"] = alarmAgvNames[item.Id!]; // 기존에 할당된 AGV ID를 유지합니다.
+ if (testMode && alarmAgvNames.ContainsKey(item.Id!))
+ {
+ item["TRANSPORT_EQP_ID"] = alarmAgvNames[item.Id!]; // 기존에 할당된 AGV ID를 유지합니다.
+ }
HandleModifyAlarm(item); // 수정 알람 처리 로직 호출
}
}
@@ -187,9 +200,12 @@ namespace UVC.Factory.Alarm
foreach (var item in RemovedItems.ToList())
{
// ID가 있고, 관리 중인 알람인 경우에만 해제 처리합니다.
- if (!item.Id.IsNullOrEmpty() && alarmAgvNames.ContainsKey(item.Id!))
+ if (!item.Id.IsNullOrEmpty())
{
- item["TRANSPORT_EQP_ID"] = alarmAgvNames[item.Id!]; // 기존 AGV ID를 설정하여 어떤 UI를 제거할지 찾도록 합니다.
+ if (testMode && alarmAgvNames.ContainsKey(item.Id!))
+ {
+ item["TRANSPORT_EQP_ID"] = alarmAgvNames[item.Id!]; // 기존 AGV ID를 설정하여 어떤 UI를 제거할지 찾도록 합니다.
+ }
HandleClearedAlarm(item); // 해제 알람 처리 로직 호출
}
}
diff --git a/Assets/Scripts/UVC/Factory/Buttons.meta b/Assets/Scripts/UVC/Factory/Buttons.meta
new file mode 100644
index 00000000..b2613f29
--- /dev/null
+++ b/Assets/Scripts/UVC/Factory/Buttons.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 07768d8eb217f394fb7610b292649f1c
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/UVC/Factory/Buttons/UILanguageButton.cs b/Assets/Scripts/UVC/Factory/Buttons/UILanguageButton.cs
new file mode 100644
index 00000000..b418ab49
--- /dev/null
+++ b/Assets/Scripts/UVC/Factory/Buttons/UILanguageButton.cs
@@ -0,0 +1,58 @@
+using SampleProject;
+using System.Collections.Generic;
+using System.Linq;
+using TMPro;
+using UnityEngine;
+using UVC.Locale;
+
+namespace UVC.Factory.Buttons
+{
+ public class UILanguageButton : MonoBehaviour
+ {
+ private TMP_Dropdown dropDown;
+
+ private Dictionary languages;
+
+
+ void Awake()
+ {
+ SceneMain.Instance.Initialized += OnSceneInitialized;
+ }
+
+ private void OnSceneInitialized()
+ {
+ languages = LocalizationManager.Instance.AvailableDisplayLanguages;
+ var optoins = new List();
+ foreach (var language in languages)
+ {
+ optoins.Add(new TMP_Dropdown.OptionData(language.Value));
+ }
+
+ dropDown = GetComponent();
+ dropDown.options = optoins;
+ dropDown.value = languages.Keys.ToList().IndexOf(LocalizationManager.Instance.CurrentLanguage);
+
+ dropDown.onValueChanged.AddListener(onValueChanged);
+ }
+
+
+ void OnDestroy()
+ {
+ SceneMain.Instance.Initialized -= OnSceneInitialized;
+ if (dropDown != null)
+ {
+ dropDown.onValueChanged.RemoveListener(onValueChanged);
+ dropDown = null;
+ }
+ }
+
+ private void onValueChanged(int value)
+ {
+ string selectedLanguage = languages.Keys.ToList()[value];
+ Debug.Log($"Selected Language: {selectedLanguage}");
+ LocalizationManager.Instance.SetCurrentLanguage(selectedLanguage);
+ }
+
+ }
+
+}
diff --git a/Assets/Scripts/UVC/Factory/Buttons/UILanguageButton.cs.meta b/Assets/Scripts/UVC/Factory/Buttons/UILanguageButton.cs.meta
new file mode 100644
index 00000000..e0179667
--- /dev/null
+++ b/Assets/Scripts/UVC/Factory/Buttons/UILanguageButton.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 298abc08e9d2be149aebaa0a2d122619
\ No newline at end of file
diff --git a/Assets/Scripts/UVC/Factory/Buttons/UISearchInput.cs b/Assets/Scripts/UVC/Factory/Buttons/UISearchInput.cs
new file mode 100644
index 00000000..14e51776
--- /dev/null
+++ b/Assets/Scripts/UVC/Factory/Buttons/UISearchInput.cs
@@ -0,0 +1,131 @@
+using Cysharp.Threading.Tasks;
+using SampleProject;
+using TMPro;
+using UnityEngine;
+using UnityEngine.EventSystems;
+using UnityEngine.UI;
+using UVC.Factory.Component;
+using UVC.Locale;
+using UVC.UI.Modal;
+using UVC.Util;
+
+namespace UVC.Factory.Buttons
+{
+ public class UISearchInput : MonoBehaviour
+ {
+ private TMP_InputField inputField;
+
+ private Button button;
+ private GameObject textArea;
+
+ private bool initialized = false;
+
+ private bool isClicked = false;
+
+ void Awake()
+ {
+ SceneMain.Instance.Initialized += OnSceneInitialized;
+ }
+
+ private void OnSceneInitialized()
+ {
+ inputField = GetComponent();
+
+ button = GetComponentInChildren
///
///
- /// // Words["error"]["en-US"] -> "Error"
+ /// // Words["error"]["en"] -> "Error"
///
///
[JsonProperty("words")]
diff --git a/Assets/Scripts/UVC/Locale/LocalizationManager.cs b/Assets/Scripts/UVC/Locale/LocalizationManager.cs
index ef2a1f50..273e4dc1 100644
--- a/Assets/Scripts/UVC/Locale/LocalizationManager.cs
+++ b/Assets/Scripts/UVC/Locale/LocalizationManager.cs
@@ -1,9 +1,11 @@
using System;
using System.Collections.Generic;
using System.IO;
+using Unity.VisualScripting;
using UnityEngine;
using UVC.Json;
using UVC.Log;
+using static Unity.VisualScripting.Icons;
namespace UVC.Locale
{
@@ -31,21 +33,21 @@ namespace UVC.Locale
/// ULog.Debug("다국어 데이터 로드 성공!");
///
/// // 4. 사용 가능한 언어 목록 확인 (언어 코드 기준)
- /// List availableLangCodes = LocalizationManager.Instance.GetAvailableLanguageCodes();
+ /// List availableLangCodes = LocalizationManager.Instance.AvailableLanguages();
/// ULog.Debug("사용 가능한 언어 코드: " + string.Join(", ", availableLangCodes));
///
/// // 특정 언어 코드의 표시 이름 가져오기
- /// string koreanDisplayName = LocalizationManager.Instance.GetLanguageDisplayName("ko-KR");
- /// ULog.Debug($"ko-KR display name: {koreanDisplayName}"); // 출력: 한국어
+ /// string koreanDisplayName = LocalizationManager.Instance.GetLanguageDisplayName("ko");
+ /// ULog.Debug($"ko display name: {koreanDisplayName}"); // 출력: 한국어
///
/// // 5. 언어 변경
- /// LocalizationManager.Instance.SetCurrentLanguage("ko-KR"); // 한국어로 변경
+ /// LocalizationManager.Instance.SetCurrentLanguage("ko"); // 한국어로 변경
///
/// // 6. 번역된 문자열 가져오기
/// string errorMsg = LocalizationManager.Instance.GetString("error");
- /// ULog.Debug(errorMsg); // 현재 언어가 "ko-KR"이면 "에러" 출력
+ /// ULog.Debug(errorMsg); // 현재 언어가 "ko"이면 "에러" 출력
///
- /// LocalizationManager.Instance.SetCurrentLanguage("en-US"); // 영어로 변경
+ /// LocalizationManager.Instance.SetCurrentLanguage("en"); // 영어로 변경
/// welcomeMsg = LocalizationManager.Instance.GetString("welcome_message");
/// ULog.Debug(welcomeMsg); // 출력 (영어): Welcome!
/// }
@@ -79,8 +81,8 @@ namespace UVC.Locale
{
if (_instance == null)
{
- _instance = new LocalizationManager("ko-KR");
- _instance.LoadDefaultLocalizationData(); // 기본 언어 데이터 로드
+ _instance = new LocalizationManager();
+ //_instance.LoadDefaultLocalizationData("ko"); // 기본 언어 데이터 로드
}
}
}
@@ -97,7 +99,7 @@ namespace UVC.Locale
///
/// 언어가 변경되었을 때 발생하는 이벤트의 델리게이트입니다.
///
- /// 새롭게 설정된 언어 코드입니다 (예: "en-US", "ko-KR").
+ /// 새롭게 설정된 언어 코드입니다 (예: "en", "ko").
public delegate void LanguageChangedHandler(string newLanguageCode);
///
/// 현재 언어가 메서드를 통해 성공적으로 변경되었을 때 발생하는 이벤트입니다.
@@ -109,6 +111,38 @@ namespace UVC.Locale
///
public string CurrentLanguage => _currentLanguage;
+ ///
+ /// 사용 가능한 언어 목록에서 현재 언어의 인덱스를 가져옵니다.
+ ///
+ public int CurrentLanguageIndex
+ {
+ get
+ {
+ if (_currentLanguage == null)
+ {
+ ULog.Warning("Current language is not set. Returning -1.");
+ return -1; // 언어가 설정되지 않은 경우 -1 반환
+ }
+ if (_dataSource?.Languages == null || _dataSource.Languages.Count == 0)
+ {
+ ULog.Warning("Languages data source is not loaded or empty. Returning -1.");
+ return -1; // 언어 데이터가 로드되지 않았거나 비어있는 경우 -1 반환
+ }
+ // AvailableLanguages를 통해 현재 언어의 인덱스를 찾습니다.
+ List availableLanguages = AvailableLanguages;
+ int index = availableLanguages.IndexOf(_currentLanguage);
+ if (index != -1)
+ {
+ return index; // 현재 언어가 AvailableLanguages에 존재하는 경우 인덱스 반환
+ }
+ else
+ {
+ ULog.Warning($"Current language '{_currentLanguage}' not found in available languages. Returning -1.");
+ return -1; // 현재 언어가 AvailableLanguages에 없는 경우 -1 반환
+ }
+ }
+ }
+
///
/// 로드된 다국어 데이터에서 사용 가능한 모든 언어 코드 목록을 가져옵니다.
/// 데이터가 로드되지 않았거나 번역 데이터가 비어있으면 빈 리스트를 반환합니다.
@@ -125,6 +159,22 @@ namespace UVC.Locale
}
}
+ ///
+ /// 사용 가능한 표시 언어 컬렉션을 가져옵니다.
+ /// ["en"] = "English", ["ko"] = "한국어" 형식의 KeyValuePair 컬렉션입니다.
+ ///
+ public Dictionary AvailableDisplayLanguages
+ {
+ get
+ {
+ if (_dataSource?.Languages != null && _dataSource.Languages.Count > 0)
+ {
+ return new Dictionary(_dataSource.Languages.AsReadOnlyCollection());
+ }
+ return new Dictionary();
+ }
+ }
+
///
/// 지정된 언어 코드에 해당하는 표시 이름을 가져옵니다.
///
@@ -142,22 +192,22 @@ namespace UVC.Locale
///
/// 클래스의 새 인스턴스를 초기화합니다.
- /// 기본 언어를 "ko-KR"로 설정합니다.
+ /// 기본 언어를 "ko"로 설정합니다.
/// 생성자를 private으로 변경하여 외부에서의 직접적인 인스턴스 생성을 막습니다.
///
- private LocalizationManager(string defaultLanguage = "ko-KR")
+ private LocalizationManager()
{
_dataSource = new LocalizationDataSource();
- // 기본 언어를 설정하거나, 시스템 설정을 따르도록 초기화할 수 있습니다.
- _currentLanguage = defaultLanguage; // 예시 기본 언어
}
///
/// 기본 경로(/locale.json)에서 다국어 데이터를 로드합니다.
///
/// 데이터 로드 성공 시 true, 실패 시 false를 반환합니다.
- public bool LoadDefaultLocalizationData()
+ public bool LoadDefaultLocalizationData(string defaultLanguage = "ko")
{
+ // 기본 언어를 설정하거나, 시스템 설정을 따르도록 초기화할 수 있습니다.
+ _currentLanguage = defaultLanguage; // 예시 기본 언어
string path = Path.Combine(Application.streamingAssetsPath, "locale.json");
return LoadLocalizationData(path);
}
@@ -216,7 +266,7 @@ namespace UVC.Locale
/// 현재 사용 언어를 변경합니다.
/// 성공적으로 언어가 변경되면 이벤트가 발생합니다.
///
- /// 설정할 언어 코드입니다 (예: "en-US", "ko-KR").
+ /// 설정할 언어 코드입니다 (예: "en", "ko").
public void SetCurrentLanguage(string languageCode)
{
if (string.IsNullOrEmpty(languageCode))
diff --git a/Assets/Scripts/UVC/UI/Menu/TopMenuController.cs b/Assets/Scripts/UVC/UI/Menu/TopMenuController.cs
index ad837bac..b3d2c85a 100644
--- a/Assets/Scripts/UVC/UI/Menu/TopMenuController.cs
+++ b/Assets/Scripts/UVC/UI/Menu/TopMenuController.cs
@@ -243,8 +243,8 @@ namespace UVC.UI.Menu
model.MenuItems.Add(new MenuItemData("language", "menu_language", subMenuItems: new List
{
// 각 언어 메뉴 아이템에 ChangeLanguageCommand를 연결하여 언어 변경 기능 수행
- new MenuItemData("lang_ko", "menu_lang_korean", new ChangeLanguageCommand("ko-KR"), commandParameter: "ko-KR"),
- new MenuItemData("lang_en", "menu_lang_english", new ChangeLanguageCommand("en-US")),
+ new MenuItemData("lang_ko", "menu_lang_korean", new ChangeLanguageCommand("ko"), commandParameter: "ko"),
+ new MenuItemData("lang_en", "menu_lang_english", new ChangeLanguageCommand("en")),
new MenuItemData("file_save", "menu_file_save", command: new DebugLogCommand("저장 선택됨 (Command 실행)") , subMenuItems: new List
{
new MenuItemData("file_save_as", "menu_file_save_as", new DebugLogCommand("다른 이름으로 저장 선택됨 (Command 실행)"))
@@ -291,7 +291,7 @@ namespace UVC.UI.Menu
/// 새로운 언어 코드()가 적용되었음을 감지하고,
/// 에 모든 메뉴 텍스트를 업데이트하도록 요청합니다.
///
- /// 새롭게 설정된 언어 코드입니다 (예: "ko-KR", "en-US").
+ /// 새롭게 설정된 언어 코드입니다 (예: "ko", "en").
protected virtual void HandleLanguageChanged(string newLanguageCode)
{
ULog.Debug($"언어 변경 감지됨: {newLanguageCode}. 메뉴 텍스트 업데이트를 시도합니다...");
diff --git a/Assets/Scripts/UVC/util/WindowTools.cs b/Assets/Scripts/UVC/util/WindowTools.cs
index 4473b0cf..d60da42a 100644
--- a/Assets/Scripts/UVC/util/WindowTools.cs
+++ b/Assets/Scripts/UVC/util/WindowTools.cs
@@ -1,9 +1,9 @@
-// Copyright (C) 2017 d.mind - All Rights Reserved
-// Version 1.0.1
+// Copyright (C) 2018 logonkhi@gmail.com - All Rights Reserved
+// Version 1.0.0
using System;
-using System.Collections;
using System.Runtime.InteropServices;
+using System.Text;
using UnityEngine;
using UVC.Core;
@@ -104,178 +104,130 @@ namespace UVC.Util
/// WindowTools 클래스는 Unity 애플리케이션에서 창의 위치, 크기, 스타일 등을 제어하는 기능을 제공합니다.
/// 이 클래스는 Windows API를 활용하여 창의 속성을 변경하며, Unity 환경에서 실행 시 유용한 창 관리 기능을 제공합니다.
///
- public class WindowTools : SingletonApp
+ public class WindowTools : Singleton
{
[Serializable]
public class WindowInfoData
{
- public class RectInfo
+ public enum WindowInfoDataWindowState
{
- public int x; // 창의 X 좌표
- public int y; // 창의 Y 좌표
- public int width; // 창의 너비
- public int height; // 창의 높이
+ FullScreen = 0, // 전체 화면 모드
+ Default = 1, // 기본 창 모드
+ Minimized = 2, // 최소화된 창 모드
+ Maximized = 3 // 최대화된 창 모드
}
- [Tooltip("기능 사용 여부")]
- public bool use = true;// 창 관리 기능 활성화 여부
+ public enum WindowInfoDataWindowHAlign
+ {
+ Left = 0, // 왼쪽 정렬
+ Center = 1, // 중앙 정렬
+ Right = 2, // 오른쪽 정렬
+ }
- [Tooltip("창 표시 영역")]
- public RectInfo rect = new RectInfo() { x = 0, y = 0, width = 1920, height = 1080 }; // 창의 초기 위치 및 크기
+ public enum WindowInfoDataWindowVAlign
+ {
+ Top = 0, // 상단 정렬
+ Center = 1, // 중앙 정렬
+ Bottom = 2, // 하단 정렬
+ }
- [Tooltip("항상 최상위에 놓을지 여부")]
- public bool alwaysTop = false; // 창을 항상 최상위로 유지할지 여부
+ // 전체 화면 모드에서 사용할 해상도
+ public Vector2Int fullScreenResolution = new Vector2Int(1920, 1080);
- [Tooltip("창 테두리 표시 여부")]
- public bool showBorder = true; // 창 테두리 표시 여부
+ // 창 크기
+ public Vector2Int size = new Vector2Int(1920, 1080);
- [Tooltip("첫 실행 시 창 크기, 1:기본, 2:최소화, 3:최대화"), Range(1, 3)]
- public int initWindowState = 1; // 창의 초기 상태 (기본, 최소화, 최대화)
+ // 창을 항상 최상위로 유지할지 여부
+ public bool alwaysTop = false;
- [Tooltip("실행 딜레이 (단위:초)")]
- public float startDelay = 0f; // 창 초기화 지연 시간
+ // 창 테두리 표시 여부
+ public bool showBorder = true;
- [Tooltip("새 타이틀 명 (비어있으면 반영안됨)")]
- public string newTitle = "Octopus"; // 창의 새 제목
+ // 창의 초기 상태 (풀스크린, 기본, 최소화, 최대화)
+ public WindowInfoDataWindowState initWindowState = WindowInfoDataWindowState.FullScreen;
+
+ // 가로 정렬
+ public WindowInfoDataWindowHAlign hAlign = WindowInfoDataWindowHAlign.Center;
+
+ // 세로 정렬
+ public WindowInfoDataWindowVAlign vAlign = WindowInfoDataWindowVAlign.Center;
+
+ // 새 타이틀 명 (비어있으면 반영안됨)
+ public string title = "Octopus";
}
- private WindowInfoData WindowInfo = new WindowInfoData();
+ private WindowInfoData WindowInfo;
private IntPtr _hwnd; // 창 핸들
private long _old; // 이전 창 스타일
- private string _filePath; // 파일 경로
private int screenWidth; // 화면 너비
private int screenHeight; // 화면 높이
- private int startWidth; // 초기 창 너비
- private int startHeight; // 초기 창 높이
///
- /// Unity 애플리케이션 시작 시 창의 초기 위치와 크기를 설정합니다.
+ /// 창의 초기 위치와 크기를 설정합니다.
///
- private void Start()
+ public void Init(WindowInfoData windowInfo)
{
- DisplayInfo displayInfo = Screen.mainWindowDisplayInfo;
-
- // 화면 해상도 계산
- screenWidth = int.Parse(displayInfo.workArea.width.ToString()) + 14;// Screen.width; 14:그림자
- screenHeight = int.Parse(displayInfo.workArea.height.ToString()) + 7;// creen.height; 7:그림자
-
- startWidth = 350 + 14;
- startHeight = 606 + 7;
- int centerX = ((screenWidth - startWidth) / 2);
- int centerY = ((screenHeight - startHeight) / 2);
-
- WindowInfo.rect.x = centerX;
- WindowInfo.rect.y = centerY;
- WindowInfo.rect.width = startWidth;
- WindowInfo.rect.height = startHeight;
+ this.WindowInfo = windowInfo;
#if !UNITY_EDITOR || UNITY_STANDALONE_OSX || UNITY_STANDALONE_WIN
- Screen.MoveMainWindowTo(displayInfo, new Vector2Int(centerX, centerY));
-
-
- // 창 관리 기능 활성화 시 초기화 수행
- if (WindowInfo.use)
+ // 풀스크린인지 확인
+ if (WindowInfo.initWindowState == WindowInfoData.WindowInfoDataWindowState.FullScreen)
{
- StartCoroutine(Initialize());
+ Screen.SetResolution(WindowInfo.fullScreenResolution.x, WindowInfo.fullScreenResolution.y, true);
+ Screen.fullScreenMode = FullScreenMode.FullScreenWindow;
+ return;
}
+
+ Initialize();
+
#endif
}
- ///
- ///
- /// 애플리케이션 종료 시 창의 크기를 저장합니다.
- ///
- private void OnApplicationQuit()
- {
- PlayerPrefs.SetInt("Screenmanager Resolution Width", startWidth);
- PlayerPrefs.SetInt("Screenmanager Resolution Height", startHeight);
- PlayerPrefs.Save();
- }
-
- //private void Update()
- //{
- // if (Input.GetKeyDown(KeyCode.Space))
- // {
- // SaveData();
- // }
-
- // if (Input.GetKeyDown(KeyCode.Q))
- // {
- // SetWindowPosition(100, 100);
- // }
- // if (Input.GetKeyDown(KeyCode.W))
- // {
- // SetWindowPosition(0, 0);
- // }
- // if (Input.GetKeyDown(KeyCode.A))
- // {
- // SetWindowSize(800, 600);
- // }
- // if (Input.GetKeyDown(KeyCode.S))
- // {
- // SetWindowSize(1280, 900);
- // }
-
- // if (Input.GetKeyDown(KeyCode.Z))
- // {
- // ShowBorder();
- // }
- // if (Input.GetKeyDown(KeyCode.X))
- // {
- // HideBorder();
- // }
-
- // if (Input.GetKeyDown(KeyCode.Alpha1))
- // {
- // NormalizeWindow();
- // }
- // if (Input.GetKeyDown(KeyCode.Alpha2))
- // {
- // MinimizeWindow();
- // }
- // if (Input.GetKeyDown(KeyCode.Alpha3))
- // {
- // MaximizeWindow();
- // }
-
- // if (Input.GetKeyDown(KeyCode.Alpha4))
- // {
- // SetWindowTitle("Window1");
- // }
- // if (Input.GetKeyDown(KeyCode.Alpha5))
- // {
- // SetWindowTitle("Window2");
- // }
-
- // if (Input.GetKeyDown(KeyCode.Alpha6))
- // {
- // SetAlphaWindow(0.3f);
- // }
- // if (Input.GetKeyDown(KeyCode.Alpha7))
- // {
- // SetAlphaWindow(1f);
- // }
- //}
-
-
///
/// 창 초기화 작업을 수행합니다.
///
- /// 코루틴
- private IEnumerator Initialize()
+ private void Initialize()
{
-#if UNITY_STANDALONE_WIN && !UNITY_EDITOR
+ //if (!Application.isEditor && Application.platform == RuntimePlatform.WindowsPlayer)
+ #if UNITY_STANDALONE_WIN && !UNITY_EDITOR
_hwnd = GetWindowHandle();//FindWindow("UnityWndClass", Application.productName);
_old = GetWindowLong(_hwnd, (long)GWLWindowStyles.GWL_STYLE);
- yield return new WaitForSeconds(this.WindowInfo.startDelay);
-
-
int hWndInsertAfter = (this.WindowInfo.alwaysTop) ? -1 : 0;
- Rect winRect = new Rect(WindowInfo.rect.x, WindowInfo.rect.y, WindowInfo.rect.width, WindowInfo.rect.height);
+
+
+ Rect winRect = new Rect(0, 0, WindowInfo.size.x, WindowInfo.size.y);
+
+ //정렬된 창 크기 설정
+ switch (WindowInfo.hAlign)
+ {
+ case WindowInfoData.WindowInfoDataWindowHAlign.Left:
+ winRect.x = 0;
+ break;
+ case WindowInfoData.WindowInfoDataWindowHAlign.Center:
+ winRect.x = (Screen.width - winRect.width) / 2;
+ break;
+ case WindowInfoData.WindowInfoDataWindowHAlign.Right:
+ winRect.x = Screen.width - winRect.width;
+ break;
+ }
+
+ switch (WindowInfo.vAlign)
+ {
+ case WindowInfoData.WindowInfoDataWindowVAlign.Top:
+ winRect.y = 0;
+ break;
+ case WindowInfoData.WindowInfoDataWindowVAlign.Center:
+ winRect.y = (Screen.height - winRect.height) / 2;
+ break;
+ case WindowInfoData.WindowInfoDataWindowVAlign.Bottom:
+ winRect.y = Screen.height - winRect.height;
+ break;
+ }
+
SetActiveWindow(_hwnd);
if (!WindowInfo.showBorder)
@@ -285,16 +237,16 @@ namespace UVC.Util
SetWindowPos(_hwnd, hWndInsertAfter, (int)winRect.x, (int)winRect.y, (int)winRect.width, (int)winRect.height, (uint)WindowToolsFlags.SWP_SHOWWINDOW);
- if(!string.IsNullOrEmpty(WindowInfo.newTitle.Trim()))
+ if (!string.IsNullOrEmpty(WindowInfo.title.Trim()))
{
- SetWindowTitle(WindowInfo.newTitle);
+ SetWindowTitle(WindowInfo.title);
}
- if(WindowInfo.initWindowState == 2)
+ if (WindowInfo.initWindowState == WindowInfoData.WindowInfoDataWindowState.Minimized)
{
MinimizeWindow();
}
- else if(WindowInfo.initWindowState == 3)
+ else if (WindowInfo.initWindowState == WindowInfoData.WindowInfoDataWindowState.Maximized)
{
MaximizeWindow();
}
@@ -302,8 +254,7 @@ namespace UVC.Util
{
NormalizeWindow();
}
-#endif
- yield return null;
+ #endif
}
@@ -314,9 +265,6 @@ namespace UVC.Util
/// 창의 Y 좌표
public void SetWindowPosition(int x, int y)
{
- WindowInfo.rect.x = x;
- WindowInfo.rect.y = y;
-
#if UNITY_STANDALONE_WIN && !UNITY_EDITOR
int hWndInsertAfter = (this.WindowInfo.alwaysTop) ? -1 : 0;
SetWindowPos(_hwnd, hWndInsertAfter, x, y, 0, 0, (UInt32)(WindowToolsFlags.SWP_NOSIZE | WindowToolsFlags.SWP_NOZORDER | WindowToolsFlags.SWP_DRAWFRAME));
@@ -330,9 +278,6 @@ namespace UVC.Util
/// 창의 높이
public void SetWindowSize(int w, int h)
{
- WindowInfo.rect.width = w;
- WindowInfo.rect.height = h;
-
#if UNITY_STANDALONE_WIN && !UNITY_EDITOR
int hWndInsertAfter = (this.WindowInfo.alwaysTop) ? -1 : 0;
SetWindowPos(_hwnd, hWndInsertAfter, 0, 0, w, h, (UInt32)(WindowToolsFlags.SWP_NOMOVE | WindowToolsFlags.SWP_NOZORDER | WindowToolsFlags.SWP_DRAWFRAME));
@@ -352,8 +297,6 @@ namespace UVC.Util
///
public void ShowBorder()
{
- this.WindowInfo.showBorder = true;
-
#if UNITY_STANDALONE_WIN && !UNITY_EDITOR
SetActiveWindow(_hwnd);
SetWindowLong(_hwnd, (int)GWLWindowStyles.GWL_STYLE, (int)_old);
@@ -366,8 +309,6 @@ namespace UVC.Util
///
public void HideBorder()
{
- this.WindowInfo.showBorder = false;
-
#if UNITY_STANDALONE_WIN && !UNITY_EDITOR
SetActiveWindow(_hwnd);
SetWindowLong(_hwnd, (int)GWLWindowStyles.GWL_STYLE, 1);
@@ -392,20 +333,11 @@ namespace UVC.Util
#endif
}
- //public void SetAlwaysTop(bool alwaysTop)
- //{
- // this.WindowInfo.alwaysTop = alwaysTop;
- // StopAllCoroutines();
- // StartCoroutine(Init());
- //}
-
///
/// 윈도우 창을 기본 상태로 설정합니다.
///
public void NormalizeWindow()
{
- this.WindowInfo.initWindowState = 1;
-
#if UNITY_STANDALONE_WIN && !UNITY_EDITOR
ShowWindowAsync(_hwnd, 1);
#endif
@@ -416,8 +348,6 @@ namespace UVC.Util
///
public void MinimizeWindow()
{
- this.WindowInfo.initWindowState = 2;
-
#if UNITY_STANDALONE_WIN && !UNITY_EDITOR
ShowWindowAsync(_hwnd, 2);
#endif
@@ -428,8 +358,6 @@ namespace UVC.Util
///
public void MaximizeWindow()
{
- this.WindowInfo.initWindowState = 3;
-
#if UNITY_STANDALONE_WIN && !UNITY_EDITOR
ShowWindowAsync(_hwnd, 3);
#endif
@@ -441,8 +369,6 @@ namespace UVC.Util
/// 새로운 창 제목
public void SetWindowTitle(string newTitle)
{
- this.WindowInfo.newTitle = newTitle;
-
#if UNITY_STANDALONE_WIN && !UNITY_EDITOR
SetWindowText(_hwnd, newTitle);
#endif
@@ -471,7 +397,7 @@ namespace UVC.Util
/// 사용자가 선택한 버튼의 결과 (OK, CANCEL, ABORT, RETRY, IGNORE, YES, NO, TRY AGAIN)
public static string Alert(string title, string message, string type = "OK")
{
- //#if UNITY_STANDALONE_WIN && !UNITY_EDITOR
+#if UNITY_STANDALONE_WIN && !UNITY_EDITOR
try
{
string DialogResult = string.Empty;
@@ -555,7 +481,8 @@ namespace UVC.Util
{
return string.Empty;
}
- //#endif
+#endif
+ return string.Empty;
}
@@ -609,7 +536,7 @@ namespace UVC.Util
[DllImport("user32.dll")]
static extern bool GetWindowRect(IntPtr hwnd, ref Rect2 rectangle);
-
+
public struct Rect2
{
@@ -625,6 +552,6 @@ namespace UVC.Util
[DllImport("user32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
static extern int MessageBox(IntPtr hwnd, String lpText, String lpCaption, uint uType);
- #endregion
+#endregion
}
}
\ No newline at end of file
diff --git a/Assets/StreamingAssets/AppConfig.json b/Assets/StreamingAssets/AppConfig.json
new file mode 100644
index 00000000..7b7bcafe
--- /dev/null
+++ b/Assets/StreamingAssets/AppConfig.json
@@ -0,0 +1,20 @@
+{
+ "language": "ko",
+ "fullScreenResolution": null,
+ "window": {
+ "fullScreenResolution": {
+ "x": 1920,
+ "y": 1080
+ },
+ "size": {
+ "x": 1920,
+ "y": 1080
+ },
+ "alwaysTop": false,
+ "showBorder": true,
+ "initWindowState": "FullScreen",
+ "hAlign": "Center",
+ "vAlign": "Center",
+ "title": "Octopus"
+ }
+}
\ No newline at end of file
diff --git a/Assets/StreamingAssets/AppConfig.json.meta b/Assets/StreamingAssets/AppConfig.json.meta
new file mode 100644
index 00000000..e63f3c5d
--- /dev/null
+++ b/Assets/StreamingAssets/AppConfig.json.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 5270f95da5f91444e969252bc6d85fd6
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/StreamingAssets/locale.json b/Assets/StreamingAssets/locale.json
index 4cc7080d..b7759b80 100644
--- a/Assets/StreamingAssets/locale.json
+++ b/Assets/StreamingAssets/locale.json
@@ -1,328 +1,336 @@
{
"languages": {
- "en-US": "English",
- "ko-KR": "한국어"
+ "ko": "KOR",
+ "en": "ENG"
},
"words": {
"error": {
- "ko-KR": "에러",
- "en-US": "Error"
+ "ko": "에러",
+ "en": "Error"
},
"error_file_not_found": {
- "ko-KR": "파일을 찾을 수 없습니다.",
- "en-US": "File not found."
+ "ko": "파일을 찾을 수 없습니다.",
+ "en": "File not found."
},
"error_network_not": {
- "ko-KR": "네트워크 연결을 확인해주세요.",
- "en-US": "Please check your network connection."
+ "ko": "네트워크 연결을 확인해주세요.",
+ "en": "Please check your network connection."
+ },
+ "nosearch": {
+ "ko": "찾을 수 없습니다.",
+ "en": "Not found."
+ },
+ "search_location": {
+ "ko": "위치 검색",
+ "en": "Search Location"
},
"button_confirm": {
- "ko-KR": "확인",
- "en-US": "Confirm"
+ "ko": "확인",
+ "en": "Confirm"
},
"button_ok": {
- "ko-KR": "확인",
- "en-US": "OK"
+ "ko": "확인",
+ "en": "OK"
},
"button_yes": {
- "ko-KR": "예",
- "en-US": "Yes"
+ "ko": "예",
+ "en": "Yes"
},
"button_no": {
- "ko-KR": "아니오",
- "en-US": "No"
+ "ko": "아니오",
+ "en": "No"
},
"button_cancel": {
- "ko-KR": "취소",
- "en-US": "Cancel"
+ "ko": "취소",
+ "en": "Cancel"
},
"button_close": {
- "ko-KR": "닫기",
- "en-US": "Close"
+ "ko": "닫기",
+ "en": "Close"
},
"button_save": {
- "ko-KR": "저장",
- "en-US": "Save"
+ "ko": "저장",
+ "en": "Save"
},
"button_delete": {
- "ko-KR": "삭제",
- "en-US": "Delete"
+ "ko": "삭제",
+ "en": "Delete"
},
"button_edit": {
- "ko-KR": "편집",
- "en-US": "Edit"
+ "ko": "편집",
+ "en": "Edit"
},
"button_add": {
- "ko-KR": "추가",
- "en-US": "Add"
+ "ko": "추가",
+ "en": "Add"
},
"button_back": {
- "ko-KR": "뒤로",
- "en-US": "Back"
+ "ko": "뒤로",
+ "en": "Back"
},
"button_next": {
- "ko-KR": "다음",
- "en-US": "Next"
+ "ko": "다음",
+ "en": "Next"
},
"button_previous": {
- "ko-KR": "이전",
- "en-US": "Previous"
+ "ko": "이전",
+ "en": "Previous"
},
"button_finish": {
- "ko-KR": "완료",
- "en-US": "Finish"
+ "ko": "완료",
+ "en": "Finish"
},
"button_help": {
- "ko-KR": "도움말",
- "en-US": "Help"
+ "ko": "도움말",
+ "en": "Help"
},
"button_search": {
- "ko-KR": "검색",
- "en-US": "Search"
+ "ko": "검색",
+ "en": "Search"
},
"button_refresh": {
- "ko-KR": "새로 고침",
- "en-US": "Refresh"
+ "ko": "새로 고침",
+ "en": "Refresh"
},
"button_upload": {
- "ko-KR": "업로드",
- "en-US": "Upload"
+ "ko": "업로드",
+ "en": "Upload"
},
"button_download": {
- "ko-KR": "다운로드",
- "en-US": "Download"
+ "ko": "다운로드",
+ "en": "Download"
},
"button_print": {
- "ko-KR": "인쇄",
- "en-US": "Print"
+ "ko": "인쇄",
+ "en": "Print"
},
"button_settings": {
- "ko-KR": "설정",
- "en-US": "Settings"
+ "ko": "설정",
+ "en": "Settings"
},
"button_logout": {
- "ko-KR": "로그아웃",
- "en-US": "Logout"
+ "ko": "로그아웃",
+ "en": "Logout"
},
"button_login": {
- "ko-KR": "로그인",
- "en-US": "Login"
+ "ko": "로그인",
+ "en": "Login"
},
"button_register": {
- "ko-KR": "회원가입",
- "en-US": "Register"
+ "ko": "회원가입",
+ "en": "Register"
},
"button_view": {
- "ko-KR": "보기",
- "en-US": "View"
+ "ko": "보기",
+ "en": "View"
},
"button_select": {
- "ko-KR": "선택",
- "en-US": "Select"
+ "ko": "선택",
+ "en": "Select"
},
"button_clear": {
- "ko-KR": "지우기",
- "en-US": "Clear"
+ "ko": "지우기",
+ "en": "Clear"
},
"button_continue": {
- "ko-KR": "계속",
- "en-US": "Continue"
+ "ko": "계속",
+ "en": "Continue"
},
"button_apply": {
- "ko-KR": "적용",
- "en-US": "Apply"
+ "ko": "적용",
+ "en": "Apply"
},
"button_cancel_changes": {
- "ko-KR": "변경사항 취소",
- "en-US": "Cancel Changes"
+ "ko": "변경사항 취소",
+ "en": "Cancel Changes"
},
"button_confirm_changes": {
- "ko-KR": "변경사항 확인",
- "en-US": "Confirm Changes"
+ "ko": "변경사항 확인",
+ "en": "Confirm Changes"
},
"button_exit": {
- "ko-KR": "종료",
- "en-US": "Exit"
+ "ko": "종료",
+ "en": "Exit"
},
"button_yes_no": {
- "ko-KR": "예/아니오",
- "en-US": "Yes/No"
+ "ko": "예/아니오",
+ "en": "Yes/No"
},
"button_accept": {
- "ko-KR": "수락",
- "en-US": "Accept"
+ "ko": "수락",
+ "en": "Accept"
},
"button_decline": {
- "ko-KR": "거절",
- "en-US": "Decline"
+ "ko": "거절",
+ "en": "Decline"
},
"button_agree": {
- "ko-KR": "동의",
- "en-US": "Agree"
+ "ko": "동의",
+ "en": "Agree"
},
"button_disagree": {
- "ko-KR": "동의하지 않음",
- "en-US": "Disagree"
+ "ko": "동의하지 않음",
+ "en": "Disagree"
},
"button_submit": {
- "ko-KR": "제출",
- "en-US": "Submit"
+ "ko": "제출",
+ "en": "Submit"
},
"button_reset": {
- "ko-KR": "초기화",
- "en-US": "Reset"
+ "ko": "초기화",
+ "en": "Reset"
},
"button_retry": {
- "ko-KR": "재시도",
- "en-US": "Retry"
+ "ko": "재시도",
+ "en": "Retry"
},
"button_mute": {
- "ko-KR": "음소거",
- "en-US": "Mute"
+ "ko": "음소거",
+ "en": "Mute"
},
"button_brush_size": {
- "ko-KR": "브러시 크기",
- "en-US": "Brush Size"
+ "ko": "브러시 크기",
+ "en": "Brush Size"
},
"button_capture_screen": {
- "ko-KR": "화면 캡처",
- "en-US": "Capture Screen"
+ "ko": "화면 캡처",
+ "en": "Capture Screen"
},
"button_record_screen": {
- "ko-KR": "화면 녹화",
- "en-US": "Record Screen"
+ "ko": "화면 녹화",
+ "en": "Record Screen"
},
"menu": {
- "ko-KR": "메뉴",
- "en-US": "Menu"
+ "ko": "메뉴",
+ "en": "Menu"
},
"menu_file": {
- "ko-KR": "파일",
- "en-US": "File"
+ "ko": "파일",
+ "en": "File"
},
"menu_file_new": {
- "ko-KR": "새로 만들기",
- "en-US": "New"
+ "ko": "새로 만들기",
+ "en": "New"
},
"menu_file_new_project": {
- "ko-KR": "프로젝트...",
- "en-US": "Project..."
+ "ko": "프로젝트...",
+ "en": "Project..."
},
"menu_file_new_file": {
- "ko-KR": "파일...",
- "en-US": "File..."
+ "ko": "파일...",
+ "en": "File..."
},
"menu_file_open": {
- "ko-KR": "열기",
- "en-US": "Open"
+ "ko": "열기",
+ "en": "Open"
},
"menu_file_save": {
- "ko-KR": "저장",
- "en-US": "Save"
+ "ko": "저장",
+ "en": "Save"
},
"menu_file_save_as": {
- "ko-KR": "다른 이름으로 저장...",
- "en-US": "Save As..."
+ "ko": "다른 이름으로 저장...",
+ "en": "Save As..."
},
"menu_file_exit": {
- "ko-KR": "종료",
- "en-US": "Exit"
+ "ko": "종료",
+ "en": "Exit"
},
"menu_edit": {
- "ko-KR": "편집",
- "en-US": "Edit"
+ "ko": "편집",
+ "en": "Edit"
},
"menu_edit_undo": {
- "ko-KR": "실행 취소",
- "en-US": "Undo"
+ "ko": "실행 취소",
+ "en": "Undo"
},
"menu_edit_redo": {
- "ko-KR": "다시 실행",
- "en-US": "Redo"
+ "ko": "다시 실행",
+ "en": "Redo"
},
"menu_preferences": {
- "ko-KR": "환경설정",
- "en-US": "Preferences"
+ "ko": "환경설정",
+ "en": "Preferences"
},
"menu_language": {
- "ko-KR": "언어",
- "en-US": "Language"
+ "ko": "언어",
+ "en": "Language"
},
"menu_lang_korean": {
- "ko-KR": "한국어",
- "en-US": "Korean"
+ "ko": "한국어",
+ "en": "Korean"
},
"menu_lang_english": {
- "ko-KR": "영어",
- "en-US": "English"
+ "ko": "영어",
+ "en": "English"
},
"menu_help": {
- "ko-KR": "도움말",
- "en-US": "Help"
+ "ko": "도움말",
+ "en": "Help"
},
"menu_about": {
- "ko-KR": "정보",
- "en-US": "About"
+ "ko": "정보",
+ "en": "About"
},
"tool_pen": {
- "ko-KR": "펜",
- "en-US": "Pen"
+ "ko": "펜",
+ "en": "Pen"
},
"tool_eraser": {
- "ko-KR": "지우개",
- "en-US": "Eraser"
+ "ko": "지우개",
+ "en": "Eraser"
},
"project_settings": {
- "ko-KR": "프로젝트 설정",
- "en-US": "Project Setting"
+ "ko": "프로젝트 설정",
+ "en": "Project Setting"
},
"warning": {
- "ko-KR": "경고",
- "en-US": "Warning"
+ "ko": "경고",
+ "en": "Warning"
},
"brush_size_small": {
- "ko-KR": "작은 브러시",
- "en-US": "Small Brush"
+ "ko": "작은 브러시",
+ "en": "Small Brush"
},
"brush_size_medium": {
- "ko-KR": "중간 브러시",
- "en-US": "Medium Brush"
+ "ko": "중간 브러시",
+ "en": "Medium Brush"
},
"tooltip_save_button": {
- "ko-KR": "저장 버튼을 클릭하여 현재 작업을 저장합니다.",
- "en-US": "Click the save button to save your current work."
+ "ko": "저장 버튼을 클릭하여 현재 작업을 저장합니다.",
+ "en": "Click the save button to save your current work."
},
"tooltip_mute_button": {
- "ko-KR": "음소거 버튼을 클릭하여 소리를 끕니다.",
- "en-US": "Click the mute button to turn off the sound."
+ "ko": "음소거 버튼을 클릭하여 소리를 끕니다.",
+ "en": "Click the mute button to turn off the sound."
},
"tooltip_pen_tool": {
- "ko-KR": "펜 도구를 선택하여 그림을 그립니다.",
- "en-US": "Select the pen tool to draw."
+ "ko": "펜 도구를 선택하여 그림을 그립니다.",
+ "en": "Select the pen tool to draw."
},
"tooltip_eraser_tool": {
- "ko-KR": "지우개 도구를 선택하여 그림을 지웁니다.",
- "en-US": "Select the eraser tool to erase drawings."
+ "ko": "지우개 도구를 선택하여 그림을 지웁니다.",
+ "en": "Select the eraser tool to erase drawings."
},
"tooltip_brush_size": {
- "ko-KR": "브러시 크기를 조정합니다.",
- "en-US": "Adjust the brush size."
+ "ko": "브러시 크기를 조정합니다.",
+ "en": "Adjust the brush size."
},
"tooltip_brush_small": {
- "ko-KR": "작은 브러시를 선택합니다.",
- "en-US": "Select small brush."
+ "ko": "작은 브러시를 선택합니다.",
+ "en": "Select small brush."
},
"tooltip_brush_medium": {
- "ko-KR": "중간 브러시를 선택합니다.",
- "en-US": "Select medium brush."
+ "ko": "중간 브러시를 선택합니다.",
+ "en": "Select medium brush."
},
"tooltip_capture_screen": {
- "ko-KR": "화면을 캡처 합니다.",
- "en-US": "Capture the screen."
+ "ko": "화면을 캡처 합니다.",
+ "en": "Capture the screen."
},
"tooltip_record_screen": {
- "ko-KR": "화면을 녹화 합니다.",
- "en-US": "Record your screen."
+ "ko": "화면을 녹화 합니다.",
+ "en": "Record your screen."
}
}
}
\ No newline at end of file