├── .gitignore ├── Assets ├── UIManager.meta └── UIManager │ ├── Example.meta │ ├── Example │ ├── Resources.meta │ ├── Resources │ │ ├── Prefabs.meta │ │ └── Prefabs │ │ │ ├── UI.meta │ │ │ └── UI │ │ │ ├── Screens.meta │ │ │ └── Screens │ │ │ ├── EmptyScreen.prefab │ │ │ ├── EmptyScreen.prefab.meta │ │ │ ├── ExampleMenuScreen.prefab │ │ │ ├── ExampleMenuScreen.prefab.meta │ │ │ ├── ExamplePopupScreen.prefab │ │ │ └── ExamplePopupScreen.prefab.meta │ ├── Scripts.meta │ ├── Scripts │ │ ├── GameManager.cs │ │ ├── GameManager.cs.meta │ │ ├── UI.meta │ │ └── UI │ │ │ ├── Screens.meta │ │ │ └── Screens │ │ │ ├── ExampleMenuScreen.cs │ │ │ ├── ExampleMenuScreen.cs.meta │ │ │ ├── ExamplePopupScreen.cs │ │ │ └── ExamplePopupScreen.cs.meta │ ├── UIExample.unity │ └── UIExample.unity.meta │ ├── README.md │ ├── README.md.meta │ ├── Screens.meta │ ├── Screens │ ├── EmptyScreen.cs │ ├── EmptyScreen.cs.meta │ ├── Screen.cs │ └── Screen.cs.meta │ ├── UIManager.cs │ ├── UIManager.cs.meta │ ├── _images.meta │ └── _images │ ├── prefab_directory.png │ ├── prefab_directory.png.meta │ ├── uiexample_scene.png │ └── uiexample_scene.png.meta ├── LICENSE ├── Logs └── Packages-Update.log ├── Packages └── manifest.json ├── ProjectSettings ├── AudioManager.asset ├── ClusterInputManager.asset ├── DynamicsManager.asset ├── EditorBuildSettings.asset ├── EditorSettings.asset ├── GraphicsSettings.asset ├── InputManager.asset ├── NavMeshAreas.asset ├── Physics2DSettings.asset ├── PresetManager.asset ├── ProjectSettings.asset ├── ProjectVersion.txt ├── QualitySettings.asset ├── TagManager.asset ├── TimeManager.asset ├── UnityConnectSettings.asset ├── VFXManager.asset └── XRSettings.asset └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | [Ll]ibrary/ 2 | [Tt]emp/ 3 | [Oo]bj/ 4 | [Bb]uild/ 5 | [Bb]uilds/ 6 | Assets/AssetStoreTools* 7 | 8 | # Visual Studio cache directory 9 | .vs/ 10 | .vscode/ 11 | 12 | # Autogenerated VS/MD/Consulo solution and project files 13 | ExportedObj/ 14 | .consulo/ 15 | *.csproj 16 | *.unityproj 17 | *.sln 18 | *.suo 19 | *.tmp 20 | *.user 21 | *.userprefs 22 | *.pidb 23 | *.booproj 24 | *.svd 25 | *.pdb 26 | *.opendb 27 | 28 | # Unity3D generated meta files 29 | *.pidb.meta 30 | *.pdb.meta 31 | 32 | # Unity3D Generated File On Crash Reports 33 | sysinfo.txt 34 | 35 | # Builds 36 | *.apk 37 | *.unitypackage 38 | -------------------------------------------------------------------------------- /Assets/UIManager.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0def15d386850bb4aaf91f3d37bd472d 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/UIManager/Example.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3bf6a103ec649408bb8106e510c5028a 3 | folderAsset: yes 4 | timeCreated: 1508342313 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/UIManager/Example/Resources.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5f61e6f8debcd40c4aabd1e50b8aff78 3 | folderAsset: yes 4 | timeCreated: 1508342932 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/UIManager/Example/Resources/Prefabs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 17a16a9aeccc04263aa97aefa787a56d 3 | folderAsset: yes 4 | timeCreated: 1508342943 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/UIManager/Example/Resources/Prefabs/UI.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1189eae6f8d7d404385bb7fd04f71bb7 3 | folderAsset: yes 4 | timeCreated: 1508342936 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/UIManager/Example/Resources/Prefabs/UI/Screens.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 475848bce2d534268ae097b0e3af3e1f 3 | folderAsset: yes 4 | timeCreated: 1508342948 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/UIManager/Example/Resources/Prefabs/UI/Screens/EmptyScreen.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1001 &100100000 4 | Prefab: 5 | m_ObjectHideFlags: 1 6 | serializedVersion: 2 7 | m_Modification: 8 | m_TransformParent: {fileID: 0} 9 | m_Modifications: [] 10 | m_RemovedComponents: [] 11 | m_ParentPrefab: {fileID: 0} 12 | m_RootGameObject: {fileID: 1354619563731858} 13 | m_IsPrefabParent: 1 14 | --- !u!1 &1187194397354980 15 | GameObject: 16 | m_ObjectHideFlags: 0 17 | m_PrefabParentObject: {fileID: 0} 18 | m_PrefabInternal: {fileID: 100100000} 19 | serializedVersion: 5 20 | m_Component: 21 | - component: {fileID: 224136737280061146} 22 | - component: {fileID: 222855862302620780} 23 | - component: {fileID: 114593958767330736} 24 | m_Layer: 5 25 | m_Name: Text 26 | m_TagString: Untagged 27 | m_Icon: {fileID: 0} 28 | m_NavMeshLayer: 0 29 | m_StaticEditorFlags: 0 30 | m_IsActive: 1 31 | --- !u!1 &1354619563731858 32 | GameObject: 33 | m_ObjectHideFlags: 0 34 | m_PrefabParentObject: {fileID: 0} 35 | m_PrefabInternal: {fileID: 100100000} 36 | serializedVersion: 5 37 | m_Component: 38 | - component: {fileID: 224349177789100604} 39 | - component: {fileID: 223401169358726424} 40 | - component: {fileID: 114340123648673264} 41 | - component: {fileID: 114060369503643750} 42 | m_Layer: 5 43 | m_Name: EmptyScreen 44 | m_TagString: Untagged 45 | m_Icon: {fileID: 0} 46 | m_NavMeshLayer: 0 47 | m_StaticEditorFlags: 0 48 | m_IsActive: 1 49 | --- !u!1 &1372979415298634 50 | GameObject: 51 | m_ObjectHideFlags: 0 52 | m_PrefabParentObject: {fileID: 0} 53 | m_PrefabInternal: {fileID: 100100000} 54 | serializedVersion: 5 55 | m_Component: 56 | - component: {fileID: 224134077304913848} 57 | - component: {fileID: 222775958108722974} 58 | - component: {fileID: 114116569335356420} 59 | m_Layer: 5 60 | m_Name: White_BG 61 | m_TagString: Untagged 62 | m_Icon: {fileID: 0} 63 | m_NavMeshLayer: 0 64 | m_StaticEditorFlags: 0 65 | m_IsActive: 1 66 | --- !u!114 &114060369503643750 67 | MonoBehaviour: 68 | m_ObjectHideFlags: 1 69 | m_PrefabParentObject: {fileID: 0} 70 | m_PrefabInternal: {fileID: 100100000} 71 | m_GameObject: {fileID: 1354619563731858} 72 | m_Enabled: 1 73 | m_EditorHideFlags: 0 74 | m_Script: {fileID: 11500000, guid: 5adc49261e0e241f3804183f4295dde3, type: 3} 75 | m_Name: 76 | m_EditorClassIdentifier: 77 | keepCached: 0 78 | --- !u!114 &114116569335356420 79 | MonoBehaviour: 80 | m_ObjectHideFlags: 1 81 | m_PrefabParentObject: {fileID: 0} 82 | m_PrefabInternal: {fileID: 100100000} 83 | m_GameObject: {fileID: 1372979415298634} 84 | m_Enabled: 1 85 | m_EditorHideFlags: 0 86 | m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} 87 | m_Name: 88 | m_EditorClassIdentifier: 89 | m_Material: {fileID: 0} 90 | m_Color: {r: 1, g: 1, b: 1, a: 1} 91 | m_RaycastTarget: 1 92 | m_OnCullStateChanged: 93 | m_PersistentCalls: 94 | m_Calls: [] 95 | m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, 96 | Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 97 | m_Sprite: {fileID: 0} 98 | m_Type: 0 99 | m_PreserveAspect: 0 100 | m_FillCenter: 1 101 | m_FillMethod: 4 102 | m_FillAmount: 1 103 | m_FillClockwise: 1 104 | m_FillOrigin: 0 105 | --- !u!114 &114340123648673264 106 | MonoBehaviour: 107 | m_ObjectHideFlags: 1 108 | m_PrefabParentObject: {fileID: 0} 109 | m_PrefabInternal: {fileID: 100100000} 110 | m_GameObject: {fileID: 1354619563731858} 111 | m_Enabled: 1 112 | m_EditorHideFlags: 0 113 | m_Script: {fileID: 1301386320, guid: f70555f144d8491a825f0804e09c671c, type: 3} 114 | m_Name: 115 | m_EditorClassIdentifier: 116 | m_IgnoreReversedGraphics: 1 117 | m_BlockingObjects: 0 118 | m_BlockingMask: 119 | serializedVersion: 2 120 | m_Bits: 4294967295 121 | --- !u!114 &114593958767330736 122 | MonoBehaviour: 123 | m_ObjectHideFlags: 1 124 | m_PrefabParentObject: {fileID: 0} 125 | m_PrefabInternal: {fileID: 100100000} 126 | m_GameObject: {fileID: 1187194397354980} 127 | m_Enabled: 1 128 | m_EditorHideFlags: 0 129 | m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} 130 | m_Name: 131 | m_EditorClassIdentifier: 132 | m_Material: {fileID: 0} 133 | m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} 134 | m_RaycastTarget: 1 135 | m_OnCullStateChanged: 136 | m_PersistentCalls: 137 | m_Calls: [] 138 | m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, 139 | Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 140 | m_FontData: 141 | m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} 142 | m_FontSize: 32 143 | m_FontStyle: 0 144 | m_BestFit: 0 145 | m_MinSize: 3 146 | m_MaxSize: 40 147 | m_Alignment: 4 148 | m_AlignByGeometry: 0 149 | m_RichText: 1 150 | m_HorizontalOverflow: 0 151 | m_VerticalOverflow: 0 152 | m_LineSpacing: 1 153 | m_Text: Empty 154 | --- !u!222 &222775958108722974 155 | CanvasRenderer: 156 | m_ObjectHideFlags: 1 157 | m_PrefabParentObject: {fileID: 0} 158 | m_PrefabInternal: {fileID: 100100000} 159 | m_GameObject: {fileID: 1372979415298634} 160 | --- !u!222 &222855862302620780 161 | CanvasRenderer: 162 | m_ObjectHideFlags: 1 163 | m_PrefabParentObject: {fileID: 0} 164 | m_PrefabInternal: {fileID: 100100000} 165 | m_GameObject: {fileID: 1187194397354980} 166 | --- !u!223 &223401169358726424 167 | Canvas: 168 | m_ObjectHideFlags: 1 169 | m_PrefabParentObject: {fileID: 0} 170 | m_PrefabInternal: {fileID: 100100000} 171 | m_GameObject: {fileID: 1354619563731858} 172 | m_Enabled: 1 173 | serializedVersion: 3 174 | m_RenderMode: 1 175 | m_Camera: {fileID: 0} 176 | m_PlaneDistance: 100 177 | m_PixelPerfect: 1 178 | m_ReceivesEvents: 1 179 | m_OverrideSorting: 0 180 | m_OverridePixelPerfect: 0 181 | m_SortingBucketNormalizedSize: 0 182 | m_AdditionalShaderChannelsFlag: 0 183 | m_SortingLayerID: 0 184 | m_SortingOrder: 99 185 | m_TargetDisplay: 0 186 | --- !u!224 &224134077304913848 187 | RectTransform: 188 | m_ObjectHideFlags: 1 189 | m_PrefabParentObject: {fileID: 0} 190 | m_PrefabInternal: {fileID: 100100000} 191 | m_GameObject: {fileID: 1372979415298634} 192 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 193 | m_LocalPosition: {x: 0, y: 0, z: 0} 194 | m_LocalScale: {x: 1, y: 1, z: 1} 195 | m_Children: [] 196 | m_Father: {fileID: 224349177789100604} 197 | m_RootOrder: 0 198 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 199 | m_AnchorMin: {x: 0, y: 0} 200 | m_AnchorMax: {x: 1, y: 1} 201 | m_AnchoredPosition: {x: 0, y: 0} 202 | m_SizeDelta: {x: 0, y: 0} 203 | m_Pivot: {x: 0.5, y: 0.5} 204 | --- !u!224 &224136737280061146 205 | RectTransform: 206 | m_ObjectHideFlags: 1 207 | m_PrefabParentObject: {fileID: 0} 208 | m_PrefabInternal: {fileID: 100100000} 209 | m_GameObject: {fileID: 1187194397354980} 210 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 211 | m_LocalPosition: {x: 0, y: 0, z: 0} 212 | m_LocalScale: {x: 1, y: 1, z: 1} 213 | m_Children: [] 214 | m_Father: {fileID: 224349177789100604} 215 | m_RootOrder: 1 216 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 217 | m_AnchorMin: {x: 0, y: 0} 218 | m_AnchorMax: {x: 1, y: 1} 219 | m_AnchoredPosition: {x: 0, y: 0} 220 | m_SizeDelta: {x: 0, y: 0} 221 | m_Pivot: {x: 0.5, y: 0.5} 222 | --- !u!224 &224349177789100604 223 | RectTransform: 224 | m_ObjectHideFlags: 1 225 | m_PrefabParentObject: {fileID: 0} 226 | m_PrefabInternal: {fileID: 100100000} 227 | m_GameObject: {fileID: 1354619563731858} 228 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 229 | m_LocalPosition: {x: 0, y: 0, z: 0} 230 | m_LocalScale: {x: 0.99998, y: 0.99998, z: 0.99998} 231 | m_Children: 232 | - {fileID: 224134077304913848} 233 | - {fileID: 224136737280061146} 234 | m_Father: {fileID: 0} 235 | m_RootOrder: 0 236 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 237 | m_AnchorMin: {x: 0, y: 0} 238 | m_AnchorMax: {x: 1, y: 1} 239 | m_AnchoredPosition: {x: 0, y: 0} 240 | m_SizeDelta: {x: 0, y: 0} 241 | m_Pivot: {x: 0.5, y: 0.5} 242 | -------------------------------------------------------------------------------- /Assets/UIManager/Example/Resources/Prefabs/UI/Screens/EmptyScreen.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 365b5e8d6e00949b7a2a17cc9a3e6fca 3 | timeCreated: 1501708105 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | mainObjectFileID: 100100000 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/UIManager/Example/Resources/Prefabs/UI/Screens/ExampleMenuScreen.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1001 &100100000 4 | Prefab: 5 | m_ObjectHideFlags: 1 6 | serializedVersion: 2 7 | m_Modification: 8 | m_TransformParent: {fileID: 0} 9 | m_Modifications: [] 10 | m_RemovedComponents: [] 11 | m_ParentPrefab: {fileID: 0} 12 | m_RootGameObject: {fileID: 1354619563731858} 13 | m_IsPrefabParent: 1 14 | --- !u!1 &1033211664526286 15 | GameObject: 16 | m_ObjectHideFlags: 1 17 | m_PrefabParentObject: {fileID: 0} 18 | m_PrefabInternal: {fileID: 100100000} 19 | serializedVersion: 5 20 | m_Component: 21 | - component: {fileID: 224340619173213436} 22 | - component: {fileID: 222613931097977016} 23 | - component: {fileID: 114560134912050160} 24 | m_Layer: 5 25 | m_Name: Text 26 | m_TagString: Untagged 27 | m_Icon: {fileID: 0} 28 | m_NavMeshLayer: 0 29 | m_StaticEditorFlags: 0 30 | m_IsActive: 1 31 | --- !u!1 &1042405608803796 32 | GameObject: 33 | m_ObjectHideFlags: 1 34 | m_PrefabParentObject: {fileID: 0} 35 | m_PrefabInternal: {fileID: 100100000} 36 | serializedVersion: 5 37 | m_Component: 38 | - component: {fileID: 224930791043617898} 39 | - component: {fileID: 222291132147571890} 40 | - component: {fileID: 114193074751029308} 41 | m_Layer: 5 42 | m_Name: Text 43 | m_TagString: Untagged 44 | m_Icon: {fileID: 0} 45 | m_NavMeshLayer: 0 46 | m_StaticEditorFlags: 0 47 | m_IsActive: 1 48 | --- !u!1 &1109283820140666 49 | GameObject: 50 | m_ObjectHideFlags: 1 51 | m_PrefabParentObject: {fileID: 0} 52 | m_PrefabInternal: {fileID: 100100000} 53 | serializedVersion: 5 54 | m_Component: 55 | - component: {fileID: 224807705001741408} 56 | - component: {fileID: 222267692924776396} 57 | - component: {fileID: 114270132286561438} 58 | m_Layer: 5 59 | m_Name: Text 60 | m_TagString: Untagged 61 | m_Icon: {fileID: 0} 62 | m_NavMeshLayer: 0 63 | m_StaticEditorFlags: 0 64 | m_IsActive: 1 65 | --- !u!1 &1141038177472460 66 | GameObject: 67 | m_ObjectHideFlags: 1 68 | m_PrefabParentObject: {fileID: 0} 69 | m_PrefabInternal: {fileID: 100100000} 70 | serializedVersion: 5 71 | m_Component: 72 | - component: {fileID: 224854447113955210} 73 | - component: {fileID: 222062579466941602} 74 | - component: {fileID: 114966689335909756} 75 | - component: {fileID: 114690216720684550} 76 | m_Layer: 5 77 | m_Name: ButtonC 78 | m_TagString: Untagged 79 | m_Icon: {fileID: 0} 80 | m_NavMeshLayer: 0 81 | m_StaticEditorFlags: 0 82 | m_IsActive: 1 83 | --- !u!1 &1187194397354980 84 | GameObject: 85 | m_ObjectHideFlags: 0 86 | m_PrefabParentObject: {fileID: 0} 87 | m_PrefabInternal: {fileID: 100100000} 88 | serializedVersion: 5 89 | m_Component: 90 | - component: {fileID: 224136737280061146} 91 | - component: {fileID: 222855862302620780} 92 | - component: {fileID: 114593958767330736} 93 | m_Layer: 5 94 | m_Name: HeaderLabel 95 | m_TagString: Untagged 96 | m_Icon: {fileID: 0} 97 | m_NavMeshLayer: 0 98 | m_StaticEditorFlags: 0 99 | m_IsActive: 1 100 | --- !u!1 &1236689490558120 101 | GameObject: 102 | m_ObjectHideFlags: 0 103 | m_PrefabParentObject: {fileID: 0} 104 | m_PrefabInternal: {fileID: 100100000} 105 | serializedVersion: 5 106 | m_Component: 107 | - component: {fileID: 224617722119769590} 108 | - component: {fileID: 114370351993906354} 109 | m_Layer: 5 110 | m_Name: ButtonLayoutGroup 111 | m_TagString: Untagged 112 | m_Icon: {fileID: 0} 113 | m_NavMeshLayer: 0 114 | m_StaticEditorFlags: 0 115 | m_IsActive: 1 116 | --- !u!1 &1337605609706558 117 | GameObject: 118 | m_ObjectHideFlags: 1 119 | m_PrefabParentObject: {fileID: 0} 120 | m_PrefabInternal: {fileID: 100100000} 121 | serializedVersion: 5 122 | m_Component: 123 | - component: {fileID: 224082796190951718} 124 | - component: {fileID: 222940227024693918} 125 | - component: {fileID: 114298443236869344} 126 | m_Layer: 5 127 | m_Name: Text 128 | m_TagString: Untagged 129 | m_Icon: {fileID: 0} 130 | m_NavMeshLayer: 0 131 | m_StaticEditorFlags: 0 132 | m_IsActive: 1 133 | --- !u!1 &1354619563731858 134 | GameObject: 135 | m_ObjectHideFlags: 0 136 | m_PrefabParentObject: {fileID: 0} 137 | m_PrefabInternal: {fileID: 100100000} 138 | serializedVersion: 5 139 | m_Component: 140 | - component: {fileID: 224349177789100604} 141 | - component: {fileID: 223401169358726424} 142 | - component: {fileID: 114340123648673264} 143 | - component: {fileID: 114102610489145022} 144 | m_Layer: 5 145 | m_Name: ExampleMenuScreen 146 | m_TagString: Untagged 147 | m_Icon: {fileID: 0} 148 | m_NavMeshLayer: 0 149 | m_StaticEditorFlags: 0 150 | m_IsActive: 1 151 | --- !u!1 &1372979415298634 152 | GameObject: 153 | m_ObjectHideFlags: 0 154 | m_PrefabParentObject: {fileID: 0} 155 | m_PrefabInternal: {fileID: 100100000} 156 | serializedVersion: 5 157 | m_Component: 158 | - component: {fileID: 224134077304913848} 159 | - component: {fileID: 222775958108722974} 160 | - component: {fileID: 114116569335356420} 161 | m_Layer: 5 162 | m_Name: White_BG 163 | m_TagString: Untagged 164 | m_Icon: {fileID: 0} 165 | m_NavMeshLayer: 0 166 | m_StaticEditorFlags: 0 167 | m_IsActive: 1 168 | --- !u!1 &1480697143442862 169 | GameObject: 170 | m_ObjectHideFlags: 1 171 | m_PrefabParentObject: {fileID: 0} 172 | m_PrefabInternal: {fileID: 100100000} 173 | serializedVersion: 5 174 | m_Component: 175 | - component: {fileID: 224902744811582620} 176 | - component: {fileID: 222254695228767440} 177 | - component: {fileID: 114204914760938056} 178 | - component: {fileID: 114848760734006610} 179 | m_Layer: 5 180 | m_Name: ButtonD 181 | m_TagString: Untagged 182 | m_Icon: {fileID: 0} 183 | m_NavMeshLayer: 0 184 | m_StaticEditorFlags: 0 185 | m_IsActive: 1 186 | --- !u!1 &1530471562738660 187 | GameObject: 188 | m_ObjectHideFlags: 1 189 | m_PrefabParentObject: {fileID: 0} 190 | m_PrefabInternal: {fileID: 100100000} 191 | serializedVersion: 5 192 | m_Component: 193 | - component: {fileID: 224470291704061748} 194 | - component: {fileID: 222099582781712562} 195 | - component: {fileID: 114227435440390150} 196 | - component: {fileID: 114240996766326334} 197 | m_Layer: 5 198 | m_Name: ButtonA 199 | m_TagString: Untagged 200 | m_Icon: {fileID: 0} 201 | m_NavMeshLayer: 0 202 | m_StaticEditorFlags: 0 203 | m_IsActive: 1 204 | --- !u!1 &1864471343301104 205 | GameObject: 206 | m_ObjectHideFlags: 1 207 | m_PrefabParentObject: {fileID: 0} 208 | m_PrefabInternal: {fileID: 100100000} 209 | serializedVersion: 5 210 | m_Component: 211 | - component: {fileID: 224979179032771270} 212 | - component: {fileID: 222083518369085914} 213 | - component: {fileID: 114682802089825662} 214 | - component: {fileID: 114849494933887868} 215 | m_Layer: 5 216 | m_Name: ButtonB 217 | m_TagString: Untagged 218 | m_Icon: {fileID: 0} 219 | m_NavMeshLayer: 0 220 | m_StaticEditorFlags: 0 221 | m_IsActive: 1 222 | --- !u!114 &114102610489145022 223 | MonoBehaviour: 224 | m_ObjectHideFlags: 1 225 | m_PrefabParentObject: {fileID: 0} 226 | m_PrefabInternal: {fileID: 100100000} 227 | m_GameObject: {fileID: 1354619563731858} 228 | m_Enabled: 1 229 | m_EditorHideFlags: 0 230 | m_Script: {fileID: 11500000, guid: 6785eb1189ddb422bbd8398b14630ee0, type: 3} 231 | m_Name: 232 | m_EditorClassIdentifier: 233 | keepCached: 0 234 | headerLabel: {fileID: 114593958767330736} 235 | buttonA: {fileID: 114240996766326334} 236 | buttonB: {fileID: 114849494933887868} 237 | buttonC: {fileID: 114690216720684550} 238 | buttonD: {fileID: 114848760734006610} 239 | --- !u!114 &114116569335356420 240 | MonoBehaviour: 241 | m_ObjectHideFlags: 1 242 | m_PrefabParentObject: {fileID: 0} 243 | m_PrefabInternal: {fileID: 100100000} 244 | m_GameObject: {fileID: 1372979415298634} 245 | m_Enabled: 1 246 | m_EditorHideFlags: 0 247 | m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} 248 | m_Name: 249 | m_EditorClassIdentifier: 250 | m_Material: {fileID: 0} 251 | m_Color: {r: 1, g: 1, b: 1, a: 1} 252 | m_RaycastTarget: 1 253 | m_OnCullStateChanged: 254 | m_PersistentCalls: 255 | m_Calls: [] 256 | m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, 257 | Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 258 | m_Sprite: {fileID: 0} 259 | m_Type: 0 260 | m_PreserveAspect: 0 261 | m_FillCenter: 1 262 | m_FillMethod: 4 263 | m_FillAmount: 1 264 | m_FillClockwise: 1 265 | m_FillOrigin: 0 266 | --- !u!114 &114193074751029308 267 | MonoBehaviour: 268 | m_ObjectHideFlags: 1 269 | m_PrefabParentObject: {fileID: 0} 270 | m_PrefabInternal: {fileID: 100100000} 271 | m_GameObject: {fileID: 1042405608803796} 272 | m_Enabled: 1 273 | m_EditorHideFlags: 0 274 | m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} 275 | m_Name: 276 | m_EditorClassIdentifier: 277 | m_Material: {fileID: 0} 278 | m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} 279 | m_RaycastTarget: 1 280 | m_OnCullStateChanged: 281 | m_PersistentCalls: 282 | m_Calls: [] 283 | m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, 284 | Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 285 | m_FontData: 286 | m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} 287 | m_FontSize: 18 288 | m_FontStyle: 0 289 | m_BestFit: 0 290 | m_MinSize: 1 291 | m_MaxSize: 40 292 | m_Alignment: 4 293 | m_AlignByGeometry: 0 294 | m_RichText: 1 295 | m_HorizontalOverflow: 0 296 | m_VerticalOverflow: 0 297 | m_LineSpacing: 1 298 | m_Text: Button C 299 | --- !u!114 &114204914760938056 300 | MonoBehaviour: 301 | m_ObjectHideFlags: 1 302 | m_PrefabParentObject: {fileID: 0} 303 | m_PrefabInternal: {fileID: 100100000} 304 | m_GameObject: {fileID: 1480697143442862} 305 | m_Enabled: 1 306 | m_EditorHideFlags: 0 307 | m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} 308 | m_Name: 309 | m_EditorClassIdentifier: 310 | m_Material: {fileID: 0} 311 | m_Color: {r: 1, g: 1, b: 1, a: 1} 312 | m_RaycastTarget: 1 313 | m_OnCullStateChanged: 314 | m_PersistentCalls: 315 | m_Calls: [] 316 | m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, 317 | Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 318 | m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} 319 | m_Type: 1 320 | m_PreserveAspect: 0 321 | m_FillCenter: 1 322 | m_FillMethod: 4 323 | m_FillAmount: 1 324 | m_FillClockwise: 1 325 | m_FillOrigin: 0 326 | --- !u!114 &114227435440390150 327 | MonoBehaviour: 328 | m_ObjectHideFlags: 1 329 | m_PrefabParentObject: {fileID: 0} 330 | m_PrefabInternal: {fileID: 100100000} 331 | m_GameObject: {fileID: 1530471562738660} 332 | m_Enabled: 1 333 | m_EditorHideFlags: 0 334 | m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} 335 | m_Name: 336 | m_EditorClassIdentifier: 337 | m_Material: {fileID: 0} 338 | m_Color: {r: 1, g: 1, b: 1, a: 1} 339 | m_RaycastTarget: 1 340 | m_OnCullStateChanged: 341 | m_PersistentCalls: 342 | m_Calls: [] 343 | m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, 344 | Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 345 | m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} 346 | m_Type: 1 347 | m_PreserveAspect: 0 348 | m_FillCenter: 1 349 | m_FillMethod: 4 350 | m_FillAmount: 1 351 | m_FillClockwise: 1 352 | m_FillOrigin: 0 353 | --- !u!114 &114240996766326334 354 | MonoBehaviour: 355 | m_ObjectHideFlags: 1 356 | m_PrefabParentObject: {fileID: 0} 357 | m_PrefabInternal: {fileID: 100100000} 358 | m_GameObject: {fileID: 1530471562738660} 359 | m_Enabled: 1 360 | m_EditorHideFlags: 0 361 | m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} 362 | m_Name: 363 | m_EditorClassIdentifier: 364 | m_Navigation: 365 | m_Mode: 3 366 | m_SelectOnUp: {fileID: 0} 367 | m_SelectOnDown: {fileID: 0} 368 | m_SelectOnLeft: {fileID: 0} 369 | m_SelectOnRight: {fileID: 0} 370 | m_Transition: 1 371 | m_Colors: 372 | m_NormalColor: {r: 1, g: 1, b: 1, a: 1} 373 | m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} 374 | m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} 375 | m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} 376 | m_ColorMultiplier: 1 377 | m_FadeDuration: 0.1 378 | m_SpriteState: 379 | m_HighlightedSprite: {fileID: 0} 380 | m_PressedSprite: {fileID: 0} 381 | m_DisabledSprite: {fileID: 0} 382 | m_AnimationTriggers: 383 | m_NormalTrigger: Normal 384 | m_HighlightedTrigger: Highlighted 385 | m_PressedTrigger: Pressed 386 | m_DisabledTrigger: Disabled 387 | m_Interactable: 1 388 | m_TargetGraphic: {fileID: 114227435440390150} 389 | m_OnClick: 390 | m_PersistentCalls: 391 | m_Calls: [] 392 | m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, 393 | Culture=neutral, PublicKeyToken=null 394 | --- !u!114 &114270132286561438 395 | MonoBehaviour: 396 | m_ObjectHideFlags: 1 397 | m_PrefabParentObject: {fileID: 0} 398 | m_PrefabInternal: {fileID: 100100000} 399 | m_GameObject: {fileID: 1109283820140666} 400 | m_Enabled: 1 401 | m_EditorHideFlags: 0 402 | m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} 403 | m_Name: 404 | m_EditorClassIdentifier: 405 | m_Material: {fileID: 0} 406 | m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} 407 | m_RaycastTarget: 1 408 | m_OnCullStateChanged: 409 | m_PersistentCalls: 410 | m_Calls: [] 411 | m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, 412 | Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 413 | m_FontData: 414 | m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} 415 | m_FontSize: 18 416 | m_FontStyle: 0 417 | m_BestFit: 0 418 | m_MinSize: 1 419 | m_MaxSize: 40 420 | m_Alignment: 4 421 | m_AlignByGeometry: 0 422 | m_RichText: 1 423 | m_HorizontalOverflow: 0 424 | m_VerticalOverflow: 0 425 | m_LineSpacing: 1 426 | m_Text: Button D 427 | --- !u!114 &114298443236869344 428 | MonoBehaviour: 429 | m_ObjectHideFlags: 1 430 | m_PrefabParentObject: {fileID: 0} 431 | m_PrefabInternal: {fileID: 100100000} 432 | m_GameObject: {fileID: 1337605609706558} 433 | m_Enabled: 1 434 | m_EditorHideFlags: 0 435 | m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} 436 | m_Name: 437 | m_EditorClassIdentifier: 438 | m_Material: {fileID: 0} 439 | m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} 440 | m_RaycastTarget: 1 441 | m_OnCullStateChanged: 442 | m_PersistentCalls: 443 | m_Calls: [] 444 | m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, 445 | Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 446 | m_FontData: 447 | m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} 448 | m_FontSize: 18 449 | m_FontStyle: 0 450 | m_BestFit: 0 451 | m_MinSize: 1 452 | m_MaxSize: 40 453 | m_Alignment: 4 454 | m_AlignByGeometry: 0 455 | m_RichText: 1 456 | m_HorizontalOverflow: 0 457 | m_VerticalOverflow: 0 458 | m_LineSpacing: 1 459 | m_Text: Button A 460 | --- !u!114 &114340123648673264 461 | MonoBehaviour: 462 | m_ObjectHideFlags: 1 463 | m_PrefabParentObject: {fileID: 0} 464 | m_PrefabInternal: {fileID: 100100000} 465 | m_GameObject: {fileID: 1354619563731858} 466 | m_Enabled: 1 467 | m_EditorHideFlags: 0 468 | m_Script: {fileID: 1301386320, guid: f70555f144d8491a825f0804e09c671c, type: 3} 469 | m_Name: 470 | m_EditorClassIdentifier: 471 | m_IgnoreReversedGraphics: 1 472 | m_BlockingObjects: 0 473 | m_BlockingMask: 474 | serializedVersion: 2 475 | m_Bits: 4294967295 476 | --- !u!114 &114370351993906354 477 | MonoBehaviour: 478 | m_ObjectHideFlags: 1 479 | m_PrefabParentObject: {fileID: 0} 480 | m_PrefabInternal: {fileID: 100100000} 481 | m_GameObject: {fileID: 1236689490558120} 482 | m_Enabled: 1 483 | m_EditorHideFlags: 0 484 | m_Script: {fileID: 1297475563, guid: f70555f144d8491a825f0804e09c671c, type: 3} 485 | m_Name: 486 | m_EditorClassIdentifier: 487 | m_Padding: 488 | m_Left: 0 489 | m_Right: 0 490 | m_Top: 0 491 | m_Bottom: 0 492 | m_ChildAlignment: 0 493 | m_Spacing: 5.91 494 | m_ChildForceExpandWidth: 1 495 | m_ChildForceExpandHeight: 1 496 | m_ChildControlWidth: 1 497 | m_ChildControlHeight: 1 498 | --- !u!114 &114560134912050160 499 | MonoBehaviour: 500 | m_ObjectHideFlags: 1 501 | m_PrefabParentObject: {fileID: 0} 502 | m_PrefabInternal: {fileID: 100100000} 503 | m_GameObject: {fileID: 1033211664526286} 504 | m_Enabled: 1 505 | m_EditorHideFlags: 0 506 | m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} 507 | m_Name: 508 | m_EditorClassIdentifier: 509 | m_Material: {fileID: 0} 510 | m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} 511 | m_RaycastTarget: 1 512 | m_OnCullStateChanged: 513 | m_PersistentCalls: 514 | m_Calls: [] 515 | m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, 516 | Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 517 | m_FontData: 518 | m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} 519 | m_FontSize: 18 520 | m_FontStyle: 0 521 | m_BestFit: 0 522 | m_MinSize: 1 523 | m_MaxSize: 40 524 | m_Alignment: 4 525 | m_AlignByGeometry: 0 526 | m_RichText: 1 527 | m_HorizontalOverflow: 0 528 | m_VerticalOverflow: 0 529 | m_LineSpacing: 1 530 | m_Text: Button B 531 | --- !u!114 &114593958767330736 532 | MonoBehaviour: 533 | m_ObjectHideFlags: 1 534 | m_PrefabParentObject: {fileID: 0} 535 | m_PrefabInternal: {fileID: 100100000} 536 | m_GameObject: {fileID: 1187194397354980} 537 | m_Enabled: 1 538 | m_EditorHideFlags: 0 539 | m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} 540 | m_Name: 541 | m_EditorClassIdentifier: 542 | m_Material: {fileID: 0} 543 | m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} 544 | m_RaycastTarget: 1 545 | m_OnCullStateChanged: 546 | m_PersistentCalls: 547 | m_Calls: [] 548 | m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, 549 | Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 550 | m_FontData: 551 | m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} 552 | m_FontSize: 32 553 | m_FontStyle: 0 554 | m_BestFit: 0 555 | m_MinSize: 3 556 | m_MaxSize: 40 557 | m_Alignment: 4 558 | m_AlignByGeometry: 0 559 | m_RichText: 1 560 | m_HorizontalOverflow: 0 561 | m_VerticalOverflow: 0 562 | m_LineSpacing: 1 563 | m_Text:
564 | --- !u!114 &114682802089825662 565 | MonoBehaviour: 566 | m_ObjectHideFlags: 1 567 | m_PrefabParentObject: {fileID: 0} 568 | m_PrefabInternal: {fileID: 100100000} 569 | m_GameObject: {fileID: 1864471343301104} 570 | m_Enabled: 1 571 | m_EditorHideFlags: 0 572 | m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} 573 | m_Name: 574 | m_EditorClassIdentifier: 575 | m_Material: {fileID: 0} 576 | m_Color: {r: 1, g: 1, b: 1, a: 1} 577 | m_RaycastTarget: 1 578 | m_OnCullStateChanged: 579 | m_PersistentCalls: 580 | m_Calls: [] 581 | m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, 582 | Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 583 | m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} 584 | m_Type: 1 585 | m_PreserveAspect: 0 586 | m_FillCenter: 1 587 | m_FillMethod: 4 588 | m_FillAmount: 1 589 | m_FillClockwise: 1 590 | m_FillOrigin: 0 591 | --- !u!114 &114690216720684550 592 | MonoBehaviour: 593 | m_ObjectHideFlags: 1 594 | m_PrefabParentObject: {fileID: 0} 595 | m_PrefabInternal: {fileID: 100100000} 596 | m_GameObject: {fileID: 1141038177472460} 597 | m_Enabled: 1 598 | m_EditorHideFlags: 0 599 | m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} 600 | m_Name: 601 | m_EditorClassIdentifier: 602 | m_Navigation: 603 | m_Mode: 3 604 | m_SelectOnUp: {fileID: 0} 605 | m_SelectOnDown: {fileID: 0} 606 | m_SelectOnLeft: {fileID: 0} 607 | m_SelectOnRight: {fileID: 0} 608 | m_Transition: 1 609 | m_Colors: 610 | m_NormalColor: {r: 1, g: 1, b: 1, a: 1} 611 | m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} 612 | m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} 613 | m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} 614 | m_ColorMultiplier: 1 615 | m_FadeDuration: 0.1 616 | m_SpriteState: 617 | m_HighlightedSprite: {fileID: 0} 618 | m_PressedSprite: {fileID: 0} 619 | m_DisabledSprite: {fileID: 0} 620 | m_AnimationTriggers: 621 | m_NormalTrigger: Normal 622 | m_HighlightedTrigger: Highlighted 623 | m_PressedTrigger: Pressed 624 | m_DisabledTrigger: Disabled 625 | m_Interactable: 1 626 | m_TargetGraphic: {fileID: 114966689335909756} 627 | m_OnClick: 628 | m_PersistentCalls: 629 | m_Calls: [] 630 | m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, 631 | Culture=neutral, PublicKeyToken=null 632 | --- !u!114 &114848760734006610 633 | MonoBehaviour: 634 | m_ObjectHideFlags: 1 635 | m_PrefabParentObject: {fileID: 0} 636 | m_PrefabInternal: {fileID: 100100000} 637 | m_GameObject: {fileID: 1480697143442862} 638 | m_Enabled: 1 639 | m_EditorHideFlags: 0 640 | m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} 641 | m_Name: 642 | m_EditorClassIdentifier: 643 | m_Navigation: 644 | m_Mode: 3 645 | m_SelectOnUp: {fileID: 0} 646 | m_SelectOnDown: {fileID: 0} 647 | m_SelectOnLeft: {fileID: 0} 648 | m_SelectOnRight: {fileID: 0} 649 | m_Transition: 1 650 | m_Colors: 651 | m_NormalColor: {r: 1, g: 1, b: 1, a: 1} 652 | m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} 653 | m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} 654 | m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} 655 | m_ColorMultiplier: 1 656 | m_FadeDuration: 0.1 657 | m_SpriteState: 658 | m_HighlightedSprite: {fileID: 0} 659 | m_PressedSprite: {fileID: 0} 660 | m_DisabledSprite: {fileID: 0} 661 | m_AnimationTriggers: 662 | m_NormalTrigger: Normal 663 | m_HighlightedTrigger: Highlighted 664 | m_PressedTrigger: Pressed 665 | m_DisabledTrigger: Disabled 666 | m_Interactable: 1 667 | m_TargetGraphic: {fileID: 114204914760938056} 668 | m_OnClick: 669 | m_PersistentCalls: 670 | m_Calls: [] 671 | m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, 672 | Culture=neutral, PublicKeyToken=null 673 | --- !u!114 &114849494933887868 674 | MonoBehaviour: 675 | m_ObjectHideFlags: 1 676 | m_PrefabParentObject: {fileID: 0} 677 | m_PrefabInternal: {fileID: 100100000} 678 | m_GameObject: {fileID: 1864471343301104} 679 | m_Enabled: 1 680 | m_EditorHideFlags: 0 681 | m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} 682 | m_Name: 683 | m_EditorClassIdentifier: 684 | m_Navigation: 685 | m_Mode: 3 686 | m_SelectOnUp: {fileID: 0} 687 | m_SelectOnDown: {fileID: 0} 688 | m_SelectOnLeft: {fileID: 0} 689 | m_SelectOnRight: {fileID: 0} 690 | m_Transition: 1 691 | m_Colors: 692 | m_NormalColor: {r: 1, g: 1, b: 1, a: 1} 693 | m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} 694 | m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} 695 | m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} 696 | m_ColorMultiplier: 1 697 | m_FadeDuration: 0.1 698 | m_SpriteState: 699 | m_HighlightedSprite: {fileID: 0} 700 | m_PressedSprite: {fileID: 0} 701 | m_DisabledSprite: {fileID: 0} 702 | m_AnimationTriggers: 703 | m_NormalTrigger: Normal 704 | m_HighlightedTrigger: Highlighted 705 | m_PressedTrigger: Pressed 706 | m_DisabledTrigger: Disabled 707 | m_Interactable: 1 708 | m_TargetGraphic: {fileID: 114682802089825662} 709 | m_OnClick: 710 | m_PersistentCalls: 711 | m_Calls: [] 712 | m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, 713 | Culture=neutral, PublicKeyToken=null 714 | --- !u!114 &114966689335909756 715 | MonoBehaviour: 716 | m_ObjectHideFlags: 1 717 | m_PrefabParentObject: {fileID: 0} 718 | m_PrefabInternal: {fileID: 100100000} 719 | m_GameObject: {fileID: 1141038177472460} 720 | m_Enabled: 1 721 | m_EditorHideFlags: 0 722 | m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} 723 | m_Name: 724 | m_EditorClassIdentifier: 725 | m_Material: {fileID: 0} 726 | m_Color: {r: 1, g: 1, b: 1, a: 1} 727 | m_RaycastTarget: 1 728 | m_OnCullStateChanged: 729 | m_PersistentCalls: 730 | m_Calls: [] 731 | m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, 732 | Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 733 | m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} 734 | m_Type: 1 735 | m_PreserveAspect: 0 736 | m_FillCenter: 1 737 | m_FillMethod: 4 738 | m_FillAmount: 1 739 | m_FillClockwise: 1 740 | m_FillOrigin: 0 741 | --- !u!222 &222062579466941602 742 | CanvasRenderer: 743 | m_ObjectHideFlags: 1 744 | m_PrefabParentObject: {fileID: 0} 745 | m_PrefabInternal: {fileID: 100100000} 746 | m_GameObject: {fileID: 1141038177472460} 747 | --- !u!222 &222083518369085914 748 | CanvasRenderer: 749 | m_ObjectHideFlags: 1 750 | m_PrefabParentObject: {fileID: 0} 751 | m_PrefabInternal: {fileID: 100100000} 752 | m_GameObject: {fileID: 1864471343301104} 753 | --- !u!222 &222099582781712562 754 | CanvasRenderer: 755 | m_ObjectHideFlags: 1 756 | m_PrefabParentObject: {fileID: 0} 757 | m_PrefabInternal: {fileID: 100100000} 758 | m_GameObject: {fileID: 1530471562738660} 759 | --- !u!222 &222254695228767440 760 | CanvasRenderer: 761 | m_ObjectHideFlags: 1 762 | m_PrefabParentObject: {fileID: 0} 763 | m_PrefabInternal: {fileID: 100100000} 764 | m_GameObject: {fileID: 1480697143442862} 765 | --- !u!222 &222267692924776396 766 | CanvasRenderer: 767 | m_ObjectHideFlags: 1 768 | m_PrefabParentObject: {fileID: 0} 769 | m_PrefabInternal: {fileID: 100100000} 770 | m_GameObject: {fileID: 1109283820140666} 771 | --- !u!222 &222291132147571890 772 | CanvasRenderer: 773 | m_ObjectHideFlags: 1 774 | m_PrefabParentObject: {fileID: 0} 775 | m_PrefabInternal: {fileID: 100100000} 776 | m_GameObject: {fileID: 1042405608803796} 777 | --- !u!222 &222613931097977016 778 | CanvasRenderer: 779 | m_ObjectHideFlags: 1 780 | m_PrefabParentObject: {fileID: 0} 781 | m_PrefabInternal: {fileID: 100100000} 782 | m_GameObject: {fileID: 1033211664526286} 783 | --- !u!222 &222775958108722974 784 | CanvasRenderer: 785 | m_ObjectHideFlags: 1 786 | m_PrefabParentObject: {fileID: 0} 787 | m_PrefabInternal: {fileID: 100100000} 788 | m_GameObject: {fileID: 1372979415298634} 789 | --- !u!222 &222855862302620780 790 | CanvasRenderer: 791 | m_ObjectHideFlags: 1 792 | m_PrefabParentObject: {fileID: 0} 793 | m_PrefabInternal: {fileID: 100100000} 794 | m_GameObject: {fileID: 1187194397354980} 795 | --- !u!222 &222940227024693918 796 | CanvasRenderer: 797 | m_ObjectHideFlags: 1 798 | m_PrefabParentObject: {fileID: 0} 799 | m_PrefabInternal: {fileID: 100100000} 800 | m_GameObject: {fileID: 1337605609706558} 801 | --- !u!223 &223401169358726424 802 | Canvas: 803 | m_ObjectHideFlags: 1 804 | m_PrefabParentObject: {fileID: 0} 805 | m_PrefabInternal: {fileID: 100100000} 806 | m_GameObject: {fileID: 1354619563731858} 807 | m_Enabled: 1 808 | serializedVersion: 3 809 | m_RenderMode: 1 810 | m_Camera: {fileID: 0} 811 | m_PlaneDistance: 100 812 | m_PixelPerfect: 1 813 | m_ReceivesEvents: 1 814 | m_OverrideSorting: 0 815 | m_OverridePixelPerfect: 0 816 | m_SortingBucketNormalizedSize: 0 817 | m_AdditionalShaderChannelsFlag: 0 818 | m_SortingLayerID: 0 819 | m_SortingOrder: 99 820 | m_TargetDisplay: 0 821 | --- !u!224 &224082796190951718 822 | RectTransform: 823 | m_ObjectHideFlags: 1 824 | m_PrefabParentObject: {fileID: 0} 825 | m_PrefabInternal: {fileID: 100100000} 826 | m_GameObject: {fileID: 1337605609706558} 827 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 828 | m_LocalPosition: {x: 0, y: 0, z: 0} 829 | m_LocalScale: {x: 1, y: 1, z: 1} 830 | m_Children: [] 831 | m_Father: {fileID: 224470291704061748} 832 | m_RootOrder: 0 833 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 834 | m_AnchorMin: {x: 0, y: 0} 835 | m_AnchorMax: {x: 1, y: 1} 836 | m_AnchoredPosition: {x: 0, y: 0} 837 | m_SizeDelta: {x: 0, y: 0} 838 | m_Pivot: {x: 0.5, y: 0.5} 839 | --- !u!224 &224134077304913848 840 | RectTransform: 841 | m_ObjectHideFlags: 1 842 | m_PrefabParentObject: {fileID: 0} 843 | m_PrefabInternal: {fileID: 100100000} 844 | m_GameObject: {fileID: 1372979415298634} 845 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 846 | m_LocalPosition: {x: 0, y: 0, z: 0} 847 | m_LocalScale: {x: 1, y: 1, z: 1} 848 | m_Children: [] 849 | m_Father: {fileID: 224349177789100604} 850 | m_RootOrder: 0 851 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 852 | m_AnchorMin: {x: 0, y: 0} 853 | m_AnchorMax: {x: 1, y: 1} 854 | m_AnchoredPosition: {x: 0, y: 0} 855 | m_SizeDelta: {x: 0, y: 0} 856 | m_Pivot: {x: 0.5, y: 0.5} 857 | --- !u!224 &224136737280061146 858 | RectTransform: 859 | m_ObjectHideFlags: 1 860 | m_PrefabParentObject: {fileID: 0} 861 | m_PrefabInternal: {fileID: 100100000} 862 | m_GameObject: {fileID: 1187194397354980} 863 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 864 | m_LocalPosition: {x: 0, y: 0, z: 0} 865 | m_LocalScale: {x: 1, y: 1, z: 1} 866 | m_Children: [] 867 | m_Father: {fileID: 224349177789100604} 868 | m_RootOrder: 1 869 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 870 | m_AnchorMin: {x: 0.5, y: 1} 871 | m_AnchorMax: {x: 0.5, y: 1} 872 | m_AnchoredPosition: {x: 0, y: -65} 873 | m_SizeDelta: {x: 848, y: 86.6} 874 | m_Pivot: {x: 0.5, y: 1} 875 | --- !u!224 &224340619173213436 876 | RectTransform: 877 | m_ObjectHideFlags: 1 878 | m_PrefabParentObject: {fileID: 0} 879 | m_PrefabInternal: {fileID: 100100000} 880 | m_GameObject: {fileID: 1033211664526286} 881 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 882 | m_LocalPosition: {x: 0, y: 0, z: 0} 883 | m_LocalScale: {x: 1, y: 1, z: 1} 884 | m_Children: [] 885 | m_Father: {fileID: 224979179032771270} 886 | m_RootOrder: 0 887 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 888 | m_AnchorMin: {x: 0, y: 0} 889 | m_AnchorMax: {x: 1, y: 1} 890 | m_AnchoredPosition: {x: 0, y: 0} 891 | m_SizeDelta: {x: 0, y: 0} 892 | m_Pivot: {x: 0.5, y: 0.5} 893 | --- !u!224 &224349177789100604 894 | RectTransform: 895 | m_ObjectHideFlags: 1 896 | m_PrefabParentObject: {fileID: 0} 897 | m_PrefabInternal: {fileID: 100100000} 898 | m_GameObject: {fileID: 1354619563731858} 899 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 900 | m_LocalPosition: {x: 0, y: 0, z: 0} 901 | m_LocalScale: {x: 0.99998, y: 0.99998, z: 0.99998} 902 | m_Children: 903 | - {fileID: 224134077304913848} 904 | - {fileID: 224136737280061146} 905 | - {fileID: 224617722119769590} 906 | m_Father: {fileID: 0} 907 | m_RootOrder: 0 908 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 909 | m_AnchorMin: {x: 0, y: 0} 910 | m_AnchorMax: {x: 1, y: 1} 911 | m_AnchoredPosition: {x: 0, y: 0} 912 | m_SizeDelta: {x: 0, y: 0} 913 | m_Pivot: {x: 0.5, y: 0.5} 914 | --- !u!224 &224470291704061748 915 | RectTransform: 916 | m_ObjectHideFlags: 1 917 | m_PrefabParentObject: {fileID: 0} 918 | m_PrefabInternal: {fileID: 100100000} 919 | m_GameObject: {fileID: 1530471562738660} 920 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 921 | m_LocalPosition: {x: 0, y: 0, z: 0} 922 | m_LocalScale: {x: 1, y: 1, z: 1} 923 | m_Children: 924 | - {fileID: 224082796190951718} 925 | m_Father: {fileID: 224617722119769590} 926 | m_RootOrder: 0 927 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 928 | m_AnchorMin: {x: 0, y: 0} 929 | m_AnchorMax: {x: 0, y: 0} 930 | m_AnchoredPosition: {x: 0, y: 0} 931 | m_SizeDelta: {x: 0, y: 0} 932 | m_Pivot: {x: 0.5, y: 0.5} 933 | --- !u!224 &224617722119769590 934 | RectTransform: 935 | m_ObjectHideFlags: 1 936 | m_PrefabParentObject: {fileID: 0} 937 | m_PrefabInternal: {fileID: 100100000} 938 | m_GameObject: {fileID: 1236689490558120} 939 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 940 | m_LocalPosition: {x: 0, y: 0, z: 0} 941 | m_LocalScale: {x: 1, y: 1, z: 1} 942 | m_Children: 943 | - {fileID: 224470291704061748} 944 | - {fileID: 224979179032771270} 945 | - {fileID: 224854447113955210} 946 | - {fileID: 224902744811582620} 947 | m_Father: {fileID: 224349177789100604} 948 | m_RootOrder: 2 949 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 950 | m_AnchorMin: {x: 0.5, y: 0.5} 951 | m_AnchorMax: {x: 0.5, y: 0.5} 952 | m_AnchoredPosition: {x: 0, y: -22.3} 953 | m_SizeDelta: {x: 229.48, y: 221.92} 954 | m_Pivot: {x: 0.5, y: 0.5} 955 | --- !u!224 &224807705001741408 956 | RectTransform: 957 | m_ObjectHideFlags: 1 958 | m_PrefabParentObject: {fileID: 0} 959 | m_PrefabInternal: {fileID: 100100000} 960 | m_GameObject: {fileID: 1109283820140666} 961 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 962 | m_LocalPosition: {x: 0, y: 0, z: 0} 963 | m_LocalScale: {x: 1, y: 1, z: 1} 964 | m_Children: [] 965 | m_Father: {fileID: 224902744811582620} 966 | m_RootOrder: 0 967 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 968 | m_AnchorMin: {x: 0, y: 0} 969 | m_AnchorMax: {x: 1, y: 1} 970 | m_AnchoredPosition: {x: 0, y: 0} 971 | m_SizeDelta: {x: 0, y: 0} 972 | m_Pivot: {x: 0.5, y: 0.5} 973 | --- !u!224 &224854447113955210 974 | RectTransform: 975 | m_ObjectHideFlags: 1 976 | m_PrefabParentObject: {fileID: 0} 977 | m_PrefabInternal: {fileID: 100100000} 978 | m_GameObject: {fileID: 1141038177472460} 979 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 980 | m_LocalPosition: {x: 0, y: 0, z: 0} 981 | m_LocalScale: {x: 0.9999984, y: 0.9999984, z: 0.9999984} 982 | m_Children: 983 | - {fileID: 224930791043617898} 984 | m_Father: {fileID: 224617722119769590} 985 | m_RootOrder: 2 986 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 987 | m_AnchorMin: {x: 0, y: 0} 988 | m_AnchorMax: {x: 0, y: 0} 989 | m_AnchoredPosition: {x: 0, y: 0} 990 | m_SizeDelta: {x: 0, y: 0} 991 | m_Pivot: {x: 0.5, y: 0.5} 992 | --- !u!224 &224902744811582620 993 | RectTransform: 994 | m_ObjectHideFlags: 1 995 | m_PrefabParentObject: {fileID: 0} 996 | m_PrefabInternal: {fileID: 100100000} 997 | m_GameObject: {fileID: 1480697143442862} 998 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 999 | m_LocalPosition: {x: 0, y: 0, z: 0} 1000 | m_LocalScale: {x: 0.9999984, y: 0.9999984, z: 0.9999984} 1001 | m_Children: 1002 | - {fileID: 224807705001741408} 1003 | m_Father: {fileID: 224617722119769590} 1004 | m_RootOrder: 3 1005 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 1006 | m_AnchorMin: {x: 0, y: 0} 1007 | m_AnchorMax: {x: 0, y: 0} 1008 | m_AnchoredPosition: {x: 0, y: 0} 1009 | m_SizeDelta: {x: 0, y: 0} 1010 | m_Pivot: {x: 0.5, y: 0.5} 1011 | --- !u!224 &224930791043617898 1012 | RectTransform: 1013 | m_ObjectHideFlags: 1 1014 | m_PrefabParentObject: {fileID: 0} 1015 | m_PrefabInternal: {fileID: 100100000} 1016 | m_GameObject: {fileID: 1042405608803796} 1017 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 1018 | m_LocalPosition: {x: 0, y: 0, z: 0} 1019 | m_LocalScale: {x: 1, y: 1, z: 1} 1020 | m_Children: [] 1021 | m_Father: {fileID: 224854447113955210} 1022 | m_RootOrder: 0 1023 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 1024 | m_AnchorMin: {x: 0, y: 0} 1025 | m_AnchorMax: {x: 1, y: 1} 1026 | m_AnchoredPosition: {x: 0, y: 0} 1027 | m_SizeDelta: {x: 0, y: 0} 1028 | m_Pivot: {x: 0.5, y: 0.5} 1029 | --- !u!224 &224979179032771270 1030 | RectTransform: 1031 | m_ObjectHideFlags: 1 1032 | m_PrefabParentObject: {fileID: 0} 1033 | m_PrefabInternal: {fileID: 100100000} 1034 | m_GameObject: {fileID: 1864471343301104} 1035 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 1036 | m_LocalPosition: {x: 0, y: 0, z: 0} 1037 | m_LocalScale: {x: 0.9999984, y: 0.9999984, z: 0.9999984} 1038 | m_Children: 1039 | - {fileID: 224340619173213436} 1040 | m_Father: {fileID: 224617722119769590} 1041 | m_RootOrder: 1 1042 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 1043 | m_AnchorMin: {x: 0, y: 0} 1044 | m_AnchorMax: {x: 0, y: 0} 1045 | m_AnchoredPosition: {x: 0, y: 0} 1046 | m_SizeDelta: {x: 0, y: 0} 1047 | m_Pivot: {x: 0.5, y: 0.5} 1048 | -------------------------------------------------------------------------------- /Assets/UIManager/Example/Resources/Prefabs/UI/Screens/ExampleMenuScreen.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9c435cd248576467c8598a6659f4b488 3 | timeCreated: 1501708105 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | mainObjectFileID: 100100000 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/UIManager/Example/Resources/Prefabs/UI/Screens/ExamplePopupScreen.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1001 &100100000 4 | Prefab: 5 | m_ObjectHideFlags: 1 6 | serializedVersion: 2 7 | m_Modification: 8 | m_TransformParent: {fileID: 0} 9 | m_Modifications: [] 10 | m_RemovedComponents: [] 11 | m_ParentPrefab: {fileID: 0} 12 | m_RootGameObject: {fileID: 1354619563731858} 13 | m_IsPrefabParent: 1 14 | --- !u!1 &1184985976361860 15 | GameObject: 16 | m_ObjectHideFlags: 0 17 | m_PrefabParentObject: {fileID: 0} 18 | m_PrefabInternal: {fileID: 100100000} 19 | serializedVersion: 5 20 | m_Component: 21 | - component: {fileID: 224719322480184930} 22 | - component: {fileID: 222556693336232870} 23 | - component: {fileID: 114603467535893612} 24 | m_Layer: 5 25 | m_Name: BG 26 | m_TagString: Untagged 27 | m_Icon: {fileID: 0} 28 | m_NavMeshLayer: 0 29 | m_StaticEditorFlags: 0 30 | m_IsActive: 1 31 | --- !u!1 &1187194397354980 32 | GameObject: 33 | m_ObjectHideFlags: 1 34 | m_PrefabParentObject: {fileID: 0} 35 | m_PrefabInternal: {fileID: 100100000} 36 | serializedVersion: 5 37 | m_Component: 38 | - component: {fileID: 224136737280061146} 39 | - component: {fileID: 222855862302620780} 40 | - component: {fileID: 114593958767330736} 41 | m_Layer: 5 42 | m_Name: MessageLabel 43 | m_TagString: Untagged 44 | m_Icon: {fileID: 0} 45 | m_NavMeshLayer: 0 46 | m_StaticEditorFlags: 0 47 | m_IsActive: 1 48 | --- !u!1 &1354619563731858 49 | GameObject: 50 | m_ObjectHideFlags: 0 51 | m_PrefabParentObject: {fileID: 0} 52 | m_PrefabInternal: {fileID: 100100000} 53 | serializedVersion: 5 54 | m_Component: 55 | - component: {fileID: 224349177789100604} 56 | - component: {fileID: 223401169358726424} 57 | - component: {fileID: 114340123648673264} 58 | - component: {fileID: 114646629644918178} 59 | m_Layer: 5 60 | m_Name: ExamplePopupScreen 61 | m_TagString: Untagged 62 | m_Icon: {fileID: 0} 63 | m_NavMeshLayer: 0 64 | m_StaticEditorFlags: 0 65 | m_IsActive: 1 66 | --- !u!1 &1372979415298634 67 | GameObject: 68 | m_ObjectHideFlags: 0 69 | m_PrefabParentObject: {fileID: 0} 70 | m_PrefabInternal: {fileID: 100100000} 71 | serializedVersion: 5 72 | m_Component: 73 | - component: {fileID: 224134077304913848} 74 | - component: {fileID: 222775958108722974} 75 | - component: {fileID: 114116569335356420} 76 | m_Layer: 5 77 | m_Name: Window 78 | m_TagString: Untagged 79 | m_Icon: {fileID: 0} 80 | m_NavMeshLayer: 0 81 | m_StaticEditorFlags: 0 82 | m_IsActive: 1 83 | --- !u!1 &1596540812219254 84 | GameObject: 85 | m_ObjectHideFlags: 1 86 | m_PrefabParentObject: {fileID: 0} 87 | m_PrefabInternal: {fileID: 100100000} 88 | serializedVersion: 5 89 | m_Component: 90 | - component: {fileID: 224313596769740528} 91 | - component: {fileID: 222552288793346920} 92 | - component: {fileID: 114230380339980072} 93 | - component: {fileID: 114478554616536146} 94 | m_Layer: 5 95 | m_Name: OkButton 96 | m_TagString: Untagged 97 | m_Icon: {fileID: 0} 98 | m_NavMeshLayer: 0 99 | m_StaticEditorFlags: 0 100 | m_IsActive: 1 101 | --- !u!1 &1933049885089328 102 | GameObject: 103 | m_ObjectHideFlags: 1 104 | m_PrefabParentObject: {fileID: 0} 105 | m_PrefabInternal: {fileID: 100100000} 106 | serializedVersion: 5 107 | m_Component: 108 | - component: {fileID: 224575929042700116} 109 | - component: {fileID: 222700860907888876} 110 | - component: {fileID: 114009812698955914} 111 | m_Layer: 5 112 | m_Name: Text 113 | m_TagString: Untagged 114 | m_Icon: {fileID: 0} 115 | m_NavMeshLayer: 0 116 | m_StaticEditorFlags: 0 117 | m_IsActive: 1 118 | --- !u!114 &114009812698955914 119 | MonoBehaviour: 120 | m_ObjectHideFlags: 1 121 | m_PrefabParentObject: {fileID: 0} 122 | m_PrefabInternal: {fileID: 100100000} 123 | m_GameObject: {fileID: 1933049885089328} 124 | m_Enabled: 1 125 | m_EditorHideFlags: 0 126 | m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} 127 | m_Name: 128 | m_EditorClassIdentifier: 129 | m_Material: {fileID: 0} 130 | m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} 131 | m_RaycastTarget: 1 132 | m_OnCullStateChanged: 133 | m_PersistentCalls: 134 | m_Calls: [] 135 | m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, 136 | Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 137 | m_FontData: 138 | m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} 139 | m_FontSize: 18 140 | m_FontStyle: 0 141 | m_BestFit: 0 142 | m_MinSize: 1 143 | m_MaxSize: 40 144 | m_Alignment: 4 145 | m_AlignByGeometry: 0 146 | m_RichText: 1 147 | m_HorizontalOverflow: 0 148 | m_VerticalOverflow: 0 149 | m_LineSpacing: 1 150 | m_Text: OK 151 | --- !u!114 &114116569335356420 152 | MonoBehaviour: 153 | m_ObjectHideFlags: 1 154 | m_PrefabParentObject: {fileID: 0} 155 | m_PrefabInternal: {fileID: 100100000} 156 | m_GameObject: {fileID: 1372979415298634} 157 | m_Enabled: 1 158 | m_EditorHideFlags: 0 159 | m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} 160 | m_Name: 161 | m_EditorClassIdentifier: 162 | m_Material: {fileID: 0} 163 | m_Color: {r: 0.6764706, g: 0.6764706, b: 0.6764706, a: 1} 164 | m_RaycastTarget: 1 165 | m_OnCullStateChanged: 166 | m_PersistentCalls: 167 | m_Calls: [] 168 | m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, 169 | Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 170 | m_Sprite: {fileID: 0} 171 | m_Type: 0 172 | m_PreserveAspect: 0 173 | m_FillCenter: 1 174 | m_FillMethod: 4 175 | m_FillAmount: 1 176 | m_FillClockwise: 1 177 | m_FillOrigin: 0 178 | --- !u!114 &114230380339980072 179 | MonoBehaviour: 180 | m_ObjectHideFlags: 1 181 | m_PrefabParentObject: {fileID: 0} 182 | m_PrefabInternal: {fileID: 100100000} 183 | m_GameObject: {fileID: 1596540812219254} 184 | m_Enabled: 1 185 | m_EditorHideFlags: 0 186 | m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} 187 | m_Name: 188 | m_EditorClassIdentifier: 189 | m_Material: {fileID: 0} 190 | m_Color: {r: 1, g: 1, b: 1, a: 1} 191 | m_RaycastTarget: 1 192 | m_OnCullStateChanged: 193 | m_PersistentCalls: 194 | m_Calls: [] 195 | m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, 196 | Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 197 | m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} 198 | m_Type: 1 199 | m_PreserveAspect: 0 200 | m_FillCenter: 1 201 | m_FillMethod: 4 202 | m_FillAmount: 1 203 | m_FillClockwise: 1 204 | m_FillOrigin: 0 205 | --- !u!114 &114340123648673264 206 | MonoBehaviour: 207 | m_ObjectHideFlags: 1 208 | m_PrefabParentObject: {fileID: 0} 209 | m_PrefabInternal: {fileID: 100100000} 210 | m_GameObject: {fileID: 1354619563731858} 211 | m_Enabled: 1 212 | m_EditorHideFlags: 0 213 | m_Script: {fileID: 1301386320, guid: f70555f144d8491a825f0804e09c671c, type: 3} 214 | m_Name: 215 | m_EditorClassIdentifier: 216 | m_IgnoreReversedGraphics: 1 217 | m_BlockingObjects: 0 218 | m_BlockingMask: 219 | serializedVersion: 2 220 | m_Bits: 4294967295 221 | --- !u!114 &114478554616536146 222 | MonoBehaviour: 223 | m_ObjectHideFlags: 1 224 | m_PrefabParentObject: {fileID: 0} 225 | m_PrefabInternal: {fileID: 100100000} 226 | m_GameObject: {fileID: 1596540812219254} 227 | m_Enabled: 1 228 | m_EditorHideFlags: 0 229 | m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} 230 | m_Name: 231 | m_EditorClassIdentifier: 232 | m_Navigation: 233 | m_Mode: 3 234 | m_SelectOnUp: {fileID: 0} 235 | m_SelectOnDown: {fileID: 0} 236 | m_SelectOnLeft: {fileID: 0} 237 | m_SelectOnRight: {fileID: 0} 238 | m_Transition: 1 239 | m_Colors: 240 | m_NormalColor: {r: 1, g: 1, b: 1, a: 1} 241 | m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} 242 | m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} 243 | m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} 244 | m_ColorMultiplier: 1 245 | m_FadeDuration: 0.1 246 | m_SpriteState: 247 | m_HighlightedSprite: {fileID: 0} 248 | m_PressedSprite: {fileID: 0} 249 | m_DisabledSprite: {fileID: 0} 250 | m_AnimationTriggers: 251 | m_NormalTrigger: Normal 252 | m_HighlightedTrigger: Highlighted 253 | m_PressedTrigger: Pressed 254 | m_DisabledTrigger: Disabled 255 | m_Interactable: 1 256 | m_TargetGraphic: {fileID: 114230380339980072} 257 | m_OnClick: 258 | m_PersistentCalls: 259 | m_Calls: [] 260 | m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, 261 | Culture=neutral, PublicKeyToken=null 262 | --- !u!114 &114593958767330736 263 | MonoBehaviour: 264 | m_ObjectHideFlags: 1 265 | m_PrefabParentObject: {fileID: 0} 266 | m_PrefabInternal: {fileID: 100100000} 267 | m_GameObject: {fileID: 1187194397354980} 268 | m_Enabled: 1 269 | m_EditorHideFlags: 0 270 | m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} 271 | m_Name: 272 | m_EditorClassIdentifier: 273 | m_Material: {fileID: 0} 274 | m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} 275 | m_RaycastTarget: 1 276 | m_OnCullStateChanged: 277 | m_PersistentCalls: 278 | m_Calls: [] 279 | m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, 280 | Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 281 | m_FontData: 282 | m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} 283 | m_FontSize: 18 284 | m_FontStyle: 0 285 | m_BestFit: 0 286 | m_MinSize: 1 287 | m_MaxSize: 40 288 | m_Alignment: 4 289 | m_AlignByGeometry: 0 290 | m_RichText: 1 291 | m_HorizontalOverflow: 0 292 | m_VerticalOverflow: 0 293 | m_LineSpacing: 1 294 | m_Text: 295 | --- !u!114 &114603467535893612 296 | MonoBehaviour: 297 | m_ObjectHideFlags: 1 298 | m_PrefabParentObject: {fileID: 0} 299 | m_PrefabInternal: {fileID: 100100000} 300 | m_GameObject: {fileID: 1184985976361860} 301 | m_Enabled: 1 302 | m_EditorHideFlags: 0 303 | m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} 304 | m_Name: 305 | m_EditorClassIdentifier: 306 | m_Material: {fileID: 0} 307 | m_Color: {r: 0, g: 0, b: 0, a: 0.816} 308 | m_RaycastTarget: 1 309 | m_OnCullStateChanged: 310 | m_PersistentCalls: 311 | m_Calls: [] 312 | m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, 313 | Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 314 | m_Sprite: {fileID: 0} 315 | m_Type: 0 316 | m_PreserveAspect: 0 317 | m_FillCenter: 1 318 | m_FillMethod: 4 319 | m_FillAmount: 1 320 | m_FillClockwise: 1 321 | m_FillOrigin: 0 322 | --- !u!114 &114646629644918178 323 | MonoBehaviour: 324 | m_ObjectHideFlags: 1 325 | m_PrefabParentObject: {fileID: 0} 326 | m_PrefabInternal: {fileID: 100100000} 327 | m_GameObject: {fileID: 1354619563731858} 328 | m_Enabled: 1 329 | m_EditorHideFlags: 0 330 | m_Script: {fileID: 11500000, guid: 5ace30058146b428a830418003a5e28a, type: 3} 331 | m_Name: 332 | m_EditorClassIdentifier: 333 | keepCached: 0 334 | messageLabel: {fileID: 114593958767330736} 335 | okButton: {fileID: 114478554616536146} 336 | --- !u!222 &222552288793346920 337 | CanvasRenderer: 338 | m_ObjectHideFlags: 1 339 | m_PrefabParentObject: {fileID: 0} 340 | m_PrefabInternal: {fileID: 100100000} 341 | m_GameObject: {fileID: 1596540812219254} 342 | --- !u!222 &222556693336232870 343 | CanvasRenderer: 344 | m_ObjectHideFlags: 1 345 | m_PrefabParentObject: {fileID: 0} 346 | m_PrefabInternal: {fileID: 100100000} 347 | m_GameObject: {fileID: 1184985976361860} 348 | --- !u!222 &222700860907888876 349 | CanvasRenderer: 350 | m_ObjectHideFlags: 1 351 | m_PrefabParentObject: {fileID: 0} 352 | m_PrefabInternal: {fileID: 100100000} 353 | m_GameObject: {fileID: 1933049885089328} 354 | --- !u!222 &222775958108722974 355 | CanvasRenderer: 356 | m_ObjectHideFlags: 1 357 | m_PrefabParentObject: {fileID: 0} 358 | m_PrefabInternal: {fileID: 100100000} 359 | m_GameObject: {fileID: 1372979415298634} 360 | --- !u!222 &222855862302620780 361 | CanvasRenderer: 362 | m_ObjectHideFlags: 1 363 | m_PrefabParentObject: {fileID: 0} 364 | m_PrefabInternal: {fileID: 100100000} 365 | m_GameObject: {fileID: 1187194397354980} 366 | --- !u!223 &223401169358726424 367 | Canvas: 368 | m_ObjectHideFlags: 1 369 | m_PrefabParentObject: {fileID: 0} 370 | m_PrefabInternal: {fileID: 100100000} 371 | m_GameObject: {fileID: 1354619563731858} 372 | m_Enabled: 1 373 | serializedVersion: 3 374 | m_RenderMode: 1 375 | m_Camera: {fileID: 0} 376 | m_PlaneDistance: 100 377 | m_PixelPerfect: 1 378 | m_ReceivesEvents: 1 379 | m_OverrideSorting: 0 380 | m_OverridePixelPerfect: 0 381 | m_SortingBucketNormalizedSize: 0 382 | m_AdditionalShaderChannelsFlag: 0 383 | m_SortingLayerID: 0 384 | m_SortingOrder: 99 385 | m_TargetDisplay: 0 386 | --- !u!224 &224134077304913848 387 | RectTransform: 388 | m_ObjectHideFlags: 1 389 | m_PrefabParentObject: {fileID: 0} 390 | m_PrefabInternal: {fileID: 100100000} 391 | m_GameObject: {fileID: 1372979415298634} 392 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 393 | m_LocalPosition: {x: 0, y: 0, z: 0} 394 | m_LocalScale: {x: 0.9999984, y: 0.9999984, z: 0.9999984} 395 | m_Children: 396 | - {fileID: 224136737280061146} 397 | - {fileID: 224313596769740528} 398 | m_Father: {fileID: 224349177789100604} 399 | m_RootOrder: 1 400 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 401 | m_AnchorMin: {x: 0.5, y: 0.5} 402 | m_AnchorMax: {x: 0.5, y: 0.5} 403 | m_AnchoredPosition: {x: 0, y: 0} 404 | m_SizeDelta: {x: 395.1, y: 224} 405 | m_Pivot: {x: 0.5, y: 0.5} 406 | --- !u!224 &224136737280061146 407 | RectTransform: 408 | m_ObjectHideFlags: 1 409 | m_PrefabParentObject: {fileID: 0} 410 | m_PrefabInternal: {fileID: 100100000} 411 | m_GameObject: {fileID: 1187194397354980} 412 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 413 | m_LocalPosition: {x: 0, y: 0, z: 0} 414 | m_LocalScale: {x: 1, y: 1, z: 1} 415 | m_Children: [] 416 | m_Father: {fileID: 224134077304913848} 417 | m_RootOrder: 0 418 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 419 | m_AnchorMin: {x: 0, y: 1} 420 | m_AnchorMax: {x: 1, y: 1} 421 | m_AnchoredPosition: {x: 0, y: -26.6} 422 | m_SizeDelta: {x: 0, y: 80.9} 423 | m_Pivot: {x: 0.5, y: 1} 424 | --- !u!224 &224313596769740528 425 | RectTransform: 426 | m_ObjectHideFlags: 1 427 | m_PrefabParentObject: {fileID: 0} 428 | m_PrefabInternal: {fileID: 100100000} 429 | m_GameObject: {fileID: 1596540812219254} 430 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 431 | m_LocalPosition: {x: 0, y: 0, z: 0} 432 | m_LocalScale: {x: 1, y: 1, z: 1} 433 | m_Children: 434 | - {fileID: 224575929042700116} 435 | m_Father: {fileID: 224134077304913848} 436 | m_RootOrder: 1 437 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 438 | m_AnchorMin: {x: 0, y: 1} 439 | m_AnchorMax: {x: 0, y: 1} 440 | m_AnchoredPosition: {x: 197.55, y: -168.9} 441 | m_SizeDelta: {x: 229.48, y: 39.656} 442 | m_Pivot: {x: 0.5, y: 0.5} 443 | --- !u!224 &224349177789100604 444 | RectTransform: 445 | m_ObjectHideFlags: 1 446 | m_PrefabParentObject: {fileID: 0} 447 | m_PrefabInternal: {fileID: 100100000} 448 | m_GameObject: {fileID: 1354619563731858} 449 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 450 | m_LocalPosition: {x: 0, y: 0, z: 0} 451 | m_LocalScale: {x: 0.99998, y: 0.99998, z: 0.99998} 452 | m_Children: 453 | - {fileID: 224719322480184930} 454 | - {fileID: 224134077304913848} 455 | m_Father: {fileID: 0} 456 | m_RootOrder: 0 457 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 458 | m_AnchorMin: {x: 0, y: 0} 459 | m_AnchorMax: {x: 1, y: 1} 460 | m_AnchoredPosition: {x: 0, y: 0} 461 | m_SizeDelta: {x: 0, y: 0} 462 | m_Pivot: {x: 0.5, y: 0.5} 463 | --- !u!224 &224575929042700116 464 | RectTransform: 465 | m_ObjectHideFlags: 1 466 | m_PrefabParentObject: {fileID: 0} 467 | m_PrefabInternal: {fileID: 100100000} 468 | m_GameObject: {fileID: 1933049885089328} 469 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 470 | m_LocalPosition: {x: 0, y: 0, z: 0} 471 | m_LocalScale: {x: 1, y: 1, z: 1} 472 | m_Children: [] 473 | m_Father: {fileID: 224313596769740528} 474 | m_RootOrder: 0 475 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 476 | m_AnchorMin: {x: 0, y: 0} 477 | m_AnchorMax: {x: 1, y: 1} 478 | m_AnchoredPosition: {x: 0, y: 0} 479 | m_SizeDelta: {x: 0, y: 0} 480 | m_Pivot: {x: 0.5, y: 0.5} 481 | --- !u!224 &224719322480184930 482 | RectTransform: 483 | m_ObjectHideFlags: 1 484 | m_PrefabParentObject: {fileID: 0} 485 | m_PrefabInternal: {fileID: 100100000} 486 | m_GameObject: {fileID: 1184985976361860} 487 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 488 | m_LocalPosition: {x: 0, y: 0, z: 0} 489 | m_LocalScale: {x: 1, y: 1, z: 1} 490 | m_Children: [] 491 | m_Father: {fileID: 224349177789100604} 492 | m_RootOrder: 0 493 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 494 | m_AnchorMin: {x: 0, y: 0} 495 | m_AnchorMax: {x: 1, y: 1} 496 | m_AnchoredPosition: {x: 0, y: 0} 497 | m_SizeDelta: {x: 0, y: 0} 498 | m_Pivot: {x: 0.5, y: 0.5} 499 | -------------------------------------------------------------------------------- /Assets/UIManager/Example/Resources/Prefabs/UI/Screens/ExamplePopupScreen.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2a6f840d0a5964ef38728af675305743 3 | timeCreated: 1501708105 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | mainObjectFileID: 100100000 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/UIManager/Example/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5e749f19288cb45108ce554456b5911e 3 | folderAsset: yes 4 | timeCreated: 1508342928 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/UIManager/Example/Scripts/GameManager.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | namespace BlitzyUI.UIExample 4 | { 5 | public class GameManager : MonoBehaviour 6 | { 7 | public static GameManager Instance { get; private set; } 8 | 9 | // Screen Ids 10 | public static readonly Screen.Id ScreenId_Empty = new Screen.Id("Empty"); 11 | public static readonly Screen.Id ScreenId_ExampleMenu = new Screen.Id("ExampleMenu"); 12 | public static readonly Screen.Id ScreenId_ExamplePopup = new Screen.Id("ExamplePopup"); 13 | 14 | private void Awake() { 15 | if (Instance == null) { 16 | Instance = this; 17 | } 18 | } 19 | 20 | private void OnDestroy() { 21 | if (Instance == this) { 22 | Instance = null; 23 | } 24 | } 25 | 26 | private void Start() { 27 | // Push the example menu screen immediately. 28 | UIManager.Instance.QueuePush(ScreenId_ExampleMenu, null, "ExampleMenuScreen", null); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Assets/UIManager/Example/Scripts/GameManager.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3bcfced45234048ada67349e3c46c344 3 | timeCreated: 1508344046 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/UIManager/Example/Scripts/UI.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c2c436d45ce524ad5a4325b072c2e2fa 3 | folderAsset: yes 4 | timeCreated: 1508342936 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/UIManager/Example/Scripts/UI/Screens.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: de74617f0a92144caa4c74477ec2507e 3 | folderAsset: yes 4 | timeCreated: 1508342948 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/UIManager/Example/Scripts/UI/Screens/ExampleMenuScreen.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEngine.UI; 3 | using System.Collections; 4 | using System.Collections.Generic; 5 | 6 | #pragma warning disable 0649 7 | 8 | namespace BlitzyUI.UIExample 9 | { 10 | public class ExampleMenuScreen : BlitzyUI.Screen 11 | { 12 | public Text headerLabel; 13 | public Button buttonA; 14 | public Button buttonB; 15 | public Button buttonC; 16 | public Button buttonD; 17 | 18 | public override void OnSetup() 19 | { 20 | // Run one-time setup operations here. 21 | buttonA.onClick.AddListener(HandleButtonAClicked); 22 | buttonB.onClick.AddListener(HandleButtonBClicked); 23 | buttonC.onClick.AddListener(HandleButtonCClicked); 24 | buttonD.onClick.AddListener(HandleButtonDClicked); 25 | } 26 | 27 | public override void OnPush(Data data) 28 | { 29 | headerLabel.text = "Click on a button..."; 30 | 31 | // Be sure to call PushFinished to signal the end of the push. 32 | PushFinished(); 33 | } 34 | 35 | public override void OnPop() 36 | { 37 | // Be sure to call PopFinished to signal the end of the pop. 38 | PopFinished(); 39 | } 40 | 41 | public override void OnFocus() 42 | { 43 | headerLabel.gameObject.SetActive(true); 44 | } 45 | 46 | public override void OnFocusLost() 47 | { 48 | headerLabel.gameObject.SetActive(false); 49 | } 50 | 51 | private void HandleButtonAClicked () 52 | { 53 | DisplayPopup("You clicked a button, good job!"); 54 | headerLabel.text = "Button A clicked. Click another..."; 55 | } 56 | 57 | private void HandleButtonBClicked () 58 | { 59 | DisplayPopup("Look at those button mashing skills!"); 60 | headerLabel.text = "Button B clicked. Click another..."; 61 | } 62 | 63 | private void HandleButtonCClicked () 64 | { 65 | DisplayPopup("Your a natural, do you think you could click another but with more pizzazz?"); 66 | headerLabel.text = "Button C clicked. Click another..."; 67 | } 68 | 69 | private void HandleButtonDClicked () 70 | { 71 | DisplayPopup("If you keep clicking buttons like that, you are gonna put me out of the job!"); 72 | headerLabel.text = "Button D clicked. Click another..."; 73 | } 74 | 75 | private void DisplayPopup (string message) 76 | { 77 | var screenData = new Screen.Data(); 78 | screenData.Add("message", message); 79 | 80 | UIManager.Instance.QueuePush(GameManager.ScreenId_ExamplePopup, screenData, "ExamplePopupScreen", null); 81 | } 82 | } 83 | } 84 | 85 | #pragma warning restore 0649 -------------------------------------------------------------------------------- /Assets/UIManager/Example/Scripts/UI/Screens/ExampleMenuScreen.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6785eb1189ddb422bbd8398b14630ee0 3 | timeCreated: 1508343363 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/UIManager/Example/Scripts/UI/Screens/ExamplePopupScreen.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEngine.UI; 3 | using System.Collections; 4 | using System.Collections.Generic; 5 | 6 | #pragma warning disable 0649 7 | 8 | namespace BlitzyUI.UIExample 9 | { 10 | public class ExamplePopupScreen : BlitzyUI.Screen 11 | { 12 | public Text messageLabel; 13 | public Button okButton; 14 | 15 | public override void OnSetup() 16 | { 17 | // Run one-time setup operations here. 18 | okButton.onClick.AddListener(HandleOkClicked); 19 | } 20 | 21 | public override void OnPush(Data data) 22 | { 23 | messageLabel.text = data.Get("message"); 24 | 25 | // Be sure to call PushFinished to signal the end of the push. 26 | PushFinished(); 27 | } 28 | 29 | public override void OnPop() 30 | { 31 | // Be sure to call PopFinished to signal the end of the pop. 32 | PopFinished(); 33 | } 34 | 35 | public override void OnFocus() 36 | { 37 | } 38 | 39 | public override void OnFocusLost() 40 | { 41 | } 42 | 43 | private void HandleOkClicked () 44 | { 45 | UIManager.Instance.QueuePop(null); 46 | } 47 | } 48 | } 49 | 50 | #pragma warning restore 0649 -------------------------------------------------------------------------------- /Assets/UIManager/Example/Scripts/UI/Screens/ExamplePopupScreen.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5ace30058146b428a830418003a5e28a 3 | timeCreated: 1508343374 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/UIManager/Example/UIExample.unity: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!29 &1 4 | OcclusionCullingSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_OcclusionBakeSettings: 8 | smallestOccluder: 5 9 | smallestHole: 0.25 10 | backfaceThreshold: 100 11 | m_SceneGUID: 00000000000000000000000000000000 12 | m_OcclusionCullingData: {fileID: 0} 13 | --- !u!104 &2 14 | RenderSettings: 15 | m_ObjectHideFlags: 0 16 | serializedVersion: 9 17 | m_Fog: 0 18 | m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} 19 | m_FogMode: 3 20 | m_FogDensity: 0.01 21 | m_LinearFogStart: 0 22 | m_LinearFogEnd: 300 23 | m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} 24 | m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} 25 | m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} 26 | m_AmbientIntensity: 1 27 | m_AmbientMode: 0 28 | m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} 29 | m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} 30 | m_HaloStrength: 0.5 31 | m_FlareStrength: 1 32 | m_FlareFadeSpeed: 3 33 | m_HaloTexture: {fileID: 0} 34 | m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} 35 | m_DefaultReflectionMode: 0 36 | m_DefaultReflectionResolution: 128 37 | m_ReflectionBounces: 1 38 | m_ReflectionIntensity: 1 39 | m_CustomReflection: {fileID: 0} 40 | m_Sun: {fileID: 0} 41 | m_IndirectSpecularColor: {r: 0.37311953, g: 0.38074014, b: 0.3587274, a: 1} 42 | m_UseRadianceAmbientProbe: 0 43 | --- !u!157 &3 44 | LightmapSettings: 45 | m_ObjectHideFlags: 0 46 | serializedVersion: 11 47 | m_GIWorkflowMode: 0 48 | m_GISettings: 49 | serializedVersion: 2 50 | m_BounceScale: 1 51 | m_IndirectOutputScale: 1 52 | m_AlbedoBoost: 1 53 | m_EnvironmentLightingMode: 0 54 | m_EnableBakedLightmaps: 1 55 | m_EnableRealtimeLightmaps: 1 56 | m_LightmapEditorSettings: 57 | serializedVersion: 12 58 | m_Resolution: 2 59 | m_BakeResolution: 40 60 | m_AtlasSize: 1024 61 | m_AO: 0 62 | m_AOMaxDistance: 1 63 | m_CompAOExponent: 1 64 | m_CompAOExponentDirect: 0 65 | m_ExtractAmbientOcclusion: 0 66 | m_Padding: 2 67 | m_LightmapParameters: {fileID: 0} 68 | m_LightmapsBakeMode: 1 69 | m_TextureCompression: 1 70 | m_FinalGather: 0 71 | m_FinalGatherFiltering: 1 72 | m_FinalGatherRayCount: 256 73 | m_ReflectionCompression: 2 74 | m_MixedBakeMode: 2 75 | m_BakeBackend: 0 76 | m_PVRSampling: 1 77 | m_PVRDirectSampleCount: 32 78 | m_PVRSampleCount: 500 79 | m_PVRBounces: 2 80 | m_PVREnvironmentSampleCount: 500 81 | m_PVREnvironmentReferencePointCount: 2048 82 | m_PVRFilteringMode: 2 83 | m_PVRDenoiserTypeDirect: 0 84 | m_PVRDenoiserTypeIndirect: 0 85 | m_PVRDenoiserTypeAO: 0 86 | m_PVRFilterTypeDirect: 0 87 | m_PVRFilterTypeIndirect: 0 88 | m_PVRFilterTypeAO: 0 89 | m_PVREnvironmentMIS: 0 90 | m_PVRCulling: 1 91 | m_PVRFilteringGaussRadiusDirect: 1 92 | m_PVRFilteringGaussRadiusIndirect: 5 93 | m_PVRFilteringGaussRadiusAO: 2 94 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5 95 | m_PVRFilteringAtrousPositionSigmaIndirect: 2 96 | m_PVRFilteringAtrousPositionSigmaAO: 1 97 | m_ExportTrainingData: 0 98 | m_TrainingDataDestination: TrainingData 99 | m_LightingDataAsset: {fileID: 0} 100 | m_UseShadowmask: 1 101 | --- !u!196 &4 102 | NavMeshSettings: 103 | serializedVersion: 2 104 | m_ObjectHideFlags: 0 105 | m_BuildSettings: 106 | serializedVersion: 2 107 | agentTypeID: 0 108 | agentRadius: 0.5 109 | agentHeight: 2 110 | agentSlope: 45 111 | agentClimb: 0.4 112 | ledgeDropHeight: 0 113 | maxJumpAcrossDistance: 0 114 | minRegionArea: 2 115 | manualCellSize: 0 116 | cellSize: 0.16666667 117 | manualTileSize: 0 118 | tileSize: 256 119 | accuratePlacement: 0 120 | debug: 121 | m_Flags: 0 122 | m_NavMeshData: {fileID: 0} 123 | --- !u!1 &28961791 124 | GameObject: 125 | m_ObjectHideFlags: 0 126 | m_CorrespondingSourceObject: {fileID: 0} 127 | m_PrefabInstance: {fileID: 0} 128 | m_PrefabAsset: {fileID: 0} 129 | serializedVersion: 6 130 | m_Component: 131 | - component: {fileID: 28961792} 132 | - component: {fileID: 28961794} 133 | - component: {fileID: 28961793} 134 | m_Layer: 0 135 | m_Name: EventSystem 136 | m_TagString: Untagged 137 | m_Icon: {fileID: 0} 138 | m_NavMeshLayer: 0 139 | m_StaticEditorFlags: 0 140 | m_IsActive: 1 141 | --- !u!4 &28961792 142 | Transform: 143 | m_ObjectHideFlags: 0 144 | m_CorrespondingSourceObject: {fileID: 0} 145 | m_PrefabInstance: {fileID: 0} 146 | m_PrefabAsset: {fileID: 0} 147 | m_GameObject: {fileID: 28961791} 148 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 149 | m_LocalPosition: {x: 0, y: 0, z: 0} 150 | m_LocalScale: {x: 1, y: 1, z: 1} 151 | m_Children: [] 152 | m_Father: {fileID: 0} 153 | m_RootOrder: 4 154 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 155 | --- !u!114 &28961793 156 | MonoBehaviour: 157 | m_ObjectHideFlags: 0 158 | m_CorrespondingSourceObject: {fileID: 0} 159 | m_PrefabInstance: {fileID: 0} 160 | m_PrefabAsset: {fileID: 0} 161 | m_GameObject: {fileID: 28961791} 162 | m_Enabled: 1 163 | m_EditorHideFlags: 0 164 | m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} 165 | m_Name: 166 | m_EditorClassIdentifier: 167 | m_HorizontalAxis: Horizontal 168 | m_VerticalAxis: Vertical 169 | m_SubmitButton: Submit 170 | m_CancelButton: Cancel 171 | m_InputActionsPerSecond: 10 172 | m_RepeatDelay: 0.5 173 | m_ForceModuleActive: 1 174 | --- !u!114 &28961794 175 | MonoBehaviour: 176 | m_ObjectHideFlags: 0 177 | m_CorrespondingSourceObject: {fileID: 0} 178 | m_PrefabInstance: {fileID: 0} 179 | m_PrefabAsset: {fileID: 0} 180 | m_GameObject: {fileID: 28961791} 181 | m_Enabled: 1 182 | m_EditorHideFlags: 0 183 | m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} 184 | m_Name: 185 | m_EditorClassIdentifier: 186 | m_FirstSelected: {fileID: 0} 187 | m_sendNavigationEvents: 1 188 | m_DragThreshold: 10 189 | --- !u!1 &370195441 190 | GameObject: 191 | m_ObjectHideFlags: 0 192 | m_CorrespondingSourceObject: {fileID: 0} 193 | m_PrefabInstance: {fileID: 0} 194 | m_PrefabAsset: {fileID: 0} 195 | serializedVersion: 6 196 | m_Component: 197 | - component: {fileID: 370195442} 198 | - component: {fileID: 370195443} 199 | m_Layer: 0 200 | m_Name: UIManager 201 | m_TagString: Untagged 202 | m_Icon: {fileID: 0} 203 | m_NavMeshLayer: 0 204 | m_StaticEditorFlags: 0 205 | m_IsActive: 1 206 | --- !u!4 &370195442 207 | Transform: 208 | m_ObjectHideFlags: 0 209 | m_CorrespondingSourceObject: {fileID: 0} 210 | m_PrefabInstance: {fileID: 0} 211 | m_PrefabAsset: {fileID: 0} 212 | m_GameObject: {fileID: 370195441} 213 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 214 | m_LocalPosition: {x: 0, y: 0, z: 0} 215 | m_LocalScale: {x: 1, y: 1, z: 1} 216 | m_Children: [] 217 | m_Father: {fileID: 0} 218 | m_RootOrder: 1 219 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 220 | --- !u!114 &370195443 221 | MonoBehaviour: 222 | m_ObjectHideFlags: 0 223 | m_CorrespondingSourceObject: {fileID: 0} 224 | m_PrefabInstance: {fileID: 0} 225 | m_PrefabAsset: {fileID: 0} 226 | m_GameObject: {fileID: 370195441} 227 | m_Enabled: 1 228 | m_EditorHideFlags: 0 229 | m_Script: {fileID: 11500000, guid: c329c81a621c3446f94f4d539adb9fc7, type: 3} 230 | m_Name: 231 | m_EditorClassIdentifier: 232 | resourcePrefabDirectory: Prefabs/UI/Screens 233 | rootCanvas: {fileID: 1963757146} 234 | uiCamera: {fileID: 435009516} 235 | inputOrderFixEnabled: 1 236 | --- !u!1 &435009515 237 | GameObject: 238 | m_ObjectHideFlags: 0 239 | m_CorrespondingSourceObject: {fileID: 0} 240 | m_PrefabInstance: {fileID: 0} 241 | m_PrefabAsset: {fileID: 0} 242 | serializedVersion: 6 243 | m_Component: 244 | - component: {fileID: 435009520} 245 | - component: {fileID: 435009516} 246 | - component: {fileID: 435009518} 247 | m_Layer: 5 248 | m_Name: UICamera 249 | m_TagString: Untagged 250 | m_Icon: {fileID: 0} 251 | m_NavMeshLayer: 0 252 | m_StaticEditorFlags: 0 253 | m_IsActive: 1 254 | --- !u!20 &435009516 255 | Camera: 256 | m_ObjectHideFlags: 0 257 | m_CorrespondingSourceObject: {fileID: 0} 258 | m_PrefabInstance: {fileID: 0} 259 | m_PrefabAsset: {fileID: 0} 260 | m_GameObject: {fileID: 435009515} 261 | m_Enabled: 1 262 | serializedVersion: 2 263 | m_ClearFlags: 3 264 | m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} 265 | m_projectionMatrixMode: 1 266 | m_GateFitMode: 2 267 | m_FOVAxisMode: 0 268 | m_SensorSize: {x: 36, y: 24} 269 | m_LensShift: {x: 0, y: 0} 270 | m_FocalLength: 50 271 | m_NormalizedViewPortRect: 272 | serializedVersion: 2 273 | x: 0 274 | y: 0 275 | width: 1 276 | height: 1 277 | near clip plane: 0.3 278 | far clip plane: 1000 279 | field of view: 30 280 | orthographic: 0 281 | orthographic size: 5 282 | m_Depth: 1 283 | m_CullingMask: 284 | serializedVersion: 2 285 | m_Bits: 32 286 | m_RenderingPath: -1 287 | m_TargetTexture: {fileID: 0} 288 | m_TargetDisplay: 0 289 | m_TargetEye: 3 290 | m_HDR: 0 291 | m_AllowMSAA: 1 292 | m_AllowDynamicResolution: 0 293 | m_ForceIntoRT: 0 294 | m_OcclusionCulling: 1 295 | m_StereoConvergence: 10 296 | m_StereoSeparation: 0.022 297 | --- !u!92 &435009518 298 | Behaviour: 299 | m_ObjectHideFlags: 0 300 | m_CorrespondingSourceObject: {fileID: 0} 301 | m_PrefabInstance: {fileID: 0} 302 | m_PrefabAsset: {fileID: 0} 303 | m_GameObject: {fileID: 435009515} 304 | m_Enabled: 1 305 | --- !u!4 &435009520 306 | Transform: 307 | m_ObjectHideFlags: 0 308 | m_CorrespondingSourceObject: {fileID: 0} 309 | m_PrefabInstance: {fileID: 0} 310 | m_PrefabAsset: {fileID: 0} 311 | m_GameObject: {fileID: 435009515} 312 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 313 | m_LocalPosition: {x: 0, y: 0, z: -5} 314 | m_LocalScale: {x: 1, y: 1, z: 1} 315 | m_Children: [] 316 | m_Father: {fileID: 0} 317 | m_RootOrder: 3 318 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 319 | --- !u!1 &1963757142 320 | GameObject: 321 | m_ObjectHideFlags: 0 322 | m_CorrespondingSourceObject: {fileID: 0} 323 | m_PrefabInstance: {fileID: 0} 324 | m_PrefabAsset: {fileID: 0} 325 | serializedVersion: 6 326 | m_Component: 327 | - component: {fileID: 1963757143} 328 | - component: {fileID: 1963757146} 329 | - component: {fileID: 1963757145} 330 | m_Layer: 5 331 | m_Name: UIRootCanvas 332 | m_TagString: Untagged 333 | m_Icon: {fileID: 0} 334 | m_NavMeshLayer: 0 335 | m_StaticEditorFlags: 0 336 | m_IsActive: 1 337 | --- !u!224 &1963757143 338 | RectTransform: 339 | m_ObjectHideFlags: 0 340 | m_CorrespondingSourceObject: {fileID: 0} 341 | m_PrefabInstance: {fileID: 0} 342 | m_PrefabAsset: {fileID: 0} 343 | m_GameObject: {fileID: 1963757142} 344 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 345 | m_LocalPosition: {x: 0, y: 0, z: 0} 346 | m_LocalScale: {x: 0, y: 0, z: 0} 347 | m_Children: [] 348 | m_Father: {fileID: 0} 349 | m_RootOrder: 2 350 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 351 | m_AnchorMin: {x: 0, y: 0} 352 | m_AnchorMax: {x: 0, y: 0} 353 | m_AnchoredPosition: {x: 0, y: 0} 354 | m_SizeDelta: {x: 0, y: 0} 355 | m_Pivot: {x: 0, y: 0} 356 | --- !u!114 &1963757145 357 | MonoBehaviour: 358 | m_ObjectHideFlags: 0 359 | m_CorrespondingSourceObject: {fileID: 0} 360 | m_PrefabInstance: {fileID: 0} 361 | m_PrefabAsset: {fileID: 0} 362 | m_GameObject: {fileID: 1963757142} 363 | m_Enabled: 1 364 | m_EditorHideFlags: 0 365 | m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} 366 | m_Name: 367 | m_EditorClassIdentifier: 368 | m_UiScaleMode: 1 369 | m_ReferencePixelsPerUnit: 100 370 | m_ScaleFactor: 1 371 | m_ReferenceResolution: {x: 800, y: 600} 372 | m_ScreenMatchMode: 0 373 | m_MatchWidthOrHeight: 0.5 374 | m_PhysicalUnit: 3 375 | m_FallbackScreenDPI: 96 376 | m_DefaultSpriteDPI: 96 377 | m_DynamicPixelsPerUnit: 1 378 | --- !u!223 &1963757146 379 | Canvas: 380 | m_ObjectHideFlags: 0 381 | m_CorrespondingSourceObject: {fileID: 0} 382 | m_PrefabInstance: {fileID: 0} 383 | m_PrefabAsset: {fileID: 0} 384 | m_GameObject: {fileID: 1963757142} 385 | m_Enabled: 1 386 | serializedVersion: 3 387 | m_RenderMode: 0 388 | m_Camera: {fileID: 435009516} 389 | m_PlaneDistance: 100 390 | m_PixelPerfect: 0 391 | m_ReceivesEvents: 1 392 | m_OverrideSorting: 0 393 | m_OverridePixelPerfect: 0 394 | m_SortingBucketNormalizedSize: 0 395 | m_AdditionalShaderChannelsFlag: 0 396 | m_SortingLayerID: 0 397 | m_SortingOrder: 0 398 | m_TargetDisplay: 0 399 | --- !u!1 &2104960975 400 | GameObject: 401 | m_ObjectHideFlags: 0 402 | m_CorrespondingSourceObject: {fileID: 0} 403 | m_PrefabInstance: {fileID: 0} 404 | m_PrefabAsset: {fileID: 0} 405 | serializedVersion: 6 406 | m_Component: 407 | - component: {fileID: 2104960977} 408 | - component: {fileID: 2104960976} 409 | m_Layer: 0 410 | m_Name: GameManager 411 | m_TagString: Untagged 412 | m_Icon: {fileID: 0} 413 | m_NavMeshLayer: 0 414 | m_StaticEditorFlags: 0 415 | m_IsActive: 1 416 | --- !u!114 &2104960976 417 | MonoBehaviour: 418 | m_ObjectHideFlags: 0 419 | m_CorrespondingSourceObject: {fileID: 0} 420 | m_PrefabInstance: {fileID: 0} 421 | m_PrefabAsset: {fileID: 0} 422 | m_GameObject: {fileID: 2104960975} 423 | m_Enabled: 1 424 | m_EditorHideFlags: 0 425 | m_Script: {fileID: 11500000, guid: 3bcfced45234048ada67349e3c46c344, type: 3} 426 | m_Name: 427 | m_EditorClassIdentifier: 428 | --- !u!4 &2104960977 429 | Transform: 430 | m_ObjectHideFlags: 0 431 | m_CorrespondingSourceObject: {fileID: 0} 432 | m_PrefabInstance: {fileID: 0} 433 | m_PrefabAsset: {fileID: 0} 434 | m_GameObject: {fileID: 2104960975} 435 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 436 | m_LocalPosition: {x: 0, y: 0, z: 0} 437 | m_LocalScale: {x: 1, y: 1, z: 1} 438 | m_Children: [] 439 | m_Father: {fileID: 0} 440 | m_RootOrder: 0 441 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 442 | -------------------------------------------------------------------------------- /Assets/UIManager/Example/UIExample.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 70cd51295292e46819055742d144117f 3 | timeCreated: 1491239412 4 | licenseType: Pro 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/UIManager/README.md: -------------------------------------------------------------------------------- 1 | # Unity UI Manager 2 | 3 | ## What is this and why should I use it? 4 | The UI Manager is a stack-based UI controller class. It is designed to make pushing and popping screens in Unity simple and intuitive. No need to have a hundred different UI prefabs sitting in a scene being toggled on and off, the UI Manager can instantiate and manage screens on-demand. It is a cleaner, more streamlined, and easier to maintain approach to UI development than what Unity provides out of the box. 5 | 6 | ## How does it work? 7 | The core functionality of UI Manager is made up of only two simple classes: `UIManager` and `Screen`. 8 | 9 | ### UIManager 10 | `UIManager` is responsible for instantiating and maintaining the screen stack. When you want to push or pop a screen to the stack, you interact with `UIManager`. 11 | 12 | `UIManager` has a few prerequisites that should be understood when using it: 13 | 14 | > ### Prerequisites 15 | > > 16 | > > 1. **Screen Prefab Folder** 17 | > > The UIManager looks for screen prefabs by name inside a specific folder that you specify in the 18 | > > constructor. This folder must reside within a folder called 'Resources' in the Unity project. 19 | > > 20 | > > ![Prefab Directory](_images/prefab_directory.png) 21 | > > *Example of a screen prefab directory structure.* 22 | > > 23 | > > 24 | > > 2. **UI Root Canvas** 25 | > > The UI Manager organizes all screens underneath a root Canvas object. You must provide the UI 26 | > > Manager what Canvas object you want to use for this purpose. 27 | > > 28 | > > 3. ***Optional* UI Camera** 29 | > > If you want to render your UI with a seperate Unity Camera you can pass it to the UIManager 30 | > > inside the constructor. By default, Unity does not use a seperate Camera to render UI elements, 31 | > > so this isn't necessary unless you need it. 32 | > 33 | > ### Core Methods 34 | > 35 | > #### QueuePush 36 | > Queue a screen up to be pushed to the stack. 37 | > 38 | > > *Parameters* 39 | > > 40 | > > `Screen.Id id` 41 | > > The id that this screen will be known by. The id is used to to identify the screen everywhere in 42 | > > the UIManager. 43 | > > 44 | > > `Screen.Data data` **Optional** 45 | > > The data container that will be passed to the instance of the screen when it is pushed onto the 46 | > > stack. 47 | > > 48 | > > `string prefabName` 49 | > > The name of the prefab that will be instantiated. 50 | > > 51 | > > `PushedDelegate callback` **Optional** 52 | > > The callback that will be called when the screen has been pushed onto the stack. 53 | > 54 | > #### QueuePop 55 | > Queue the top screen on the stack to be popped. 56 | > 57 | > > *Parameters* 58 | > > 59 | > > `PoppedDelegate callback` **Optional** 60 | > > The callback that will be called when the screen has been popped from the stack. 61 | > 62 | > #### QueuePopTo 63 | > Queue the specified screen to be popped from the stack. This will pop all screens on top of it as well, keeping inline with the behaviour of a true stack. 64 | > 65 | > > *Parameters* 66 | > > 67 | > > `Screen.Id id` 68 | > > The id of the screen that you want to pop up to. If you want to include this screen in the pop 69 | > > see the 'include' field. 70 | > > 71 | > > `bool include` 72 | > > If false, will pop up to but not including the specified screen. If true, will also pop the specified screen. 73 | > > 74 | > > `PoppedDelegate callback` **Optional** 75 | > > The callback that will be called when the screen has been popped from the stack. 76 | > 77 | > #### GetScreen 78 | > Retrieve a reference to the specified screen from the stack. 79 | > 80 | > > *Parameters* 81 | > > 82 | > > `Screen.Id id` 83 | > > The id that this screen will be known by. The id is used to to identify the screen everywhere in the UIManager. 84 | 85 | ### Screen 86 | `Screen` is the base class for all screens that `UIManager` interacts with. `Screen` is a `MonoBehaviour` that defines some methods that are called by `UIManager`. Your `Screen` script should always be attached at the top most `GameObject` in your screen prefab. Be sure to understand what these methods are as you will need to implement them in your screens! 87 | 88 | > ### Screen.Data class 89 | > The `Screen.Data` class is a data container object. Internally it is backed by a `Dictionary` 90 | > collection object. Use the `Screen.Data` class in order to pass user-defined data sets to the 91 | > screens. Not all screens need a `Screen.Data` object, therefore in some cases passing `null` will be 92 | > fine. Some screens may require some fields from from the `Screen.Data` container, this is really up 93 | > to you as the developer to decide how to use in your project. 94 | > 95 | > ### Core Fields 96 | > > #### keepCached 97 | > > `UIManager` gives you the option to disable a screen object instead of destroying it completely when 98 | > > the screen is popped from the stack. This will keep the screen object cached in memory and when it is 99 | > > pushed to the stack again will reuse the cached object instead of instancing a new one from the prefab. 100 | > 101 | > ### Core Methods 102 | > > #### OnSetup 103 | > > `OnSetup` is called after instantiating a screen prefab. It is only called once for the lifecycle of 104 | > > the `Screen`. 105 | > > #### OnPush 106 | > > Called by the `UIManager` when the `Screen` is being pushed to the stack. 107 | > > 108 | > > ``` 109 | > > IMPORTANT: Be sure to call PushPopFinished when your screen is done pushing. Delaying the 110 | > > PushPopFinished call allows the screen to delay execution of the UIManager screen queue. 111 | > > ``` 112 | > > 113 | > > > *Parameters* 114 | > > > 115 | > > > `Screen.Data data` 116 | > > > The user-defined data container for this screen. Useful for sending custom data sets to the screen 117 | > > > that you can use to setup information before the screen is visible and on the stack. 118 | > > 119 | > > #### OnPop 120 | > > Called by the `UIManager` when this `Screen` is being popped from the screen stack. 121 | > > 122 | > > ``` 123 | > > IMPORTANT: Be sure to call PushPopFinished when your screen is done pushing. Delaying the 124 | > > PushPopFinished call allows the screen to delay execution of the UIManager screen queue. 125 | > > ``` 126 | > > 127 | > > #### OnFocus 128 | > > Called by the `UIManager` when this `Screen` becomes the top most screen in the stack. 129 | > > 130 | > > #### OnFocusLost 131 | > > Called by the `UIManager` when this `Screen` is no longer the top most screen in the stack. 132 | 133 | ## Example Scene / Scripts 134 | 135 | Included with the core `UIManager` classes is an example scene with example scripts. 136 | Open the scene *UIExample* inside the *Example* folder. 137 | 138 | Press play in the editor and play with the example to get a grasp of how it is organized. 139 | When you're ready to look at the setup process and various screens in detail you should start by looking at the script `UIManager/Examples/Scripts/GameManager.cs` 140 | 141 | This script is the entry point for the example and is where the `UIManager` is setup and the first screen is pushed onto the stack. 142 | 143 | ![UIExample Scene File](_images/uiexample_scene.png) 144 | *The UIExample scene is a good starting point to learning how to use the UIManager.* 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | ## Support Contact 157 | **Original Author / Maintained By** 158 | Ryan Cook - -------------------------------------------------------------------------------- /Assets/UIManager/README.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0a5a8b62f90ec4b46b9b211f0613bdc6 3 | timeCreated: 1516648498 4 | licenseType: Pro 5 | TextScriptImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/UIManager/Screens.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0cd55faea9a2844beb1f0ad299e1c76a 3 | folderAsset: yes 4 | timeCreated: 1508342313 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/UIManager/Screens/EmptyScreen.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEngine.UI; 3 | using System.Collections; 4 | using System.Collections.Generic; 5 | 6 | #pragma warning disable 0649 7 | 8 | namespace BlitzyUI 9 | { 10 | public class EmptyScreen : BlitzyUI.Screen 11 | { 12 | public override void OnSetup() 13 | { 14 | // Run one-time setup operations here. 15 | } 16 | 17 | public override void OnPush(Data data) 18 | { 19 | // Be sure to call PushFinished to signal the end of the push. 20 | PushFinished(); 21 | } 22 | 23 | public override void OnPop() 24 | { 25 | // Be sure to call PopFinished to signal the end of the pop. 26 | PopFinished(); 27 | } 28 | 29 | public override void OnFocus() 30 | { 31 | } 32 | 33 | public override void OnFocusLost() 34 | { 35 | } 36 | } 37 | } 38 | 39 | #pragma warning restore 0649 -------------------------------------------------------------------------------- /Assets/UIManager/Screens/EmptyScreen.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5adc49261e0e241f3804183f4295dde3 3 | timeCreated: 1508342313 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/UIManager/Screens/Screen.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections.Generic; 3 | 4 | namespace BlitzyUI 5 | { 6 | [RequireComponent(typeof(Canvas))] 7 | public abstract class Screen : MonoBehaviour 8 | { 9 | public class Id 10 | { 11 | readonly string name; 12 | public readonly string defaultPrefabName; 13 | 14 | public Id (string name) 15 | { 16 | this.name = name; 17 | } 18 | 19 | public Id (string name, string defaultPrefabName) 20 | { 21 | this.name = name; 22 | this.defaultPrefabName = defaultPrefabName; 23 | } 24 | 25 | public override int GetHashCode() 26 | { 27 | return name.GetHashCode(); 28 | } 29 | 30 | public static bool operator == (Id x, Id y) 31 | { 32 | if (ReferenceEquals(x, null)) 33 | return ReferenceEquals(y, null); 34 | 35 | return x.Equals(y); 36 | } 37 | 38 | public static bool operator != (Id x, Id y) 39 | { 40 | return !(x == y); 41 | } 42 | 43 | public override bool Equals(object obj) 44 | { 45 | Id other = obj as Id; 46 | if (ReferenceEquals(other, null)) 47 | return false; 48 | 49 | return name == other.name; 50 | } 51 | 52 | public override string ToString() 53 | { 54 | return name; 55 | } 56 | } 57 | 58 | 59 | /// 60 | /// Data container that is passed along to Screens that are being pushed. Screens can use these to setup 61 | /// themselves up with custom data provided at run-time. 62 | /// 63 | public class Data 64 | { 65 | private Dictionary _data; 66 | 67 | public Data () 68 | { 69 | _data = new Dictionary(); 70 | } 71 | 72 | public Data (int capacity) 73 | { 74 | _data = new Dictionary(capacity); 75 | } 76 | 77 | public void Add(string key, object data) 78 | { 79 | _data.Add(key, data); 80 | } 81 | 82 | public T Get(string key) 83 | { 84 | object datum = Get(key); 85 | 86 | try 87 | { 88 | return (T)datum; 89 | } 90 | catch 91 | { 92 | throw new System.Exception(string.Format("[BlitzyUI.Screen.Data] Could not cast data object '{0}' to type '{1}'", key, typeof(T).Name)); 93 | } 94 | } 95 | 96 | public object Get (string key) 97 | { 98 | object datum; 99 | 100 | if (!_data.TryGetValue(key, out datum)) 101 | throw new System.Exception(string.Format("[BlitzyUI.Screen.Data] No object found for key '{0}'", key)); 102 | 103 | return datum; 104 | } 105 | 106 | public bool TryGet (string key, out object datum) 107 | { 108 | return _data.TryGetValue(key, out datum); 109 | } 110 | 111 | public bool TryGet (string key, out T datum) 112 | { 113 | object datumObj; 114 | 115 | if (_data.TryGetValue(key, out datumObj)) 116 | { 117 | try 118 | { 119 | datum = (T)datumObj; 120 | return true; 121 | } 122 | catch 123 | { 124 | throw new System.Exception(string.Format("[BlitzyUI.Screen.Data] Could not cast data object '{0}' to type '{1}'", key, typeof(T).Name)); 125 | } 126 | } 127 | 128 | datum = default(T); 129 | return false; 130 | } 131 | } 132 | 133 | 134 | public Id id { get; private set; } 135 | public string PrefabName { get; private set; } 136 | 137 | public bool keepCached = false; 138 | public bool overrideManagedSorting; 139 | public int overrideSortValue; 140 | 141 | public delegate void ScreenDelegate (Screen screen); 142 | 143 | public event ScreenDelegate onPushFinished; 144 | public event ScreenDelegate onPopFinished; 145 | 146 | public void Setup(Id id, string prefabName) 147 | { 148 | this.id = id; 149 | PrefabName = prefabName; 150 | 151 | OnSetup(); 152 | } 153 | 154 | /// 155 | /// Setup is called after instantiating a Screen prefab. It is only called once for the lifecycle of the Screen. 156 | /// 157 | public abstract void OnSetup(); 158 | 159 | /// 160 | /// Called by the UIManager when this Screen is being pushed to the screen stack. 161 | /// Be sure to call PushPopFinished when your screen is done pushing. Delaying the PushPopFinished call 162 | /// allows the screen to delay execution of the UIManager's screen queue. 163 | /// 164 | public abstract void OnPush(Data data); 165 | 166 | /// 167 | /// Called by the UIManager when this Screen is being popped from the screen stack. 168 | /// Be sure to call PopFinished when your screen is done popping. Delaying the PushPopFinished call 169 | /// allows the screen to delay execution of the UIManager's screen queue. 170 | /// 171 | public abstract void OnPop(); 172 | 173 | /// 174 | /// Called by the UIManager when this Screen becomes the top most screen in the stack. 175 | /// 176 | public abstract void OnFocus(); 177 | 178 | /// 179 | /// Called by the UIManager when this Screen is no longer the top most screen in the stack. 180 | /// 181 | public abstract void OnFocusLost(); 182 | 183 | protected void PushFinished () 184 | { 185 | if (onPushFinished != null) 186 | onPushFinished(this); 187 | } 188 | 189 | protected void PopFinished () 190 | { 191 | if (onPopFinished != null) 192 | onPopFinished(this); 193 | } 194 | } 195 | } -------------------------------------------------------------------------------- /Assets/UIManager/Screens/Screen.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 82828d7f591d24e2fa5f766deb7a4294 3 | timeCreated: 1508342313 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/UIManager/UIManager.cs: -------------------------------------------------------------------------------- 1 | //#define PRINT_STACK 2 | //#define PRINT_QUEUE 3 | //#define PRINT_CACHE 4 | //#define PRINT_FOCUS 5 | 6 | using UnityEngine; 7 | using UnityEngine.UI; 8 | using System.Collections; 9 | using System.Collections.Generic; 10 | 11 | namespace BlitzyUI 12 | { 13 | public class UIManager : MonoBehaviour 14 | { 15 | public const string Version = "1.0.0"; 16 | 17 | private abstract class QueuedScreen 18 | { 19 | public BlitzyUI.Screen.Id id; 20 | } 21 | 22 | 23 | private class QueuedScreenPush : QueuedScreen 24 | { 25 | public BlitzyUI.Screen.Data data; 26 | public string prefabName; 27 | public PushedDelegate callback; 28 | 29 | public override string ToString() 30 | { 31 | return string.Format("[Push] {0}", id); 32 | } 33 | } 34 | 35 | 36 | private class QueuedScreenPop : QueuedScreen 37 | { 38 | public PoppedDelegate callback; 39 | 40 | public override string ToString() 41 | { 42 | return string.Format("[Pop] {0}", id); 43 | } 44 | } 45 | 46 | public delegate void PushedDelegate (Screen screen); 47 | public delegate void PoppedDelegate (Screen.Id id); 48 | 49 | public static UIManager Instance { get; private set; } 50 | 51 | public string resourcePrefabDirectory; 52 | public Canvas rootCanvas; 53 | public Camera uiCamera; 54 | 55 | /// 56 | /// [Ryan] A fix for input order not obeying the render order of the screens. 57 | /// This is a bug as of Unity 2019.1.9f1 58 | /// 59 | public bool inputOrderFixEnabled = true; 60 | 61 | private CanvasScaler _rootCanvasScalar; 62 | private Dictionary _cache; 63 | private Queue _queue; 64 | private List _stack; 65 | private HashSet _stackIdSet; 66 | private State _state; 67 | 68 | private PushedDelegate _activePushCallback; 69 | private PoppedDelegate _activePopCallback; 70 | 71 | public Vector2 ReferenceResolution { get { return _rootCanvasScalar.referenceResolution; } } 72 | 73 | private enum State 74 | { 75 | Ready, 76 | Push, 77 | Pop 78 | } 79 | 80 | private void Awake() { 81 | if (Instance == null) { 82 | Instance = this; 83 | } 84 | 85 | Debug.Log("[UIManager] Version: " + Version); 86 | 87 | _rootCanvasScalar = rootCanvas.GetComponent(); 88 | if (_rootCanvasScalar == null) { 89 | throw new System.Exception(string.Format("{0} must have a CanvasScalar component attached to it for UIManager.", rootCanvas.name)); 90 | } 91 | 92 | _cache = new Dictionary(); 93 | _queue = new Queue(); 94 | _stack = new List(); 95 | _state = State.Ready; 96 | 97 | // Remove any objects that may be lingering underneath the root. 98 | foreach (Transform child in rootCanvas.transform) 99 | { 100 | Object.Destroy(child.gameObject); 101 | } 102 | } 103 | 104 | private void OnDestroy() { 105 | if (Instance == this) { 106 | Instance = null; 107 | } 108 | } 109 | 110 | /// 111 | /// Queue the screen to be pushed onto the screen stack. 112 | /// Callback will be invoked when the screen is pushed to the stack. 113 | /// 114 | public void QueuePush (BlitzyUI.Screen.Id id, BlitzyUI.Screen.Data data, string prefabName = null, PushedDelegate callback = null) 115 | { 116 | string prefab = prefabName ?? id.defaultPrefabName; 117 | #if PRINT_QUEUE 118 | DebugPrintQueue(string.Format("[UIManager] QueuePush id: {0}, prefabName: {1}", id, prefab)); 119 | #endif 120 | 121 | if (GetScreen(id) != null) 122 | { 123 | Debug.LogWarning(string.Format("Screen {0} already exists in the stack. Ignoring push request.", id)); 124 | return; 125 | } 126 | 127 | //if (ScreenWillExist(id)) 128 | //{ 129 | // Debug.LogWarning(string.Format("Screen {0} will exist in the stack after the queue is fully executed. Ignoring push request.", id)); 130 | // return; 131 | //} 132 | 133 | QueuedScreenPush push = new QueuedScreenPush(); 134 | push.id = id; 135 | push.data = data; 136 | push.prefabName = prefab; 137 | push.callback = callback; 138 | 139 | _queue.Enqueue(push); 140 | 141 | #if PRINT_QUEUE 142 | DebugPrintQueue(string.Format("[UIManager] Enqueued Screen: {0}, Frame: {1}", push, Time.frameCount)); 143 | #endif 144 | 145 | if (CanExecuteNextQueueItem()) 146 | ExecuteNextQueueItem(); 147 | } 148 | 149 | /// 150 | /// Queue the screen to be popped from the screen stack. This will pop all screens on top of it as well. 151 | /// Callback will be invoked when the screen is reached, or popped if 'include' is true. 152 | /// 153 | public void QueuePopTo (BlitzyUI.Screen.Id id, bool include, PoppedDelegate callback = null) 154 | { 155 | #if PRINT_QUEUE 156 | DebugPrintQueue(string.Format("[UIManager] QueuePopTo id: {0}, include: {1}", id, include)); 157 | #endif 158 | 159 | bool found = false; 160 | 161 | for (int i = 0; i < _stack.Count; i++) 162 | { 163 | var screen = _stack[i]; 164 | 165 | if (screen.id != id) 166 | { 167 | var queuedPop = new QueuedScreenPop(); 168 | queuedPop.id = screen.id; 169 | 170 | _queue.Enqueue(queuedPop); 171 | 172 | #if PRINT_QUEUE 173 | DebugPrintQueue(string.Format("[UIManager] Enqueued Screen: {0}", queuedPop)); 174 | #endif 175 | } 176 | else 177 | { 178 | if (include) 179 | { 180 | var queuedPop = new QueuedScreenPop(); 181 | queuedPop.id = screen.id; 182 | queuedPop.callback = callback; 183 | 184 | _queue.Enqueue(queuedPop); 185 | 186 | #if PRINT_QUEUE 187 | DebugPrintQueue(string.Format("[UIManager] Enqueued Screen: {0}", queuedPop)); 188 | #endif 189 | } 190 | 191 | if (callback != null) 192 | callback(screen.id); 193 | 194 | found = true; 195 | break; 196 | } 197 | } 198 | 199 | if (!found) 200 | Debug.LogWarning(string.Format("[UIManager] {0} was not in the stack. All screens have been popped.", id)); 201 | 202 | if (CanExecuteNextQueueItem()) 203 | ExecuteNextQueueItem(); 204 | } 205 | 206 | /// 207 | /// Queue the top-most screen to be popped from the screen stack. 208 | /// Callback will be invoked when the screen is popped from the stack. 209 | /// 210 | public void QueuePop (PoppedDelegate callback = null) 211 | { 212 | #if PRINT_QUEUE 213 | DebugPrintQueue(string.Format("[UIManager] QueuePop")); 214 | #endif 215 | 216 | Screen topScreen = GetTopScreen(); 217 | if (topScreen == null) 218 | return; 219 | 220 | QueuedScreenPop pop = new QueuedScreenPop(); 221 | pop.id = topScreen.id; 222 | pop.callback = callback; 223 | 224 | _queue.Enqueue(pop); 225 | 226 | #if PRINT_QUEUE 227 | DebugPrintQueue(string.Format("[UIManager] Enqueued Screen: {0}", pop)); 228 | #endif 229 | 230 | if (CanExecuteNextQueueItem()) 231 | ExecuteNextQueueItem(); 232 | } 233 | 234 | public void OnUpdate () 235 | { 236 | if (CanExecuteNextQueueItem()) 237 | ExecuteNextQueueItem(); 238 | } 239 | 240 | public Screen GetTopScreen () 241 | { 242 | if (_stack.Count > 0) 243 | return _stack[0]; 244 | 245 | return null; 246 | } 247 | 248 | public Screen GetScreen (BlitzyUI.Screen.Id id) 249 | { 250 | int count = _stack.Count; 251 | for (int i = 0; i < count; i++) 252 | { 253 | if (_stack[i].id == id) 254 | return _stack[i]; 255 | } 256 | 257 | return null; 258 | } 259 | 260 | public T GetScreen (BlitzyUI.Screen.Id id) where T : BlitzyUI.Screen 261 | { 262 | Screen screen = GetScreen(id); 263 | return (T)screen; 264 | } 265 | 266 | public void SetVisibility (bool visible) 267 | { 268 | var canvasGroup = rootCanvas.GetComponent(); 269 | if (canvasGroup == null) { 270 | canvasGroup = rootCanvas.gameObject.AddComponent(); 271 | } 272 | 273 | canvasGroup.alpha = visible ? 1.0f : 0.0f; 274 | canvasGroup.interactable = visible; 275 | canvasGroup.blocksRaycasts = visible; 276 | } 277 | 278 | public bool IsVisible() { 279 | var canvasGroup = rootCanvas.GetComponent(); 280 | 281 | if (canvasGroup == null) { 282 | return true; 283 | } 284 | 285 | bool isVisible = canvasGroup.alpha > 0.0f && 286 | canvasGroup.interactable == true && 287 | canvasGroup.blocksRaycasts == true; 288 | 289 | return isVisible; 290 | } 291 | 292 | private bool CanExecuteNextQueueItem () 293 | { 294 | if (_state == State.Ready) 295 | { 296 | if (_queue.Count > 0) 297 | { 298 | return true; 299 | } 300 | } 301 | 302 | return false; 303 | } 304 | 305 | private void ExecuteNextQueueItem () 306 | { 307 | // Get next queued item. 308 | QueuedScreen queued = _queue.Dequeue(); 309 | 310 | #if PRINT_QUEUE 311 | DebugPrintQueue(string.Format("[UIManager] Dequeued Screen: {0}, Frame: {1}", queued, Time.frameCount)); 312 | #endif 313 | 314 | if (queued is QueuedScreenPush) 315 | { 316 | // Push screen. 317 | QueuedScreenPush queuedPush = (QueuedScreenPush)queued; 318 | Screen screenInstance; 319 | 320 | if (_cache.TryGetValue(queuedPush.prefabName, out screenInstance)) 321 | { 322 | // Use cached instance of screen. 323 | _cache.Remove(queuedPush.prefabName); 324 | 325 | #if PRINT_CACHE 326 | DebugPrintCache(string.Format("[UIManager] Screen retrieved from Cache: {0}", queuedPush.prefabName)); 327 | #endif 328 | 329 | // Move cached to the front of the transfrom heirarchy so that it is sorted properly. 330 | screenInstance.transform.SetAsLastSibling(); 331 | 332 | screenInstance.gameObject.SetActive(true); 333 | } 334 | else 335 | { 336 | // Instantiate new instance of screen. 337 | string path = System.IO.Path.Combine(resourcePrefabDirectory, queuedPush.prefabName); 338 | Screen prefab = Resources.Load(path); 339 | 340 | screenInstance = Object.Instantiate(prefab, rootCanvas.transform); 341 | screenInstance.Setup(queuedPush.id, queuedPush.prefabName); 342 | } 343 | 344 | if (this.inputOrderFixEnabled) { 345 | this.UpdateSortOrderOverrides(); 346 | } 347 | 348 | // Tell previous top screen that it is losing focus. 349 | var topScreen = GetTopScreen(); 350 | if (topScreen != null) 351 | { 352 | #if PRINT_FOCUS 353 | Debug.Log(string.Format("[UIManager] Lost Focus: {0}", topScreen.id)); 354 | #endif 355 | 356 | topScreen.OnFocusLost(); 357 | } 358 | 359 | // Insert new screen at the top of the stack. 360 | _state = State.Push; 361 | _stack.Insert(0, screenInstance); 362 | 363 | _activePushCallback = queuedPush.callback; 364 | 365 | #if PRINT_STACK 366 | DebugPrintStack(string.Format("[UIManager] Pushing Screen: {0}, Frame: {1}", queued.id, Time.frameCount)); 367 | #endif 368 | 369 | screenInstance.onPushFinished += HandlePushFinished; 370 | screenInstance.OnPush(queuedPush.data); 371 | 372 | if (_queue.Count == 0) 373 | { 374 | #if PRINT_FOCUS 375 | Debug.Log(string.Format("[UIManager] Gained Focus: {0}", screenInstance.id)); 376 | #endif 377 | 378 | // Screen gains focus when it is on top of the screen stack and no other items in the queue. 379 | screenInstance.OnFocus(); 380 | } 381 | } 382 | else 383 | { 384 | // Pop screen. 385 | QueuedScreenPop queuedPop = (QueuedScreenPop)queued; 386 | Screen screenToPop = GetTopScreen(); 387 | 388 | if (screenToPop.id != queued.id) 389 | { 390 | throw new System.Exception(string.Format("The top screen does not match the queued pop. " + 391 | "TopScreen: {0}, QueuedPop: {1}", screenToPop.id, queued.id)); 392 | } 393 | 394 | #if PRINT_FOCUS 395 | Debug.Log(string.Format("[UIManager] Lost Focus: {0}", screenToPop.id)); 396 | #endif 397 | 398 | screenToPop.OnFocusLost(); 399 | 400 | _state = State.Pop; 401 | _stack.RemoveAt(0); 402 | 403 | // Tell new top screen that it is gaining focus. 404 | var newTopScreen = GetTopScreen(); 405 | if (newTopScreen != null) 406 | { 407 | if (_queue.Count == 0) 408 | { 409 | #if PRINT_FOCUS 410 | Debug.Log(string.Format("[UIManager] Gained Focus: {0}", newTopScreen.id)); 411 | #endif 412 | 413 | // Screen gains focus when it is on top of the screen stack and no other items in the queue. 414 | newTopScreen.OnFocus(); 415 | } 416 | } 417 | 418 | _activePopCallback = queuedPop.callback; 419 | 420 | #if PRINT_STACK 421 | DebugPrintStack(string.Format("[UIManager] Popping Screen: {0}, Frame: {1}", queued.id, Time.frameCount)); 422 | #endif 423 | 424 | screenToPop.onPopFinished += HandlePopFinished; 425 | screenToPop.OnPop(); 426 | } 427 | } 428 | 429 | private void UpdateSortOrderOverrides() { 430 | int managedOrder = 0; 431 | 432 | int childCount = this.rootCanvas.transform.childCount; 433 | for (int i = 0; i < childCount; i++) { 434 | var screen = this.rootCanvas.transform.GetChild(i).GetComponent(); 435 | if (screen != null) { 436 | var canvas = screen.GetComponent(); 437 | if (canvas != null) { 438 | canvas.overrideSorting = true; 439 | 440 | if (screen.overrideManagedSorting) { 441 | canvas.sortingOrder = screen.overrideSortValue; 442 | } else { 443 | canvas.sortingOrder = managedOrder; 444 | managedOrder++; 445 | } 446 | } 447 | } 448 | } 449 | } 450 | 451 | /// 452 | /// Check to see if the screen will exist after the queue has been fully executed. 453 | /// 454 | //private bool ScreenWillExist (BlitzyUI.Screen.Id id) 455 | //{ 456 | // return false; 457 | 458 | // // TODO: Infer if the screen will exists after the queue is fully executed. 459 | //} 460 | 461 | private void DebugPrintStack (string optionalEventMsg) 462 | { 463 | var sb = new System.Text.StringBuilder(); 464 | 465 | if (!string.IsNullOrEmpty(optionalEventMsg)) 466 | sb.AppendLine(optionalEventMsg); 467 | 468 | sb.AppendLine("[UIManager Screen Stack]"); 469 | 470 | for (int i = 0; i < _stack.Count; i++) 471 | { 472 | sb.AppendLine(string.Format("{0}", _stack[i].id)); 473 | } 474 | 475 | Debug.Log(sb.ToString()); 476 | } 477 | 478 | private void DebugPrintQueue (string optionalEventMsg) 479 | { 480 | var sb = new System.Text.StringBuilder(); 481 | 482 | if (!string.IsNullOrEmpty(optionalEventMsg)) 483 | sb.AppendLine(optionalEventMsg); 484 | 485 | sb.AppendLine("[UIManager Screen Queue]"); 486 | 487 | foreach (QueuedScreen queued in _queue) 488 | { 489 | sb.AppendLine(queued.ToString()); 490 | } 491 | 492 | Debug.Log(sb.ToString()); 493 | } 494 | 495 | private void DebugPrintCache (string optionalEventMsg) 496 | { 497 | var sb = new System.Text.StringBuilder(); 498 | 499 | if (!string.IsNullOrEmpty(optionalEventMsg)) 500 | sb.AppendLine(optionalEventMsg); 501 | 502 | sb.AppendLine("[UIManager Screen Cache]"); 503 | 504 | foreach (KeyValuePair cached in _cache) 505 | { 506 | sb.AppendLine(cached.Key); 507 | } 508 | 509 | Debug.Log(sb.ToString()); 510 | } 511 | 512 | private void HandlePushFinished (Screen screen) 513 | { 514 | screen.onPushFinished -= HandlePushFinished; 515 | 516 | _state = State.Ready; 517 | 518 | if (_activePushCallback != null) 519 | { 520 | _activePushCallback(screen); 521 | _activePushCallback = null; 522 | } 523 | 524 | if (CanExecuteNextQueueItem()) 525 | ExecuteNextQueueItem(); 526 | } 527 | 528 | private void HandlePopFinished (Screen screen) 529 | { 530 | screen.onPopFinished -= HandlePopFinished; 531 | 532 | if (screen.keepCached) 533 | { 534 | // Store in the cache for later use. 535 | screen.gameObject.SetActive(false); 536 | 537 | // TODO: Need to have a better cache storage mechanism that supports multiple screens of the same prefab? 538 | if (!_cache.ContainsKey(screen.PrefabName)) 539 | { 540 | _cache.Add(screen.PrefabName, screen); 541 | 542 | #if PRINT_CACHE 543 | DebugPrintCache(string.Format("[UIManager] Screen added to Cache: {0}", screen.PrefabName)); 544 | #endif 545 | } 546 | } 547 | else 548 | { 549 | // Destroy screen. 550 | Object.Destroy(screen.gameObject); 551 | } 552 | 553 | _state = State.Ready; 554 | 555 | if (_activePopCallback != null) 556 | { 557 | _activePopCallback(screen.id); 558 | _activePopCallback = null; 559 | } 560 | 561 | if (CanExecuteNextQueueItem()) 562 | ExecuteNextQueueItem(); 563 | } 564 | } 565 | } -------------------------------------------------------------------------------- /Assets/UIManager/UIManager.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c329c81a621c3446f94f4d539adb9fc7 3 | timeCreated: 1508342313 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/UIManager/_images.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ab7a7122d924244f5aa6d51e03b2b43b 3 | folderAsset: yes 4 | timeCreated: 1516646487 5 | licenseType: Pro 6 | DefaultImporter: 7 | externalObjects: {} 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/UIManager/_images/prefab_directory.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blitzy/unity-ui-manager/7562b07e9c3316c5bda5f4ec67b5dae596d4a769/Assets/UIManager/_images/prefab_directory.png -------------------------------------------------------------------------------- /Assets/UIManager/_images/prefab_directory.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: be98b65ab8947447f84e425958b188ec 3 | timeCreated: 1516646496 4 | licenseType: Pro 5 | TextureImporter: 6 | fileIDToRecycleName: {} 7 | externalObjects: {} 8 | serializedVersion: 4 9 | mipmaps: 10 | mipMapMode: 0 11 | enableMipMap: 1 12 | sRGBTexture: 1 13 | linearTexture: 0 14 | fadeOut: 0 15 | borderMipMap: 0 16 | mipMapsPreserveCoverage: 0 17 | alphaTestReferenceValue: 0.5 18 | mipMapFadeDistanceStart: 1 19 | mipMapFadeDistanceEnd: 3 20 | bumpmap: 21 | convertToNormalMap: 0 22 | externalNormalMap: 0 23 | heightScale: 0.25 24 | normalMapFilter: 0 25 | isReadable: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -1 37 | wrapU: -1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 49 | spritePixelsToUnits: 100 50 | alphaUsage: 1 51 | alphaIsTransparency: 0 52 | spriteTessellationDetail: -1 53 | textureType: 0 54 | textureShape: 1 55 | maxTextureSizeSet: 0 56 | compressionQualitySet: 0 57 | textureFormatSet: 0 58 | platformSettings: 59 | - buildTarget: DefaultTexturePlatform 60 | maxTextureSize: 2048 61 | resizeAlgorithm: 0 62 | textureFormat: -1 63 | textureCompression: 1 64 | compressionQuality: 50 65 | crunchedCompression: 0 66 | allowsAlphaSplitting: 0 67 | overridden: 0 68 | androidETC2FallbackOverride: 0 69 | spriteSheet: 70 | serializedVersion: 2 71 | sprites: [] 72 | outline: [] 73 | physicsShape: [] 74 | spritePackingTag: 75 | userData: 76 | assetBundleName: 77 | assetBundleVariant: 78 | -------------------------------------------------------------------------------- /Assets/UIManager/_images/uiexample_scene.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blitzy/unity-ui-manager/7562b07e9c3316c5bda5f4ec67b5dae596d4a769/Assets/UIManager/_images/uiexample_scene.png -------------------------------------------------------------------------------- /Assets/UIManager/_images/uiexample_scene.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 208a55c5c9334468dae2596954436e85 3 | timeCreated: 1516646496 4 | licenseType: Pro 5 | TextureImporter: 6 | fileIDToRecycleName: {} 7 | externalObjects: {} 8 | serializedVersion: 4 9 | mipmaps: 10 | mipMapMode: 0 11 | enableMipMap: 1 12 | sRGBTexture: 1 13 | linearTexture: 0 14 | fadeOut: 0 15 | borderMipMap: 0 16 | mipMapsPreserveCoverage: 0 17 | alphaTestReferenceValue: 0.5 18 | mipMapFadeDistanceStart: 1 19 | mipMapFadeDistanceEnd: 3 20 | bumpmap: 21 | convertToNormalMap: 0 22 | externalNormalMap: 0 23 | heightScale: 0.25 24 | normalMapFilter: 0 25 | isReadable: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -1 37 | wrapU: -1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 49 | spritePixelsToUnits: 100 50 | alphaUsage: 1 51 | alphaIsTransparency: 0 52 | spriteTessellationDetail: -1 53 | textureType: 0 54 | textureShape: 1 55 | maxTextureSizeSet: 0 56 | compressionQualitySet: 0 57 | textureFormatSet: 0 58 | platformSettings: 59 | - buildTarget: DefaultTexturePlatform 60 | maxTextureSize: 2048 61 | resizeAlgorithm: 0 62 | textureFormat: -1 63 | textureCompression: 1 64 | compressionQuality: 50 65 | crunchedCompression: 0 66 | allowsAlphaSplitting: 0 67 | overridden: 0 68 | androidETC2FallbackOverride: 0 69 | spriteSheet: 70 | serializedVersion: 2 71 | sprites: [] 72 | outline: [] 73 | physicsShape: [] 74 | spritePackingTag: 75 | userData: 76 | assetBundleName: 77 | assetBundleVariant: 78 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Ryan Cook 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Logs/Packages-Update.log: -------------------------------------------------------------------------------- 1 | 2 | === Fri Nov 15 18:03:12 2019 3 | 4 | Packages were changed. 5 | Update Mode: mergeDefaultDependencies 6 | 7 | The following packages were added: 8 | com.unity.textmeshpro@2.0.1 9 | com.unity.package-manager-ui@2.2.0 10 | com.unity.collab-proxy@1.2.16 11 | com.unity.ext.nunit@1.0.0 12 | com.unity.test-framework@1.0.13 13 | com.unity.timeline@1.1.0 14 | com.unity.ide.vscode@1.1.2 15 | com.unity.ide.rider@1.1.0 16 | com.unity.ugui@1.0.0 17 | com.unity.modules.ai@1.0.0 18 | com.unity.modules.animation@1.0.0 19 | com.unity.modules.androidjni@1.0.0 20 | com.unity.modules.assetbundle@1.0.0 21 | com.unity.modules.audio@1.0.0 22 | com.unity.modules.cloth@1.0.0 23 | com.unity.modules.director@1.0.0 24 | com.unity.modules.imageconversion@1.0.0 25 | com.unity.modules.imgui@1.0.0 26 | com.unity.modules.jsonserialize@1.0.0 27 | com.unity.modules.particlesystem@1.0.0 28 | com.unity.modules.physics@1.0.0 29 | com.unity.modules.physics2d@1.0.0 30 | com.unity.modules.screencapture@1.0.0 31 | com.unity.modules.terrain@1.0.0 32 | com.unity.modules.terrainphysics@1.0.0 33 | com.unity.modules.tilemap@1.0.0 34 | com.unity.modules.ui@1.0.0 35 | com.unity.modules.uielements@1.0.0 36 | com.unity.modules.umbra@1.0.0 37 | com.unity.modules.unityanalytics@1.0.0 38 | com.unity.modules.unitywebrequest@1.0.0 39 | com.unity.modules.unitywebrequestassetbundle@1.0.0 40 | com.unity.modules.unitywebrequestaudio@1.0.0 41 | com.unity.modules.unitywebrequesttexture@1.0.0 42 | com.unity.modules.unitywebrequestwww@1.0.0 43 | com.unity.modules.vehicles@1.0.0 44 | com.unity.modules.video@1.0.0 45 | com.unity.modules.vr@1.0.0 46 | com.unity.modules.wind@1.0.0 47 | com.unity.modules.xr@1.0.0 48 | -------------------------------------------------------------------------------- /Packages/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.unity.collab-proxy": "1.2.16", 4 | "com.unity.ext.nunit": "1.0.0", 5 | "com.unity.ide.rider": "1.1.0", 6 | "com.unity.ide.vscode": "1.1.2", 7 | "com.unity.package-manager-ui": "2.2.0", 8 | "com.unity.test-framework": "1.0.13", 9 | "com.unity.textmeshpro": "2.0.1", 10 | "com.unity.timeline": "1.1.0", 11 | "com.unity.ugui": "1.0.0", 12 | "com.unity.modules.ai": "1.0.0", 13 | "com.unity.modules.androidjni": "1.0.0", 14 | "com.unity.modules.animation": "1.0.0", 15 | "com.unity.modules.assetbundle": "1.0.0", 16 | "com.unity.modules.audio": "1.0.0", 17 | "com.unity.modules.cloth": "1.0.0", 18 | "com.unity.modules.director": "1.0.0", 19 | "com.unity.modules.imageconversion": "1.0.0", 20 | "com.unity.modules.imgui": "1.0.0", 21 | "com.unity.modules.jsonserialize": "1.0.0", 22 | "com.unity.modules.particlesystem": "1.0.0", 23 | "com.unity.modules.physics": "1.0.0", 24 | "com.unity.modules.physics2d": "1.0.0", 25 | "com.unity.modules.screencapture": "1.0.0", 26 | "com.unity.modules.terrain": "1.0.0", 27 | "com.unity.modules.terrainphysics": "1.0.0", 28 | "com.unity.modules.tilemap": "1.0.0", 29 | "com.unity.modules.ui": "1.0.0", 30 | "com.unity.modules.uielements": "1.0.0", 31 | "com.unity.modules.umbra": "1.0.0", 32 | "com.unity.modules.unityanalytics": "1.0.0", 33 | "com.unity.modules.unitywebrequest": "1.0.0", 34 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0", 35 | "com.unity.modules.unitywebrequestaudio": "1.0.0", 36 | "com.unity.modules.unitywebrequesttexture": "1.0.0", 37 | "com.unity.modules.unitywebrequestwww": "1.0.0", 38 | "com.unity.modules.vehicles": "1.0.0", 39 | "com.unity.modules.video": "1.0.0", 40 | "com.unity.modules.vr": "1.0.0", 41 | "com.unity.modules.wind": "1.0.0", 42 | "com.unity.modules.xr": "1.0.0" 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /ProjectSettings/AudioManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!11 &1 4 | AudioManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Volume: 1 8 | Rolloff Scale: 1 9 | Doppler Factor: 1 10 | Default Speaker Mode: 2 11 | m_SampleRate: 0 12 | m_DSPBufferSize: 1024 13 | m_VirtualVoiceCount: 512 14 | m_RealVoiceCount: 32 15 | m_SpatializerPlugin: 16 | m_AmbisonicDecoderPlugin: 17 | m_DisableAudio: 0 18 | m_VirtualizeEffects: 1 19 | m_RequestedDSPBufferSize: 1024 20 | -------------------------------------------------------------------------------- /ProjectSettings/ClusterInputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!236 &1 4 | ClusterInputManager: 5 | m_ObjectHideFlags: 0 6 | m_Inputs: [] 7 | -------------------------------------------------------------------------------- /ProjectSettings/DynamicsManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!55 &1 4 | PhysicsManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 11 7 | m_Gravity: {x: 0, y: -9.81, z: 0} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_BounceThreshold: 2 10 | m_SleepThreshold: 0.005 11 | m_DefaultContactOffset: 0.01 12 | m_DefaultSolverIterations: 6 13 | m_DefaultSolverVelocityIterations: 1 14 | m_QueriesHitBackfaces: 0 15 | m_QueriesHitTriggers: 1 16 | m_EnableAdaptiveForce: 0 17 | m_ClothInterCollisionDistance: 0 18 | m_ClothInterCollisionStiffness: 0 19 | m_ContactsGeneration: 1 20 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 21 | m_AutoSimulation: 1 22 | m_AutoSyncTransforms: 0 23 | m_ReuseCollisionCallbacks: 1 24 | m_ClothInterCollisionSettingsToggle: 0 25 | m_ContactPairsMode: 0 26 | m_BroadphaseType: 0 27 | m_WorldBounds: 28 | m_Center: {x: 0, y: 0, z: 0} 29 | m_Extent: {x: 250, y: 250, z: 250} 30 | m_WorldSubdivisions: 8 31 | m_FrictionType: 0 32 | m_EnableEnhancedDeterminism: 0 33 | m_EnableUnifiedHeightmaps: 1 34 | m_DefaultMaxAngluarSpeed: 7 35 | -------------------------------------------------------------------------------- /ProjectSettings/EditorBuildSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1045 &1 4 | EditorBuildSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Scenes: [] 8 | m_configObjects: {} 9 | -------------------------------------------------------------------------------- /ProjectSettings/EditorSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!159 &1 4 | EditorSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 8 7 | m_ExternalVersionControlSupport: Hidden Meta Files 8 | m_SerializationMode: 2 9 | m_LineEndingsForNewScripts: 2 10 | m_DefaultBehaviorMode: 0 11 | m_PrefabRegularEnvironment: {fileID: 0} 12 | m_PrefabUIEnvironment: {fileID: 0} 13 | m_SpritePackerMode: 0 14 | m_SpritePackerPaddingPower: 1 15 | m_EtcTextureCompressorBehavior: 1 16 | m_EtcTextureFastCompressor: 1 17 | m_EtcTextureNormalCompressor: 2 18 | m_EtcTextureBestCompressor: 4 19 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;rsp;asmref 20 | m_ProjectGenerationRootNamespace: 21 | m_CollabEditorSettings: 22 | inProgressEnabled: 1 23 | m_EnableTextureStreamingInEditMode: 1 24 | m_EnableTextureStreamingInPlayMode: 1 25 | m_AsyncShaderCompilation: 1 26 | m_ShowLightmapResolutionOverlay: 1 27 | -------------------------------------------------------------------------------- /ProjectSettings/GraphicsSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!30 &1 4 | GraphicsSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 12 7 | m_Deferred: 8 | m_Mode: 1 9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} 10 | m_DeferredReflections: 11 | m_Mode: 1 12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} 13 | m_ScreenSpaceShadows: 14 | m_Mode: 1 15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} 16 | m_LegacyDeferred: 17 | m_Mode: 1 18 | m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} 19 | m_DepthNormals: 20 | m_Mode: 1 21 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} 22 | m_MotionVectors: 23 | m_Mode: 1 24 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} 25 | m_LightHalo: 26 | m_Mode: 1 27 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} 28 | m_LensFlare: 29 | m_Mode: 1 30 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} 31 | m_AlwaysIncludedShaders: 32 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} 33 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} 34 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} 35 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} 36 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} 37 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} 38 | m_PreloadedShaders: [] 39 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, 40 | type: 0} 41 | m_CustomRenderPipeline: {fileID: 0} 42 | m_TransparencySortMode: 0 43 | m_TransparencySortAxis: {x: 0, y: 0, z: 1} 44 | m_DefaultRenderingPath: 1 45 | m_DefaultMobileRenderingPath: 1 46 | m_TierSettings: [] 47 | m_LightmapStripping: 0 48 | m_FogStripping: 0 49 | m_InstancingStripping: 0 50 | m_LightmapKeepPlain: 1 51 | m_LightmapKeepDirCombined: 1 52 | m_LightmapKeepDynamicPlain: 1 53 | m_LightmapKeepDynamicDirCombined: 1 54 | m_LightmapKeepShadowMask: 1 55 | m_LightmapKeepSubtractive: 1 56 | m_FogKeepLinear: 1 57 | m_FogKeepExp: 1 58 | m_FogKeepExp2: 1 59 | m_AlbedoSwatchInfos: [] 60 | m_LightsUseLinearIntensity: 0 61 | m_LightsUseColorTemperature: 0 62 | -------------------------------------------------------------------------------- /ProjectSettings/InputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!13 &1 4 | InputManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Axes: 8 | - serializedVersion: 3 9 | m_Name: Horizontal 10 | descriptiveName: 11 | descriptiveNegativeName: 12 | negativeButton: left 13 | positiveButton: right 14 | altNegativeButton: a 15 | altPositiveButton: d 16 | gravity: 3 17 | dead: 0.001 18 | sensitivity: 3 19 | snap: 1 20 | invert: 0 21 | type: 0 22 | axis: 0 23 | joyNum: 0 24 | - serializedVersion: 3 25 | m_Name: Vertical 26 | descriptiveName: 27 | descriptiveNegativeName: 28 | negativeButton: down 29 | positiveButton: up 30 | altNegativeButton: s 31 | altPositiveButton: w 32 | gravity: 3 33 | dead: 0.001 34 | sensitivity: 3 35 | snap: 1 36 | invert: 0 37 | type: 0 38 | axis: 0 39 | joyNum: 0 40 | - serializedVersion: 3 41 | m_Name: Fire1 42 | descriptiveName: 43 | descriptiveNegativeName: 44 | negativeButton: 45 | positiveButton: left ctrl 46 | altNegativeButton: 47 | altPositiveButton: mouse 0 48 | gravity: 1000 49 | dead: 0.001 50 | sensitivity: 1000 51 | snap: 0 52 | invert: 0 53 | type: 0 54 | axis: 0 55 | joyNum: 0 56 | - serializedVersion: 3 57 | m_Name: Fire2 58 | descriptiveName: 59 | descriptiveNegativeName: 60 | negativeButton: 61 | positiveButton: left alt 62 | altNegativeButton: 63 | altPositiveButton: mouse 1 64 | gravity: 1000 65 | dead: 0.001 66 | sensitivity: 1000 67 | snap: 0 68 | invert: 0 69 | type: 0 70 | axis: 0 71 | joyNum: 0 72 | - serializedVersion: 3 73 | m_Name: Fire3 74 | descriptiveName: 75 | descriptiveNegativeName: 76 | negativeButton: 77 | positiveButton: left shift 78 | altNegativeButton: 79 | altPositiveButton: mouse 2 80 | gravity: 1000 81 | dead: 0.001 82 | sensitivity: 1000 83 | snap: 0 84 | invert: 0 85 | type: 0 86 | axis: 0 87 | joyNum: 0 88 | - serializedVersion: 3 89 | m_Name: Jump 90 | descriptiveName: 91 | descriptiveNegativeName: 92 | negativeButton: 93 | positiveButton: space 94 | altNegativeButton: 95 | altPositiveButton: 96 | gravity: 1000 97 | dead: 0.001 98 | sensitivity: 1000 99 | snap: 0 100 | invert: 0 101 | type: 0 102 | axis: 0 103 | joyNum: 0 104 | - serializedVersion: 3 105 | m_Name: Mouse X 106 | descriptiveName: 107 | descriptiveNegativeName: 108 | negativeButton: 109 | positiveButton: 110 | altNegativeButton: 111 | altPositiveButton: 112 | gravity: 0 113 | dead: 0 114 | sensitivity: 0.1 115 | snap: 0 116 | invert: 0 117 | type: 1 118 | axis: 0 119 | joyNum: 0 120 | - serializedVersion: 3 121 | m_Name: Mouse Y 122 | descriptiveName: 123 | descriptiveNegativeName: 124 | negativeButton: 125 | positiveButton: 126 | altNegativeButton: 127 | altPositiveButton: 128 | gravity: 0 129 | dead: 0 130 | sensitivity: 0.1 131 | snap: 0 132 | invert: 0 133 | type: 1 134 | axis: 1 135 | joyNum: 0 136 | - serializedVersion: 3 137 | m_Name: Mouse ScrollWheel 138 | descriptiveName: 139 | descriptiveNegativeName: 140 | negativeButton: 141 | positiveButton: 142 | altNegativeButton: 143 | altPositiveButton: 144 | gravity: 0 145 | dead: 0 146 | sensitivity: 0.1 147 | snap: 0 148 | invert: 0 149 | type: 1 150 | axis: 2 151 | joyNum: 0 152 | - serializedVersion: 3 153 | m_Name: Horizontal 154 | descriptiveName: 155 | descriptiveNegativeName: 156 | negativeButton: 157 | positiveButton: 158 | altNegativeButton: 159 | altPositiveButton: 160 | gravity: 0 161 | dead: 0.19 162 | sensitivity: 1 163 | snap: 0 164 | invert: 0 165 | type: 2 166 | axis: 0 167 | joyNum: 0 168 | - serializedVersion: 3 169 | m_Name: Vertical 170 | descriptiveName: 171 | descriptiveNegativeName: 172 | negativeButton: 173 | positiveButton: 174 | altNegativeButton: 175 | altPositiveButton: 176 | gravity: 0 177 | dead: 0.19 178 | sensitivity: 1 179 | snap: 0 180 | invert: 1 181 | type: 2 182 | axis: 1 183 | joyNum: 0 184 | - serializedVersion: 3 185 | m_Name: Fire1 186 | descriptiveName: 187 | descriptiveNegativeName: 188 | negativeButton: 189 | positiveButton: joystick button 0 190 | altNegativeButton: 191 | altPositiveButton: 192 | gravity: 1000 193 | dead: 0.001 194 | sensitivity: 1000 195 | snap: 0 196 | invert: 0 197 | type: 0 198 | axis: 0 199 | joyNum: 0 200 | - serializedVersion: 3 201 | m_Name: Fire2 202 | descriptiveName: 203 | descriptiveNegativeName: 204 | negativeButton: 205 | positiveButton: joystick button 1 206 | altNegativeButton: 207 | altPositiveButton: 208 | gravity: 1000 209 | dead: 0.001 210 | sensitivity: 1000 211 | snap: 0 212 | invert: 0 213 | type: 0 214 | axis: 0 215 | joyNum: 0 216 | - serializedVersion: 3 217 | m_Name: Fire3 218 | descriptiveName: 219 | descriptiveNegativeName: 220 | negativeButton: 221 | positiveButton: joystick button 2 222 | altNegativeButton: 223 | altPositiveButton: 224 | gravity: 1000 225 | dead: 0.001 226 | sensitivity: 1000 227 | snap: 0 228 | invert: 0 229 | type: 0 230 | axis: 0 231 | joyNum: 0 232 | - serializedVersion: 3 233 | m_Name: Jump 234 | descriptiveName: 235 | descriptiveNegativeName: 236 | negativeButton: 237 | positiveButton: joystick button 3 238 | altNegativeButton: 239 | altPositiveButton: 240 | gravity: 1000 241 | dead: 0.001 242 | sensitivity: 1000 243 | snap: 0 244 | invert: 0 245 | type: 0 246 | axis: 0 247 | joyNum: 0 248 | - serializedVersion: 3 249 | m_Name: Submit 250 | descriptiveName: 251 | descriptiveNegativeName: 252 | negativeButton: 253 | positiveButton: return 254 | altNegativeButton: 255 | altPositiveButton: joystick button 0 256 | gravity: 1000 257 | dead: 0.001 258 | sensitivity: 1000 259 | snap: 0 260 | invert: 0 261 | type: 0 262 | axis: 0 263 | joyNum: 0 264 | - serializedVersion: 3 265 | m_Name: Submit 266 | descriptiveName: 267 | descriptiveNegativeName: 268 | negativeButton: 269 | positiveButton: enter 270 | altNegativeButton: 271 | altPositiveButton: space 272 | gravity: 1000 273 | dead: 0.001 274 | sensitivity: 1000 275 | snap: 0 276 | invert: 0 277 | type: 0 278 | axis: 0 279 | joyNum: 0 280 | - serializedVersion: 3 281 | m_Name: Cancel 282 | descriptiveName: 283 | descriptiveNegativeName: 284 | negativeButton: 285 | positiveButton: escape 286 | altNegativeButton: 287 | altPositiveButton: joystick button 1 288 | gravity: 1000 289 | dead: 0.001 290 | sensitivity: 1000 291 | snap: 0 292 | invert: 0 293 | type: 0 294 | axis: 0 295 | joyNum: 0 296 | -------------------------------------------------------------------------------- /ProjectSettings/NavMeshAreas.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!126 &1 4 | NavMeshProjectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | areas: 8 | - name: Walkable 9 | cost: 1 10 | - name: Not Walkable 11 | cost: 1 12 | - name: Jump 13 | cost: 2 14 | - name: 15 | cost: 1 16 | - name: 17 | cost: 1 18 | - name: 19 | cost: 1 20 | - name: 21 | cost: 1 22 | - name: 23 | cost: 1 24 | - name: 25 | cost: 1 26 | - name: 27 | cost: 1 28 | - name: 29 | cost: 1 30 | - name: 31 | cost: 1 32 | - name: 33 | cost: 1 34 | - name: 35 | cost: 1 36 | - name: 37 | cost: 1 38 | - name: 39 | cost: 1 40 | - name: 41 | cost: 1 42 | - name: 43 | cost: 1 44 | - name: 45 | cost: 1 46 | - name: 47 | cost: 1 48 | - name: 49 | cost: 1 50 | - name: 51 | cost: 1 52 | - name: 53 | cost: 1 54 | - name: 55 | cost: 1 56 | - name: 57 | cost: 1 58 | - name: 59 | cost: 1 60 | - name: 61 | cost: 1 62 | - name: 63 | cost: 1 64 | - name: 65 | cost: 1 66 | - name: 67 | cost: 1 68 | - name: 69 | cost: 1 70 | - name: 71 | cost: 1 72 | m_LastAgentTypeID: -887442657 73 | m_Settings: 74 | - serializedVersion: 2 75 | agentTypeID: 0 76 | agentRadius: 0.5 77 | agentHeight: 2 78 | agentSlope: 45 79 | agentClimb: 0.75 80 | ledgeDropHeight: 0 81 | maxJumpAcrossDistance: 0 82 | minRegionArea: 2 83 | manualCellSize: 0 84 | cellSize: 0.16666667 85 | manualTileSize: 0 86 | tileSize: 256 87 | accuratePlacement: 0 88 | debug: 89 | m_Flags: 0 90 | m_SettingNames: 91 | - Humanoid 92 | -------------------------------------------------------------------------------- /ProjectSettings/Physics2DSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!19 &1 4 | Physics2DSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 4 7 | m_Gravity: {x: 0, y: -9.81} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_VelocityIterations: 8 10 | m_PositionIterations: 3 11 | m_VelocityThreshold: 1 12 | m_MaxLinearCorrection: 0.2 13 | m_MaxAngularCorrection: 8 14 | m_MaxTranslationSpeed: 100 15 | m_MaxRotationSpeed: 360 16 | m_BaumgarteScale: 0.2 17 | m_BaumgarteTimeOfImpactScale: 0.75 18 | m_TimeToSleep: 0.5 19 | m_LinearSleepTolerance: 0.01 20 | m_AngularSleepTolerance: 2 21 | m_DefaultContactOffset: 0.01 22 | m_JobOptions: 23 | serializedVersion: 2 24 | useMultithreading: 0 25 | useConsistencySorting: 0 26 | m_InterpolationPosesPerJob: 100 27 | m_NewContactsPerJob: 30 28 | m_CollideContactsPerJob: 100 29 | m_ClearFlagsPerJob: 200 30 | m_ClearBodyForcesPerJob: 200 31 | m_SyncDiscreteFixturesPerJob: 50 32 | m_SyncContinuousFixturesPerJob: 50 33 | m_FindNearestContactsPerJob: 100 34 | m_UpdateTriggerContactsPerJob: 100 35 | m_IslandSolverCostThreshold: 100 36 | m_IslandSolverBodyCostScale: 1 37 | m_IslandSolverContactCostScale: 10 38 | m_IslandSolverJointCostScale: 10 39 | m_IslandSolverBodiesPerJob: 50 40 | m_IslandSolverContactsPerJob: 50 41 | m_AutoSimulation: 1 42 | m_QueriesHitTriggers: 1 43 | m_QueriesStartInColliders: 1 44 | m_CallbacksOnDisable: 1 45 | m_ReuseCollisionCallbacks: 1 46 | m_AutoSyncTransforms: 0 47 | m_AlwaysShowColliders: 0 48 | m_ShowColliderSleep: 1 49 | m_ShowColliderContacts: 0 50 | m_ShowColliderAABB: 0 51 | m_ContactArrowScale: 0.2 52 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} 53 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} 54 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} 55 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} 56 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 57 | -------------------------------------------------------------------------------- /ProjectSettings/PresetManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1386491679 &1 4 | PresetManager: 5 | m_ObjectHideFlags: 0 6 | m_DefaultList: [] 7 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!129 &1 4 | PlayerSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 18 7 | productGUID: cecfb9da9fb435a4c95f2e252860379c 8 | AndroidProfiler: 0 9 | AndroidFilterTouchesWhenObscured: 0 10 | AndroidEnableSustainedPerformanceMode: 0 11 | defaultScreenOrientation: 4 12 | targetDevice: 2 13 | useOnDemandResources: 0 14 | accelerometerFrequency: 60 15 | companyName: Ryan Cook 16 | productName: UI Manager 17 | defaultCursor: {fileID: 0} 18 | cursorHotspot: {x: 0, y: 0} 19 | m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1} 20 | m_ShowUnitySplashScreen: 1 21 | m_ShowUnitySplashLogo: 1 22 | m_SplashScreenOverlayOpacity: 1 23 | m_SplashScreenAnimation: 1 24 | m_SplashScreenLogoStyle: 1 25 | m_SplashScreenDrawMode: 0 26 | m_SplashScreenBackgroundAnimationZoom: 1 27 | m_SplashScreenLogoAnimationZoom: 1 28 | m_SplashScreenBackgroundLandscapeAspect: 1 29 | m_SplashScreenBackgroundPortraitAspect: 1 30 | m_SplashScreenBackgroundLandscapeUvs: 31 | serializedVersion: 2 32 | x: 0 33 | y: 0 34 | width: 1 35 | height: 1 36 | m_SplashScreenBackgroundPortraitUvs: 37 | serializedVersion: 2 38 | x: 0 39 | y: 0 40 | width: 1 41 | height: 1 42 | m_SplashScreenLogos: [] 43 | m_VirtualRealitySplashScreen: {fileID: 0} 44 | m_HolographicTrackingLossScreen: {fileID: 0} 45 | defaultScreenWidth: 1024 46 | defaultScreenHeight: 768 47 | defaultScreenWidthWeb: 960 48 | defaultScreenHeightWeb: 600 49 | m_StereoRenderingPath: 0 50 | m_ActiveColorSpace: 0 51 | m_MTRendering: 1 52 | m_StackTraceTypes: 010000000100000001000000010000000100000001000000 53 | iosShowActivityIndicatorOnLoading: -1 54 | androidShowActivityIndicatorOnLoading: -1 55 | displayResolutionDialog: 0 56 | iosUseCustomAppBackgroundBehavior: 0 57 | iosAllowHTTPDownload: 1 58 | allowedAutorotateToPortrait: 1 59 | allowedAutorotateToPortraitUpsideDown: 1 60 | allowedAutorotateToLandscapeRight: 1 61 | allowedAutorotateToLandscapeLeft: 1 62 | useOSAutorotation: 1 63 | use32BitDisplayBuffer: 1 64 | preserveFramebufferAlpha: 0 65 | disableDepthAndStencilBuffers: 0 66 | androidStartInFullscreen: 1 67 | androidRenderOutsideSafeArea: 1 68 | androidUseSwappy: 0 69 | androidBlitType: 0 70 | defaultIsNativeResolution: 1 71 | macRetinaSupport: 1 72 | runInBackground: 1 73 | captureSingleScreen: 0 74 | muteOtherAudioSources: 0 75 | Prepare IOS For Recording: 0 76 | Force IOS Speakers When Recording: 0 77 | deferSystemGesturesMode: 0 78 | hideHomeButton: 0 79 | submitAnalytics: 1 80 | usePlayerLog: 1 81 | bakeCollisionMeshes: 0 82 | forceSingleInstance: 0 83 | useFlipModelSwapchain: 1 84 | resizableWindow: 0 85 | useMacAppStoreValidation: 0 86 | macAppStoreCategory: public.app-category.games 87 | gpuSkinning: 1 88 | graphicsJobs: 0 89 | xboxPIXTextureCapture: 0 90 | xboxEnableAvatar: 0 91 | xboxEnableKinect: 0 92 | xboxEnableKinectAutoTracking: 0 93 | xboxEnableFitness: 0 94 | visibleInBackground: 1 95 | allowFullscreenSwitch: 1 96 | graphicsJobMode: 0 97 | fullscreenMode: 1 98 | xboxSpeechDB: 0 99 | xboxEnableHeadOrientation: 0 100 | xboxEnableGuest: 0 101 | xboxEnablePIXSampling: 0 102 | metalFramebufferOnly: 0 103 | xboxOneResolution: 0 104 | xboxOneSResolution: 0 105 | xboxOneXResolution: 3 106 | xboxOneMonoLoggingLevel: 0 107 | xboxOneLoggingLevel: 1 108 | xboxOneDisableEsram: 0 109 | xboxOnePresentImmediateThreshold: 0 110 | switchQueueCommandMemory: 0 111 | switchQueueControlMemory: 16384 112 | switchQueueComputeMemory: 262144 113 | switchNVNShaderPoolsGranularity: 33554432 114 | switchNVNDefaultPoolsGranularity: 16777216 115 | switchNVNOtherPoolsGranularity: 16777216 116 | vulkanEnableSetSRGBWrite: 0 117 | m_SupportedAspectRatios: 118 | 4:3: 1 119 | 5:4: 1 120 | 16:10: 1 121 | 16:9: 1 122 | Others: 1 123 | bundleVersion: 1.0.0 124 | preloadedAssets: [] 125 | metroInputSource: 0 126 | wsaTransparentSwapchain: 0 127 | m_HolographicPauseOnTrackingLoss: 1 128 | xboxOneDisableKinectGpuReservation: 1 129 | xboxOneEnable7thCore: 1 130 | vrSettings: 131 | cardboard: 132 | depthFormat: 0 133 | enableTransitionView: 0 134 | daydream: 135 | depthFormat: 0 136 | useSustainedPerformanceMode: 0 137 | enableVideoLayer: 0 138 | useProtectedVideoMemory: 0 139 | minimumSupportedHeadTracking: 0 140 | maximumSupportedHeadTracking: 1 141 | hololens: 142 | depthFormat: 1 143 | depthBufferSharingEnabled: 1 144 | lumin: 145 | depthFormat: 0 146 | frameTiming: 2 147 | enableGLCache: 0 148 | glCacheMaxBlobSize: 524288 149 | glCacheMaxFileSize: 8388608 150 | oculus: 151 | sharedDepthBuffer: 1 152 | dashSupport: 1 153 | lowOverheadMode: 0 154 | protectedContext: 0 155 | v2Signing: 0 156 | enable360StereoCapture: 0 157 | isWsaHolographicRemotingEnabled: 0 158 | protectGraphicsMemory: 0 159 | enableFrameTimingStats: 0 160 | useHDRDisplay: 0 161 | m_ColorGamuts: 00000000 162 | targetPixelDensity: 30 163 | resolutionScalingMode: 0 164 | androidSupportedAspectRatio: 1 165 | androidMaxAspectRatio: 2.1 166 | applicationIdentifier: {} 167 | buildNumber: {} 168 | AndroidBundleVersionCode: 1 169 | AndroidMinSdkVersion: 16 170 | AndroidTargetSdkVersion: 0 171 | AndroidPreferredInstallLocation: 1 172 | aotOptions: 173 | stripEngineCode: 1 174 | iPhoneStrippingLevel: 0 175 | iPhoneScriptCallOptimization: 0 176 | ForceInternetPermission: 0 177 | ForceSDCardPermission: 0 178 | CreateWallpaper: 0 179 | APKExpansionFiles: 0 180 | keepLoadedShadersAlive: 0 181 | StripUnusedMeshComponents: 1 182 | VertexChannelCompressionMask: 4054 183 | iPhoneSdkVersion: 988 184 | iOSTargetOSVersionString: 9.0 185 | tvOSSdkVersion: 0 186 | tvOSRequireExtendedGameController: 0 187 | tvOSTargetOSVersionString: 9.0 188 | uIPrerenderedIcon: 0 189 | uIRequiresPersistentWiFi: 0 190 | uIRequiresFullScreen: 1 191 | uIStatusBarHidden: 1 192 | uIExitOnSuspend: 0 193 | uIStatusBarStyle: 0 194 | iPhoneSplashScreen: {fileID: 0} 195 | iPhoneHighResSplashScreen: {fileID: 0} 196 | iPhoneTallHighResSplashScreen: {fileID: 0} 197 | iPhone47inSplashScreen: {fileID: 0} 198 | iPhone55inPortraitSplashScreen: {fileID: 0} 199 | iPhone55inLandscapeSplashScreen: {fileID: 0} 200 | iPhone58inPortraitSplashScreen: {fileID: 0} 201 | iPhone58inLandscapeSplashScreen: {fileID: 0} 202 | iPadPortraitSplashScreen: {fileID: 0} 203 | iPadHighResPortraitSplashScreen: {fileID: 0} 204 | iPadLandscapeSplashScreen: {fileID: 0} 205 | iPadHighResLandscapeSplashScreen: {fileID: 0} 206 | iPhone65inPortraitSplashScreen: {fileID: 0} 207 | iPhone65inLandscapeSplashScreen: {fileID: 0} 208 | iPhone61inPortraitSplashScreen: {fileID: 0} 209 | iPhone61inLandscapeSplashScreen: {fileID: 0} 210 | appleTVSplashScreen: {fileID: 0} 211 | appleTVSplashScreen2x: {fileID: 0} 212 | tvOSSmallIconLayers: [] 213 | tvOSSmallIconLayers2x: [] 214 | tvOSLargeIconLayers: [] 215 | tvOSLargeIconLayers2x: [] 216 | tvOSTopShelfImageLayers: [] 217 | tvOSTopShelfImageLayers2x: [] 218 | tvOSTopShelfImageWideLayers: [] 219 | tvOSTopShelfImageWideLayers2x: [] 220 | iOSLaunchScreenType: 0 221 | iOSLaunchScreenPortrait: {fileID: 0} 222 | iOSLaunchScreenLandscape: {fileID: 0} 223 | iOSLaunchScreenBackgroundColor: 224 | serializedVersion: 2 225 | rgba: 0 226 | iOSLaunchScreenFillPct: 100 227 | iOSLaunchScreenSize: 100 228 | iOSLaunchScreenCustomXibPath: 229 | iOSLaunchScreeniPadType: 0 230 | iOSLaunchScreeniPadImage: {fileID: 0} 231 | iOSLaunchScreeniPadBackgroundColor: 232 | serializedVersion: 2 233 | rgba: 0 234 | iOSLaunchScreeniPadFillPct: 100 235 | iOSLaunchScreeniPadSize: 100 236 | iOSLaunchScreeniPadCustomXibPath: 237 | iOSUseLaunchScreenStoryboard: 0 238 | iOSLaunchScreenCustomStoryboardPath: 239 | iOSDeviceRequirements: [] 240 | iOSURLSchemes: [] 241 | iOSBackgroundModes: 0 242 | iOSMetalForceHardShadows: 0 243 | metalEditorSupport: 1 244 | metalAPIValidation: 1 245 | iOSRenderExtraFrameOnPause: 0 246 | appleDeveloperTeamID: 247 | iOSManualSigningProvisioningProfileID: 248 | tvOSManualSigningProvisioningProfileID: 249 | iOSManualSigningProvisioningProfileType: 0 250 | tvOSManualSigningProvisioningProfileType: 0 251 | appleEnableAutomaticSigning: 0 252 | iOSRequireARKit: 0 253 | iOSAutomaticallyDetectAndAddCapabilities: 1 254 | appleEnableProMotion: 0 255 | clonedFromGUID: c0afd0d1d80e3634a9dac47e8a0426ea 256 | templatePackageId: com.unity.template.3d@3.1.3 257 | templateDefaultScene: Assets/Scenes/SampleScene.unity 258 | AndroidTargetArchitectures: 1 259 | AndroidSplashScreenScale: 0 260 | androidSplashScreen: {fileID: 0} 261 | AndroidKeystoreName: '{inproject}: ' 262 | AndroidKeyaliasName: 263 | AndroidBuildApkPerCpuArchitecture: 0 264 | AndroidTVCompatibility: 0 265 | AndroidIsGame: 1 266 | AndroidEnableTango: 0 267 | androidEnableBanner: 1 268 | androidUseLowAccuracyLocation: 0 269 | androidUseCustomKeystore: 0 270 | m_AndroidBanners: 271 | - width: 320 272 | height: 180 273 | banner: {fileID: 0} 274 | androidGamepadSupportLevel: 0 275 | AndroidValidateAppBundleSize: 1 276 | AndroidAppBundleSizeToValidate: 150 277 | resolutionDialogBanner: {fileID: 0} 278 | m_BuildTargetIcons: [] 279 | m_BuildTargetPlatformIcons: [] 280 | m_BuildTargetBatching: 281 | - m_BuildTarget: Standalone 282 | m_StaticBatching: 1 283 | m_DynamicBatching: 0 284 | - m_BuildTarget: tvOS 285 | m_StaticBatching: 1 286 | m_DynamicBatching: 0 287 | - m_BuildTarget: Android 288 | m_StaticBatching: 1 289 | m_DynamicBatching: 0 290 | - m_BuildTarget: iPhone 291 | m_StaticBatching: 1 292 | m_DynamicBatching: 0 293 | - m_BuildTarget: WebGL 294 | m_StaticBatching: 0 295 | m_DynamicBatching: 0 296 | m_BuildTargetGraphicsAPIs: 297 | - m_BuildTarget: AndroidPlayer 298 | m_APIs: 150000000b000000 299 | m_Automatic: 0 300 | - m_BuildTarget: iOSSupport 301 | m_APIs: 10000000 302 | m_Automatic: 1 303 | - m_BuildTarget: AppleTVSupport 304 | m_APIs: 10000000 305 | m_Automatic: 0 306 | - m_BuildTarget: WebGLSupport 307 | m_APIs: 0b000000 308 | m_Automatic: 1 309 | m_BuildTargetVRSettings: 310 | - m_BuildTarget: Standalone 311 | m_Enabled: 0 312 | m_Devices: 313 | - Oculus 314 | - OpenVR 315 | openGLRequireES31: 0 316 | openGLRequireES31AEP: 0 317 | openGLRequireES32: 0 318 | vuforiaEnabled: 0 319 | m_TemplateCustomTags: {} 320 | mobileMTRendering: 321 | Android: 1 322 | iPhone: 1 323 | tvOS: 1 324 | m_BuildTargetGroupLightmapEncodingQuality: [] 325 | m_BuildTargetGroupLightmapSettings: [] 326 | playModeTestRunnerEnabled: 0 327 | runPlayModeTestAsEditModeTest: 0 328 | actionOnDotNetUnhandledException: 1 329 | enableInternalProfiler: 0 330 | logObjCUncaughtExceptions: 1 331 | enableCrashReportAPI: 0 332 | cameraUsageDescription: 333 | locationUsageDescription: 334 | microphoneUsageDescription: 335 | switchNetLibKey: 336 | switchSocketMemoryPoolSize: 6144 337 | switchSocketAllocatorPoolSize: 128 338 | switchSocketConcurrencyLimit: 14 339 | switchScreenResolutionBehavior: 2 340 | switchUseCPUProfiler: 0 341 | switchApplicationID: 0x01004b9000490000 342 | switchNSODependencies: 343 | switchTitleNames_0: 344 | switchTitleNames_1: 345 | switchTitleNames_2: 346 | switchTitleNames_3: 347 | switchTitleNames_4: 348 | switchTitleNames_5: 349 | switchTitleNames_6: 350 | switchTitleNames_7: 351 | switchTitleNames_8: 352 | switchTitleNames_9: 353 | switchTitleNames_10: 354 | switchTitleNames_11: 355 | switchTitleNames_12: 356 | switchTitleNames_13: 357 | switchTitleNames_14: 358 | switchPublisherNames_0: 359 | switchPublisherNames_1: 360 | switchPublisherNames_2: 361 | switchPublisherNames_3: 362 | switchPublisherNames_4: 363 | switchPublisherNames_5: 364 | switchPublisherNames_6: 365 | switchPublisherNames_7: 366 | switchPublisherNames_8: 367 | switchPublisherNames_9: 368 | switchPublisherNames_10: 369 | switchPublisherNames_11: 370 | switchPublisherNames_12: 371 | switchPublisherNames_13: 372 | switchPublisherNames_14: 373 | switchIcons_0: {fileID: 0} 374 | switchIcons_1: {fileID: 0} 375 | switchIcons_2: {fileID: 0} 376 | switchIcons_3: {fileID: 0} 377 | switchIcons_4: {fileID: 0} 378 | switchIcons_5: {fileID: 0} 379 | switchIcons_6: {fileID: 0} 380 | switchIcons_7: {fileID: 0} 381 | switchIcons_8: {fileID: 0} 382 | switchIcons_9: {fileID: 0} 383 | switchIcons_10: {fileID: 0} 384 | switchIcons_11: {fileID: 0} 385 | switchIcons_12: {fileID: 0} 386 | switchIcons_13: {fileID: 0} 387 | switchIcons_14: {fileID: 0} 388 | switchSmallIcons_0: {fileID: 0} 389 | switchSmallIcons_1: {fileID: 0} 390 | switchSmallIcons_2: {fileID: 0} 391 | switchSmallIcons_3: {fileID: 0} 392 | switchSmallIcons_4: {fileID: 0} 393 | switchSmallIcons_5: {fileID: 0} 394 | switchSmallIcons_6: {fileID: 0} 395 | switchSmallIcons_7: {fileID: 0} 396 | switchSmallIcons_8: {fileID: 0} 397 | switchSmallIcons_9: {fileID: 0} 398 | switchSmallIcons_10: {fileID: 0} 399 | switchSmallIcons_11: {fileID: 0} 400 | switchSmallIcons_12: {fileID: 0} 401 | switchSmallIcons_13: {fileID: 0} 402 | switchSmallIcons_14: {fileID: 0} 403 | switchManualHTML: 404 | switchAccessibleURLs: 405 | switchLegalInformation: 406 | switchMainThreadStackSize: 1048576 407 | switchPresenceGroupId: 408 | switchLogoHandling: 0 409 | switchReleaseVersion: 0 410 | switchDisplayVersion: 1.0.0 411 | switchStartupUserAccount: 0 412 | switchTouchScreenUsage: 0 413 | switchSupportedLanguagesMask: 0 414 | switchLogoType: 0 415 | switchApplicationErrorCodeCategory: 416 | switchUserAccountSaveDataSize: 0 417 | switchUserAccountSaveDataJournalSize: 0 418 | switchApplicationAttribute: 0 419 | switchCardSpecSize: -1 420 | switchCardSpecClock: -1 421 | switchRatingsMask: 0 422 | switchRatingsInt_0: 0 423 | switchRatingsInt_1: 0 424 | switchRatingsInt_2: 0 425 | switchRatingsInt_3: 0 426 | switchRatingsInt_4: 0 427 | switchRatingsInt_5: 0 428 | switchRatingsInt_6: 0 429 | switchRatingsInt_7: 0 430 | switchRatingsInt_8: 0 431 | switchRatingsInt_9: 0 432 | switchRatingsInt_10: 0 433 | switchRatingsInt_11: 0 434 | switchLocalCommunicationIds_0: 435 | switchLocalCommunicationIds_1: 436 | switchLocalCommunicationIds_2: 437 | switchLocalCommunicationIds_3: 438 | switchLocalCommunicationIds_4: 439 | switchLocalCommunicationIds_5: 440 | switchLocalCommunicationIds_6: 441 | switchLocalCommunicationIds_7: 442 | switchParentalControl: 0 443 | switchAllowsScreenshot: 1 444 | switchAllowsVideoCapturing: 1 445 | switchAllowsRuntimeAddOnContentInstall: 0 446 | switchDataLossConfirmation: 0 447 | switchUserAccountLockEnabled: 0 448 | switchSystemResourceMemory: 16777216 449 | switchSupportedNpadStyles: 22 450 | switchNativeFsCacheSize: 32 451 | switchIsHoldTypeHorizontal: 0 452 | switchSupportedNpadCount: 8 453 | switchSocketConfigEnabled: 0 454 | switchTcpInitialSendBufferSize: 32 455 | switchTcpInitialReceiveBufferSize: 64 456 | switchTcpAutoSendBufferSizeMax: 256 457 | switchTcpAutoReceiveBufferSizeMax: 256 458 | switchUdpSendBufferSize: 9 459 | switchUdpReceiveBufferSize: 42 460 | switchSocketBufferEfficiency: 4 461 | switchSocketInitializeEnabled: 1 462 | switchNetworkInterfaceManagerInitializeEnabled: 1 463 | switchPlayerConnectionEnabled: 1 464 | ps4NPAgeRating: 12 465 | ps4NPTitleSecret: 466 | ps4NPTrophyPackPath: 467 | ps4ParentalLevel: 11 468 | ps4ContentID: ED1633-NPXX51362_00-0000000000000000 469 | ps4Category: 0 470 | ps4MasterVersion: 01.00 471 | ps4AppVersion: 01.00 472 | ps4AppType: 0 473 | ps4ParamSfxPath: 474 | ps4VideoOutPixelFormat: 0 475 | ps4VideoOutInitialWidth: 1920 476 | ps4VideoOutBaseModeInitialWidth: 1920 477 | ps4VideoOutReprojectionRate: 60 478 | ps4PronunciationXMLPath: 479 | ps4PronunciationSIGPath: 480 | ps4BackgroundImagePath: 481 | ps4StartupImagePath: 482 | ps4StartupImagesFolder: 483 | ps4IconImagesFolder: 484 | ps4SaveDataImagePath: 485 | ps4SdkOverride: 486 | ps4BGMPath: 487 | ps4ShareFilePath: 488 | ps4ShareOverlayImagePath: 489 | ps4PrivacyGuardImagePath: 490 | ps4NPtitleDatPath: 491 | ps4RemotePlayKeyAssignment: -1 492 | ps4RemotePlayKeyMappingDir: 493 | ps4PlayTogetherPlayerCount: 0 494 | ps4EnterButtonAssignment: 1 495 | ps4ApplicationParam1: 0 496 | ps4ApplicationParam2: 0 497 | ps4ApplicationParam3: 0 498 | ps4ApplicationParam4: 0 499 | ps4DownloadDataSize: 0 500 | ps4GarlicHeapSize: 2048 501 | ps4ProGarlicHeapSize: 2560 502 | playerPrefsMaxSize: 32768 503 | ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ 504 | ps4pnSessions: 1 505 | ps4pnPresence: 1 506 | ps4pnFriends: 1 507 | ps4pnGameCustomData: 1 508 | playerPrefsSupport: 0 509 | enableApplicationExit: 0 510 | resetTempFolder: 1 511 | restrictedAudioUsageRights: 0 512 | ps4UseResolutionFallback: 0 513 | ps4ReprojectionSupport: 0 514 | ps4UseAudio3dBackend: 0 515 | ps4SocialScreenEnabled: 0 516 | ps4ScriptOptimizationLevel: 0 517 | ps4Audio3dVirtualSpeakerCount: 14 518 | ps4attribCpuUsage: 0 519 | ps4PatchPkgPath: 520 | ps4PatchLatestPkgPath: 521 | ps4PatchChangeinfoPath: 522 | ps4PatchDayOne: 0 523 | ps4attribUserManagement: 0 524 | ps4attribMoveSupport: 0 525 | ps4attrib3DSupport: 0 526 | ps4attribShareSupport: 0 527 | ps4attribExclusiveVR: 0 528 | ps4disableAutoHideSplash: 0 529 | ps4videoRecordingFeaturesUsed: 0 530 | ps4contentSearchFeaturesUsed: 0 531 | ps4attribEyeToEyeDistanceSettingVR: 0 532 | ps4IncludedModules: [] 533 | monoEnv: 534 | splashScreenBackgroundSourceLandscape: {fileID: 0} 535 | splashScreenBackgroundSourcePortrait: {fileID: 0} 536 | blurSplashScreenBackground: 1 537 | spritePackerPolicy: 538 | webGLMemorySize: 16 539 | webGLExceptionSupport: 1 540 | webGLNameFilesAsHashes: 0 541 | webGLDataCaching: 1 542 | webGLDebugSymbols: 0 543 | webGLEmscriptenArgs: 544 | webGLModulesDirectory: 545 | webGLTemplate: APPLICATION:Default 546 | webGLAnalyzeBuildSize: 0 547 | webGLUseEmbeddedResources: 0 548 | webGLCompressionFormat: 1 549 | webGLLinkerTarget: 1 550 | webGLThreadsSupport: 0 551 | webGLWasmStreaming: 0 552 | scriptingDefineSymbols: {} 553 | platformArchitecture: {} 554 | scriptingBackend: {} 555 | il2cppCompilerConfiguration: {} 556 | managedStrippingLevel: {} 557 | incrementalIl2cppBuild: {} 558 | allowUnsafeCode: 0 559 | additionalIl2CppArgs: 560 | scriptingRuntimeVersion: 1 561 | gcIncremental: 0 562 | gcWBarrierValidation: 0 563 | apiCompatibilityLevelPerPlatform: {} 564 | m_RenderingPath: 1 565 | m_MobileRenderingPath: 1 566 | metroPackageName: Template_3D 567 | metroPackageVersion: 568 | metroCertificatePath: 569 | metroCertificatePassword: 570 | metroCertificateSubject: 571 | metroCertificateIssuer: 572 | metroCertificateNotAfter: 0000000000000000 573 | metroApplicationDescription: Template_3D 574 | wsaImages: {} 575 | metroTileShortName: 576 | metroTileShowName: 0 577 | metroMediumTileShowName: 0 578 | metroLargeTileShowName: 0 579 | metroWideTileShowName: 0 580 | metroSupportStreamingInstall: 0 581 | metroLastRequiredScene: 0 582 | metroDefaultTileSize: 1 583 | metroTileForegroundText: 2 584 | metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0} 585 | metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, 586 | a: 1} 587 | metroSplashScreenUseBackgroundColor: 0 588 | platformCapabilities: {} 589 | metroTargetDeviceFamilies: {} 590 | metroFTAName: 591 | metroFTAFileTypes: [] 592 | metroProtocolName: 593 | XboxOneProductId: 594 | XboxOneUpdateKey: 595 | XboxOneSandboxId: 596 | XboxOneContentId: 597 | XboxOneTitleId: 598 | XboxOneSCId: 599 | XboxOneGameOsOverridePath: 600 | XboxOnePackagingOverridePath: 601 | XboxOneAppManifestOverridePath: 602 | XboxOneVersion: 1.0.0.0 603 | XboxOnePackageEncryption: 0 604 | XboxOnePackageUpdateGranularity: 2 605 | XboxOneDescription: 606 | XboxOneLanguage: 607 | - enus 608 | XboxOneCapability: [] 609 | XboxOneGameRating: {} 610 | XboxOneIsContentPackage: 0 611 | XboxOneEnableGPUVariability: 1 612 | XboxOneSockets: {} 613 | XboxOneSplashScreen: {fileID: 0} 614 | XboxOneAllowedProductIds: [] 615 | XboxOnePersistentLocalStorageSize: 0 616 | XboxOneXTitleMemory: 8 617 | xboxOneScriptCompiler: 1 618 | XboxOneOverrideIdentityName: 619 | vrEditorSettings: 620 | daydream: 621 | daydreamIconForeground: {fileID: 0} 622 | daydreamIconBackground: {fileID: 0} 623 | cloudServicesEnabled: 624 | UNet: 1 625 | luminIcon: 626 | m_Name: 627 | m_ModelFolderPath: 628 | m_PortalFolderPath: 629 | luminCert: 630 | m_CertPath: 631 | m_SignPackage: 1 632 | luminIsChannelApp: 0 633 | luminVersion: 634 | m_VersionCode: 1 635 | m_VersionName: 636 | facebookSdkVersion: 7.9.4 637 | facebookAppId: 638 | facebookCookies: 1 639 | facebookLogging: 1 640 | facebookStatus: 1 641 | facebookXfbml: 0 642 | facebookFrictionlessRequests: 1 643 | apiCompatibilityLevel: 6 644 | cloudProjectId: 645 | framebufferDepthMemorylessMode: 0 646 | projectName: 647 | organizationId: 648 | cloudEnabled: 0 649 | enableNativePlatformBackendsForNewInputSystem: 0 650 | disableOldInputManagerSupport: 0 651 | legacyClampBlendShapeWeights: 0 652 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 2019.2.10f1 2 | m_EditorVersionWithRevision: 2019.2.10f1 (923acd2d43aa) 3 | -------------------------------------------------------------------------------- /ProjectSettings/QualitySettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!47 &1 4 | QualitySettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 5 7 | m_CurrentQuality: 5 8 | m_QualitySettings: 9 | - serializedVersion: 2 10 | name: Very Low 11 | pixelLightCount: 0 12 | shadows: 0 13 | shadowResolution: 0 14 | shadowProjection: 1 15 | shadowCascades: 1 16 | shadowDistance: 15 17 | shadowNearPlaneOffset: 3 18 | shadowCascade2Split: 0.33333334 19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 20 | shadowmaskMode: 0 21 | blendWeights: 1 22 | textureQuality: 1 23 | anisotropicTextures: 0 24 | antiAliasing: 0 25 | softParticles: 0 26 | softVegetation: 0 27 | realtimeReflectionProbes: 0 28 | billboardsFaceCameraPosition: 0 29 | vSyncCount: 0 30 | lodBias: 0.3 31 | maximumLODLevel: 0 32 | streamingMipmapsActive: 0 33 | streamingMipmapsAddAllCameras: 1 34 | streamingMipmapsMemoryBudget: 512 35 | streamingMipmapsRenderersPerFrame: 512 36 | streamingMipmapsMaxLevelReduction: 2 37 | streamingMipmapsMaxFileIORequests: 1024 38 | particleRaycastBudget: 4 39 | asyncUploadTimeSlice: 2 40 | asyncUploadBufferSize: 16 41 | asyncUploadPersistentBuffer: 1 42 | resolutionScalingFixedDPIFactor: 1 43 | excludedTargetPlatforms: [] 44 | - serializedVersion: 2 45 | name: Low 46 | pixelLightCount: 0 47 | shadows: 0 48 | shadowResolution: 0 49 | shadowProjection: 1 50 | shadowCascades: 1 51 | shadowDistance: 20 52 | shadowNearPlaneOffset: 3 53 | shadowCascade2Split: 0.33333334 54 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 55 | shadowmaskMode: 0 56 | blendWeights: 2 57 | textureQuality: 0 58 | anisotropicTextures: 0 59 | antiAliasing: 0 60 | softParticles: 0 61 | softVegetation: 0 62 | realtimeReflectionProbes: 0 63 | billboardsFaceCameraPosition: 0 64 | vSyncCount: 0 65 | lodBias: 0.4 66 | maximumLODLevel: 0 67 | streamingMipmapsActive: 0 68 | streamingMipmapsAddAllCameras: 1 69 | streamingMipmapsMemoryBudget: 512 70 | streamingMipmapsRenderersPerFrame: 512 71 | streamingMipmapsMaxLevelReduction: 2 72 | streamingMipmapsMaxFileIORequests: 1024 73 | particleRaycastBudget: 16 74 | asyncUploadTimeSlice: 2 75 | asyncUploadBufferSize: 16 76 | asyncUploadPersistentBuffer: 1 77 | resolutionScalingFixedDPIFactor: 1 78 | excludedTargetPlatforms: [] 79 | - serializedVersion: 2 80 | name: Medium 81 | pixelLightCount: 1 82 | shadows: 1 83 | shadowResolution: 0 84 | shadowProjection: 1 85 | shadowCascades: 1 86 | shadowDistance: 20 87 | shadowNearPlaneOffset: 3 88 | shadowCascade2Split: 0.33333334 89 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 90 | shadowmaskMode: 0 91 | blendWeights: 2 92 | textureQuality: 0 93 | anisotropicTextures: 1 94 | antiAliasing: 0 95 | softParticles: 0 96 | softVegetation: 0 97 | realtimeReflectionProbes: 0 98 | billboardsFaceCameraPosition: 0 99 | vSyncCount: 1 100 | lodBias: 0.7 101 | maximumLODLevel: 0 102 | streamingMipmapsActive: 0 103 | streamingMipmapsAddAllCameras: 1 104 | streamingMipmapsMemoryBudget: 512 105 | streamingMipmapsRenderersPerFrame: 512 106 | streamingMipmapsMaxLevelReduction: 2 107 | streamingMipmapsMaxFileIORequests: 1024 108 | particleRaycastBudget: 64 109 | asyncUploadTimeSlice: 2 110 | asyncUploadBufferSize: 16 111 | asyncUploadPersistentBuffer: 1 112 | resolutionScalingFixedDPIFactor: 1 113 | excludedTargetPlatforms: [] 114 | - serializedVersion: 2 115 | name: High 116 | pixelLightCount: 2 117 | shadows: 2 118 | shadowResolution: 1 119 | shadowProjection: 1 120 | shadowCascades: 2 121 | shadowDistance: 40 122 | shadowNearPlaneOffset: 3 123 | shadowCascade2Split: 0.33333334 124 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 125 | shadowmaskMode: 1 126 | blendWeights: 2 127 | textureQuality: 0 128 | anisotropicTextures: 1 129 | antiAliasing: 0 130 | softParticles: 0 131 | softVegetation: 1 132 | realtimeReflectionProbes: 1 133 | billboardsFaceCameraPosition: 1 134 | vSyncCount: 1 135 | lodBias: 1 136 | maximumLODLevel: 0 137 | streamingMipmapsActive: 0 138 | streamingMipmapsAddAllCameras: 1 139 | streamingMipmapsMemoryBudget: 512 140 | streamingMipmapsRenderersPerFrame: 512 141 | streamingMipmapsMaxLevelReduction: 2 142 | streamingMipmapsMaxFileIORequests: 1024 143 | particleRaycastBudget: 256 144 | asyncUploadTimeSlice: 2 145 | asyncUploadBufferSize: 16 146 | asyncUploadPersistentBuffer: 1 147 | resolutionScalingFixedDPIFactor: 1 148 | excludedTargetPlatforms: [] 149 | - serializedVersion: 2 150 | name: Very High 151 | pixelLightCount: 3 152 | shadows: 2 153 | shadowResolution: 2 154 | shadowProjection: 1 155 | shadowCascades: 2 156 | shadowDistance: 70 157 | shadowNearPlaneOffset: 3 158 | shadowCascade2Split: 0.33333334 159 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 160 | shadowmaskMode: 1 161 | blendWeights: 4 162 | textureQuality: 0 163 | anisotropicTextures: 2 164 | antiAliasing: 2 165 | softParticles: 1 166 | softVegetation: 1 167 | realtimeReflectionProbes: 1 168 | billboardsFaceCameraPosition: 1 169 | vSyncCount: 1 170 | lodBias: 1.5 171 | maximumLODLevel: 0 172 | streamingMipmapsActive: 0 173 | streamingMipmapsAddAllCameras: 1 174 | streamingMipmapsMemoryBudget: 512 175 | streamingMipmapsRenderersPerFrame: 512 176 | streamingMipmapsMaxLevelReduction: 2 177 | streamingMipmapsMaxFileIORequests: 1024 178 | particleRaycastBudget: 1024 179 | asyncUploadTimeSlice: 2 180 | asyncUploadBufferSize: 16 181 | asyncUploadPersistentBuffer: 1 182 | resolutionScalingFixedDPIFactor: 1 183 | excludedTargetPlatforms: [] 184 | - serializedVersion: 2 185 | name: Ultra 186 | pixelLightCount: 4 187 | shadows: 2 188 | shadowResolution: 2 189 | shadowProjection: 1 190 | shadowCascades: 4 191 | shadowDistance: 150 192 | shadowNearPlaneOffset: 3 193 | shadowCascade2Split: 0.33333334 194 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 195 | shadowmaskMode: 1 196 | blendWeights: 4 197 | textureQuality: 0 198 | anisotropicTextures: 2 199 | antiAliasing: 2 200 | softParticles: 1 201 | softVegetation: 1 202 | realtimeReflectionProbes: 1 203 | billboardsFaceCameraPosition: 1 204 | vSyncCount: 1 205 | lodBias: 2 206 | maximumLODLevel: 0 207 | streamingMipmapsActive: 0 208 | streamingMipmapsAddAllCameras: 1 209 | streamingMipmapsMemoryBudget: 512 210 | streamingMipmapsRenderersPerFrame: 512 211 | streamingMipmapsMaxLevelReduction: 2 212 | streamingMipmapsMaxFileIORequests: 1024 213 | particleRaycastBudget: 4096 214 | asyncUploadTimeSlice: 2 215 | asyncUploadBufferSize: 16 216 | asyncUploadPersistentBuffer: 1 217 | resolutionScalingFixedDPIFactor: 1 218 | excludedTargetPlatforms: [] 219 | m_PerPlatformDefaultQuality: 220 | Android: 2 221 | Lumin: 5 222 | Nintendo 3DS: 5 223 | Nintendo Switch: 5 224 | PS4: 5 225 | PSP2: 2 226 | Standalone: 5 227 | WebGL: 3 228 | Windows Store Apps: 5 229 | XboxOne: 5 230 | iPhone: 2 231 | tvOS: 2 232 | -------------------------------------------------------------------------------- /ProjectSettings/TagManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!78 &1 4 | TagManager: 5 | serializedVersion: 2 6 | tags: [] 7 | layers: 8 | - Default 9 | - TransparentFX 10 | - Ignore Raycast 11 | - 12 | - Water 13 | - UI 14 | - 15 | - 16 | - 17 | - 18 | - 19 | - 20 | - 21 | - 22 | - 23 | - 24 | - 25 | - 26 | - 27 | - 28 | - 29 | - 30 | - 31 | - 32 | - 33 | - 34 | - 35 | - 36 | - 37 | - 38 | - 39 | - 40 | m_SortingLayers: 41 | - name: Default 42 | uniqueID: 0 43 | locked: 0 44 | -------------------------------------------------------------------------------- /ProjectSettings/TimeManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!5 &1 4 | TimeManager: 5 | m_ObjectHideFlags: 0 6 | Fixed Timestep: 0.02 7 | Maximum Allowed Timestep: 0.33333334 8 | m_TimeScale: 1 9 | Maximum Particle Timestep: 0.03 10 | -------------------------------------------------------------------------------- /ProjectSettings/UnityConnectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!310 &1 4 | UnityConnectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 1 7 | m_Enabled: 0 8 | m_TestMode: 0 9 | m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events 10 | m_EventUrl: https://cdp.cloud.unity3d.com/v1/events 11 | m_ConfigUrl: https://config.uca.cloud.unity3d.com 12 | m_TestInitMode: 0 13 | CrashReportingSettings: 14 | m_EventUrl: https://perf-events.cloud.unity3d.com 15 | m_Enabled: 0 16 | m_LogBufferSize: 10 17 | m_CaptureEditorExceptions: 1 18 | UnityPurchasingSettings: 19 | m_Enabled: 0 20 | m_TestMode: 0 21 | UnityAnalyticsSettings: 22 | m_Enabled: 0 23 | m_TestMode: 0 24 | m_InitializeOnStartup: 1 25 | UnityAdsSettings: 26 | m_Enabled: 0 27 | m_InitializeOnStartup: 1 28 | m_TestMode: 0 29 | m_IosGameId: 30 | m_AndroidGameId: 31 | m_GameIds: {} 32 | m_GameId: 33 | PerformanceReportingSettings: 34 | m_Enabled: 0 35 | -------------------------------------------------------------------------------- /ProjectSettings/VFXManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!937362698 &1 4 | VFXManager: 5 | m_ObjectHideFlags: 0 6 | m_IndirectShader: {fileID: 0} 7 | m_CopyBufferShader: {fileID: 0} 8 | m_SortShader: {fileID: 0} 9 | m_RenderPipeSettingsPath: 10 | m_FixedTimeStep: 0.016666668 11 | m_MaxDeltaTime: 0.05 12 | -------------------------------------------------------------------------------- /ProjectSettings/XRSettings.asset: -------------------------------------------------------------------------------- 1 | { 2 | "m_SettingKeys": [ 3 | "VR Device Disabled", 4 | "VR Device User Alert" 5 | ], 6 | "m_SettingValues": [ 7 | "False", 8 | "False" 9 | ] 10 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Unity UI Manager 2 | 3 | ## What is this and why should I use it? 4 | The UI Manager is a stack-based UI controller class. It is designed to make pushing and popping screens in Unity simple and intuitive. No need to have a hundred different UI prefabs sitting in a scene being toggled on and off, the UI Manager can instantiate and manage screens on-demand. It is a cleaner, more streamlined, and easier to maintain approach to UI development than what Unity provides out of the box. 5 | 6 | ## More information 7 | 8 | For the full README [check it out over here in the UIManager directory](Assets/UIManager/README.md) 9 | 10 | ## Contribute 11 | If you wish to contribute to this project feel free to open up a pull request and I will review it for inclusion. 12 | 13 | Same goes for bug fixes, if you find any, feel free to open up an Issue here on the GitHub repo or fix it yourself and create a pull request so we may all benefit. 14 | --------------------------------------------------------------------------------