浏览代码

Settings System

/main
uChema 3 年前
当前提交
4ad4a353
共有 90 个文件被更改,包括 5681 次插入1667 次删除
  1. 1
      UOP1_Project/Assets/AddressableAssetsData/AssetGroups/Localization-String-Tables-English (en).asset
  2. 1
      UOP1_Project/Assets/AddressableAssetsData/AssetGroups/Localization-String-Tables-French (fr).asset
  3. 1
      UOP1_Project/Assets/AddressableAssetsData/AssetGroups/Localization-String-Tables-Italian (it).asset
  4. 11
      UOP1_Project/Assets/Art/UI/FinalUI/_Settings/BG_Setting_Row.png
  5. 104
      UOP1_Project/Assets/LocalizationFiles/AssetTables/UI/UI Misc Shared Data.asset
  6. 104
      UOP1_Project/Assets/LocalizationFiles/AssetTables/UI/UI Misc_en.asset
  7. 72
      UOP1_Project/Assets/LocalizationFiles/AssetTables/UI/UI Misc_fr.asset
  8. 6
      UOP1_Project/Assets/LocalizationFiles/AssetTables/UI/UI Misc_it.asset
  9. 37
      UOP1_Project/Assets/Prefabs/UI/MainMenu/ButtonMenu.prefab
  10. 912
      UOP1_Project/Assets/Prefabs/UI/MainMenu/Canvas-MainMenu.prefab
  11. 86
      UOP1_Project/Assets/Prefabs/UI/MainMenu/MainMenu_Panel.prefab
  12. 4
      UOP1_Project/Assets/Prefabs/UI/Shared/Popup/GenericButton.prefab
  13. 140
      UOP1_Project/Assets/Prefabs/UI/WIP/Settings/Setting_Field.prefab
  14. 15
      UOP1_Project/Assets/Prefabs/UI/WIP/Settings/Tab_Item.prefab
  15. 146
      UOP1_Project/Assets/Samples/Localization/0.11.1-preview/Language Selection Menu (UGUI)/LanguageSelectionMenuUGUIDropdown.cs
  16. 67
      UOP1_Project/Assets/Scenes/Managers/PersistentManagers.unity
  17. 932
      UOP1_Project/Assets/Scenes/Menus/MainMenu.unity
  18. 163
      UOP1_Project/Assets/Scenes/Settings System.unity
  19. 3
      UOP1_Project/Assets/ScriptableObjects/SaveSystem/SaveSystem.asset
  20. 33
      UOP1_Project/Assets/Scripts/Audio/AudioManager.cs
  21. 1
      UOP1_Project/Assets/Scripts/Gameplay/GameStateSO.cs
  22. 80
      UOP1_Project/Assets/Scripts/Input/GameInput.cs
  23. 13
      UOP1_Project/Assets/Scripts/Input/InputReader.cs
  24. 22
      UOP1_Project/Assets/Scripts/SaveSystem/Save.cs
  25. 15
      UOP1_Project/Assets/Scripts/SaveSystem/SaveSystem.cs
  26. 60
      UOP1_Project/Assets/Scripts/Systems/Settings/SettingsSystem.cs
  27. 2
      UOP1_Project/Assets/Scripts/Systems/Settings/SettingsGraphicsComponent.cs.meta
  28. 2
      UOP1_Project/Assets/Scripts/Systems/Settings/SettingsSO.cs.meta
  29. 578
      UOP1_Project/Assets/Scripts/UI/Inventory/UIInventory.cs
  30. 8
      UOP1_Project/Assets/Scripts/UI/Inventory/UIActionButton.cs
  31. 33
      UOP1_Project/Assets/Scripts/UI/Settings/UIPaginationFiller.cs
  32. 55
      UOP1_Project/Assets/Scripts/UI/Settings/UISettingFieldsFiller.cs
  33. 68
      UOP1_Project/Assets/Scripts/UI/Settings/UISettingItemFiller.cs
  34. 35
      UOP1_Project/Assets/Scripts/UI/Settings/UISettingTabFiller.cs
  35. 22
      UOP1_Project/Assets/Scripts/UI/Settings/UISettingTabsFiller.cs
  36. 25
      UOP1_Project/Assets/Scripts/UI/Settings/UISettings.cs
  37. 3
      UOP1_Project/Assets/Scripts/UI/UIMenuManager.cs
  38. 6
      UOP1_Project/Assets/Scripts/UI/UIPause.cs
  39. 166
      UOP1_Project/Assets/Scripts/UI/UIPopup.cs
  40. 2
      UOP1_Project/Assets/Scripts/UI/UIGenericButton.cs
  41. 4
      UOP1_Project/Assets/Settings/Graphics/URPAsset.asset
  42. 60
      UOP1_Project/Assets/Settings/Input/GameInput.inputactions
  43. 2
      UOP1_Project/ProjectSettings/QualitySettings.asset
  44. 2
      UOP1_Project/Assets/Scripts/SetButtonNavigation.cs.meta
  45. 12
      UOP1_Project/Assets/Art/UI/FinalUI/_Settings/BtnArrowLeftSelected.png
  46. 120
      UOP1_Project/Assets/Art/UI/FinalUI/_Settings/BtnArrowLeftSelected.png.meta
  47. 11
      UOP1_Project/Assets/Art/UI/FinalUI/_Settings/BtnArrowRightSelected.png
  48. 120
      UOP1_Project/Assets/Art/UI/FinalUI/_Settings/BtnArrowRightSelected.png.meta
  49. 449
      UOP1_Project/Assets/Prefabs/UI/Shared/Settings_Buttons_Panel.prefab
  50. 7
      UOP1_Project/Assets/Prefabs/UI/Shared/Settings_Buttons_Panel.prefab.meta
  51. 1001
      UOP1_Project/Assets/Prefabs/UI/WIP/Settings/Settings_Panel_PR.prefab
  52. 7
      UOP1_Project/Assets/Prefabs/UI/WIP/Settings/Settings_Panel_PR.prefab.meta
  53. 15
      UOP1_Project/Assets/ScriptableObjects/EventChannels/ChangeMasterVolume_Channel.asset
  54. 8
      UOP1_Project/Assets/ScriptableObjects/EventChannels/ChangeMasterVolume_Channel.asset.meta
  55. 15
      UOP1_Project/Assets/ScriptableObjects/EventChannels/ChangeMusicVolume_Channel.asset
  56. 8
      UOP1_Project/Assets/ScriptableObjects/EventChannels/ChangeMusicVolume_Channel.asset.meta
  57. 15
      UOP1_Project/Assets/ScriptableObjects/EventChannels/ChangeSfxVolume_Channel.asset
  58. 8
      UOP1_Project/Assets/ScriptableObjects/EventChannels/ChangeSfxVolume_Channel.asset.meta
  59. 8
      UOP1_Project/Assets/ScriptableObjects/Events/Settings.meta
  60. 18
      UOP1_Project/Assets/Scripts/Events/ScriptableObjects/FloatEventChannelSO.cs
  61. 11
      UOP1_Project/Assets/Scripts/Events/ScriptableObjects/FloatEventChannelSO.cs.meta
  62. 74
      UOP1_Project/Assets/Scripts/SetButtonNavigation.cs
  63. 169
      UOP1_Project/Assets/Scripts/Systems/Settings/SettingsAudioComponent.cs
  64. 368
      UOP1_Project/Assets/Scripts/Systems/Settings/SettingsGraphicsComponent.cs
  65. 118
      UOP1_Project/Assets/Scripts/Systems/Settings/SettingsLanguageComponent.cs
  66. 52
      UOP1_Project/Assets/Scripts/Systems/Settings/SettingsSO.cs
  67. 121
      UOP1_Project/Assets/Scripts/Systems/Settings/UISettingsController.cs
  68. 15
      UOP1_Project/Assets/ScriptableObjects/Events/Settings/SaveSettingsEvent.asset
  69. 8
      UOP1_Project/Assets/ScriptableObjects/Events/Settings/SaveSettingsEvent.asset.meta
  70. 22
      UOP1_Project/Assets/ScriptableObjects/Events/Settings/Settings.asset
  71. 8
      UOP1_Project/Assets/ScriptableObjects/Events/Settings/Settings.asset.meta
  72. 8
      UOP1_Project/Assets/Scripts/Systems/Settings/GraphicsPresets.asset.meta
  73. 41
      UOP1_Project/Assets/Scripts/Systems/Settings/SettingsPresetsScriptableObject.cs
  74. 56
      UOP1_Project/Assets/Scripts/Systems/Settings/SettingsUIController.cs
  75. 44
      UOP1_Project/Assets/Scripts/Systems/Settings/SettingsSystemAudioComponent.cs
  76. 44
      UOP1_Project/Assets/Scripts/Systems/Settings/SettingsSystemGeneralComponent.cs
  77. 208
      UOP1_Project/Assets/Scripts/Systems/Settings/SettingsSystemGraphicsComponent.cs
  78. 24
      UOP1_Project/Assets/Scripts/Systems/Settings/SettingsSystemSubComponents.cs
  79. 33
      UOP1_Project/Assets/Scripts/Systems/Settings/GraphicsPresets.asset
  80. 0
      /UOP1_Project/Assets/Scripts/Systems/Settings/SettingsAudioComponent.cs.meta
  81. 0
      /UOP1_Project/Assets/Scripts/Systems/Settings/SettingsLanguageComponent.cs.meta
  82. 0
      /UOP1_Project/Assets/Scripts/Systems/Settings/UISettingsController.cs.meta
  83. 0
      /UOP1_Project/Assets/Scripts/Systems/Settings/SettingsGraphicsComponent.cs.meta
  84. 0
      /UOP1_Project/Assets/Scripts/Systems/Settings/SettingsSO.cs.meta
  85. 0
      /UOP1_Project/Assets/Scripts/UI/Inventory/UIActionButton.cs.meta
  86. 0
      /UOP1_Project/Assets/Scripts/UI/Inventory/UIActionButton.cs
  87. 0
      /UOP1_Project/Assets/Scripts/UI/UIGenericButton.cs.meta
  88. 0
      /UOP1_Project/Assets/Scripts/UI/UIGenericButton.cs
  89. 0
      /UOP1_Project/Assets/Scripts/SetButtonNavigation.cs.meta

1
UOP1_Project/Assets/AddressableAssetsData/AssetGroups/Localization-String-Tables-English (en).asset


m_ReadOnly: 1
m_SerializedLabels:
- Locale-en
- Preload
- m_GUID: 8c990337c09944296842b163021829c8
m_Address: Interactions_en
m_ReadOnly: 1

1
UOP1_Project/Assets/AddressableAssetsData/AssetGroups/Localization-String-Tables-French (fr).asset


m_ReadOnly: 1
m_SerializedLabels:
- Locale-fr
- Preload
- m_GUID: 75a54b82bfa6f4f9e8239e9940432c0d
m_Address: Interactions_fr
m_ReadOnly: 1

1
UOP1_Project/Assets/AddressableAssetsData/AssetGroups/Localization-String-Tables-Italian (it).asset


m_ReadOnly: 1
m_SerializedLabels:
- Locale-it
- Preload
- m_GUID: 8d64c2a9fccc2614baa07c24841aca37
m_Address: Actors_it
m_ReadOnly: 1

11
UOP1_Project/Assets/Art/UI/FinalUI/_Settings/BG_Setting_Row.png

之前 之后
宽度: 1182  |  高度: 73  |  大小: 5.4 KiB

104
UOP1_Project/Assets/LocalizationFiles/AssetTables/UI/UI Misc Shared Data.asset


m_Key: Unpause
m_Metadata:
m_Items: []
- m_Id: 359857323499520
m_Key: Settings
m_Metadata:
m_Items: []
- m_Id: 360002618384384
m_Key: BackToMenu
m_Metadata:

m_Items: []
- m_Id: 1402740012998656
m_Key: Cancel_BackToMenu
m_Metadata:
m_Items: []
- m_Id: 25694370619318272
m_Key: Volume_SFx
m_Metadata:
m_Items: []
- m_Id: 25694405000028160
m_Key: Volume_Music
m_Metadata:
m_Items: []
- m_Id: 26376705492770816
m_Key: Save
m_Metadata:
m_Items: []
- m_Id: 26376909243670528
m_Key: Reset
m_Metadata:
m_Items: []
- m_Id: 26441837975560192
m_Key: Resolution
m_Metadata:
m_Items: []
- m_Id: 26441860440252416
m_Key: AntiAliasing
m_Metadata:
m_Items: []
- m_Id: 26442178498519040
m_Key: ShadowQuality
m_Metadata:
m_Items: []
- m_Id: 26442199704920064
m_Key: ShadowDistance
m_Metadata:
m_Items: []
- m_Id: 26442250661519360
m_Key: FullScreen
m_Metadata:
m_Items: []
- m_Id: 26700844552282112
m_Key: Language
m_Metadata:
m_Items: []
- m_Id: 27842720449814528
m_Key: FullScreen_On
m_Metadata:
m_Items: []
- m_Id: 27842773037998080
m_Key: FullScreen_Off
m_Metadata:
m_Items: []
- m_Id: 27842872535277568
m_Key: ShadowQuality_SoftShadows
m_Metadata:
m_Items: []
- m_Id: 27842986792312832
m_Key: ShadowQuality_Disabled
m_Metadata:
m_Items: []
- m_Id: 27843016517345280
m_Key: ShadowQuality_HardShadows
m_Metadata:
m_Items: []
- m_Id: 28215004561793024
m_Key: ShadowDistance_Off
m_Metadata:
m_Items: []
- m_Id: 28215115006205952
m_Key: ShadowDistance_Close
m_Metadata:
m_Items: []
- m_Id: 28215167229485056
m_Key: ShadowDistance_Optimal
m_Metadata:
m_Items: []
- m_Id: 28215225706471424
m_Key: ShadowDistance_Far
m_Metadata:
m_Items: []
- m_Id: 28524676346929152
m_Key: Volume_Master
m_Metadata:
m_Items: []
- m_Id: 28949273596780544
m_Key: Continue
m_Metadata:
m_Items: []
- m_Id: 28949308321423360
m_Key: NewGame
m_Metadata:
m_Items: []
- m_Id: 28949337803186176
m_Key: Settings
m_Metadata:
m_Items: []
- m_Id: 28949362876735488
m_Key: Credits
m_Metadata:
m_Items: []
- m_Id: 28949384108302336
m_Key: Exit
m_Metadata:
m_Items: []
m_Metadata:

104
UOP1_Project/Assets/LocalizationFiles/AssetTables/UI/UI Misc_en.asset


m_Localized: Resume
m_Metadata:
m_Items: []
- m_Id: 359857323499520
m_Localized: Settings
m_Metadata:
m_Items: []
- m_Id: 360002618384384
m_Localized: Back to Menu
m_Metadata:

m_Items: []
- m_Id: 1402740012998656
m_Localized: No
m_Metadata:
m_Items: []
- m_Id: 25694370619318272
m_Localized: Sound FX
m_Metadata:
m_Items: []
- m_Id: 25694405000028160
m_Localized: Music
m_Metadata:
m_Items: []
- m_Id: 26376705492770816
m_Localized: Save
m_Metadata:
m_Items: []
- m_Id: 26376909243670528
m_Localized: Reset
m_Metadata:
m_Items: []
- m_Id: 26441837975560192
m_Localized: Resolution
m_Metadata:
m_Items: []
- m_Id: 26441860440252416
m_Localized: Anti Aliasing
m_Metadata:
m_Items: []
- m_Id: 26442178498519040
m_Localized: Shadow quality
m_Metadata:
m_Items: []
- m_Id: 26442199704920064
m_Localized: Shadow Distance
m_Metadata:
m_Items: []
- m_Id: 26442250661519360
m_Localized: Fullscreen
m_Metadata:
m_Items: []
- m_Id: 26700844552282112
m_Localized: Language
m_Metadata:
m_Items: []
- m_Id: 27842720449814528
m_Localized: On
m_Metadata:
m_Items: []
- m_Id: 27842773037998080
m_Localized: Off
m_Metadata:
m_Items: []
- m_Id: 27843016517345280
m_Localized: 'Hard Shadows '
m_Metadata:
m_Items: []
- m_Id: 27842986792312832
m_Localized: Disable Shadows
m_Metadata:
m_Items: []
- m_Id: 27842872535277568
m_Localized: Soft Shadows
m_Metadata:
m_Items: []
- m_Id: 28215004561793024
m_Localized: Off
m_Metadata:
m_Items: []
- m_Id: 28215115006205952
m_Localized: Close
m_Metadata:
m_Items: []
- m_Id: 28215167229485056
m_Localized: Optimal
m_Metadata:
m_Items: []
- m_Id: 28215225706471424
m_Localized: Far
m_Metadata:
m_Items: []
- m_Id: 28524676346929152
m_Localized: Master Volume
m_Metadata:
m_Items: []
- m_Id: 28949273596780544
m_Localized: CONTINUE
m_Metadata:
m_Items: []
- m_Id: 28949308321423360
m_Localized: NEW GAME
m_Metadata:
m_Items: []
- m_Id: 28949337803186176
m_Localized: SETTINGS
m_Metadata:
m_Items: []
- m_Id: 28949362876735488
m_Localized: CREDITS
m_Metadata:
m_Items: []
- m_Id: 28949384108302336
m_Localized: EXIT
m_Metadata:
m_Items: []
references:

72
UOP1_Project/Assets/LocalizationFiles/AssetTables/UI/UI Misc_fr.asset


m_Localized: Reprendre
m_Metadata:
m_Items: []
- m_Id: 359857323499520
m_Localized: Settings
m_Metadata:
m_Items: []
- m_Id: 360002618384384
m_Localized: Retour au menu
m_Metadata:

m_Items: []
- m_Id: 1402740012998656
m_Localized: Non
m_Metadata:
m_Items: []
- m_Id: 25694370619318272
m_Localized: Sound FX
m_Metadata:
m_Items: []
- m_Id: 25694405000028160
m_Localized: Musique
m_Metadata:
m_Items: []
- m_Id: 26376705492770816
m_Localized: Sauvegarder
m_Metadata:
m_Items: []
- m_Id: 26376909243670528
m_Localized: "R\xE9initialiser"
m_Metadata:
m_Items: []
- m_Id: 26441837975560192
m_Localized: Resolution
m_Metadata:
m_Items: []
- m_Id: 26441860440252416
m_Localized: Anti Aliasing
m_Metadata:
m_Items: []
- m_Id: 26442178498519040
m_Localized: "Qualit\xE9 des ombres"
m_Metadata:
m_Items: []
- m_Id: 26442199704920064
m_Localized: Distance des ombres
m_Metadata:
m_Items: []
- m_Id: 26442250661519360
m_Localized: "Plein \xE9cran"
m_Metadata:
m_Items: []
- m_Id: 26700844552282112
m_Localized: Langue
m_Metadata:
m_Items: []
- m_Id: 27842720449814528
m_Localized: "Activ\xE9"
m_Metadata:
m_Items: []
- m_Id: 27842773037998080
m_Localized: "Desactiv\xE9"
m_Metadata:
m_Items: []
- m_Id: 28949273596780544
m_Localized: CONTINUER
m_Metadata:
m_Items: []
- m_Id: 28949308321423360
m_Localized: NOUVELLE PARTIE
m_Metadata:
m_Items: []
- m_Id: 28949337803186176
m_Localized: PARAMETRE
m_Metadata:
m_Items: []
- m_Id: 28949362876735488
m_Localized: CREDITS
m_Metadata:
m_Items: []
- m_Id: 28949384108302336
m_Localized: QUITTER
m_Metadata:
m_Items: []
references:

6
UOP1_Project/Assets/LocalizationFiles/AssetTables/UI/UI Misc_it.asset


m_SharedData: {fileID: 11400000, guid: 457af5455987a4876acc4332c3a761e5, type: 2}
m_Metadata:
m_Items: []
m_TableData: []
m_TableData:
- m_Id: 25694370619318272
m_Localized: Sound FX
m_Metadata:
m_Items: []
references:
version: 1

37
UOP1_Project/Assets/Prefabs/UI/MainMenu/ButtonMenu.prefab


- component: {fileID: 6506251814348512913}
- component: {fileID: 6506251814348512915}
- component: {fileID: 6506251814348512914}
- component: {fileID: 79664321701344429}
m_Layer: 5
m_Name: Text (TMP)
m_TagString: Untagged

m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!114 &79664321701344429
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6506251814348512912}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 56eb0353ae6e5124bb35b17aff880f16, type: 3}
m_Name:
m_EditorClassIdentifier:
m_StringReference:
m_TableReference:
m_TableCollectionName:
m_TableEntryReference:
m_KeyId: 0
m_Key:
m_FallbackState: 0
m_WaitForCompletion: 1
m_FormatArguments: []
m_UpdateString:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 6506251814348512914}
m_TargetAssemblyTypeName: TMPro.TMP_Text, Unity.TextMeshPro
m_MethodName: set_text
m_Mode: 0
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName:
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument:
m_BoolArgument: 0
m_CallState: 1
--- !u!1 &6506251815399143020
GameObject:
m_ObjectHideFlags: 0

912
UOP1_Project/Assets/Prefabs/UI/MainMenu/Canvas-MainMenu.prefab


m_Children:
- {fileID: 31749703340760392}
- {fileID: 260235856}
- {fileID: 1847093150164366843}
- {fileID: 8714683583013738612}
- {fileID: 892254966}
- {fileID: 1042861444}
m_Father: {fileID: 0}

m_Name:
m_EditorClassIdentifier:
_popupPanel: {fileID: 1042861443}
_settingsPanel: {fileID: 841085964}
_creditsPanel: {fileID: 0}
_settingsPanel: {fileID: 7674081708659193547}
_creditsPanel: {fileID: 440164879255287192}
_mainMenuPanel: {fileID: 7846824572243583609}
_saveSystem: {fileID: 11400000, guid: edc355c4a7d5028408d322b90814e19e, type: 2}
_inputReader: {fileID: 11400000, guid: 945ec0365077176418488737deed54be, type: 2}

_defaultSelection: {fileID: 0}
currentSelection: {fileID: 0}
mouseSelection: {fileID: 0}
--- !u!1001 &2141790640
--- !u!1001 &5001353360184406173
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2

- target: {fileID: 1847093150474249088, guid: d04aa2fb2a8564a6eadbda82be8b64ee,
- target: {fileID: 2256995846929192180, guid: 0a87808a75a094c06a3ca108fa7d3036,
value: 1
value: 0
- target: {fileID: 1847093150474249088, guid: d04aa2fb2a8564a6eadbda82be8b64ee,
- target: {fileID: 2256995846929192180, guid: 0a87808a75a094c06a3ca108fa7d3036,
value: 1
value: 0
- target: {fileID: 1847093150474249088, guid: d04aa2fb2a8564a6eadbda82be8b64ee,
type: 3}
propertyPath: m_SizeDelta.x
value: 1122.9397
objectReference: {fileID: 0}
- target: {fileID: 1847093150474249088, guid: d04aa2fb2a8564a6eadbda82be8b64ee,
- target: {fileID: 2256995846929192180, guid: 0a87808a75a094c06a3ca108fa7d3036,
value: 561.46985
value: 0
- target: {fileID: 1847093150474249088, guid: d04aa2fb2a8564a6eadbda82be8b64ee,
- target: {fileID: 2256995846929192180, guid: 0a87808a75a094c06a3ca108fa7d3036,
value: -41.65665
objectReference: {fileID: 0}
- target: {fileID: 1847093151080956945, guid: d04aa2fb2a8564a6eadbda82be8b64ee,
type: 3}
propertyPath: m_AnchorMax.y
value: 1
objectReference: {fileID: 0}
- target: {fileID: 1847093151080956945, guid: d04aa2fb2a8564a6eadbda82be8b64ee,
type: 3}
propertyPath: m_AnchorMin.y
value: 1
objectReference: {fileID: 0}
- target: {fileID: 1847093151080956945, guid: d04aa2fb2a8564a6eadbda82be8b64ee,
type: 3}
propertyPath: m_SizeDelta.y
value: 100
objectReference: {fileID: 0}
- target: {fileID: 1847093151080956945, guid: d04aa2fb2a8564a6eadbda82be8b64ee,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 153.60635
objectReference: {fileID: 0}
- target: {fileID: 1847093151080956945, guid: d04aa2fb2a8564a6eadbda82be8b64ee,
type: 3}
propertyPath: m_AnchoredPosition.y
value: -50
objectReference: {fileID: 0}
- target: {fileID: 1847093151952770122, guid: d04aa2fb2a8564a6eadbda82be8b64ee,
type: 3}
propertyPath: m_Name
value: Settings_Panel
objectReference: {fileID: 0}
- target: {fileID: 1847093151952770122, guid: d04aa2fb2a8564a6eadbda82be8b64ee,
type: 3}
propertyPath: m_IsActive
- target: {fileID: 1847093151952770123, guid: d04aa2fb2a8564a6eadbda82be8b64ee,
type: 3}
propertyPath: m_Pivot.x
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 1847093151952770123, guid: d04aa2fb2a8564a6eadbda82be8b64ee,
type: 3}
propertyPath: m_Pivot.y
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 1847093151952770123, guid: d04aa2fb2a8564a6eadbda82be8b64ee,
type: 3}
propertyPath: m_RootOrder
value: 2
objectReference: {fileID: 0}
- target: {fileID: 1847093151952770123, guid: d04aa2fb2a8564a6eadbda82be8b64ee,
type: 3}
propertyPath: m_AnchorMax.x
value: 1
objectReference: {fileID: 0}
- target: {fileID: 1847093151952770123, guid: d04aa2fb2a8564a6eadbda82be8b64ee,
- target: {fileID: 2256995847696495196, guid: 0a87808a75a094c06a3ca108fa7d3036,
value: 1
objectReference: {fileID: 0}
- target: {fileID: 1847093151952770123, guid: d04aa2fb2a8564a6eadbda82be8b64ee,
type: 3}
propertyPath: m_AnchorMin.x
- target: {fileID: 1847093151952770123, guid: d04aa2fb2a8564a6eadbda82be8b64ee,
- target: {fileID: 2256995847696495196, guid: 0a87808a75a094c06a3ca108fa7d3036,
- target: {fileID: 1847093151952770123, guid: d04aa2fb2a8564a6eadbda82be8b64ee,
type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1847093151952770123, guid: d04aa2fb2a8564a6eadbda82be8b64ee,
type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1847093151952770123, guid: d04aa2fb2a8564a6eadbda82be8b64ee,
type: 3}
propertyPath: m_LocalScale.x
value: 1.0009267
objectReference: {fileID: 0}
- target: {fileID: 1847093151952770123, guid: d04aa2fb2a8564a6eadbda82be8b64ee,
type: 3}
propertyPath: m_LocalScale.y
value: 1.0009267
objectReference: {fileID: 0}
- target: {fileID: 1847093151952770123, guid: d04aa2fb2a8564a6eadbda82be8b64ee,
type: 3}
propertyPath: m_LocalScale.z
value: 1.0009267
objectReference: {fileID: 0}
- target: {fileID: 1847093151952770123, guid: d04aa2fb2a8564a6eadbda82be8b64ee,
type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1847093151952770123, guid: d04aa2fb2a8564a6eadbda82be8b64ee,
type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1847093151952770123, guid: d04aa2fb2a8564a6eadbda82be8b64ee,
type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1847093151952770123, guid: d04aa2fb2a8564a6eadbda82be8b64ee,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 1847093151952770123, guid: d04aa2fb2a8564a6eadbda82be8b64ee,
type: 3}
propertyPath: m_LocalRotation.x
value: -0
objectReference: {fileID: 0}
- target: {fileID: 1847093151952770123, guid: d04aa2fb2a8564a6eadbda82be8b64ee,
type: 3}
propertyPath: m_LocalRotation.y
value: -0
objectReference: {fileID: 0}
- target: {fileID: 1847093151952770123, guid: d04aa2fb2a8564a6eadbda82be8b64ee,
type: 3}
propertyPath: m_LocalRotation.z
value: -0
objectReference: {fileID: 0}
- target: {fileID: 1847093151952770123, guid: d04aa2fb2a8564a6eadbda82be8b64ee,
- target: {fileID: 2256995847696495196, guid: 0a87808a75a094c06a3ca108fa7d3036,
- target: {fileID: 1847093151952770123, guid: d04aa2fb2a8564a6eadbda82be8b64ee,
- target: {fileID: 2256995847696495196, guid: 0a87808a75a094c06a3ca108fa7d3036,
- target: {fileID: 1847093151952770123, guid: d04aa2fb2a8564a6eadbda82be8b64ee,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1847093151952770123, guid: d04aa2fb2a8564a6eadbda82be8b64ee,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1847093151952770123, guid: d04aa2fb2a8564a6eadbda82be8b64ee,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7484170199059436612, guid: d04aa2fb2a8564a6eadbda82be8b64ee,
- target: {fileID: 2256995847871806001, guid: 0a87808a75a094c06a3ca108fa7d3036,
value: 1
value: 0
- target: {fileID: 7484170199059436612, guid: d04aa2fb2a8564a6eadbda82be8b64ee,
- target: {fileID: 2256995847871806001, guid: 0a87808a75a094c06a3ca108fa7d3036,
value: 1
value: 0
- target: {fileID: 7484170199059436612, guid: d04aa2fb2a8564a6eadbda82be8b64ee,
type: 3}
propertyPath: m_SizeDelta.y
value: 100
objectReference: {fileID: 0}
- target: {fileID: 7484170199059436612, guid: d04aa2fb2a8564a6eadbda82be8b64ee,
- target: {fileID: 2256995847871806001, guid: 0a87808a75a094c06a3ca108fa7d3036,
value: 470.81906
value: 0
- target: {fileID: 7484170199059436612, guid: d04aa2fb2a8564a6eadbda82be8b64ee,
- target: {fileID: 2256995847871806001, guid: 0a87808a75a094c06a3ca108fa7d3036,
value: -50
objectReference: {fileID: 0}
- target: {fileID: 7484170199091499673, guid: d04aa2fb2a8564a6eadbda82be8b64ee,
type: 3}
propertyPath: m_AnchorMax.y
value: 1
value: 0
- target: {fileID: 7484170199091499673, guid: d04aa2fb2a8564a6eadbda82be8b64ee,
type: 3}
propertyPath: m_AnchorMin.y
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7484170199091499673, guid: d04aa2fb2a8564a6eadbda82be8b64ee,
type: 3}
propertyPath: m_SizeDelta.y
value: 100
objectReference: {fileID: 0}
- target: {fileID: 7484170199091499673, guid: d04aa2fb2a8564a6eadbda82be8b64ee,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 788.03174
objectReference: {fileID: 0}
- target: {fileID: 7484170199091499673, guid: d04aa2fb2a8564a6eadbda82be8b64ee,
type: 3}
propertyPath: m_AnchoredPosition.y
value: -50
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: d04aa2fb2a8564a6eadbda82be8b64ee, type: 3}
--- !u!224 &1847093150164366843 stripped
RectTransform:
m_CorrespondingSourceObject: {fileID: 1847093151952770123, guid: d04aa2fb2a8564a6eadbda82be8b64ee,
type: 3}
m_PrefabInstance: {fileID: 2141790640}
m_PrefabAsset: {fileID: 0}
--- !u!114 &841085964 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 1300813244, guid: d04aa2fb2a8564a6eadbda82be8b64ee,
type: 3}
m_PrefabInstance: {fileID: 2141790640}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5dfcb411221824db88112d62c7c9abaf, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1001 &5001353360184406173
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 31749702957475741}
m_Modifications:
- target: {fileID: 4978918839613320660, guid: 0a87808a75a094c06a3ca108fa7d3036,
type: 3}
propertyPath: m_Name

- target: {fileID: 4978918839613320661, guid: 0a87808a75a094c06a3ca108fa7d3036,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4978918840937954399, guid: 0a87808a75a094c06a3ca108fa7d3036,
type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4978918840937954399, guid: 0a87808a75a094c06a3ca108fa7d3036,
type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4978918840937954399, guid: 0a87808a75a094c06a3ca108fa7d3036,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4978918840937954399, guid: 0a87808a75a094c06a3ca108fa7d3036,
type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []

type: 3}
m_PrefabInstance: {fileID: 8357250150726413776}
m_PrefabAsset: {fileID: 0}
--- !u!114 &440164879255287192 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 8494119970005686344, guid: 94ca6d0c15c4b4a2cbbe4758a17b8dfb,
type: 3}
m_PrefabInstance: {fileID: 8357250150726413776}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 89d2d3089773c4b30a761dd235b33ed6, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1001 &9095229574398239828
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 31749702957475741}
m_Modifications:
- target: {fileID: 488774219352206458, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 488774219352206458, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 488774219352206458, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 488774219352206458, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 488774219352206458, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 488774219553061920, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_Pivot.x
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 488774219553061920, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_Pivot.y
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 488774219553061920, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_RootOrder
value: 2
objectReference: {fileID: 0}
- target: {fileID: 488774219553061920, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchorMax.x
value: 1
objectReference: {fileID: 0}
- target: {fileID: 488774219553061920, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchorMax.y
value: 1
objectReference: {fileID: 0}
- target: {fileID: 488774219553061920, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchorMin.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 488774219553061920, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 488774219553061920, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 488774219553061920, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 488774219553061920, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 488774219553061920, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 488774219553061920, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 488774219553061920, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 488774219553061920, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 488774219553061920, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 488774219553061920, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 488774219553061920, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 488774219553061920, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 488774219553061920, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 488774219553061920, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 488774219553061920, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 488774219553061921, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_Name
value: Settings_Panel_PR
objectReference: {fileID: 0}
- target: {fileID: 1309691623010409044, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1309691623010409044, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1309691623010409044, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1309691623010409044, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1309691623010409044, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2284335988535224422, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2284335988535224422, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2284335988535224422, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2284335988535224422, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2284335988535224422, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2296573752810023457, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2296573752810023457, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2296573752810023457, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2296573752810023457, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2296573752810023457, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2783648922824695131, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2783648922824695131, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2783648922824695131, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2783648922824695131, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2783648922824695131, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2837589083136890240, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2837589083136890240, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2837589083136890240, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2837589083136890240, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2837589083136890240, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3286740194206522277, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3286740194206522277, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3286740194206522277, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3286740194206522277, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3286740194206522277, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3570734600777827613, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3570734600777827613, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3570734600777827613, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3570734600777827613, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3570734600777827613, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4282976869315513144, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4282976869315513144, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4282976869315513144, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4282976869315513144, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4282976869315513144, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4419775157188859448, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4419775157188859448, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4419775157188859448, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4419775157188859448, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4419775157188859448, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4881546387008789613, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4881546387008789613, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4881546387008789613, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4881546387008789613, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4881546387008789613, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5437310083346915326, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5437310083346915326, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5437310083346915326, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5437310083346915326, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5437310083346915326, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6305196793793597057, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6305196793793597057, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6305196793793597057, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6305196793793597057, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6305196793793597057, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6825131797341510134, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6825131797341510134, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6825131797341510134, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6825131797341510134, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6825131797341510134, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6887822350295239495, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6887822350295239495, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6887822350295239495, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6887822350295239495, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6887822350295239495, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8329188497909819644, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8329188497909819644, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8329188497909819644, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8329188497909819644, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8329188497909819644, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8458125608585290032, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8458125608585290032, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8458125608585290032, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8458125608585290032, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 624
objectReference: {fileID: 0}
- target: {fileID: 8458125608585290032, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8698515608629574386, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8698515608629574386, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8698515608629574386, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8698515608629574386, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8698515608629574386, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8698515608660556847, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8698515608660556847, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8698515608660556847, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8698515608660556847, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8698515608660556847, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 9195418722625875733, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 9195418722625875733, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 9195418722625875733, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 9195418722625875733, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 624
objectReference: {fileID: 0}
- target: {fileID: 9195418722625875733, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: cef07ea384e17ef4bb3abfbd08391f33, type: 3}
--- !u!224 &8714683583013738612 stripped
RectTransform:
m_CorrespondingSourceObject: {fileID: 488774219553061920, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
m_PrefabInstance: {fileID: 9095229574398239828}
m_PrefabAsset: {fileID: 0}
--- !u!114 &7674081708659193547 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 1461259458714161823, guid: cef07ea384e17ef4bb3abfbd08391f33,
type: 3}
m_PrefabInstance: {fileID: 9095229574398239828}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: eaa1d1bcaa3ee4cf0af311e19f20e9ed, type: 3}
m_Name:
m_EditorClassIdentifier:

86
UOP1_Project/Assets/Prefabs/UI/MainMenu/MainMenu_Panel.prefab


m_Modification:
m_TransformParent: {fileID: 4978918839736035384}
m_Modifications:
- target: {fileID: 79664321701344429, guid: 5f03e7da25d3245bc8a18c38f028d0c0,
type: 3}
propertyPath: m_StringReference.m_TableEntryReference.m_KeyId
value: 28949273596780544
objectReference: {fileID: 0}
- target: {fileID: 79664321701344429, guid: 5f03e7da25d3245bc8a18c38f028d0c0,
type: 3}
propertyPath: m_StringReference.m_TableReference.m_TableCollectionName
value: GUID:457af5455987a4876acc4332c3a761e5
objectReference: {fileID: 0}
- target: {fileID: 6506251814348512914, guid: 5f03e7da25d3245bc8a18c38f028d0c0,
type: 3}
propertyPath: m_text

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 5f03e7da25d3245bc8a18c38f028d0c0, type: 3}
--- !u!224 &4978918840937954399 stripped
RectTransform:
m_CorrespondingSourceObject: {fileID: 6506251815399143021, guid: 5f03e7da25d3245bc8a18c38f028d0c0,
type: 3}
m_PrefabInstance: {fileID: 2256995846253972018}
m_PrefabAsset: {fileID: 0}
--- !u!114 &4978918840937954396 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 6506251815399143022, guid: 5f03e7da25d3245bc8a18c38f028d0c0,

m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!224 &4978918840937954399 stripped
RectTransform:
m_CorrespondingSourceObject: {fileID: 6506251815399143021, guid: 5f03e7da25d3245bc8a18c38f028d0c0,
type: 3}
m_PrefabInstance: {fileID: 2256995846253972018}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &4978918839155688497
PrefabInstance:
m_ObjectHideFlags: 0

m_Modifications:
- target: {fileID: 79664321701344429, guid: 5f03e7da25d3245bc8a18c38f028d0c0,
type: 3}
propertyPath: m_StringReference.m_TableEntryReference.m_KeyId
value: 28949308321423360
objectReference: {fileID: 0}
- target: {fileID: 79664321701344429, guid: 5f03e7da25d3245bc8a18c38f028d0c0,
type: 3}
propertyPath: m_StringReference.m_TableReference.m_TableCollectionName
value: GUID:457af5455987a4876acc4332c3a761e5
objectReference: {fileID: 0}
- target: {fileID: 6506251814348512914, guid: 5f03e7da25d3245bc8a18c38f028d0c0,
type: 3}
propertyPath: m_text

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 5f03e7da25d3245bc8a18c38f028d0c0, type: 3}
--- !u!224 &2256995847696495196 stripped
RectTransform:
m_CorrespondingSourceObject: {fileID: 6506251815399143021, guid: 5f03e7da25d3245bc8a18c38f028d0c0,
type: 3}
m_PrefabInstance: {fileID: 4978918839155688497}
m_PrefabAsset: {fileID: 0}
--- !u!114 &2256995847696495199 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 6506251815399143022, guid: 5f03e7da25d3245bc8a18c38f028d0c0,

m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!224 &2256995847696495196 stripped
RectTransform:
m_CorrespondingSourceObject: {fileID: 6506251815399143021, guid: 5f03e7da25d3245bc8a18c38f028d0c0,
type: 3}
m_PrefabInstance: {fileID: 4978918839155688497}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &4978918839333227612
PrefabInstance:
m_ObjectHideFlags: 0

m_Modifications:
- target: {fileID: 79664321701344429, guid: 5f03e7da25d3245bc8a18c38f028d0c0,
type: 3}
propertyPath: m_StringReference.m_TableEntryReference.m_KeyId
value: 359857323499520
objectReference: {fileID: 0}
- target: {fileID: 79664321701344429, guid: 5f03e7da25d3245bc8a18c38f028d0c0,
type: 3}
propertyPath: m_StringReference.m_TableReference.m_TableCollectionName
value: GUID:457af5455987a4876acc4332c3a761e5
objectReference: {fileID: 0}
- target: {fileID: 6506251814348512914, guid: 5f03e7da25d3245bc8a18c38f028d0c0,
type: 3}
propertyPath: m_text

m_Modification:
m_TransformParent: {fileID: 4978918839736035384}
m_Modifications:
- target: {fileID: 79664321701344429, guid: 5f03e7da25d3245bc8a18c38f028d0c0,
type: 3}
propertyPath: m_StringReference.m_TableEntryReference.m_KeyId
value: 28949362876735488
objectReference: {fileID: 0}
- target: {fileID: 79664321701344429, guid: 5f03e7da25d3245bc8a18c38f028d0c0,
type: 3}
propertyPath: m_StringReference.m_TableReference.m_TableCollectionName
value: GUID:457af5455987a4876acc4332c3a761e5
objectReference: {fileID: 0}
- target: {fileID: 6506251814348512914, guid: 5f03e7da25d3245bc8a18c38f028d0c0,
type: 3}
propertyPath: m_text

m_Modification:
m_TransformParent: {fileID: 4978918839736035384}
m_Modifications:
- target: {fileID: 79664321701344429, guid: 5f03e7da25d3245bc8a18c38f028d0c0,
type: 3}
propertyPath: m_StringReference.m_TableEntryReference.m_KeyId
value: 28949384108302336
objectReference: {fileID: 0}
- target: {fileID: 79664321701344429, guid: 5f03e7da25d3245bc8a18c38f028d0c0,
type: 3}
propertyPath: m_StringReference.m_TableReference.m_TableCollectionName
value: GUID:457af5455987a4876acc4332c3a761e5
objectReference: {fileID: 0}
- target: {fileID: 6506251814348512914, guid: 5f03e7da25d3245bc8a18c38f028d0c0,
type: 3}
propertyPath: m_text

objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 5f03e7da25d3245bc8a18c38f028d0c0, type: 3}
--- !u!224 &2256995846463867887 stripped
RectTransform:
m_CorrespondingSourceObject: {fileID: 6506251815399143021, guid: 5f03e7da25d3245bc8a18c38f028d0c0,
type: 3}
m_PrefabInstance: {fileID: 4978918840610717058}
m_PrefabAsset: {fileID: 0}
--- !u!1 &2256995846463867886 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 6506251815399143020, guid: 5f03e7da25d3245bc8a18c38f028d0c0,

--- !u!224 &2256995846463867887 stripped
RectTransform:
m_CorrespondingSourceObject: {fileID: 6506251815399143021, guid: 5f03e7da25d3245bc8a18c38f028d0c0,
type: 3}
m_PrefabInstance: {fileID: 4978918840610717058}
m_PrefabAsset: {fileID: 0}

4
UOP1_Project/Assets/Prefabs/UI/Shared/Popup/GenericButton.prefab


m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
IsSelected: 0
--- !u!1 &297632142728442617
GameObject:
m_ObjectHideFlags: 0

m_EditorClassIdentifier:
m_StringReference:
m_TableReference:
m_TableCollectionName: GUID:457af5455987a4876acc4332c3a761e5
m_TableCollectionName:
m_WaitForCompletion: 1
m_FormatArguments: []
m_UpdateString:
m_PersistentCalls:

140
UOP1_Project/Assets/Prefabs/UI/WIP/Settings/Setting_Field.prefab


- component: {fileID: 7048424684371502308}
- component: {fileID: 7048424684371502307}
- component: {fileID: 7048424684371502306}
- component: {fileID: 7048424684371502309}
- component: {fileID: 1194130716540896082}
m_Layer: 5
m_Name: ButtonNext
m_TagString: Untagged

m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!114 &7048424684371502309
--- !u!114 &1194130716540896082
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}

m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Script: {fileID: 11500000, guid: 77b26c7a54d143a7b78bcba222262814, type: 3}
m_Mode: 3
m_Mode: 4
m_SelectOnLeft: {fileID: 0}
m_SelectOnLeft: {fileID: 8646458778101552516}
m_Transition: 1
m_Transition: 2
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_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_HighlightedSprite: {fileID: 21300000, guid: 3f82274ed59c3cc45879eb9740a5f0e1,
type: 3}
m_PressedSprite: {fileID: 21300000, guid: 58790cb6e51294a67890b1b29428d16b, type: 3}
m_SelectedSprite: {fileID: 21300000, guid: 3f82274ed59c3cc45879eb9740a5f0e1, type: 3}
m_DisabledSprite: {fileID: 21300000, guid: 7cff2324d170f43b2aa3c1c75b489048, type: 3}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted

m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
IsSelected: 0
--- !u!1 &7048424685027339282
GameObject:
m_ObjectHideFlags: 0

_parentPagination: {fileID: 7048424685027339283}
_emptyPagination: {fileID: 21300000, guid: c0c863cad1ace4674964fcf9693e7868, type: 3}
_filledPagination: {fileID: 21300000, guid: 14d7f8c575c7340fe93d710ffc369d67, type: 3}
maxSpacing: 10
minSpacing: 1
--- !u!1 &7048424685039854745
GameObject:
m_ObjectHideFlags: 0

- component: {fileID: 7048424685039854724}
- component: {fileID: 7048424685039854727}
- component: {fileID: 5960076895796773585}
- component: {fileID: 2800679463986886097}
m_Layer: 5
m_Name: Setting_Field
m_TagString: Untagged

m_Name:
m_EditorClassIdentifier:
_pagination: {fileID: 4380169374378362932}
_currentSelectedOption: {fileID: 7048424686388579767}
_currentSelectedOption_LocalizedEvent: {fileID: 5969103860504706878}
_currentSelectedOption_Text: {fileID: 7048424686388579767}
_bg: {fileID: 7048424685039854727}
_title: {fileID: 4000536134387010085}
_colorSelected: {r: 0.45490196, g: 0.30980393, b: 0.19607843, a: 1}

_fieldType: 1
_buttonNext: {fileID: 1194130716540896082}
_buttonPrevious: {fileID: 8646458778101552516}
--- !u!114 &2800679463986886097
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7048424685039854745}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 77b26c7a54d143a7b78bcba222262814, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 4
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 8646458778101552516}
m_SelectOnRight: {fileID: 1194130716540896082}
m_Transition: 1
m_Colors:
m_NormalColor: {r: 0.93725497, g: 0.89019614, b: 0.75294125, a: 1}
m_HighlightedColor: {r: 0.6886792, g: 0.5160369, b: 0.38072267, a: 1}
m_PressedColor: {r: 0.454902, g: 0.30980393, b: 0.19607845, a: 1}
m_SelectedColor: {r: 0.454902, g: 0.30980393, b: 0.19607845, a: 1}
m_DisabledColor: {r: 0.5943396, g: 0.5431245, b: 0.5023852, a: 1}
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: 7048424685039854727}
m_OnClick:
m_PersistentCalls:
m_Calls: []
IsSelected: 0
--- !u!1 &7048424685744053211
GameObject:
m_ObjectHideFlags: 0

- component: {fileID: 7048424685893952475}
- component: {fileID: 7048424685893952454}
- component: {fileID: 7048424685893952473}
- component: {fileID: 7048424685893952472}
- component: {fileID: 8646458778101552516}
m_Layer: 5
m_Name: ButtonPrevious
m_TagString: Untagged

m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: 84a4764ecb80249008dea74c3d915ab5, type: 3}
m_Sprite: {fileID: 21300000, guid: db3450939e09c4398b6c5317615b90b9, type: 3}
m_Type: 0
m_PreserveAspect: 1
m_FillCenter: 1

m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!114 &7048424685893952472
--- !u!114 &8646458778101552516
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}

m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Script: {fileID: 11500000, guid: 77b26c7a54d143a7b78bcba222262814, type: 3}
m_Mode: 3
m_Mode: 4
m_SelectOnRight: {fileID: 0}
m_Transition: 1
m_SelectOnRight: {fileID: 1194130716540896082}
m_Transition: 2
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_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_HighlightedSprite: {fileID: 21300000, guid: 296f74e550e36d24698a48d69871ed45,
type: 3}
m_PressedSprite: {fileID: 21300000, guid: db3450939e09c4398b6c5317615b90b9, type: 3}
m_SelectedSprite: {fileID: 21300000, guid: 296f74e550e36d24698a48d69871ed45, type: 3}
m_DisabledSprite: {fileID: 21300000, guid: 84a4764ecb80249008dea74c3d915ab5, type: 3}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted

m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
IsSelected: 0
--- !u!1 &7048424686194188477
GameObject:
m_ObjectHideFlags: 0

m_EditorClassIdentifier:
m_StringReference:
m_TableReference:
m_TableCollectionName:
m_TableCollectionName: GUID:457af5455987a4876acc4332c3a761e5
m_WaitForCompletion: 1
m_FormatArguments: []
m_UpdateString:
m_PersistentCalls:

- component: {fileID: 7048424686388579766}
- component: {fileID: 7048424686388579764}
- component: {fileID: 7048424686388579767}
- component: {fileID: 5969103860504706878}
m_Layer: 5
m_Name: CurrentOption
m_TagString: Untagged

m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!114 &5969103860504706878
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7048424686388579785}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 56eb0353ae6e5124bb35b17aff880f16, type: 3}
m_Name:
m_EditorClassIdentifier:
m_StringReference:
m_TableReference:
m_TableCollectionName: GUID:457af5455987a4876acc4332c3a761e5
m_TableEntryReference:
m_KeyId: 0
m_Key:
m_FallbackState: 0
m_WaitForCompletion: 1
m_FormatArguments: []
m_UpdateString:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 7048424686388579767}
m_TargetAssemblyTypeName: TMPro.TMP_Text, Unity.TextMeshPro
m_MethodName: set_text
m_Mode: 0
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2

15
UOP1_Project/Assets/Prefabs/UI/WIP/Settings/Tab_Item.prefab


m_TargetGraphic: {fileID: 9115052875433558161}
m_OnClick:
m_PersistentCalls:
m_Calls: []
m_Calls:
- m_Target: {fileID: 2192451556169986123}
m_TargetAssemblyTypeName: UISettingTabFiller, Assembly-CSharp
m_MethodName: Click
m_Mode: 1
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
--- !u!114 &2192451556169986123
MonoBehaviour:
m_ObjectHideFlags: 0

m_KeyId: 607506128896
m_Key:
m_FallbackState: 0
m_WaitForCompletion: 1
m_FormatArguments: []
m_UpdateString:
m_PersistentCalls:

146
UOP1_Project/Assets/Samples/Localization/0.11.1-preview/Language Selection Menu (UGUI)/LanguageSelectionMenuUGUIDropdown.cs


namespace UnityEngine.Localization.Samples
{
/// <summary>
/// This example shows how a language selection menu can be implemented using UGUI.
/// </summary>
[RequireComponent(typeof(Dropdown))]
public class LanguageSelectionMenuUGUIDropdown : MonoBehaviour
{
Dropdown m_Dropdown;
AsyncOperationHandle m_InitializeOperation;
/// <summary>
/// This example shows how a language selection menu can be implemented using UGUI.
/// </summary>
[RequireComponent(typeof(UI.Dropdown))]
public class LanguageSelectionMenuUGUIDropdown : MonoBehaviour
{
UI.Dropdown m_Dropdown;
AsyncOperationHandle m_InitializeOperation;
void Start()
{
// First we setup the dropdown component.
m_Dropdown = GetComponent<Dropdown>();
m_Dropdown.onValueChanged.AddListener(OnSelectionChanged);
void Start()
{
// First we setup the dropdown component.
m_Dropdown = GetComponent<UI.Dropdown>();
m_Dropdown.onValueChanged.AddListener(OnSelectionChanged);
// Clear the options an add a loading message while we wait for the localization system to initialize.
m_Dropdown.ClearOptions();
m_Dropdown.options.Add(new Dropdown.OptionData("Loading..."));
m_Dropdown.interactable = false;
// Clear the options an add a loading message while we wait for the localization system to initialize.
m_Dropdown.ClearOptions();
m_Dropdown.options.Add(new UI.Dropdown.OptionData("Loading..."));
m_Dropdown.interactable = false;
// SelectedLocaleAsync will ensure that the locales have been initialized and a locale has been selected.
m_InitializeOperation = LocalizationSettings.SelectedLocaleAsync;
if (m_InitializeOperation.IsDone)
{
InitializeCompleted(m_InitializeOperation);
}
else
{
m_InitializeOperation.Completed += InitializeCompleted;
}
}
// SelectedLocaleAsync will ensure that the locales have been initialized and a locale has been selected.
m_InitializeOperation = LocalizationSettings.SelectedLocaleAsync;
if (m_InitializeOperation.IsDone)
{
InitializeCompleted(m_InitializeOperation);
}
else
{
m_InitializeOperation.Completed += InitializeCompleted;
}
}
void InitializeCompleted(AsyncOperationHandle obj)
{
// Create an option in the dropdown for each Locale
var options = new List<string>();
int selectedOption = 0;
var locales = LocalizationSettings.AvailableLocales.Locales;
for (int i = 0; i < locales.Count; ++i)
{
var locale = locales[i];
if (LocalizationSettings.SelectedLocale == locale)
selectedOption = i;
void InitializeCompleted(AsyncOperationHandle obj)
{
// Create an option in the dropdown for each Locale
var options = new List<string>();
int selectedOption = 0;
var locales = LocalizationSettings.AvailableLocales.Locales;
for (int i = 0; i < locales.Count; ++i)
{
var locale = locales[i];
if (LocalizationSettings.SelectedLocale == locale)
selectedOption = i;
var displayName = locales[i].Identifier.CultureInfo != null ? locales[i].Identifier.CultureInfo.NativeName : locales[i].ToString();
options.Add(displayName);
}
var displayName = locales[i].Identifier.CultureInfo != null ? locales[i].Identifier.CultureInfo.NativeName : locales[i].ToString();
options.Add(displayName);
}
// If we have no Locales then something may have gone wrong.
if (options.Count == 0)
{
options.Add("No Locales Available");
m_Dropdown.interactable = false;
}
else
{
m_Dropdown.interactable = true;
}
// If we have no Locales then something may have gone wrong.
if (options.Count == 0)
{
options.Add("No Locales Available");
m_Dropdown.interactable = false;
}
else
{
m_Dropdown.interactable = true;
}
m_Dropdown.ClearOptions();
m_Dropdown.AddOptions(options);
m_Dropdown.SetValueWithoutNotify(selectedOption);
m_Dropdown.ClearOptions();
m_Dropdown.AddOptions(options);
m_Dropdown.SetValueWithoutNotify(selectedOption);
LocalizationSettings.SelectedLocaleChanged += LocalizationSettings_SelectedLocaleChanged;
}
LocalizationSettings.SelectedLocaleChanged += LocalizationSettings_SelectedLocaleChanged;
}
void OnSelectionChanged(int index)
{
// Unsubscribe from SelectedLocaleChanged so we don't get an unnecessary callback from the change we are about to make.
LocalizationSettings.SelectedLocaleChanged -= LocalizationSettings_SelectedLocaleChanged;
void OnSelectionChanged(int index)
{
// Unsubscribe from SelectedLocaleChanged so we don't get an unnecessary callback from the change we are about to make.
LocalizationSettings.SelectedLocaleChanged -= LocalizationSettings_SelectedLocaleChanged;
var locale = LocalizationSettings.AvailableLocales.Locales[index];
LocalizationSettings.SelectedLocale = locale;
var locale = LocalizationSettings.AvailableLocales.Locales[index];
LocalizationSettings.SelectedLocale = locale;
// Resubscribe to SelectedLocaleChanged so that we can stay in sync with changes that may be made by other scripts.
LocalizationSettings.SelectedLocaleChanged += LocalizationSettings_SelectedLocaleChanged;
}
// Resubscribe to SelectedLocaleChanged so that we can stay in sync with changes that may be made by other scripts.
LocalizationSettings.SelectedLocaleChanged += LocalizationSettings_SelectedLocaleChanged;
}
void LocalizationSettings_SelectedLocaleChanged(Locale locale)
{
// We need to update the dropdown selection to match.
var selectedIndex = LocalizationSettings.AvailableLocales.Locales.IndexOf(locale);
m_Dropdown.SetValueWithoutNotify(selectedIndex);
}
}
void LocalizationSettings_SelectedLocaleChanged(Locale locale)
{
// We need to update the dropdown selection to match.
var selectedIndex = LocalizationSettings.AvailableLocales.Locales.IndexOf(locale);
m_Dropdown.SetValueWithoutNotify(selectedIndex);
}
}
}

67
UOP1_Project/Assets/Scenes/Managers/PersistentManagers.unity


_initialSize: 10
_SFXEventChannel: {fileID: 11400000, guid: c3c796b7c31ad3647a3fbae42e74764e, type: 2}
_musicEventChannel: {fileID: 11400000, guid: 51854f522e1d88442a90b878b27ea839, type: 2}
_SFXVolumeEventChannel: {fileID: 11400000, guid: 4f26356559fe2254fb6d1f23601bd896,
type: 2}
_musicVolumeEventChannel: {fileID: 11400000, guid: 13e4f5dfe966e1447ba01306e125c0c0,
type: 2}
_masterVolumeEventChannel: {fileID: 11400000, guid: ac033eaf5f8c5154e8df7c10fe3755ad,
type: 2}
audioMixer: {fileID: 24100000, guid: 548a7f001ca6d3d4cb67c8edf84f62a3, type: 2}
_masterVolume: 1
_musicVolume: 0.8

m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 3
m_RootOrder: 4
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &819074216
PrefabInstance:

- target: {fileID: 4398103872695503857, guid: f3351fde0c1164c1da695b12e67d8675,
type: 3}
propertyPath: m_RootOrder
value: 5
value: 6
objectReference: {fileID: 0}
- target: {fileID: 4398103872695503857, guid: f3351fde0c1164c1da695b12e67d8675,
type: 3}

m_LocalScale: {x: 0.85714287, y: 0.85714287, z: 0.85714287}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 4
m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1260877634
GameObject:

m_Script: {fileID: 11500000, guid: 640955832ea89fd4a905f72984aa62ec, type: 3}
m_Name:
m_EditorClassIdentifier:
rotateSpeed: -150
_rotateSpeed: -150
--- !u!114 &1260877637
MonoBehaviour:
m_ObjectHideFlags: 0

m_Father: {fileID: 0}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1424775816
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1424775817}
- component: {fileID: 1424775818}
m_Layer: 0
m_Name: SettingsSystemManager
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1424775817
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1424775816}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 703.64465, y: 417.34354, z: -589.82983}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1424775818
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1424775816}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f22d7dd090554473dafb70b86d96e108, type: 3}
m_Name:
m_EditorClassIdentifier:
SaveSettingsEvent: {fileID: 11400000, guid: e6ff8a48cab21e046a6cdb61bab35111, type: 2}
_currentSettings: {fileID: 11400000, guid: 10a9cfb7ceadb294da93b9773e89074b, type: 2}
_urpAsset: {fileID: 11400000, guid: 19ba41d7c0026c3459d37c2fe90c55a0, type: 2}
_saveSystem: {fileID: 11400000, guid: edc355c4a7d5028408d322b90814e19e, type: 2}
_changeMasterVolumeEventChannel: {fileID: 11400000, guid: ac033eaf5f8c5154e8df7c10fe3755ad,
type: 2}
_changeSFXVolumeEventChannel: {fileID: 11400000, guid: 4f26356559fe2254fb6d1f23601bd896,
type: 2}
_changeMusicVolumeEventChannel: {fileID: 11400000, guid: 13e4f5dfe966e1447ba01306e125c0c0,
type: 2}
--- !u!1 &1492261400
GameObject:
m_ObjectHideFlags: 0

932
UOP1_Project/Assets/Scenes/Menus/MainMenu.unity
文件差异内容过多而无法显示
查看文件

163
UOP1_Project/Assets/Scenes/Settings System.unity
文件差异内容过多而无法显示
查看文件

3
UOP1_Project/Assets/ScriptableObjects/SaveSystem/SaveSystem.asset


m_Script: {fileID: 11500000, guid: 428b35af66b1ab44c9cca9bb53864745, type: 3}
m_Name: SaveSystem
m_EditorClassIdentifier:
_saveSettingsEvent: {fileID: 11400000, guid: e6ff8a48cab21e046a6cdb61bab35111, type: 2}
_currentSettings: {fileID: 11400000, guid: 10a9cfb7ceadb294da93b9773e89074b, type: 2}
_questManagerSO: {fileID: 11400000, guid: dacb138678b7c2344b59c68de5dc18db, type: 2}
saveFilename: save.chop
backupSaveFilename: save.chop.bak

_finishedQuestlineItemsGUIds: []
settings: {fileID: 0}

33
UOP1_Project/Assets/Scripts/Audio/AudioManager.cs


[SerializeField] private AudioCueEventChannelSO _SFXEventChannel = default;
[Tooltip("The SoundManager listens to this event, fired by objects in any scene, to play Music")]
[SerializeField] private AudioCueEventChannelSO _musicEventChannel = default;
[Tooltip("The SoundManager listens to this event, fired by objects in any scene, to change SFXs volume")]
[SerializeField] private FloatEventChannelSO _SFXVolumeEventChannel = default;
[Tooltip("The SoundManager listens to this event, fired by objects in any scene, to change Music volume")]
[SerializeField] private FloatEventChannelSO _musicVolumeEventChannel = default;
[Tooltip("The SoundManager listens to this event, fired by objects in any scene, to change Master volume")]
[SerializeField] private FloatEventChannelSO _masterVolumeEventChannel = default;
[Header("Audio control")]

_musicEventChannel.OnAudioCuePlayRequested += PlayMusicTrack;
_musicEventChannel.OnAudioCueStopRequested += StopMusic;
_masterVolumeEventChannel.OnEventRaised += ChangeMasterVolume;
_musicVolumeEventChannel.OnEventRaised += ChangeMusicVolume;
_SFXVolumeEventChannel.OnEventRaised += ChangeSFXVolume;
}
private void OnDestroy()

_musicEventChannel.OnAudioCuePlayRequested -= PlayMusicTrack;
_musicEventChannel.OnAudioCuePlayRequested -= PlayMusicTrack;
_musicVolumeEventChannel.OnEventRaised -= ChangeMusicVolume;
_SFXVolumeEventChannel.OnEventRaised -= ChangeSFXVolume;
_masterVolumeEventChannel.OnEventRaised -= ChangeMasterVolume;
}
/// <summary>

SetGroupVolume("SFXVolume", _sfxVolume);
}
}
void ChangeMasterVolume(float newVolume)
{
_masterVolume = newVolume;
SetGroupVolume("MasterVolume", _masterVolume);
}
void ChangeMusicVolume(float newVolume)
{
_musicVolume = newVolume;
SetGroupVolume("MusicVolume", _musicVolume);
}
void ChangeSFXVolume(float newVolume)
{
_sfxVolume = newVolume;
SetGroupVolume("SFXVolume", _sfxVolume);
}
public void SetGroupVolume(string parameterName, float normalizedVolume)
{
bool volumeSet = audioMixer.SetFloat(parameterName, NormalizedToMixerValue(normalizedVolume));

1
UOP1_Project/Assets/Scripts/Gameplay/GameStateSO.cs


}
public void ChangeStateFromCombat(Transform enemy)
{
Debug.Log("ChangeStateFromCombat :: " + _enemiesInCombat.Count);
if (_enemiesInCombat.Exists(o => o == enemy))
{
_enemiesInCombat.Remove(enemy);

80
UOP1_Project/Assets/Scripts/Input/GameInput.cs


""interactions"": """"
},
{
""name"": ""SaveActionButton"",
""type"": ""Button"",
""id"": ""3707d967-26ed-4b90-902c-15236e8aacc2"",
""expectedControlType"": ""Button"",
""processors"": """",
""interactions"": """"
},
{
""name"": ""ResetActionButton"",
""type"": ""Button"",
""id"": ""c92e03f6-273c-4307-ae0f-de0e3a13e636"",
""expectedControlType"": ""Button"",
""processors"": """",
""interactions"": """"
},
{
""name"": ""Click"",
""type"": ""PassThrough"",
""id"": ""3c44a1cc-f827-4160-814f-7ac94e688aa5"",

""action"": ""CloseInventory"",
""isComposite"": false,
""isPartOfComposite"": false
},
{
""name"": """",
""id"": ""aa5835ba-5794-4b0d-a9e1-758f1f155560"",
""path"": ""<Keyboard>/q"",
""interactions"": """",
""processors"": """",
""groups"": ""KeyboardOrGamepad"",
""action"": ""SaveActionButton"",
""isComposite"": false,
""isPartOfComposite"": false
},
{
""name"": """",
""id"": ""b1e73345-2bb0-47b9-8692-54a929aa9516"",
""path"": ""<Gamepad>/buttonWest"",
""interactions"": """",
""processors"": """",
""groups"": ""KeyboardOrGamepad"",
""action"": ""SaveActionButton"",
""isComposite"": false,
""isPartOfComposite"": false
},
{
""name"": """",
""id"": ""85fed4bd-eeca-4bb2-a0ab-eec73cab776a"",
""path"": ""<Keyboard>/r"",
""interactions"": """",
""processors"": """",
""groups"": ""KeyboardOrGamepad"",
""action"": ""ResetActionButton"",
""isComposite"": false,
""isPartOfComposite"": false
},
{
""name"": """",
""id"": ""0f41a27d-da4f-4d33-b8cc-9fa543b4e4cf"",
""path"": ""<Gamepad>/buttonEast"",
""interactions"": """",
""processors"": """",
""groups"": ""KeyboardOrGamepad"",
""action"": ""ResetActionButton"",
""isComposite"": false,
""isPartOfComposite"": false
}
]
},

m_Menus_Unpause = m_Menus.FindAction("Unpause", throwIfNotFound: true);
m_Menus_ChangeTab = m_Menus.FindAction("ChangeTab", throwIfNotFound: true);
m_Menus_InventoryActionButton = m_Menus.FindAction("InventoryActionButton", throwIfNotFound: true);
m_Menus_SaveActionButton = m_Menus.FindAction("SaveActionButton", throwIfNotFound: true);
m_Menus_ResetActionButton = m_Menus.FindAction("ResetActionButton", throwIfNotFound: true);
m_Menus_Click = m_Menus.FindAction("Click", throwIfNotFound: true);
m_Menus_Point = m_Menus.FindAction("Point", throwIfNotFound: true);
m_Menus_RightClick = m_Menus.FindAction("RightClick", throwIfNotFound: true);

private readonly InputAction m_Menus_Unpause;
private readonly InputAction m_Menus_ChangeTab;
private readonly InputAction m_Menus_InventoryActionButton;
private readonly InputAction m_Menus_SaveActionButton;
private readonly InputAction m_Menus_ResetActionButton;
private readonly InputAction m_Menus_Click;
private readonly InputAction m_Menus_Point;
private readonly InputAction m_Menus_RightClick;

public InputAction @Unpause => m_Wrapper.m_Menus_Unpause;
public InputAction @ChangeTab => m_Wrapper.m_Menus_ChangeTab;
public InputAction @InventoryActionButton => m_Wrapper.m_Menus_InventoryActionButton;
public InputAction @SaveActionButton => m_Wrapper.m_Menus_SaveActionButton;
public InputAction @ResetActionButton => m_Wrapper.m_Menus_ResetActionButton;
public InputAction @Click => m_Wrapper.m_Menus_Click;
public InputAction @Point => m_Wrapper.m_Menus_Point;
public InputAction @RightClick => m_Wrapper.m_Menus_RightClick;

@InventoryActionButton.started -= m_Wrapper.m_MenusActionsCallbackInterface.OnInventoryActionButton;
@InventoryActionButton.performed -= m_Wrapper.m_MenusActionsCallbackInterface.OnInventoryActionButton;
@InventoryActionButton.canceled -= m_Wrapper.m_MenusActionsCallbackInterface.OnInventoryActionButton;
@SaveActionButton.started -= m_Wrapper.m_MenusActionsCallbackInterface.OnSaveActionButton;
@SaveActionButton.performed -= m_Wrapper.m_MenusActionsCallbackInterface.OnSaveActionButton;
@SaveActionButton.canceled -= m_Wrapper.m_MenusActionsCallbackInterface.OnSaveActionButton;
@ResetActionButton.started -= m_Wrapper.m_MenusActionsCallbackInterface.OnResetActionButton;
@ResetActionButton.performed -= m_Wrapper.m_MenusActionsCallbackInterface.OnResetActionButton;
@ResetActionButton.canceled -= m_Wrapper.m_MenusActionsCallbackInterface.OnResetActionButton;
@Click.started -= m_Wrapper.m_MenusActionsCallbackInterface.OnClick;
@Click.performed -= m_Wrapper.m_MenusActionsCallbackInterface.OnClick;
@Click.canceled -= m_Wrapper.m_MenusActionsCallbackInterface.OnClick;

@InventoryActionButton.started += instance.OnInventoryActionButton;
@InventoryActionButton.performed += instance.OnInventoryActionButton;
@InventoryActionButton.canceled += instance.OnInventoryActionButton;
@SaveActionButton.started += instance.OnSaveActionButton;
@SaveActionButton.performed += instance.OnSaveActionButton;
@SaveActionButton.canceled += instance.OnSaveActionButton;
@ResetActionButton.started += instance.OnResetActionButton;
@ResetActionButton.performed += instance.OnResetActionButton;
@ResetActionButton.canceled += instance.OnResetActionButton;
@Click.started += instance.OnClick;
@Click.performed += instance.OnClick;
@Click.canceled += instance.OnClick;

void OnUnpause(InputAction.CallbackContext context);
void OnChangeTab(InputAction.CallbackContext context);
void OnInventoryActionButton(InputAction.CallbackContext context);
void OnSaveActionButton(InputAction.CallbackContext context);
void OnResetActionButton(InputAction.CallbackContext context);
void OnClick(InputAction.CallbackContext context);
void OnPoint(InputAction.CallbackContext context);
void OnRightClick(InputAction.CallbackContext context);

13
UOP1_Project/Assets/Scripts/Input/InputReader.cs


public event UnityAction attackCanceledEvent = delegate { };
public event UnityAction interactEvent = delegate { }; // Used to talk, pickup objects, interact with tools like the cooking cauldron
public event UnityAction inventoryActionButtonEvent = delegate { };
public event UnityAction saveActionButtonEvent = delegate { };
public event UnityAction resetActionButtonEvent = delegate { };
public event UnityAction<Vector2> moveEvent = delegate { };
public event UnityAction<Vector2, bool> cameraMoveEvent = delegate { };
public event UnityAction enableMouseControlCameraEvent = delegate { };

inventoryActionButtonEvent.Invoke();
}
public void OnSaveActionButton(InputAction.CallbackContext context)
{
if (context.phase == InputActionPhase.Performed)
saveActionButtonEvent.Invoke();
}
public void OnResetActionButton(InputAction.CallbackContext context)
{
if (context.phase == InputActionPhase.Performed)
resetActionButtonEvent.Invoke();
}
public void OnInteract(InputAction.CallbackContext context)
{
if ((context.phase == InputActionPhase.Performed) && (gameStateManager.CurrentGameState == GameState.Gameplay)) // Interaction is only possible when in gameplay GameState

22
UOP1_Project/Assets/Scripts/SaveSystem/Save.cs


using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Localization;
/// <summary>
/// This class contains all the variables that will be serialized and saved to a file.<br/>

public string _locationId;
public List<SerializedItemStack> _itemStacks = new List<SerializedItemStack>();
public List<string> _finishedQuestlineItemsGUIds = new List<string>();
public float _masterVolume = default;
public float _musicVolume = default;
public float _sfxVolume = default;
public int _resolutionsIndex = default;
public int _antiAliasingIndex = default;
public float _shadowDistance = default;
public bool _isFullscreen = default;
public Locale _currentLocale = default;
public void SaveSettings(SettingsSO settings)
{
_masterVolume = settings.MasterVolume;
_musicVolume = settings.MusicVolume;
_sfxVolume = settings.SfxVolume;
_resolutionsIndex = settings.ResolutionsIndex;
_antiAliasingIndex = settings.AntiAliasingIndex;
_shadowDistance = settings.ShadowDistance;
_isFullscreen = settings.IsFullscreen;
_currentLocale = settings.CurrentLocale;
}
public string ToJson()
{
return JsonUtility.ToJson(this);

15
UOP1_Project/Assets/Scripts/SaveSystem/SaveSystem.cs


public class SaveSystem : ScriptableObject
{
[SerializeField] private VoidEventChannelSO _saveSettingsEvent = default;
[SerializeField]
private QuestManagerSO _questManagerSO = default;
[SerializeField] private SettingsSO _currentSettings = default;
[SerializeField] private QuestManagerSO _questManagerSO = default;
public string saveFilename = "save.chop";
public string backupSaveFilename = "save.chop.bak";
public Save saveData = new Save();

_saveSettingsEvent.OnEventRaised += SaveSettings;
_saveSettingsEvent.OnEventRaised -= SaveSettings;
_loadLocation.OnLoadingRequested -= CacheLoadLocations;
}

{
if (FileManager.WriteToFile(saveFilename, saveData.ToJson()))
{
Debug.Log("Save successful");
Debug.Log("Save successful " + saveFilename);
}
}
}

_playerInventory.Init();
_questManagerSO.ResetQuestlines();
SaveDataToDisk();
}
void SaveSettings()
{
saveData.SaveSettings(_currentSettings);
}
}

60
UOP1_Project/Assets/Scripts/Systems/Settings/SettingsSystem.cs


using UnityEngine;
using UnityEngine.Localization;
using UnityEngine.Localization.Settings;
using UnityEngine.Rendering.Universal;
[SerializeField] SettingsSystemGeneralComponent generalComponent;
[SerializeField] SettingsSystemGraphicsComponent graphicsComponent;
[SerializeField] SettingsSystemAudioComponent audioComponent;
[SerializeField] private VoidEventChannelSO SaveSettingsEvent = default;
public SettingsSystemGeneralComponent.LanguageSetting Language => generalComponent.Language;
public bool FullScreen => graphicsComponent.FullScreen;
public float MusicVolume => audioComponent.MusicVolume;
public float SfxVolume => audioComponent.SfxVolume;
[SerializeField] private SettingsSO _currentSettings = default;
[SerializeField] private UniversalRenderPipelineAsset _urpAsset = default;
[SerializeField] private SaveSystem _saveSystem = default;
}
[SerializeField] private FloatEventChannelSO _changeMasterVolumeEventChannel = default;
[SerializeField] private FloatEventChannelSO _changeSFXVolumeEventChannel = default;
[SerializeField] private FloatEventChannelSO _changeMusicVolumeEventChannel = default;
private void Awake()
{
_saveSystem.LoadSaveDataFromDisk();
_currentSettings.LoadSavedSettings(_saveSystem.saveData);
SetCurrentSettings();
}
private void OnEnable()
{
SaveSettingsEvent.OnEventRaised += SaveSettings;
}
private void OnDisable()
{
SaveSettingsEvent.OnEventRaised -= SaveSettings;
}
/// <summary>
/// Set current settings
/// </summary>
void SetCurrentSettings()
{
_changeMusicVolumeEventChannel.RaiseEvent(_currentSettings.MusicVolume);//raise event for volume change
_changeSFXVolumeEventChannel.RaiseEvent(_currentSettings.SfxVolume); //raise event for volume change
_changeMasterVolumeEventChannel.RaiseEvent(_currentSettings.MasterVolume); //raise event for volume change
Resolution currentResolution = Screen.resolutions[_currentSettings.ResolutionsIndex];
Screen.SetResolution(currentResolution.width, currentResolution.height, _currentSettings.IsFullscreen);
_urpAsset.shadowDistance = _currentSettings.ShadowDistance;
_urpAsset.msaaSampleCount = _currentSettings.AntiAliasingIndex;
LocalizationSettings.SelectedLocale = _currentSettings.CurrentLocale;
}
void SaveSettings()
{
_saveSystem.SaveDataToDisk();
}
}

2
UOP1_Project/Assets/Scripts/Systems/Settings/SettingsGraphicsComponent.cs.meta


fileFormatVersion: 2
guid: 8d1813776c092430c8317fdd5290dc57
guid: 890259a38fce41e4aa268b1da45c2118
MonoImporter:
externalObjects: {}
serializedVersion: 2

2
UOP1_Project/Assets/Scripts/Systems/Settings/SettingsSO.cs.meta


fileFormatVersion: 2
guid: bb22202e544f74ee4b52c6ab7035e5e2
guid: 141e21bdb3dba4642b62b856fd06879b
MonoImporter:
externalObjects: {}
serializedVersion: 2

578
UOP1_Project/Assets/Scripts/UI/Inventory/UIInventory.cs


public class UIInventory : MonoBehaviour
{
[SerializeField]
private InventorySO _currentInventory = default;
[SerializeField]
private InventorySO _currentInventory = default;
[SerializeField]
private UIInventoryItem _itemPrefab = default;
[SerializeField]
private UIInventoryItem _itemPrefab = default;
[SerializeField]
private GameObject _contentParent = default;
[SerializeField]
private GameObject _contentParent = default;
[FormerlySerializedAs("_inspectorFiller")]
[SerializeField]
private UIInventoryInspector _inspectorPanel = default;
[FormerlySerializedAs("_inspectorFiller")]
[SerializeField]
private UIInventoryInspector _inspectorPanel = default;
[FormerlySerializedAs("_tabFiller")]
[SerializeField]
private UIInventoryTabs _tabsPanel = default;
[FormerlySerializedAs("_tabFiller")]
[SerializeField]
private UIInventoryTabs _tabsPanel = default;
[FormerlySerializedAs("_buttonFiller")]
[SerializeField]
private UIInventoryActionButton _actionButton = default;
[FormerlySerializedAs("_buttonFiller")]
[SerializeField]
private UIActionButton _actionButton = default;
InventoryTabSO _selectedTab = default;
InventoryTabSO _selectedTab = default;
[SerializeField]
List<InventoryTabSO> _tabTypesList = new List<InventoryTabSO>();
[SerializeField]
List<InventoryTabSO> _tabTypesList = new List<InventoryTabSO>();
private int selectedItemId = -1;
private int selectedItemId = -1;
[FormerlySerializedAs("_instanciatedItems")]
[SerializeField]
private List<UIInventoryItem> _availableItemSlots = default;
[FormerlySerializedAs("_instanciatedItems")]
[SerializeField]
private List<UIInventoryItem> _availableItemSlots = default;
[SerializeField]
private VoidEventChannelSO _onInteractionEndedEvent = default;
[SerializeField]
private VoidEventChannelSO _onInteractionEndedEvent = default;
[SerializeField]
private ItemEventChannelSO _useItemEvent = default;
[SerializeField]
private ItemEventChannelSO _equipItemEvent = default;
[SerializeField]
private ItemEventChannelSO _cookRecipeEvent = default;
[SerializeField]
private ItemEventChannelSO _useItemEvent = default;
[SerializeField]
private ItemEventChannelSO _equipItemEvent = default;
[SerializeField]
private ItemEventChannelSO _cookRecipeEvent = default;
[SerializeField]
private InputReader _inputReader = default;
[SerializeField]
private InputReader _inputReader = default;
public UnityAction Closed;
bool _isNearPot = false;
public UnityAction Closed;
bool _isNearPot = false;
private void OnEnable()
{
//Check if the event exists to avoid errors
private void OnEnable()
{
//Check if the event exists to avoid errors
_actionButton.Clicked += OnActionButtonClicked;
_actionButton.Clicked += OnActionButtonClicked;
_tabsPanel.TabChanged += OnChangeTab;
_tabsPanel.TabChanged += OnChangeTab;
_onInteractionEndedEvent.OnEventRaised += InteractionEnded;
_onInteractionEndedEvent.OnEventRaised += InteractionEnded;
for (int i = 0; i < _availableItemSlots.Count; i++)
{
_availableItemSlots[i].ItemSelected += InspectItem;
}
for (int i = 0; i < _availableItemSlots.Count; i++)
{
_availableItemSlots[i].ItemSelected += InspectItem;
}
_inputReader.TabSwitched += OnSwitchTab;
}
_inputReader.TabSwitched += OnSwitchTab;
}
private void OnDisable()
{
_actionButton.Clicked -= OnActionButtonClicked;
private void OnDisable()
{
_actionButton.Clicked -= OnActionButtonClicked;
_tabsPanel.TabChanged -= OnChangeTab;
_tabsPanel.TabChanged -= OnChangeTab;
for (int i = 0; i < _availableItemSlots.Count; i++)
{
_availableItemSlots[i].ItemSelected -= InspectItem;
}
for (int i = 0; i < _availableItemSlots.Count; i++)
{
_availableItemSlots[i].ItemSelected -= InspectItem;
}
_inputReader.TabSwitched -= OnSwitchTab;
}
_inputReader.TabSwitched -= OnSwitchTab;
}
void OnSwitchTab(float orientation)
{
void OnSwitchTab(float orientation)
{
if (orientation != 0)
{
bool isLeft = orientation < 0;
int initialIndex = _tabTypesList.FindIndex(o => o == _selectedTab);
if (initialIndex != -1)
{
if (isLeft)
{
initialIndex--;
}
else
{
initialIndex++;
}
if (orientation != 0)
{
bool isLeft = orientation < 0;
int initialIndex = _tabTypesList.FindIndex(o => o == _selectedTab);
if (initialIndex != -1)
{
if (isLeft)
{
initialIndex--;
}
else
{
initialIndex++;
}
initialIndex = Mathf.Clamp(initialIndex, 0, _tabTypesList.Count - 1);
}
initialIndex = Mathf.Clamp(initialIndex, 0, _tabTypesList.Count - 1);
}
OnChangeTab(_tabTypesList[initialIndex]);
}
OnChangeTab(_tabTypesList[initialIndex]);
}
}
}
public void FillInventory(InventoryTabType _selectedTabType = InventoryTabType.CookingItem, bool isNearPot = false)
{
_isNearPot = isNearPot;
public void FillInventory(InventoryTabType _selectedTabType = InventoryTabType.CookingItem, bool isNearPot = false)
{
_isNearPot = isNearPot;
if ((_tabTypesList.Exists(o => o.TabType == _selectedTabType)))
{
_selectedTab = _tabTypesList.Find(o => o.TabType == _selectedTabType);
}
else
{
if (_tabTypesList != null)
{
if (_tabTypesList.Count > 0)
{
_selectedTab = _tabTypesList[0];
}
}
if ((_tabTypesList.Exists(o => o.TabType == _selectedTabType)))
{
_selectedTab = _tabTypesList.Find(o => o.TabType == _selectedTabType);
}
else
{
if (_tabTypesList != null)
{
if (_tabTypesList.Count > 0)
{
_selectedTab = _tabTypesList[0];
}
}
}
}
if (_selectedTab != null)
{
SetTabs(_tabTypesList, _selectedTab);
List<ItemStack> listItemsToShow = new List<ItemStack>();
listItemsToShow = _currentInventory.Items.FindAll(o => o.Item.ItemType.TabType == _selectedTab);
if (_selectedTab != null)
{
SetTabs(_tabTypesList, _selectedTab);
List<ItemStack> listItemsToShow = new List<ItemStack>();
listItemsToShow = _currentInventory.Items.FindAll(o => o.Item.ItemType.TabType == _selectedTab);
FillInvetoryItems(listItemsToShow);
}
else
{
FillInvetoryItems(listItemsToShow);
}
else
{
Debug.LogError("There's no selected tab ");
Debug.LogError("There's no selected tab ");
}
}
}
}
void InteractionEnded()
{
_isNearPot = false;
}
void InteractionEnded()
{
_isNearPot = false;
}
void SetTabs(List<InventoryTabSO> typesList, InventoryTabSO selectedType)
{
void SetTabs(List<InventoryTabSO> typesList, InventoryTabSO selectedType)
{
_tabsPanel.SetTabs(typesList, selectedType);
_tabsPanel.SetTabs(typesList, selectedType);
}
void FillInvetoryItems(List<ItemStack> listItemsToShow)
{
}
void FillInvetoryItems(List<ItemStack> listItemsToShow)
{
if (_availableItemSlots == null)
_availableItemSlots = new List<UIInventoryItem>();
if (_availableItemSlots == null)
_availableItemSlots = new List<UIInventoryItem>();
int maxCount = Mathf.Max(listItemsToShow.Count, _availableItemSlots.Count);
int maxCount = Mathf.Max(listItemsToShow.Count, _availableItemSlots.Count);
for (int i = 0; i < maxCount; i++)
{
if (i < listItemsToShow.Count)
{
for (int i = 0; i < maxCount; i++)
{
if (i < listItemsToShow.Count)
{
//fill
bool isSelected = selectedItemId == i;
_availableItemSlots[i].SetItem(listItemsToShow[i], isSelected);
//fill
bool isSelected = selectedItemId == i;
_availableItemSlots[i].SetItem(listItemsToShow[i], isSelected);
}
else if (i < _availableItemSlots.Count)
{
//Desactive
_availableItemSlots[i].SetInactiveItem();
}
}
else if (i < _availableItemSlots.Count)
{
//Desactive
_availableItemSlots[i].SetInactiveItem();
}
}
HideItemInformation();
//unselect selected Item
if (selectedItemId >= 0)
{
UnselectItem(selectedItemId);
selectedItemId = -1;
}
//hover First Element
if (_availableItemSlots.Count > 0)
{
_availableItemSlots[0].SelectFirstElement();
}
}
HideItemInformation();
//unselect selected Item
if (selectedItemId >= 0)
{
UnselectItem(selectedItemId);
selectedItemId = -1;
}
//hover First Element
if (_availableItemSlots.Count > 0)
{
_availableItemSlots[0].SelectFirstElement();
}
}
}
void UpdateItemInInventory(ItemStack itemToUpdate, bool removeItem)
{
if (_availableItemSlots == null)
_availableItemSlots = new List<UIInventoryItem>();
void UpdateItemInInventory(ItemStack itemToUpdate, bool removeItem)
{
if (_availableItemSlots == null)
_availableItemSlots = new List<UIInventoryItem>();
if (removeItem)
{
if (_availableItemSlots.Exists(o => o._currentItem == itemToUpdate))
{
if (removeItem)
{
if (_availableItemSlots.Exists(o => o._currentItem == itemToUpdate))
{
int index = _availableItemSlots.FindIndex(o => o._currentItem == itemToUpdate);
_availableItemSlots[index].SetInactiveItem();
int index = _availableItemSlots.FindIndex(o => o._currentItem == itemToUpdate);
_availableItemSlots[index].SetInactiveItem();
}
}
}
else
{
int index = 0;
//if the item has already been created
if (_availableItemSlots.Exists(o => o._currentItem == itemToUpdate))
{
}
else
{
int index = 0;
//if the item has already been created
if (_availableItemSlots.Exists(o => o._currentItem == itemToUpdate))
{
index = _availableItemSlots.FindIndex(o => o._currentItem == itemToUpdate);
index = _availableItemSlots.FindIndex(o => o._currentItem == itemToUpdate);
}
//if the item needs to be created
else
{
//if the new item needs to be instantiated
if (_currentInventory.Items.Count > _availableItemSlots.Count)
{
//instantiate
UIInventoryItem instantiatedPrefab = Instantiate(_itemPrefab, _contentParent.transform) as UIInventoryItem;
_availableItemSlots.Add(instantiatedPrefab);
}
//if the item needs to be created
else
{
//if the new item needs to be instantiated
if (_currentInventory.Items.Count > _availableItemSlots.Count)
{
//instantiate
UIInventoryItem instantiatedPrefab = Instantiate(_itemPrefab, _contentParent.transform) as UIInventoryItem;
_availableItemSlots.Add(instantiatedPrefab);
}
//find the last instantiated game object not used
index = _currentInventory.Items.Count;
}
//find the last instantiated game object not used
index = _currentInventory.Items.Count;
}
}
//set item
bool isSelected = selectedItemId == index;
_availableItemSlots[index].SetItem(itemToUpdate, isSelected);
//set item
bool isSelected = selectedItemId == index;
_availableItemSlots[index].SetItem(itemToUpdate, isSelected);
}
}
}
}
public void InspectItem(ItemSO itemToInspect)
{
if (_availableItemSlots.Exists(o => o._currentItem.Item == itemToInspect))
{
int itemIndex = _availableItemSlots.FindIndex(o => o._currentItem.Item == itemToInspect);
public void InspectItem(ItemSO itemToInspect)
{
if (_availableItemSlots.Exists(o => o._currentItem.Item == itemToInspect))
{
int itemIndex = _availableItemSlots.FindIndex(o => o._currentItem.Item == itemToInspect);
//unselect selected Item
if (selectedItemId >= 0 && selectedItemId != itemIndex)
UnselectItem(selectedItemId);
//unselect selected Item
if (selectedItemId >= 0 && selectedItemId != itemIndex)
UnselectItem(selectedItemId);
//change Selected ID
selectedItemId = itemIndex;
//change Selected ID
selectedItemId = itemIndex;
//show Information
ShowItemInformation(itemToInspect);
//show Information
ShowItemInformation(itemToInspect);
//check if interactable
bool isInteractable = true;
_actionButton.gameObject.SetActive(true);
if (itemToInspect.ItemType.ActionType == ItemInventoryActionType.Cook)
{
isInteractable = _currentInventory.hasIngredients(itemToInspect.IngredientsList) && _isNearPot;
//check if interactable
bool isInteractable = true;
_actionButton.gameObject.SetActive(true);
if (itemToInspect.ItemType.ActionType == ItemInventoryActionType.Cook)
{
isInteractable = _currentInventory.hasIngredients(itemToInspect.IngredientsList) && _isNearPot;
}
else if (itemToInspect.ItemType.ActionType == ItemInventoryActionType.DoNothing)
{
isInteractable = false;
_actionButton.gameObject.SetActive(false);
}
}
else if (itemToInspect.ItemType.ActionType == ItemInventoryActionType.DoNothing)
{
isInteractable = false;
_actionButton.gameObject.SetActive(false);
}
//set button
_actionButton.FillInventoryButton(itemToInspect.ItemType, isInteractable);
//set button
_actionButton.FillInventoryButton(itemToInspect.ItemType, isInteractable);
}
}
}
}
void ShowItemInformation(ItemSO item)
{
void ShowItemInformation(ItemSO item)
{
bool[] availabilityArray = _currentInventory.IngredientsAvailability(item.IngredientsList);
bool[] availabilityArray = _currentInventory.IngredientsAvailability(item.IngredientsList);
_inspectorPanel.FillInspector(item, availabilityArray);
_inspectorPanel.gameObject.SetActive(true);
_inspectorPanel.FillInspector(item, availabilityArray);
_inspectorPanel.gameObject.SetActive(true);
}
void HideItemInformation()
{
_actionButton.gameObject.SetActive(false);
_inspectorPanel.gameObject.SetActive(false);
}
void HideItemInformation()
{
_actionButton.gameObject.SetActive(false);
_inspectorPanel.gameObject.SetActive(false);
}
}
void UnselectItem(int itemIndex)
{
void UnselectItem(int itemIndex)
{
if (_availableItemSlots.Count > itemIndex)
{
_availableItemSlots[itemIndex].UnselectItem();
if (_availableItemSlots.Count > itemIndex)
{
_availableItemSlots[itemIndex].UnselectItem();
}
}
void UpdateInventory()
{
FillInventory(_selectedTab.TabType, _isNearPot);
}
}
}
void UpdateInventory()
{
FillInventory(_selectedTab.TabType, _isNearPot);
}
void OnActionButtonClicked()
{
void OnActionButtonClicked()
{
//find the selected Item
if (_availableItemSlots.Count > selectedItemId && selectedItemId > -1)
{
//find the item
ItemSO itemToActOn = new ItemSO();
itemToActOn = _availableItemSlots[selectedItemId]._currentItem.Item;
//find the selected Item
if (_availableItemSlots.Count > selectedItemId && selectedItemId > -1)
{
//find the item
ItemSO itemToActOn = new ItemSO();
itemToActOn = _availableItemSlots[selectedItemId]._currentItem.Item;
//check the selected Item type
//call action function depending on the itemType
switch (itemToActOn.ItemType.ActionType)
{
//check the selected Item type
//call action function depending on the itemType
switch (itemToActOn.ItemType.ActionType)
{
case ItemInventoryActionType.Cook:
CookRecipe(itemToActOn);
break;
case ItemInventoryActionType.Use:
UseItem(itemToActOn);
break;
case ItemInventoryActionType.Equip:
EquipItem(itemToActOn);
break;
default:
case ItemInventoryActionType.Cook:
CookRecipe(itemToActOn);
break;
case ItemInventoryActionType.Use:
UseItem(itemToActOn);
break;
case ItemInventoryActionType.Equip:
EquipItem(itemToActOn);
break;
default:
break;
break;
}
}
}
}
}
void UseItem(ItemSO itemToUse)
{
Debug.Log("USE ITEM " + itemToUse.name);
}
void UseItem(ItemSO itemToUse)
{
Debug.Log("USE ITEM " + itemToUse.name);
_useItemEvent.OnEventRaised(itemToUse);
//update inventory
UpdateInventory();
}
_useItemEvent.OnEventRaised(itemToUse);
//update inventory
UpdateInventory();
}
void EquipItem(ItemSO itemToUse)
{
Debug.Log("Equip ITEM " + itemToUse.name);
_equipItemEvent.OnEventRaised(itemToUse);
}
void EquipItem(ItemSO itemToUse)
{
Debug.Log("Equip ITEM " + itemToUse.name);
_equipItemEvent.OnEventRaised(itemToUse);
}
void CookRecipe(ItemSO recipeToCook)
{
void CookRecipe(ItemSO recipeToCook)
{
//get item
_cookRecipeEvent.OnEventRaised(recipeToCook);
//get item
_cookRecipeEvent.OnEventRaised(recipeToCook);
//update inspector
InspectItem(recipeToCook);
//update inspector
InspectItem(recipeToCook);
//update inventory
UpdateInventory();
//update inventory
UpdateInventory();
}
}
void OnChangeTab(InventoryTabSO tabType)
{
void OnChangeTab(InventoryTabSO tabType)
{
FillInventory(tabType.TabType, _isNearPot);
FillInventory(tabType.TabType, _isNearPot);
}
public void CloseInventory()
{
Closed.Invoke();
}
}
public void CloseInventory()
{
Closed.Invoke();
}
}

8
UOP1_Project/Assets/Scripts/UI/Inventory/UIActionButton.cs


using UnityEngine.UI;
using UnityEngine.Localization.Components;
using UnityEngine.Events;
enum ActionType
{
Save,
Reset
public class UIInventoryActionButton : MonoBehaviour
}
public class UIActionButton : MonoBehaviour
{
[SerializeField]

}
}
public void ClickActionButton()
{
Clicked.Invoke();

33
UOP1_Project/Assets/Scripts/UI/Settings/UIPaginationFiller.cs


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.UI;
[SerializeField] private Image _imagePaginationPrefab= default;
[SerializeField] private Image _imagePaginationPrefab = default;
HorizontalLayoutGroup horizontalLayout = default;
private void Start()
[SerializeField]
private int maxSpacing = 10;
[SerializeField]
private int minSpacing = 1;
private void Awake()
//_instantiatedImages = new List<Image>();
}
public void SetPagination(int paginationCount, int selectedPaginationIndex)

if (i >= _instantiatedImages.Count)
{
Image instantiatedImage = Instantiate(_imagePaginationPrefab, _parentPagination);
_instantiatedImages.Add(instantiatedImage);
_instantiatedImages.Add(instantiatedImage);
}
if (i < paginationCount)

}
}
SetCurrentPagination(selectedPaginationIndex);
}
}
horizontalLayout = GetComponent<HorizontalLayoutGroup>();
if (paginationCount < 10)
{ horizontalLayout.spacing = maxSpacing; }
else if (paginationCount >= 10 && paginationCount < 20)
{
horizontalLayout.spacing = (maxSpacing - minSpacing) / 2;
}
else
{
horizontalLayout.spacing = minSpacing;
}
}
public void SetCurrentPagination(int selectedPaginationIndex)

}
}
else
Debug.LogError("Error in pagination number");
Debug.LogError("Error in pagination number");
}
}

55
UOP1_Project/Assets/Scripts/UI/Settings/UISettingFieldsFiller.cs


[SerializeField]
private UISettingItemFiller[] _settingfieldsList = default;
[SerializeField]
private InputReader _inputReader = default;
private InputReader _inputReader = default;
if(i < settingItems.Count)
if (i < settingItems.Count)
{
SetField(settingItems[i], _settingfieldsList[i]);
_settingfieldsList[i].gameObject.SetActive(true);

}
}
int paginationCount=0;
int selectedPaginationIndex=0;
string selectedOption=default;
LocalizedString fieldTitle=field.title;
SettingFieldType fieldType= field.settingFieldType;
switch (field.settingFieldType)
int paginationCount = 0;
int selectedPaginationIndex = 0;
string selectedOption = default;
LocalizedString fieldTitle = field.title;
SettingFieldType fieldType = field.settingFieldType;
switch (field.settingFieldType)
selectedOption = LocalizationSettings.SelectedLocale.LocaleName;
selectedOption = LocalizationSettings.SelectedLocale.LocaleName;
break;
case SettingFieldType.AntiAliasing:

else
selectedOption = "Off";
break;
case SettingFieldType.GraphicQuality:
selectedPaginationIndex = QualitySettings.GetQualityLevel();
paginationCount = 6;
selectedOption = QualitySettings.names[QualitySettings.GetQualityLevel()];
case SettingFieldType.ShadowDistance:
case SettingFieldType.Shadow:
case SettingFieldType.ShadowQuality:
paginationCount = 10;
selectedPaginationIndex = 5;
selectedOption = "5";
break;
paginationCount = 10;
selectedPaginationIndex = 5;
selectedOption = "5";
break;
uiField.FillSettingField(paginationCount, selectedPaginationIndex, selectedOption, fieldTitle, fieldType);
uiField.FillSettingField(paginationCount, selectedPaginationIndex, selectedOption);
string title = "";
string title = "";
case (int) QualityLevel.Beautiful:
title = QualityLevel.Beautiful.ToString();
case (int)QualityLevel.Beautiful:
title = QualityLevel.Beautiful.ToString();
break;
case (int)QualityLevel.Fantastic:
title = QualityLevel.Fantastic.ToString();

}
int IsFullscreen()
{
if(Screen.fullScreen)
if (Screen.fullScreen)
return 0;
}else
return 0;
}
else
return 1;
return 1;
}
}

68
UOP1_Project/Assets/Scripts/UI/Settings/UISettingItemFiller.cs


using UnityEngine.UI;
using TMPro;
using UnityEngine.Localization.Components;
using UnityEngine.Localization;
using UnityEngine.Localization;
[SerializeField] private TextMeshProUGUI _currentSelectedOption = default;
[SerializeField] private LocalizeStringEvent _currentSelectedOption_LocalizedEvent = default;
[SerializeField] private TextMeshProUGUI _currentSelectedOption_Text = default;
[SerializeField] private Image _bg = default;

[SerializeField] private Sprite _bgSelected = default;
[SerializeField] private Sprite _bgUnselected = default;
private SettingFieldType _fieldType = default;
[SerializeField] private SettingFieldType _fieldType = default;
[SerializeField] private MultiInputButton _buttonNext = default;
[SerializeField] private MultiInputButton _buttonPrevious = default;
public void FillSettingField(int paginationCount, int selectedPaginationIndex, string selectedOption, LocalizedString fieldTitle, SettingFieldType fieldType)
public void FillSettingField_Localized(int paginationCount, int selectedPaginationIndex, string selectedOption)
_fieldType = fieldType;
_currentSelectedOption.text = selectedOption;
_title.StringReference= fieldTitle;
_title.StringReference.TableEntryReference = _fieldType.ToString(); // Set title following the Field Type. Field type is the Table Reference
_currentSelectedOption_LocalizedEvent.StringReference.TableEntryReference = _fieldType + "_" + selectedOption;
_currentSelectedOption_LocalizedEvent.enabled = true;
_buttonNext.interactable = (selectedPaginationIndex < paginationCount - 1);
_buttonPrevious.interactable = (selectedPaginationIndex > 0);
public void FillSettingNewOption(int selectedPaginationIndex, string selectedOption)
public void FillSettingField(int paginationCount, int selectedPaginationIndex, string selectedOption_int)
_pagination.SetCurrentPagination(selectedPaginationIndex);
_currentSelectedOption.text = selectedOption;
_pagination.SetPagination(paginationCount, selectedPaginationIndex);
_title.StringReference.TableEntryReference = _fieldType.ToString(); // Set title following the Field Type. Field type is the Table Reference
_currentSelectedOption_LocalizedEvent.enabled = false;
_currentSelectedOption_Text.text = selectedOption_int.ToString();
_buttonNext.interactable = (selectedPaginationIndex < paginationCount - 1);
_buttonPrevious.interactable = (selectedPaginationIndex > 0);
_currentSelectedOption.color = _colorSelected;
_currentSelectedOption_Text.color = _colorSelected;
_currentSelectedOption.color = _colorUnselected;
_currentSelectedOption_Text.color = _colorUnselected;
_nextOption.Invoke();
_nextOption.Invoke();
_previousOption.Invoke();
_previousOption.Invoke();
public void SetNavigation(MultiInputButton buttonToSelectOnDown, MultiInputButton buttonToSelectOnUp)
{
MultiInputButton[] buttonNavigation = GetComponentsInChildren<MultiInputButton>();
foreach (MultiInputButton button in buttonNavigation)
{
Navigation newNavigation = new Navigation();
newNavigation.mode = Navigation.Mode.Explicit;
if (buttonToSelectOnDown != null)
newNavigation.selectOnDown = buttonToSelectOnDown;
if (buttonToSelectOnDown != null)
newNavigation.selectOnUp = buttonToSelectOnUp;
newNavigation.selectOnLeft = button.navigation.selectOnLeft;
newNavigation.selectOnRight = button.navigation.selectOnRight;
button.navigation = newNavigation;
}
}
}

35
UOP1_Project/Assets/Scripts/UI/Settings/UISettingTabFiller.cs


using UnityEngine;
using UnityEngine.Localization.Components;
using UnityEngine.UI;
using TMPro;
public class UISettingTabFiller : MonoBehaviour
using TMPro;
using UnityEngine.Events;
public class UISettingTabFiller : MonoBehaviour
{
[SerializeField] private LocalizeStringEvent _localizedTabTitle;
[SerializeField] private Image _bgSelectedTab;

SettingTabType _currentTabType;
SettingsType _currentTabType;
public void SetTab(SettingTab settingTab, bool isSelected)
public UnityAction<SettingsType> Clicked;
public void SetTab(SettingsType settingTab, bool isSelected)
_localizedTabTitle.StringReference = settingTab.title;
_currentTabType = settingTab.settingTabsType;
_localizedTabTitle.StringReference.TableEntryReference = settingTab.ToString();
_currentTabType = settingTab;
{ SelectTab(); }
{ SelectTab(); }
{ UnselectTab(); }
{ UnselectTab(); }
public void SetTab(SettingTabType tabType)
public void SetTab(SettingsType tabType)
{
bool isSelected = (_currentTabType == tabType);
if (isSelected)

}
void SelectTab()
void SelectTab()
_bgSelectedTab.enabled=true;
_bgSelectedTab.enabled = true;
void UnselectTab()
void UnselectTab()
_localizedTabTitle.GetComponent<TextMeshProUGUI>().color = _colorUnselectedTab;
_localizedTabTitle.GetComponent<TextMeshProUGUI>().color = _colorUnselectedTab;
}
public void Click()
{
Clicked.Invoke(_currentTabType);
}
}

22
UOP1_Project/Assets/Scripts/UI/Settings/UISettingTabsFiller.cs


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
[SerializeField]
private UISettingTabFiller [] _settingTabsList = default;
public void FillTabs(List<SettingTab> settingTabs)
public UnityAction<SettingsType> ChooseTab;
[SerializeField]
private UISettingTabFiller[] _settingTabsList = default;
public void FillTabs(List<SettingsType> settingTabs)
_settingTabsList[i].Clicked += ChangeTab;
public void SelectTab(SettingTabType tabType)
private void OnDisable()
{
for (int i = 0; i < _settingTabsList.Length; i++)
{
_settingTabsList[i].Clicked -= ChangeTab;
}
}
public void SelectTab(SettingsType tabType)
{
for (int i = 0; i < _settingTabsList.Length; i++)
{

}
public void ChangeTab(SettingsType tabType)
{
ChooseTab.Invoke(tabType);
}
}

25
UOP1_Project/Assets/Scripts/UI/Settings/UISettings.cs


using UnityEngine.Events;
using UnityEngine.Localization;
using UnityEngine.Serialization;
[System.Serializable]
public enum SettingTabType
{
Language,
Audio,
Graphics
}
[System.Serializable]
public enum SettingFieldType
{

Resolution,
FullScreen,
GraphicQuality,
ShadowDistance,
Shadow,
ShadowQuality,
Volume_Master,
public SettingTabType settingTabsType;
public SettingsType settingTabsType;
public LocalizedString title;
}

public SettingTabType settingTabsType;
public SettingsType settingTabsType;
public SettingFieldType settingFieldType;
public LocalizedString title;
}

if (settingTabsList.Count > 0)
{
SetTabs();
SettingTabType defaultTabType = settingTabsList[0].settingTabsType;
SettingsType defaultTabType = settingTabsList[0].settingTabsType;
SelectTab(defaultTabType);
}

_settingTabFiller.FillTabs(settingTabsList);
//_settingTabFiller.FillTabs(settingTabsList);
void SelectTab(SettingTabType selectedTab)
void SelectTab(SettingsType selectedTab)
void SetFields(SettingTabType selectedTab)
void SetFields(SettingsType selectedTab)
{
List<SettingField> fields = _settingFieldsList.FindAll(o => o.settingTabsType == selectedTab);
_settingFieldsFiller.FillFields(fields);

3
UOP1_Project/Assets/Scripts/UI/UIMenuManager.cs


public class UIMenuManager : MonoBehaviour
{
[SerializeField] private UIPopup _popupPanel = default;
[SerializeField] private UISettings _settingsPanel = default;
[SerializeField] private UISettingsController _settingsPanel = default;
[SerializeField] private UICredits _creditsPanel = default;
[SerializeField] private UIMainMenu _mainMenuPanel = default;

public void OpenSettingsScreen()
{
_settingsPanel.gameObject.SetActive(true);
_settingsPanel.SetSettingsScreen();
_settingsPanel.Closed += CloseSettingsScreen;
}

6
UOP1_Project/Assets/Scripts/UI/UIPause.cs


using UnityEngine.UI;
public class UIPause : MonoBehaviour
{
[SerializeField] private UIButtonSetter _resumeButton = default;
[SerializeField] private UIButtonSetter _settingsButton = default;
[SerializeField] private UIButtonSetter _backToMenuButton = default;
[SerializeField] private UIGenericButton _resumeButton = default;
[SerializeField] private UIGenericButton _settingsButton = default;
[SerializeField] private UIGenericButton _backToMenuButton = default;
public UnityAction Resumed = default;
public UnityAction SettingsScreenOpened = default;

166
UOP1_Project/Assets/Scripts/UI/UIPopup.cs


public enum PopupButtonType
{
Confirm,
Cancel,
Close,
DoNothing,
Confirm,
Cancel,
Close,
DoNothing,
Quit,
NewGame,
BackToMenu,
Quit,
NewGame,
BackToMenu,
[SerializeField] private LocalizeStringEvent _titleText = default;
[SerializeField] private LocalizeStringEvent _descriptionText = default;
[SerializeField]
private Button _buttonClose = default;
[SerializeField] private UIButtonSetter _popupButton1 = default;
[SerializeField] private UIButtonSetter _popupButton2 = default;
[SerializeField] private LocalizeStringEvent _titleText = default;
[SerializeField] private LocalizeStringEvent _descriptionText = default;
[SerializeField]
private Button _buttonClose = default;
[SerializeField] private UIGenericButton _popupButton1 = default;
[SerializeField] private UIGenericButton _popupButton2 = default;
[SerializeField] private InputReader _inputReader = default;
[SerializeField] private InputReader _inputReader = default;
PopupType actualType;
PopupType actualType;
public UnityAction<bool> ConfirmationResponseAction;
public UnityAction ClosePopupAction;
public UnityAction<bool> ConfirmationResponseAction;
public UnityAction ClosePopupAction;
private void OnDisable()
{
_popupButton2.Clicked -= CancelButtonClicked;
_popupButton1.Clicked -= ConfirmButtonClicked;
_inputReader.menuCloseEvent -= ClosePopupButtonClicked;
}
public void SetPopup(PopupType popupType)
{
actualType = popupType;
bool isConfirmation = false;
bool hasExitButton = false;
_titleText.StringReference.TableEntryReference = actualType.ToString() + "_Popup_Title";
_descriptionText.StringReference.TableEntryReference = actualType.ToString() + "_Popup_Description";
string tableEntryReferenceConfirm = PopupButtonType.Confirm + "_" + actualType;
string tableEntryReferenceCancel = PopupButtonType.Cancel + "_" + actualType;
switch (actualType)
{
case PopupType.NewGame:
case PopupType.BackToMenu:
isConfirmation = true;
private void OnDisable()
{
_popupButton2.Clicked -= CancelButtonClicked;
_popupButton1.Clicked -= ConfirmButtonClicked;
_inputReader.menuCloseEvent -= ClosePopupButtonClicked;
}
public void SetPopup(PopupType popupType)
{
actualType = popupType;
bool isConfirmation = false;
bool hasExitButton = false;
_titleText.StringReference.TableEntryReference = actualType.ToString() + "_Popup_Title";
_descriptionText.StringReference.TableEntryReference = actualType.ToString() + "_Popup_Description";
string tableEntryReferenceConfirm = PopupButtonType.Confirm + "_" + actualType;
string tableEntryReferenceCancel = PopupButtonType.Cancel + "_" + actualType;
switch (actualType)
{
case PopupType.NewGame:
case PopupType.BackToMenu:
isConfirmation = true;
_popupButton1.SetButton(tableEntryReferenceConfirm, true);
_popupButton2.SetButton(tableEntryReferenceCancel, false);
hasExitButton = true;
break;
case PopupType.Quit:
isConfirmation = true;
_popupButton1.SetButton(tableEntryReferenceConfirm, true);
_popupButton2.SetButton(tableEntryReferenceCancel, false);
hasExitButton = false;
break;
default:
isConfirmation = false;
hasExitButton = false;
break;
_popupButton1.SetButton(tableEntryReferenceConfirm, true);
_popupButton2.SetButton(tableEntryReferenceCancel, false);
hasExitButton = true;
break;
case PopupType.Quit:
isConfirmation = true;
_popupButton1.SetButton(tableEntryReferenceConfirm, true);
_popupButton2.SetButton(tableEntryReferenceCancel, false);
hasExitButton = false;
break;
default:
isConfirmation = false;
hasExitButton = false;
break;
}
}
if (isConfirmation) // needs two button : Is a decision
{
_popupButton1.gameObject.SetActive(true);
_popupButton2.gameObject.SetActive(true);
if (isConfirmation) // needs two button : Is a decision
{
_popupButton1.gameObject.SetActive(true);
_popupButton2.gameObject.SetActive(true);
_popupButton2.Clicked += CancelButtonClicked;
_popupButton1.Clicked += ConfirmButtonClicked;
}
else // needs only one button : Is an information
{
_popupButton2.Clicked += CancelButtonClicked;
_popupButton1.Clicked += ConfirmButtonClicked;
}
else // needs only one button : Is an information
{
_popupButton1.gameObject.SetActive(true);
_popupButton2.gameObject.SetActive(false);
_popupButton1.gameObject.SetActive(true);
_popupButton2.gameObject.SetActive(false);
_popupButton1.Clicked += ConfirmButtonClicked;
_popupButton1.Clicked += ConfirmButtonClicked;
}
}
_buttonClose.gameObject.SetActive(hasExitButton);
_buttonClose.gameObject.SetActive(hasExitButton);
if (hasExitButton) // can exit : Has to take the decision or aknowledge the information
{
if (hasExitButton) // can exit : Has to take the decision or aknowledge the information
{
_inputReader.menuCloseEvent += ClosePopupButtonClicked;
_inputReader.menuCloseEvent += ClosePopupButtonClicked;
}
}
}
}
public void ClosePopupButtonClicked()
{
ClosePopupAction.Invoke();
public void ClosePopupButtonClicked()
{
ClosePopupAction.Invoke();
}
void ConfirmButtonClicked()
{
ConfirmationResponseAction.Invoke(true);
}
void CancelButtonClicked()
{
ConfirmationResponseAction.Invoke(false);
}
void ConfirmButtonClicked()
{
ConfirmationResponseAction.Invoke(true);
}
void CancelButtonClicked()
{
ConfirmationResponseAction.Invoke(false);
}
}
}

2
UOP1_Project/Assets/Scripts/UI/UIGenericButton.cs


using UnityEngine.Localization.Components;
using UnityEngine.UI;
public class UIButtonSetter : MonoBehaviour
public class UIGenericButton : MonoBehaviour
{
[SerializeField] private LocalizeStringEvent _buttonText = default;
[SerializeField] private MultiInputButton _button = default;

4
UOP1_Project/Assets/Settings/Graphics/URPAsset.asset


m_OpaqueDownsampling: 1
m_SupportsTerrainHoles: 0
m_SupportsHDR: 1
m_MSAA: 2
m_MSAA: 1
m_RenderScale: 1
m_MainLightRenderingMode: 1
m_MainLightShadowsSupported: 1

m_AdditionalLightShadowsSupported: 0
m_AdditionalLightsShadowmapResolution: 512
m_ShadowDistance: 50
m_ShadowDistance: 20
m_ShadowCascadeCount: 4
m_Cascade2Split: 0.36397538
m_Cascade3Split: {x: 0.1, y: 0.66}

60
UOP1_Project/Assets/Settings/Input/GameInput.inputactions


"interactions": ""
},
{
"name": "SaveActionButton",
"type": "Button",
"id": "3707d967-26ed-4b90-902c-15236e8aacc2",
"expectedControlType": "Button",
"processors": "",
"interactions": ""
},
{
"name": "ResetActionButton",
"type": "Button",
"id": "c92e03f6-273c-4307-ae0f-de0e3a13e636",
"expectedControlType": "Button",
"processors": "",
"interactions": ""
},
{
"name": "Click",
"type": "PassThrough",
"id": "3c44a1cc-f827-4160-814f-7ac94e688aa5",

"processors": "",
"groups": "KeyboardOrGamepad",
"action": "CloseInventory",
"isComposite": false,
"isPartOfComposite": false
},
{
"name": "",
"id": "aa5835ba-5794-4b0d-a9e1-758f1f155560",
"path": "<Keyboard>/q",
"interactions": "",
"processors": "",
"groups": "KeyboardOrGamepad",
"action": "SaveActionButton",
"isComposite": false,
"isPartOfComposite": false
},
{
"name": "",
"id": "b1e73345-2bb0-47b9-8692-54a929aa9516",
"path": "<Gamepad>/buttonWest",
"interactions": "",
"processors": "",
"groups": "KeyboardOrGamepad",
"action": "SaveActionButton",
"isComposite": false,
"isPartOfComposite": false
},
{
"name": "",
"id": "85fed4bd-eeca-4bb2-a0ab-eec73cab776a",
"path": "<Keyboard>/r",
"interactions": "",
"processors": "",
"groups": "KeyboardOrGamepad",
"action": "ResetActionButton",
"isComposite": false,
"isPartOfComposite": false
},
{
"name": "",
"id": "0f41a27d-da4f-4d33-b8cc-9fa543b4e4cf",
"path": "<Gamepad>/buttonEast",
"interactions": "",
"processors": "",
"groups": "KeyboardOrGamepad",
"action": "ResetActionButton",
"isComposite": false,
"isPartOfComposite": false
}

2
UOP1_Project/ProjectSettings/QualitySettings.asset


skinWeights: 4
textureQuality: 0
anisotropicTextures: 1
antiAliasing: 2
antiAliasing: 0
softParticles: 0
softVegetation: 1
realtimeReflectionProbes: 1

2
UOP1_Project/Assets/Scripts/SetButtonNavigation.cs.meta


fileFormatVersion: 2
guid: e7303151e63a7428a8ecef4430d922fc
guid: 93b7eea584d2a1842b46ab36024a59b0
MonoImporter:
externalObjects: {}
serializedVersion: 2

12
UOP1_Project/Assets/Art/UI/FinalUI/_Settings/BtnArrowLeftSelected.png

之前 之后
宽度: 37  |  高度: 51  |  大小: 5.7 KiB

120
UOP1_Project/Assets/Art/UI/FinalUI/_Settings/BtnArrowLeftSelected.png.meta


fileFormatVersion: 2
guid: 296f74e550e36d24698a48d69871ed45
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
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
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: -1
nPOTScale: 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
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

11
UOP1_Project/Assets/Art/UI/FinalUI/_Settings/BtnArrowRightSelected.png

之前 之后
宽度: 37  |  高度: 51  |  大小: 5.7 KiB

120
UOP1_Project/Assets/Art/UI/FinalUI/_Settings/BtnArrowRightSelected.png.meta


fileFormatVersion: 2
guid: 3f82274ed59c3cc45879eb9740a5f0e1
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
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
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: -1
nPOTScale: 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
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

449
UOP1_Project/Assets/Prefabs/UI/Shared/Settings_Buttons_Panel.prefab


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &8026090063042488726
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5107333375139220170}
- component: {fileID: 8937912904929031395}
- component: {fileID: 8384286114095243352}
- component: {fileID: 3157257367172658743}
m_Layer: 5
m_Name: Settings_Buttons_Panel
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &5107333375139220170
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8026090063042488726}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 2170013751155781727}
- {fileID: 644463406097883330}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 1248, y: 0}
m_Pivot: {x: 0.5, y: 0}
--- !u!222 &8937912904929031395
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8026090063042488726}
m_CullTransparentMesh: 1
--- !u!114 &8384286114095243352
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8026090063042488726}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Padding:
m_Left: 50
m_Right: 50
m_Top: 0
m_Bottom: 0
m_ChildAlignment: 0
m_Spacing: 50
m_ChildForceExpandWidth: 1
m_ChildForceExpandHeight: 1
m_ChildControlWidth: 1
m_ChildControlHeight: 0
m_ChildScaleWidth: 0
m_ChildScaleHeight: 0
m_ReverseArrangement: 0
--- !u!114 &3157257367172658743
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8026090063042488726}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}
m_Name:
m_EditorClassIdentifier:
m_HorizontalFit: 0
m_VerticalFit: 2
--- !u!1001 &923518121487106531
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 5107333375139220170}
m_Modifications:
- target: {fileID: 297632141197697312, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_Name
value: ResetButton
objectReference: {fileID: 0}
- target: {fileID: 297632141197697313, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_Pivot.x
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 297632141197697313, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_Pivot.y
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 297632141197697313, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_RootOrder
value: 1
objectReference: {fileID: 0}
- target: {fileID: 297632141197697313, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_AnchorMax.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 297632141197697313, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_AnchorMax.y
value: 1
objectReference: {fileID: 0}
- target: {fileID: 297632141197697313, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_AnchorMin.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 297632141197697313, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_AnchorMin.y
value: 1
objectReference: {fileID: 0}
- target: {fileID: 297632141197697313, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_SizeDelta.x
value: 549
objectReference: {fileID: 0}
- target: {fileID: 297632141197697313, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_SizeDelta.y
value: 100
objectReference: {fileID: 0}
- target: {fileID: 297632141197697313, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 297632141197697313, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 297632141197697313, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 297632141197697313, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 297632141197697313, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 297632141197697313, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 297632141197697313, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 297632141197697313, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 923.5
objectReference: {fileID: 0}
- target: {fileID: 297632141197697313, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_AnchoredPosition.y
value: -50
objectReference: {fileID: 0}
- target: {fileID: 297632141197697313, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 297632141197697313, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 297632141197697313, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 297632142728442596, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_text
value: Reset
objectReference: {fileID: 0}
- target: {fileID: 297632142728442596, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_fontSize
value: 40
objectReference: {fileID: 0}
- target: {fileID: 297632142728442599, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_StringReference.m_TableEntryReference.m_KeyId
value: 26376909243670528
objectReference: {fileID: 0}
- target: {fileID: 297632142728442599, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_StringReference.m_TableReference.m_TableCollectionName
value: GUID:457af5455987a4876acc4332c3a761e5
objectReference: {fileID: 0}
- target: {fileID: 297632142728442599, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_UpdateString.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName
value: TMPro.TextMeshProUGUI, Unity.TextMeshPro
objectReference: {fileID: 0}
- target: {fileID: 8052293337922855372, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_Navigation.m_Mode
value: 4
objectReference: {fileID: 0}
- target: {fileID: 8052293337922855372, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_Navigation.m_SelectOnUp
value:
objectReference: {fileID: 0}
- target: {fileID: 8052293337922855372, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_Navigation.m_SelectOnLeft
value:
objectReference: {fileID: 8467727145872617650}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 344bb0b18b7db4b4e8874973eb391ca1, type: 3}
--- !u!224 &644463406097883330 stripped
RectTransform:
m_CorrespondingSourceObject: {fileID: 297632141197697313, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
m_PrefabInstance: {fileID: 923518121487106531}
m_PrefabAsset: {fileID: 0}
--- !u!114 &7165087327910551599 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 8052293337922855372, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
m_PrefabInstance: {fileID: 923518121487106531}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 77b26c7a54d143a7b78bcba222262814, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1001 &1890411066639880574
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 5107333375139220170}
m_Modifications:
- target: {fileID: 297632141197697312, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_Name
value: SaveButton
objectReference: {fileID: 0}
- target: {fileID: 297632141197697313, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_Pivot.x
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 297632141197697313, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_Pivot.y
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 297632141197697313, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_RootOrder
value: 0
objectReference: {fileID: 0}
- target: {fileID: 297632141197697313, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_AnchorMax.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 297632141197697313, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_AnchorMax.y
value: 1
objectReference: {fileID: 0}
- target: {fileID: 297632141197697313, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_AnchorMin.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 297632141197697313, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_AnchorMin.y
value: 1
objectReference: {fileID: 0}
- target: {fileID: 297632141197697313, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_SizeDelta.x
value: 549
objectReference: {fileID: 0}
- target: {fileID: 297632141197697313, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_SizeDelta.y
value: 100
objectReference: {fileID: 0}
- target: {fileID: 297632141197697313, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 297632141197697313, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 297632141197697313, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 297632141197697313, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 297632141197697313, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 297632141197697313, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 297632141197697313, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 297632141197697313, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 324.5
objectReference: {fileID: 0}
- target: {fileID: 297632141197697313, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_AnchoredPosition.y
value: -50
objectReference: {fileID: 0}
- target: {fileID: 297632141197697313, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 297632141197697313, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 297632141197697313, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 297632142728442596, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_text
value: Save
objectReference: {fileID: 0}
- target: {fileID: 297632142728442596, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_fontSize
value: 40
objectReference: {fileID: 0}
- target: {fileID: 297632142728442599, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_StringReference.m_TableEntryReference.m_KeyId
value: 26376705492770816
objectReference: {fileID: 0}
- target: {fileID: 297632142728442599, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_StringReference.m_TableReference.m_TableCollectionName
value: GUID:457af5455987a4876acc4332c3a761e5
objectReference: {fileID: 0}
- target: {fileID: 297632142728442599, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_UpdateString.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName
value: TMPro.TextMeshProUGUI, Unity.TextMeshPro
objectReference: {fileID: 0}
- target: {fileID: 8052293337922855372, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: IsSelected
value: 1
objectReference: {fileID: 0}
- target: {fileID: 8052293337922855372, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_Navigation.m_Mode
value: 4
objectReference: {fileID: 0}
- target: {fileID: 8052293337922855372, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_Navigation.m_SelectOnUp
value:
objectReference: {fileID: 0}
- target: {fileID: 8052293337922855372, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
propertyPath: m_Navigation.m_SelectOnRight
value:
objectReference: {fileID: 7165087327910551599}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 344bb0b18b7db4b4e8874973eb391ca1, type: 3}
--- !u!224 &2170013751155781727 stripped
RectTransform:
m_CorrespondingSourceObject: {fileID: 297632141197697313, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
m_PrefabInstance: {fileID: 1890411066639880574}
m_PrefabAsset: {fileID: 0}
--- !u!114 &8467727145872617650 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 8052293337922855372, guid: 344bb0b18b7db4b4e8874973eb391ca1,
type: 3}
m_PrefabInstance: {fileID: 1890411066639880574}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 77b26c7a54d143a7b78bcba222262814, type: 3}
m_Name:
m_EditorClassIdentifier:

7
UOP1_Project/Assets/Prefabs/UI/Shared/Settings_Buttons_Panel.prefab.meta


fileFormatVersion: 2
guid: 21bf92a4b9386f2478adede01a87825c
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

1001
UOP1_Project/Assets/Prefabs/UI/WIP/Settings/Settings_Panel_PR.prefab
文件差异内容过多而无法显示
查看文件

7
UOP1_Project/Assets/Prefabs/UI/WIP/Settings/Settings_Panel_PR.prefab.meta


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

15
UOP1_Project/Assets/ScriptableObjects/EventChannels/ChangeMasterVolume_Channel.asset


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b763d3df319430442a72566d481de948, type: 3}
m_Name: ChangeMasterVolume_Channel
m_EditorClassIdentifier:
description:

8
UOP1_Project/Assets/ScriptableObjects/EventChannels/ChangeMasterVolume_Channel.asset.meta


fileFormatVersion: 2
guid: ac033eaf5f8c5154e8df7c10fe3755ad
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

15
UOP1_Project/Assets/ScriptableObjects/EventChannels/ChangeMusicVolume_Channel.asset


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b763d3df319430442a72566d481de948, type: 3}
m_Name: ChangeMusicVolume_Channel
m_EditorClassIdentifier:
description:

8
UOP1_Project/Assets/ScriptableObjects/EventChannels/ChangeMusicVolume_Channel.asset.meta


fileFormatVersion: 2
guid: 13e4f5dfe966e1447ba01306e125c0c0
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

15
UOP1_Project/Assets/ScriptableObjects/EventChannels/ChangeSfxVolume_Channel.asset


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b763d3df319430442a72566d481de948, type: 3}
m_Name: ChangeSfxVolume_Channel
m_EditorClassIdentifier:
description:

8
UOP1_Project/Assets/ScriptableObjects/EventChannels/ChangeSfxVolume_Channel.asset.meta


fileFormatVersion: 2
guid: 4f26356559fe2254fb6d1f23601bd896
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

8
UOP1_Project/Assets/ScriptableObjects/Events/Settings.meta


fileFormatVersion: 2
guid: 0bf90d5b2a939e74b9f4c9afcd540f84
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

18
UOP1_Project/Assets/Scripts/Events/ScriptableObjects/FloatEventChannelSO.cs


using UnityEngine;
using UnityEngine.Events;
/// <summary>
/// This class is used for Events that have one int argument.
/// Example: An Achievement unlock event, where the int is the Achievement ID.
/// </summary>
[CreateAssetMenu(menuName = "Events/Float Event Channel")]
public class FloatEventChannelSO : EventChannelBaseSO
{
public UnityAction<float> OnEventRaised;
public void RaiseEvent(float value)
{
if (OnEventRaised != null)
OnEventRaised.Invoke(value);
}
}

11
UOP1_Project/Assets/Scripts/Events/ScriptableObjects/FloatEventChannelSO.cs.meta


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

74
UOP1_Project/Assets/Scripts/SetButtonNavigation.cs


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class SetButtonNavigation : MonoBehaviour
{
UIGenericButton[] genericButtons;
UISettingItemFiller[] listSettingItems;
private void Start()
{
listSettingItems = GetComponentsInChildren<UISettingItemFiller>();
genericButtons = GetComponentsInChildren<UIGenericButton>();
MultiInputButton buttonToSelectOnDown = default;
MultiInputButton buttonToSelectOnUp = default;
for (int i = 0; i < listSettingItems.Length; i++)
{
Navigation newNavigation = new Navigation();
newNavigation.mode = Navigation.Mode.Explicit;
newNavigation.selectOnLeft = listSettingItems[i].gameObject.GetComponent<MultiInputButton>().navigation.selectOnLeft;
newNavigation.selectOnRight = listSettingItems[i].gameObject.GetComponent<MultiInputButton>().navigation.selectOnRight;
if (i + 1 < listSettingItems.Length)
{
buttonToSelectOnDown = listSettingItems[i + 1].gameObject.GetComponent<MultiInputButton>();
}
else if (genericButtons.Length > 0)
{
buttonToSelectOnDown = genericButtons[0].gameObject.GetComponent<MultiInputButton>();
SetGenericButtonsNavigations(listSettingItems[i].gameObject.GetComponent<MultiInputButton>());
}
if (i - 1 >= 0)
buttonToSelectOnUp = listSettingItems[i - 1].gameObject.GetComponent<MultiInputButton>();
newNavigation.selectOnDown = buttonToSelectOnDown;
newNavigation.selectOnUp = buttonToSelectOnUp;
listSettingItems[i].gameObject.GetComponent<MultiInputButton>().navigation = newNavigation;
listSettingItems[i].SetNavigation(buttonToSelectOnDown, buttonToSelectOnUp);
}
}
private void OnEnable()
{
if (listSettingItems == null)
{
listSettingItems = GetComponentsInChildren<UISettingItemFiller>();
}
if (listSettingItems.Length > 0)
if (listSettingItems[0].GetComponent<MultiInputButton>() != null)
//select first item
listSettingItems[0].GetComponent<MultiInputButton>().Select();
}
void SetGenericButtonsNavigations(MultiInputButton itemUp)
{
for (int i = 0; i < genericButtons.Length; i++)
{
Navigation newNavigation = new Navigation();
newNavigation.mode = Navigation.Mode.Explicit;
if (i + 1 < genericButtons.Length)
newNavigation.selectOnRight = genericButtons[i + 1].gameObject.GetComponent<MultiInputButton>();
if (i - 1 > 0)
newNavigation.selectOnLeft = genericButtons[i - 1].gameObject.GetComponent<MultiInputButton>();
newNavigation.selectOnUp = itemUp;
}
}
}

169
UOP1_Project/Assets/Scripts/Systems/Settings/SettingsAudioComponent.cs


using UnityEngine;
using UnityEngine.Events;
public class SettingsAudioComponent : MonoBehaviour
{
[SerializeField] UISettingItemFiller _masterVolumeField;
[SerializeField] UISettingItemFiller _musicVolumeField;
[SerializeField] UISettingItemFiller _sfxVolumeField;
[SerializeField] UIGenericButton _saveButton;
[SerializeField] UIGenericButton _resetButton;
[Header("Broadcasting")]
[SerializeField] private FloatEventChannelSO _masterVolumeEventChannel = default;
[SerializeField] private FloatEventChannelSO _sFXVolumeEventChannel = default;
[SerializeField] private FloatEventChannelSO _musicVolumeEventChannel = default;
private float _musicVolume { get; set; }
private float _sfxVolume { get; set; }
private float _masterVolume { get; set; }
private float _savedMusicVolume { get; set; }
private float _savedSfxVolume { get; set; }
private float _savedMasterVolume { get; set; }
int _maxVolume = 10;
public event UnityAction<float, float, float> _save = delegate { };
private void OnEnable()
{
_musicVolumeField._nextOption += IncreaseMusicVolume;
_musicVolumeField._previousOption += DecreaseMusicVolume;
_saveButton.Clicked += SaveVolumes;
_resetButton.Clicked += ResetVolumes;
_sfxVolumeField._nextOption += IncreaseSFXVolume;
_sfxVolumeField._previousOption += DecreaseSFXVolume;
_masterVolumeField._nextOption += IncreaseMasterVolume;
_masterVolumeField._previousOption += DecreaseMasterVolume;
}
private void OnDisable()
{
ResetVolumes(); // reset volumes on disable. If not saved, it will reset to initial volumes.
_musicVolumeField._nextOption -= IncreaseMusicVolume;
_musicVolumeField._previousOption -= DecreaseMusicVolume;
_saveButton.Clicked -= SaveVolumes;
_resetButton.Clicked -= ResetVolumes;
_sfxVolumeField._nextOption -= IncreaseSFXVolume;
_sfxVolumeField._previousOption -= DecreaseSFXVolume;
_masterVolumeField._nextOption -= IncreaseMasterVolume;
_masterVolumeField._previousOption -= DecreaseMasterVolume;
}
public void Setup(float musicVolume, float sfxVolume, float masterVolume)
{
_masterVolume = masterVolume;
_musicVolume = sfxVolume;
_sfxVolume = musicVolume;
_savedMasterVolume = _masterVolume;
_savedMusicVolume = _musicVolume;
_savedSfxVolume = _sfxVolume;
SetMusicVolumeField();
SetSfxVolumeField();
SetMasterVolumeField();
}
private void SetMusicVolumeField()
{
int paginationCount = _maxVolume + 1; // adding a page in the pagination since the count starts from 0
int selectedPaginationIndex = Mathf.RoundToInt(_maxVolume * _musicVolume);
string selectedOption = Mathf.RoundToInt(_maxVolume * _musicVolume).ToString();
SetMusicVolume();
_musicVolumeField.FillSettingField(paginationCount, selectedPaginationIndex, selectedOption);
}
private void SetSfxVolumeField()
{
int paginationCount = _maxVolume + 1;// adding a page in the pagination since the count starts from 0
int selectedPaginationIndex = Mathf.RoundToInt(_maxVolume * _sfxVolume);
string selectedOption = Mathf.RoundToInt(_maxVolume * _sfxVolume).ToString();
SetSfxVolume();
_sfxVolumeField.FillSettingField(paginationCount, selectedPaginationIndex, selectedOption);
}
private void SetMasterVolumeField()
{
int paginationCount = _maxVolume + 1;// adding a page in the pagination since the count starts from 0
int selectedPaginationIndex = Mathf.RoundToInt(_maxVolume * _masterVolume);
string selectedOption = Mathf.RoundToInt(_maxVolume * _masterVolume).ToString();
SetMasterVolume();
_masterVolumeField.FillSettingField(paginationCount, selectedPaginationIndex, selectedOption);
}
private void SetMusicVolume()
{
_musicVolumeEventChannel.RaiseEvent(_musicVolume);//raise event for volume change
}
private void SetSfxVolume()
{
_sFXVolumeEventChannel.RaiseEvent(_sfxVolume); //raise event for volume change
}
private void SetMasterVolume()
{
_masterVolumeEventChannel.RaiseEvent(_masterVolume); //raise event for volume change
}
private void IncreaseMasterVolume()
{
_masterVolume += 1 / (float)_maxVolume;
_masterVolume = Mathf.Clamp(_masterVolume, 0, 1);
SetMasterVolumeField();
}
private void DecreaseMasterVolume()
{
_masterVolume -= 1 / (float)_maxVolume;
_masterVolume = Mathf.Clamp(_masterVolume, 0, 1);
SetMasterVolumeField();
}
private void IncreaseMusicVolume()
{
_musicVolume += 1 / (float)_maxVolume;
_musicVolume = Mathf.Clamp(_musicVolume, 0, 1);
SetMusicVolumeField();
}
private void DecreaseMusicVolume()
{
_musicVolume -= 1 / (float)_maxVolume;
_musicVolume = Mathf.Clamp(_musicVolume, 0, 1);
SetMusicVolumeField();
}
private void IncreaseSFXVolume()
{
_sfxVolume += 1 / (float)_maxVolume;
_sfxVolume = Mathf.Clamp(_sfxVolume, 0, 1);
SetSfxVolumeField();
}
private void DecreaseSFXVolume()
{
_sfxVolume -= 1 / (float)_maxVolume;
_sfxVolume = Mathf.Clamp(_sfxVolume, 0, 1);
SetSfxVolumeField();
}
private void ResetVolumes()
{
Setup(_savedMusicVolume, _savedSfxVolume, _savedMasterVolume);
}
private void SaveVolumes()
{
_savedMasterVolume = _masterVolume;
_savedMusicVolume = _musicVolume;
_savedSfxVolume = _sfxVolume;
//save Audio
_save.Invoke(_musicVolume, _sfxVolume, _masterVolume);
}
}

368
UOP1_Project/Assets/Scripts/Systems/Settings/SettingsGraphicsComponent.cs


using System;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.Rendering.Universal;
[System.Serializable]
public class ShadowDistanceTier
{
public float Distance;
public string TierDescription;
}
public class SettingsGraphicsComponent : MonoBehaviour
{
[SerializeField] private List<ShadowDistanceTier> ShadowDistanceTierList = new List<ShadowDistanceTier>(); // filled from inspector
[SerializeField] private UniversalRenderPipelineAsset URPAsset = default;
private int _savedResolutionIndex = default;
private int _savedAntiAliasingIndex = default;
private int _savedShadowDistanceTier = default;
private bool _savedFullscreenState = default;
private int _currentResolutionIndex = default;
private List<Resolution> _resolutionsList = default;
[SerializeField] UISettingItemFiller _resolutionsField = default;
/* private int _currentShadowQualityIndex = default;
private List<string> _shadowQualityList = default;
[SerializeField] private UISettingItemFiller _shadowQualityField = default;*/
private int _currentAntiAliasingIndex = default;
private List<string> _currentAntiAliasingList = default;
[SerializeField] private UISettingItemFiller _antiAliasingField = default;
private int _currentShadowDistanceTier = default;
[SerializeField] private UISettingItemFiller _shadowDistanceField = default;
private bool _isFullscreen = default;
[SerializeField] private UISettingItemFiller _fullscreenField = default;
public event UnityAction<int, int, float, bool> _save = delegate { };
private Resolution _currentResolution;
[SerializeField] private UIGenericButton _saveButton;
[SerializeField] private UIGenericButton _resetButton;
void OnEnable()
{
_resolutionsField._nextOption += NextResolution;
_resolutionsField._previousOption += PreviousResolution;
_shadowDistanceField._nextOption += NextShadowDistanceTier;
_shadowDistanceField._previousOption += PreviousShadowDistanceTier;
_fullscreenField._nextOption += NextFullscreenState;
_fullscreenField._previousOption += PreviousFullscreenState;
_antiAliasingField._nextOption += NextAntiAliasingTier;
_antiAliasingField._previousOption += PreviousAntiAliasingTier;
_saveButton.Clicked += SaveSettings;
_resetButton.Clicked += ResetSettings;
}
private void OnDisable()
{
ResetSettings();
_resolutionsField._nextOption -= NextResolution;
_resolutionsField._previousOption -= PreviousResolution;
_shadowDistanceField._nextOption -= NextShadowDistanceTier;
_shadowDistanceField._previousOption -= PreviousShadowDistanceTier;
_fullscreenField._nextOption -= NextFullscreenState;
_fullscreenField._previousOption -= PreviousFullscreenState;
_antiAliasingField._nextOption -= NextAntiAliasingTier;
_antiAliasingField._previousOption -= PreviousAntiAliasingTier;
_saveButton.Clicked -= SaveSettings;
_resetButton.Clicked -= ResetSettings;
}
public void Init()
{
_resolutionsList = GetResolutionsList();
_currentShadowDistanceTier = GetCurrentShadowDistanceTier();
_currentAntiAliasingList = GetDropdownData(Enum.GetNames(typeof(MsaaQuality)));
_currentResolution = Screen.currentResolution;
_currentResolutionIndex = GetCurrentResolutionIndex();
_isFullscreen = GetCurrentFullscreenState();
_currentAntiAliasingIndex = GetCurrentAntialiasing();
_savedResolutionIndex = _currentResolutionIndex;
_savedAntiAliasingIndex = _currentAntiAliasingIndex;
_savedShadowDistanceTier = _currentShadowDistanceTier;
_savedFullscreenState = _isFullscreen;
}
public void Setup()
{
Init();
SetResolutionField();
SetShadowDistance();
SetFullscreen();
SetAntiAliasingField();
}
#region Resolution
void SetResolutionField()
{
string displayText = _resolutionsList[_currentResolutionIndex].ToString();
displayText = displayText.Substring(0, displayText.IndexOf("@"));
_resolutionsField.FillSettingField(_resolutionsList.Count, _currentResolutionIndex, displayText);
}
List<Resolution> GetResolutionsList()
{
List<Resolution> options = new List<Resolution>();
for (int i = 0; i < Screen.resolutions.Length; i++)
{
options.Add(Screen.resolutions[i]);
}
return options;
}
int GetCurrentResolutionIndex()
{
if (_resolutionsList == null)
{ _resolutionsList = GetResolutionsList(); }
int index = _resolutionsList.FindIndex(o => o.width == _currentResolution.width && o.height == _currentResolution.height);
return index;
}
void NextResolution()
{
_currentResolutionIndex++;
_currentResolutionIndex = Mathf.Clamp(_currentResolutionIndex, 0, _resolutionsList.Count - 1);
OnResolutionChange();
}
void PreviousResolution()
{
_currentResolutionIndex--;
_currentResolutionIndex = Mathf.Clamp(_currentResolutionIndex, 0, _resolutionsList.Count - 1);
OnResolutionChange();
}
void OnResolutionChange()
{
_currentResolution = _resolutionsList[_currentResolutionIndex];
Screen.SetResolution(_currentResolution.width, _currentResolution.height, _isFullscreen);
SetResolutionField();
}
#endregion
#region ShadowDistance
void SetShadowDistance()
{
_shadowDistanceField.FillSettingField_Localized(ShadowDistanceTierList.Count, _currentShadowDistanceTier, ShadowDistanceTierList[_currentShadowDistanceTier].TierDescription);
}
int GetCurrentShadowDistanceTier()
{
int tierIndex = -1;
if (ShadowDistanceTierList.Exists(o => o.Distance == URPAsset.shadowDistance))
tierIndex = ShadowDistanceTierList.FindIndex(o => o.Distance == URPAsset.shadowDistance);
else
{
Debug.LogError("Current shadow distance is not in the tier List " + URPAsset.shadowDistance);
}
return tierIndex;
}
void NextShadowDistanceTier()
{
_currentShadowDistanceTier++;
_currentShadowDistanceTier = Mathf.Clamp(_currentShadowDistanceTier, 0, ShadowDistanceTierList.Count);
OnShadowDistanceChange();
}
void PreviousShadowDistanceTier()
{
_currentShadowDistanceTier--;
_currentShadowDistanceTier = Mathf.Clamp(_currentShadowDistanceTier, 0, ShadowDistanceTierList.Count);
OnShadowDistanceChange();
}
void OnShadowDistanceChange()
{
URPAsset.shadowDistance = ShadowDistanceTierList[_currentShadowDistanceTier].Distance;
SetShadowDistance();
}
#endregion
#region fullscreen
void SetFullscreen()
{
if (_isFullscreen)
{
_fullscreenField.FillSettingField_Localized(2, 1, "On");
}
else
{
_fullscreenField.FillSettingField_Localized(2, 0, "Off");
}
}
bool GetCurrentFullscreenState()
{
return Screen.fullScreen;
}
void NextFullscreenState()
{
_isFullscreen = true;
OnFullscreenChange();
}
void PreviousFullscreenState()
{
_isFullscreen = false;
OnFullscreenChange();
}
void OnFullscreenChange()
{
Screen.fullScreen = _isFullscreen;
SetFullscreen();
}
#endregion
#region Anti Aliasing
void SetAntiAliasingField()
{
string optionDisplay = _currentAntiAliasingList[_currentAntiAliasingIndex].Replace("_", "");
_antiAliasingField.FillSettingField(_currentAntiAliasingList.Count, _currentAntiAliasingIndex, optionDisplay);
}
int GetCurrentAntialiasing()
{
return URPAsset.msaaSampleCount;
}
void NextAntiAliasingTier()
{
_currentAntiAliasingIndex++;
_currentAntiAliasingIndex = Mathf.Clamp(_currentAntiAliasingIndex, 0, _currentAntiAliasingList.Count - 1);
OnAntiAliasingChange();
}
void PreviousAntiAliasingTier()
{
_currentAntiAliasingIndex--;
_currentAntiAliasingIndex = Mathf.Clamp(_currentAntiAliasingIndex, 0, _currentAntiAliasingList.Count - 1);
OnAntiAliasingChange();
}
void OnAntiAliasingChange()
{
URPAsset.msaaSampleCount = _currentAntiAliasingIndex;
SetAntiAliasingField();
}
#endregion
private List<string> GetDropdownData(string[] optionNames, params string[] customOptions)
{
List<string> options = new List<string>();
foreach (string option in optionNames)
{
options.Add(option);
}
foreach (string option in customOptions)
{
options.Add(option);
}
return options;
}
public void SaveSettings()
{
float shadowDistance = ShadowDistanceTierList[_currentShadowDistanceTier].Distance;
_save.Invoke(_currentResolutionIndex, _currentAntiAliasingIndex, shadowDistance, _isFullscreen);
}
public void ResetSettings()
{
_currentResolutionIndex = _savedResolutionIndex;
OnResolutionChange();
_currentAntiAliasingIndex = _savedAntiAliasingIndex;
OnAntiAliasingChange();
_currentShadowDistanceTier = _savedShadowDistanceTier;
OnShadowDistanceChange();
_isFullscreen = _savedFullscreenState;
OnFullscreenChange();
}
/*
#region ShadowQuality
void SetShadowQualityField()
{
_currentShadowQualityIndex = GetCurrentShadowQualityIndex();
_shadowQualityList = GetDropdownData(Enum.GetNames(typeof(UnityEngine.Rendering.Universal.ShadowQuality)));
_shadowQualityField.FillSettingField_Localized(_shadowQualityList.Count, _currentShadowQualityIndex, _shadowQualityList[_currentShadowQualityIndex]);
}
int GetCurrentShadowQualityIndex()
{
UnityEngine.Rendering.Universal.ShadowQuality shadowQuality = UnityEngine.Rendering.Universal.ShadowQuality.Disabled;
if (URPAsset.supportsMainLightShadows && URPAsset.supportsSoftShadows)
{
shadowQuality = UnityEngine.Rendering.Universal.ShadowQuality.SoftShadows;
}
else if (URPAsset.supportsMainLightShadows)
{
shadowQuality = UnityEngine.Rendering.Universal.ShadowQuality.HardShadows;
}
else
{
shadowQuality = UnityEngine.Rendering.Universal.ShadowQuality.Disabled;
}
return (int)shadowQuality;
}
void SetNextShadowQuality()
{
_currentShadowQualityIndex++;
_currentShadowQualityIndex = Mathf.Clamp(_currentShadowQualityIndex, 0, _shadowQualityList.Count - 1);
OnShadowQualityChange();
}
void SetPreviousShadowQuality()
{
_currentShadowQualityIndex--;
_currentShadowQualityIndex = Mathf.Clamp(_currentShadowQualityIndex, 0, _shadowQualityList.Count - 1);
OnShadowQualityChange();
}
void OnShadowQualityChange()
{
UnityEngine.Rendering.Universal.ShadowQuality shadowQuality = (UnityEngine.Rendering.Universal.ShadowQuality)_currentShadowQualityIndex;
switch (shadowQuality)
{
case UnityEngine.Rendering.Universal.ShadowQuality.SoftShadows:
URPAsset.shadow = true;
URPAsset.supportsSoftShadows = true;
break;
case UnityEngine.Rendering.Universal.ShadowQuality.HardShadows:
URPAsset.supportsMainLightShadows = true;
URPAsset.supportsSoftShadows = false;
break;
case UnityEngine.Rendering.Universal.ShadowQuality.Disabled:
URPAsset.supportsMainLightShadows = false;
URPAsset.supportsSoftShadows = false;
break;
}
SetShadowQualityField();
}
#endregion
*/
}

118
UOP1_Project/Assets/Scripts/Systems/Settings/SettingsLanguageComponent.cs


using System;
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.Localization;
using UnityEngine.Localization.Settings;
using UnityEngine.ResourceManagement.AsyncOperations;
public class SettingsLanguageComponent : MonoBehaviour
{
[SerializeField] UISettingItemFiller languageDropdown;
AsyncOperationHandle m_InitializeOperation;
List<string> languageList = new List<string>();
public event UnityAction<Locale> _save = delegate { };
private int _currentSelectedOption = 0;
private int _savedSelectedOption = default;
[SerializeField] private UIGenericButton _saveButton;
[SerializeField] private UIGenericButton _resetButton;
void OnEnable()
{
m_InitializeOperation = LocalizationSettings.SelectedLocaleAsync;
if (m_InitializeOperation.IsDone)
{
InitializeCompleted(m_InitializeOperation);
}
else
{
m_InitializeOperation.Completed += InitializeCompleted;
}
_saveButton.Clicked += SaveSettings;
_resetButton.Clicked += ResetSettings;
languageDropdown._nextOption += NextOption;
languageDropdown._previousOption += PreviousOption;
}
private void OnDisable()
{
ResetSettings();
_saveButton.Clicked -= SaveSettings;
_resetButton.Clicked -= ResetSettings;
languageDropdown._nextOption -= NextOption;
languageDropdown._previousOption -= PreviousOption;
LocalizationSettings.SelectedLocaleChanged -= LocalizationSettings_SelectedLocaleChanged;
}
void InitializeCompleted(AsyncOperationHandle obj)
{
m_InitializeOperation.Completed -= InitializeCompleted;
// Create an option in the dropdown for each Locale
languageList = new List<string>();
List<Locale> locales = LocalizationSettings.AvailableLocales.Locales;
for (int i = 0; i < locales.Count; ++i)
{
var locale = locales[i];
if (LocalizationSettings.SelectedLocale == locale)
_currentSelectedOption = i;
var displayName = locales[i].Identifier.CultureInfo != null ? locales[i].Identifier.CultureInfo.NativeName : locales[i].ToString();
languageList.Add(displayName);
}
languageDropdown.FillSettingField(languageList.Count, _currentSelectedOption, languageList[_currentSelectedOption]);
_savedSelectedOption = _currentSelectedOption;
LocalizationSettings.SelectedLocaleChanged += LocalizationSettings_SelectedLocaleChanged;
}
void NextOption()
{
_currentSelectedOption++;
Debug.Log(_currentSelectedOption);
_currentSelectedOption = Mathf.Clamp(_currentSelectedOption, 0, languageList.Count - 1);
OnSelectionChanged();
}
void PreviousOption()
{
_currentSelectedOption--;
_currentSelectedOption = Mathf.Clamp(_currentSelectedOption, 0, languageList.Count - 1);
OnSelectionChanged();
}
void OnSelectionChanged()
{
// Unsubscribe from SelectedLocaleChanged so we don't get an unnecessary callback from the change we are about to make.
LocalizationSettings.SelectedLocaleChanged -= LocalizationSettings_SelectedLocaleChanged;
var locale = LocalizationSettings.AvailableLocales.Locales[_currentSelectedOption];
LocalizationSettings.SelectedLocale = locale;
// Resubscribe to SelectedLocaleChanged so that we can stay in sync with changes that may be made by other scripts.
LocalizationSettings.SelectedLocaleChanged += LocalizationSettings_SelectedLocaleChanged;
}
void LocalizationSettings_SelectedLocaleChanged(Locale locale)
{
// We need to update the dropdown selection to match.
var selectedIndex = LocalizationSettings.AvailableLocales.Locales.IndexOf(locale);
languageDropdown.FillSettingField(languageList.Count, selectedIndex, languageList[selectedIndex]);
}
public void SaveSettings()
{
Locale _currentLocale = LocalizationSettings.AvailableLocales.Locales[_currentSelectedOption];
_savedSelectedOption = _currentSelectedOption;
_save.Invoke(_currentLocale);
}
public void ResetSettings()
{
_currentSelectedOption = _savedSelectedOption;
OnSelectionChanged();
}
}

52
UOP1_Project/Assets/Scripts/Systems/Settings/SettingsSO.cs


using UnityEngine;
using UnityEngine.Localization;
[CreateAssetMenu(fileName = "Settings", menuName = "Settings/Create new settings SO")]
public class SettingsSO : ScriptableObject
{
[SerializeField] float _masterVolume = default;
[SerializeField] float _musicVolume = default;
[SerializeField] float _sfxVolume = default;
[SerializeField] int _resolutionsIndex = default;
[SerializeField] int _antiAliasingIndex = default;
[SerializeField] float _shadowDistance = default;
[SerializeField] bool _isFullscreen = default;
[SerializeField] Locale _currentLocale = default;
public float MasterVolume => _masterVolume;
public float MusicVolume => _musicVolume;
public float SfxVolume => _sfxVolume;
public int ResolutionsIndex => _resolutionsIndex;
public int AntiAliasingIndex => _antiAliasingIndex;
public float ShadowDistance => _shadowDistance;
public bool IsFullscreen => _isFullscreen;
public Locale CurrentLocale => _currentLocale;
public void SaveAudioSettings(float newMusicVolume, float newSfxVolume, float newMasterVolume)
{
_masterVolume = newMasterVolume;
_musicVolume = newMusicVolume;
_sfxVolume = newSfxVolume;
}
public void SaveGraphicsSettings(int newResolutionsIndex, int newAntiAliasingIndex, float newShadowDistance, bool fullscreenState)
{
_resolutionsIndex = newResolutionsIndex;
_antiAliasingIndex = newAntiAliasingIndex;
_shadowDistance = newShadowDistance;
_isFullscreen = fullscreenState;
}
public void SaveLanguageSettings(Locale local)
{
_currentLocale = local;
}
public SettingsSO() { }
public void LoadSavedSettings(Save savedFile)
{
_masterVolume = savedFile._masterVolume;
_musicVolume = savedFile._musicVolume;
_sfxVolume = savedFile._sfxVolume;
_resolutionsIndex = savedFile._resolutionsIndex;
_antiAliasingIndex = savedFile._antiAliasingIndex;
_shadowDistance = savedFile._shadowDistance;
_isFullscreen = savedFile._isFullscreen;
_currentLocale = savedFile._currentLocale;
}
}

121
UOP1_Project/Assets/Scripts/Systems/Settings/UISettingsController.cs


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.Localization;
using UnityEngine.UI;
public enum SettingsType
{
Language,
Graphics,
Audio,
}
public class UISettingsController : MonoBehaviour
{
[SerializeField] private SettingsLanguageComponent _languageComponent;
[SerializeField] private SettingsGraphicsComponent _graphicsComponent;
[SerializeField] private SettingsAudioComponent _audioComponent;
[SerializeField] private UISettingTabsFiller _settingTabFiller = default;
[SerializeField] private SettingsSO _currentSettings;
[SerializeField] private List<SettingsType> _settingTabsList = new List<SettingsType>();
private SettingsType _selectedTab = SettingsType.Audio;
[SerializeField] private InputReader _inputReader = default;
[SerializeField] private VoidEventChannelSO SaveSettingsEvent = default;
public UnityAction Closed;
private void OnEnable()
{
_languageComponent._save += SaveLaguageSettings;
_audioComponent._save += SaveAudioSettings;
_graphicsComponent._save += SaveGraphicsSettings;
_inputReader.menuCloseEvent += CloseScreen;
_inputReader.TabSwitched += SwitchTab;
_settingTabFiller.FillTabs(_settingTabsList);
_settingTabFiller.ChooseTab += OpenSetting;
OpenSetting(SettingsType.Audio);
}
private void OnDisable()
{
_inputReader.menuCloseEvent -= CloseScreen;
_inputReader.TabSwitched -= SwitchTab;
_languageComponent._save -= SaveLaguageSettings;
_audioComponent._save -= SaveAudioSettings;
_graphicsComponent._save -= SaveGraphicsSettings;
}
public void CloseScreen()
{
Closed.Invoke();
}
void OpenSetting(SettingsType settingType)
{
_selectedTab = settingType;
switch (settingType)
{
case SettingsType.Language:
_currentSettings.SaveLanguageSettings(_currentSettings.CurrentLocale);
break;
case SettingsType.Graphics:
_graphicsComponent.Setup();
break;
case SettingsType.Audio:
_audioComponent.Setup(_currentSettings.MusicVolume, _currentSettings.SfxVolume, _currentSettings.MasterVolume);
break;
default:
break;
}
_languageComponent.gameObject.SetActive(settingType == SettingsType.Language);
_graphicsComponent.gameObject.SetActive((settingType == SettingsType.Graphics));
_audioComponent.gameObject.SetActive(settingType == SettingsType.Audio);
_settingTabFiller.SelectTab(settingType);
}
void SwitchTab(float orientation)
{
if (orientation != 0)
{
bool isLeft = orientation < 0;
int initialIndex = _settingTabsList.FindIndex(o => o == _selectedTab);
if (initialIndex != -1)
{
if (isLeft)
{
initialIndex--;
}
else
{
initialIndex++;
}
initialIndex = Mathf.Clamp(initialIndex, 0, _settingTabsList.Count - 1);
}
OpenSetting(_settingTabsList[initialIndex]);
}
}
public void SaveLaguageSettings(Locale local)
{
_currentSettings.SaveLanguageSettings(local);
SaveSettingsEvent.RaiseEvent();
}
public void SaveGraphicsSettings(int newResolutionsIndex, int newAntiAliasingIndex, float newShadowDistance, bool fullscreenState)
{
_currentSettings.SaveGraphicsSettings(newResolutionsIndex, newAntiAliasingIndex, newShadowDistance, fullscreenState);
SaveSettingsEvent.RaiseEvent();
}
void SaveAudioSettings(float musicVolume, float sfxVolume, float masterVolume)
{
_currentSettings.SaveAudioSettings(musicVolume, sfxVolume, masterVolume);
SaveSettingsEvent.RaiseEvent();
}
}

15
UOP1_Project/Assets/ScriptableObjects/Events/Settings/SaveSettingsEvent.asset


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7fafac715ff920c4383fed91a38a351e, type: 3}
m_Name: SaveSettingsEvent
m_EditorClassIdentifier:
description:

8
UOP1_Project/Assets/ScriptableObjects/Events/Settings/SaveSettingsEvent.asset.meta


fileFormatVersion: 2
guid: e6ff8a48cab21e046a6cdb61bab35111
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

22
UOP1_Project/Assets/ScriptableObjects/Events/Settings/Settings.asset


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 141e21bdb3dba4642b62b856fd06879b, type: 3}
m_Name: Settings
m_EditorClassIdentifier:
_masterVolume: 1
_musicVolume: 1
_sfxVolume: 1
_resolutionsIndex: 2
_antiAliasingIndex: 0
_shadowDistance: 0
_isFullscreen: 0
_currentLocale: {fileID: 0}

8
UOP1_Project/Assets/ScriptableObjects/Events/Settings/Settings.asset.meta


fileFormatVersion: 2
guid: 10a9cfb7ceadb294da93b9773e89074b
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

8
UOP1_Project/Assets/Scripts/Systems/Settings/GraphicsPresets.asset.meta


fileFormatVersion: 2
guid: 8cdf9b9e9fa3444209be445de7a2a6ac
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 0
userData:
assetBundleName:
assetBundleVariant:

41
UOP1_Project/Assets/Scripts/Systems/Settings/SettingsPresetsScriptableObject.cs


using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu(fileName = "GraphicsPresets", menuName = "Graphics/Presets", order = 1)]
public class SettingsPresetsScriptableObject : ScriptableObject
{
public List<AdvancedGraphics> presetList;
[Serializable]
public struct AdvancedGraphics
{
public GraphicsQualityLevel qualityLevel;
public ShadowQuality shadowQuality;
public AnisotropicFiltering anisotropicFiltering;
public int antiAliasing;
public float shadowDistance;
public bool custom;
}
public enum GraphicsQualityLevel
{
Low,
Middle,
High
}
public AdvancedGraphics GetPresetByQualityLevel(GraphicsQualityLevel level)
{
foreach (AdvancedGraphics preset in presetList)
{
if (level == preset.qualityLevel)
{
return preset;
}
}
return default;
}
}

56
UOP1_Project/Assets/Scripts/Systems/Settings/SettingsUIController.cs


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class SettingsUIController : MonoBehaviour
{
[SerializeField] GameObject generalSettings, graphicsSettings, audioSettings, inputSettings;
[SerializeField] Button generalSettingsButton, graphicsSettingsButton, audioSettingsButton, inputSettingsButton, saveGraphicsSettingsButton, cancelGraphicsSettingsButton;
public enum SettingsType
{
General,
Graphics,
Audio,
Input
}
public void OpenGeneralSettings()
{
OpenSetting(SettingsType.General);
}
public void OpenGraphicsSettings()
{
OpenSetting(SettingsType.Graphics);
}
public void OpenAudioSettings()
{
OpenSetting(SettingsType.Audio);
}
public void OpenInputSettings()
{
OpenSetting(SettingsType.Input);
}
public void OnSaveGraphicsSettings()
{
saveGraphicsSettingsButton.interactable = false;
}
void OpenSetting(SettingsType settingType)
{
generalSettings.SetActive(settingType == SettingsType.General);
graphicsSettings.SetActive((settingType == SettingsType.Graphics));
audioSettings.SetActive(settingType == SettingsType.Audio);
inputSettings.SetActive(settingType == SettingsType.Input);
generalSettingsButton.interactable = settingType != SettingsType.General;
graphicsSettingsButton.interactable = settingType != SettingsType.Graphics;
audioSettingsButton.interactable = settingType != SettingsType.Audio;
inputSettingsButton.interactable = settingType != SettingsType.Input;
}
}

44
UOP1_Project/Assets/Scripts/Systems/Settings/SettingsSystemAudioComponent.cs


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class SettingsSystemAudioComponent : SettingsSystemSubComponents
{
[SerializeField] Slider musicVolumeSlider;
[SerializeField] Slider sfxVolumeSlider;
public float MusicVolume { get; private set; }
public float SfxVolume { get; private set; }
void Start()
{
Setup();
}
protected override void Setup()
{
//TODO: load previous music volume setting
MusicVolume = 50f;
musicVolumeSlider.SetValueWithoutNotify(MusicVolume);
//TODO: load previous sfx volume setting
SfxVolume = 50f;
sfxVolumeSlider.SetValueWithoutNotify(SfxVolume);
}
#region UI CALLBACKS
//TODO: clamp volume to [0, 1] or [0, 100]? Change Slider min max value in editor depending on use case
public void OnChangeMusicVolume(float volume)
{
MusicVolume = Mathf.Clamp(volume, 0.0f, 100.0f);
}
//TODO: clamp volume to [0, 1] or [0, 100]? Change Slider min max value in editor depending on use case
public void OnChangeSfxVolume(float volume)
{
SfxVolume = Mathf.Clamp(volume, 0.0f, 100.0f);
}
#endregion
}

44
UOP1_Project/Assets/Scripts/Systems/Settings/SettingsSystemGeneralComponent.cs


using System;
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
public class SettingsSystemGeneralComponent : SettingsSystemSubComponents
{
[SerializeField] TMP_Dropdown languageDropdown;
SettingsSystem settingsSystem;
public LanguageSetting Language { get; private set; }
public enum LanguageSetting
{
English,
German,
//TODO: which languages are going to be supported?
}
void Start()
{
Setup();
}
protected override void Setup()
{
settingsSystem = transform.parent.GetComponent<SettingsSystem>();
languageDropdown.AddOptions(GetDropdownData(Enum.GetNames(typeof(LanguageSetting))));
//TODO: Load previous serialized session data via Load/Save class
Language = SettingsSystemGeneralComponent.LanguageSetting.English;
languageDropdown.SetValueWithoutNotify((int) Language);
}
#region UI CALLBACKS
public void OnChangeLanguage(int languageIndex)
{
Language = (LanguageSetting) languageIndex;
Debug.Log("Language set to: " + Language);
}
#endregion
}

208
UOP1_Project/Assets/Scripts/Systems/Settings/SettingsSystemGraphicsComponent.cs


using System;
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class SettingsSystemGraphicsComponent : SettingsSystemSubComponents
{
[SerializeField] TMP_Dropdown resolutionsDropdown;
[SerializeField] TMP_Dropdown shadowQualityDropdown;
[SerializeField] TMP_Dropdown anisotropicFilteringDropdown;
[SerializeField] TMP_Dropdown graphicsPresetsDropdown;
[SerializeField] Slider antiAliasingSlider;
[SerializeField] Slider shadowDistanceSlider;
[SerializeField] Toggle fullscreenToggle;
[SerializeField] TextMeshProUGUI antiAliasingText;
[SerializeField] TextMeshProUGUI shadowDistanceText;
[SerializeField] SettingsPresetsScriptableObject settingsPresets;
bool setupComplete;
//Advanced graphic settings
SettingsPresetsScriptableObject.AdvancedGraphics currentAdvancedGraphics, previousAdvancedGraphics;
int currentQualityIndex, previousQualityIndex;
//Fullscreen settings
public bool FullScreen { get; private set; }
bool previouslyInFullScreen;
//Resolution setting
Resolution currentResolution, previousResolution;
void OnEnable()
{
if (!setupComplete)
{
Setup();
}
}
protected override void Setup()
{
resolutionsDropdown.AddOptions(GetResolutionsDropdownData());
graphicsPresetsDropdown.AddOptions(GetDropdownData(Enum.GetNames(typeof(SettingsPresetsScriptableObject.GraphicsQualityLevel)), "Custom"));
anisotropicFilteringDropdown.AddOptions(GetDropdownData(Enum.GetNames(typeof(AnisotropicFiltering))));
shadowQualityDropdown.AddOptions(GetDropdownData(Enum.GetNames(typeof(ShadowQuality))));
//RESOLUTION
//TODO: apparently, unity keeps the resolution which was set in the last session. But there is no method to get this resolution in the next session
//TODO: because Screen.currentResolution in windowed mode gives back the resolution of the desktop, not the unity window resolution
currentResolution = Screen.resolutions[Screen.resolutions.Length - 1]; //Initially set highest possible resolution on device
previousResolution = currentResolution;
Screen.SetResolution(currentResolution.width, currentResolution.height, Screen.fullScreenMode, currentResolution.refreshRate);
SelectCurrentResolution();
//FULLSCREEN MODE
//TODO: load previous session fullscreen setting
FullScreen = Screen.fullScreenMode == FullScreenMode.ExclusiveFullScreen;
previouslyInFullScreen = FullScreen;
fullscreenToggle.SetIsOnWithoutNotify(FullScreen);
//QUALITY PRESET
//TODO: instead of hardcoding the level here, load data from previous session
currentQualityIndex = (int) SettingsPresetsScriptableObject.GraphicsQualityLevel.Low;
previousQualityIndex = currentQualityIndex;
currentAdvancedGraphics = settingsPresets.presetList[currentQualityIndex]; //Set to lowest preset initially
previousAdvancedGraphics = currentAdvancedGraphics;
graphicsPresetsDropdown.SetValueWithoutNotify(currentAdvancedGraphics.custom ? graphicsPresetsDropdown.options.Count-1 : currentQualityIndex);
UpdateUI();
setupComplete = true;
}
List<TMP_Dropdown.OptionData> GetResolutionsDropdownData()
{
List<TMP_Dropdown.OptionData> options = new List<TMP_Dropdown.OptionData>();
for (int i = 0; i < Screen.resolutions.Length; i++)
{
options.Add(new TMP_Dropdown.OptionData(Screen.resolutions[i].ToString()));
}
return options;
}
void UpdateUI()
{
anisotropicFilteringDropdown.SetValueWithoutNotify((int) currentAdvancedGraphics.anisotropicFiltering);
antiAliasingSlider.SetValueWithoutNotify(currentAdvancedGraphics.antiAliasing);
shadowDistanceSlider.SetValueWithoutNotify(currentAdvancedGraphics.shadowDistance);
shadowQualityDropdown.SetValueWithoutNotify((int) currentAdvancedGraphics.shadowQuality);
shadowDistanceText.text = currentAdvancedGraphics.shadowDistance.ToString();
antiAliasingText.text = currentAdvancedGraphics.antiAliasing.ToString();
fullscreenToggle.SetIsOnWithoutNotify(FullScreen);
graphicsPresetsDropdown.SetValueWithoutNotify(currentAdvancedGraphics.custom ? graphicsPresetsDropdown.options.Count-1 : currentQualityIndex);
}
#region UI CALLBACKS
public void OnChangeFullscreen(bool fullScreen)
{
Screen.fullScreenMode = fullScreen ? FullScreenMode.ExclusiveFullScreen : FullScreenMode.Windowed;
FullScreen = fullScreen;
}
public void OnChangeResolution(int resolutionIndex)
{
Debug.Log("Index: " + resolutionIndex);
currentResolution = Screen.resolutions[resolutionIndex];
Screen.SetResolution(currentResolution.width, currentResolution.height, Screen.fullScreenMode, currentResolution.refreshRate);
}
public void OnChangeAnisotropicFiltering(int anisoLevel)
{
currentAdvancedGraphics.anisotropicFiltering = (AnisotropicFiltering) anisoLevel;
currentAdvancedGraphics.custom = true;
UpdateUI();
}
public void OnChangeAntialiasing(float value)
{
currentAdvancedGraphics.antiAliasing = (int) value;
currentAdvancedGraphics.custom = true;
UpdateUI();
}
public void OnChangeShadowDistance(float shadowDistanceValue)
{
//TODO: configure min max value in slider
currentAdvancedGraphics.shadowDistance = shadowDistanceValue;
currentAdvancedGraphics.custom = true;
UpdateUI();
}
public void OnChangeShadowQuality(int level)
{
currentAdvancedGraphics.shadowQuality = (ShadowQuality) level;
currentAdvancedGraphics.custom = true;
UpdateUI();
}
public void OnChangeQualityPreset(int level)
{
if (level >= settingsPresets.presetList.Count)
{
//Custom level chosen
currentAdvancedGraphics.custom = true;
}
else
{
currentAdvancedGraphics = settingsPresets.presetList[level];
}
currentQualityIndex = level;
UpdateUI();
}
#endregion
void SelectCurrentResolution()
{
int resolutionIndex = 0;
//TODO: is resolution persistent once it is set? Need to test in build
for (int i = 0; i < Screen.resolutions.Length; i++)
{
if (currentResolution.width == Screen.resolutions[i].width &&
currentResolution.height == Screen.resolutions[i].height &&
currentResolution.refreshRate == Screen.resolutions[i].refreshRate)
{
resolutionIndex = i;
}
}
resolutionsDropdown.SetValueWithoutNotify(resolutionIndex);
}
public void OnSaveGraphicsSettings()
{
QualitySettings.anisotropicFiltering = currentAdvancedGraphics.anisotropicFiltering;
QualitySettings.antiAliasing = currentAdvancedGraphics.antiAliasing;
QualitySettings.shadowDistance = currentAdvancedGraphics.shadowDistance;
QualitySettings.shadows = currentAdvancedGraphics.shadowQuality;
previousAdvancedGraphics = currentAdvancedGraphics;
previousQualityIndex = currentQualityIndex;
previousResolution = currentResolution;
previouslyInFullScreen = FullScreen;
Debug.Log("Saving resolution state: " + currentResolution);
Debug.Log(("Saving fullscreen mode state: " + previouslyInFullScreen));
}
public void OnCancelGraphicsSettings()
{
currentAdvancedGraphics = previousAdvancedGraphics;
currentQualityIndex = previousQualityIndex;
QualitySettings.anisotropicFiltering = currentAdvancedGraphics.anisotropicFiltering;
QualitySettings.antiAliasing = currentAdvancedGraphics.antiAliasing;
QualitySettings.shadowDistance = currentAdvancedGraphics.shadowDistance;
QualitySettings.shadows = currentAdvancedGraphics.shadowQuality;
Screen.SetResolution(previousResolution.width, previousResolution.height, previouslyInFullScreen ? FullScreenMode.ExclusiveFullScreen : FullScreenMode.Windowed, previousResolution.refreshRate);
// It might be a good idea to wait for the end of frame here with a coroutine, because setResolution actually is executed at the end of the next frame
//TODO: Observe this for issues in future
currentResolution = previousResolution;
FullScreen = previouslyInFullScreen;
SelectCurrentResolution();
UpdateUI();
Debug.Log("New Resolution: " + previousResolution);
Debug.Log("New fullscreen mode: " + FullScreen);
}
}

24
UOP1_Project/Assets/Scripts/Systems/Settings/SettingsSystemSubComponents.cs


using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
public abstract class SettingsSystemSubComponents : MonoBehaviour
{
protected List<TMP_Dropdown.OptionData> GetDropdownData(string[] optionNames, params string[] customOptions)
{
List<TMP_Dropdown.OptionData> options = new List<TMP_Dropdown.OptionData>();
foreach (string option in optionNames)
{
options.Add(new TMP_Dropdown.OptionData(option));
}
foreach (string option in customOptions)
{
options.Add(new TMP_Dropdown.OptionData(option));
}
return options;
}
protected abstract void Setup();
}

33
UOP1_Project/Assets/Scripts/Systems/Settings/GraphicsPresets.asset


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 8d1813776c092430c8317fdd5290dc57, type: 3}
m_Name: GraphicsPresets
m_EditorClassIdentifier:
presetList:
- qualityLevel: 0
shadowQuality: 0
anisotropicFiltering: 0
antiAliasing: 0
shadowDistance: 20
custom: 0
- qualityLevel: 1
shadowQuality: 1
anisotropicFiltering: 1
antiAliasing: 2
shadowDistance: 50
custom: 0
- qualityLevel: 2
shadowQuality: 2
anisotropicFiltering: 2
antiAliasing: 8
shadowDistance: 100
custom: 0

/UOP1_Project/Assets/Scripts/Systems/Settings/SettingsSystemAudioComponent.cs.meta → /UOP1_Project/Assets/Scripts/Systems/Settings/SettingsAudioComponent.cs.meta

/UOP1_Project/Assets/Scripts/Systems/Settings/SettingsSystemGeneralComponent.cs.meta → /UOP1_Project/Assets/Scripts/Systems/Settings/SettingsLanguageComponent.cs.meta

/UOP1_Project/Assets/Scripts/Systems/Settings/SettingsUIController.cs.meta → /UOP1_Project/Assets/Scripts/Systems/Settings/UISettingsController.cs.meta

/UOP1_Project/Assets/Scripts/Systems/Settings/SettingsPresetsScriptableObject.cs.meta → /UOP1_Project/Assets/Scripts/Systems/Settings/SettingsGraphicsComponent.cs.meta

/UOP1_Project/Assets/Scripts/Systems/Settings/SettingsSystemGraphicsComponent.cs.meta → /UOP1_Project/Assets/Scripts/Systems/Settings/SettingsSO.cs.meta

/UOP1_Project/Assets/Scripts/UI/Inventory/UIInventoryActionButton.cs.meta → /UOP1_Project/Assets/Scripts/UI/Inventory/UIActionButton.cs.meta

/UOP1_Project/Assets/Scripts/UI/Inventory/UIInventoryActionButton.cs → /UOP1_Project/Assets/Scripts/UI/Inventory/UIActionButton.cs

/UOP1_Project/Assets/Scripts/UI/UIButtonSetter.cs.meta → /UOP1_Project/Assets/Scripts/UI/UIGenericButton.cs.meta

/UOP1_Project/Assets/Scripts/UI/UIButtonSetter.cs → /UOP1_Project/Assets/Scripts/UI/UIGenericButton.cs

/UOP1_Project/Assets/Scripts/Systems/Settings/SettingsSystemSubComponents.cs.meta → /UOP1_Project/Assets/Scripts/SetButtonNavigation.cs.meta

正在加载...
取消
保存