├── .editorconfig
├── .gitignore
├── .idea
└── .idea.XmlStorage
│ └── .idea
│ ├── .gitignore
│ ├── encodings.xml
│ ├── indexLayout.xml
│ └── vcs.xml
├── .vsconfig
├── Assets
├── XmlStorage.meta
└── XmlStorage
│ ├── Example.meta
│ ├── Example
│ ├── Scenes.meta
│ ├── Scenes
│ │ ├── XmlStorage.meta
│ │ ├── XmlStorage.unity
│ │ ├── XmlStorage.unity.meta
│ │ └── XmlStorage
│ │ │ ├── LightingData.asset
│ │ │ ├── LightingData.asset.meta
│ │ │ ├── ReflectionProbe-0.exr
│ │ │ └── ReflectionProbe-0.exr.meta
│ ├── Scripts.meta
│ └── Scripts
│ │ ├── SetAndGet.cs
│ │ └── SetAndGet.cs.meta
│ ├── Tests.meta
│ └── Tests
│ ├── CollectionTests.cs
│ ├── CollectionTests.cs.meta
│ ├── CustomClassTests.cs
│ ├── CustomClassTests.cs.meta
│ ├── PrimitiveTypeTests.cs
│ ├── PrimitiveTypeTests.cs.meta
│ ├── SetupAndCleanup.cs
│ ├── SetupAndCleanup.cs.meta
│ ├── SystemTests.cs
│ ├── SystemTests.cs.meta
│ ├── Tests.asmdef
│ ├── Tests.asmdef.meta
│ ├── UnityTypeTests.cs
│ └── UnityTypeTests.cs.meta
├── LICENSE
├── Packages
├── com.a3geek.xmlstorage
│ ├── Runtime.meta
│ ├── Runtime
│ │ ├── Scripts.meta
│ │ └── Scripts
│ │ │ ├── Data.meta
│ │ │ ├── Data
│ │ │ ├── Data.cs
│ │ │ ├── Data.cs.meta
│ │ │ ├── DataElement.cs
│ │ │ ├── DataElement.cs.meta
│ │ │ ├── DataGroup.cs
│ │ │ ├── DataGroup.cs.meta
│ │ │ ├── DataGroups.cs
│ │ │ ├── DataGroups.cs.meta
│ │ │ ├── FilePath.cs
│ │ │ └── FilePath.cs.meta
│ │ │ ├── Storage.cs
│ │ │ ├── Storage.cs.meta
│ │ │ ├── Storage.meta
│ │ │ ├── Storage
│ │ │ ├── Accessor.cs
│ │ │ └── Accessor.cs.meta
│ │ │ ├── Utilities.meta
│ │ │ ├── Utilities
│ │ │ ├── CustomExtensions.meta
│ │ │ ├── CustomExtensions
│ │ │ │ ├── StringExtensions.cs
│ │ │ │ ├── StringExtensions.cs.meta
│ │ │ │ ├── TypeExtensions.cs
│ │ │ │ └── TypeExtensions.cs.meta
│ │ │ ├── EncodedStringWriter.cs
│ │ │ └── EncodedStringWriter.cs.meta
│ │ │ ├── XmlData.meta
│ │ │ └── XmlData
│ │ │ ├── Serializer.cs
│ │ │ ├── Serializer.cs.meta
│ │ │ ├── XmlDataElement.cs
│ │ │ ├── XmlDataElement.cs.meta
│ │ │ ├── XmlDataGroup.cs
│ │ │ └── XmlDataGroup.cs.meta
│ ├── XmlStorage.asmdef
│ ├── XmlStorage.asmdef.meta
│ ├── package.json
│ └── package.json.meta
├── manifest.json
└── packages-lock.json
├── ProjectSettings
├── AudioManager.asset
├── ClusterInputManager.asset
├── DynamicsManager.asset
├── EditorBuildSettings.asset
├── EditorSettings.asset
├── GraphicsSettings.asset
├── InputManager.asset
├── MemorySettings.asset
├── MultiplayerManager.asset
├── NavMeshAreas.asset
├── NetworkManager.asset
├── PackageManagerSettings.asset
├── Physics2DSettings.asset
├── PresetManager.asset
├── ProjectSettings.asset
├── ProjectVersion.txt
├── QualitySettings.asset
├── SceneTemplateSettings.json
├── TagManager.asset
├── TimeManager.asset
├── UnityConnectSettings.asset
├── VFXManager.asset
└── VersionControlSettings.asset
└── README.md
/.editorconfig:
--------------------------------------------------------------------------------
1 |
2 | [*]
3 | charset = utf-8
4 | end_of_line = crlf
5 | trim_trailing_whitespace = false
6 | insert_final_newline = false
7 | indent_style = space
8 | indent_size = 4
9 |
10 | # Microsoft .NET properties
11 | csharp_new_line_before_members_in_object_initializers = false
12 | csharp_preferred_modifier_order = public, private, protected, internal, file, new, static, abstract, virtual, sealed, readonly, override, extern, unsafe, volatile, async, required:suggestion
13 | csharp_style_prefer_utf8_string_literals = true:suggestion
14 | csharp_style_var_elsewhere = true:suggestion
15 | csharp_style_var_for_built_in_types = true:suggestion
16 | csharp_style_var_when_type_is_apparent = true:suggestion
17 | dotnet_naming_rule.local_constants_rule.import_to_resharper = True
18 | dotnet_naming_rule.local_constants_rule.resharper_description = Local constants
19 | dotnet_naming_rule.local_constants_rule.resharper_guid = a4f433b8-abcd-4e55-a08f-82e78cef0f0c
20 | dotnet_naming_rule.local_constants_rule.severity = none
21 | dotnet_naming_rule.local_constants_rule.style = upper_camel_case_style
22 | dotnet_naming_rule.local_constants_rule.symbols = local_constants_symbols
23 | dotnet_naming_rule.private_constants_rule.import_to_resharper = True
24 | dotnet_naming_rule.private_constants_rule.resharper_description = Constant fields (private)
25 | dotnet_naming_rule.private_constants_rule.resharper_guid = 236f7aa5-7b06-43ca-bf2a-9b31bfcff09a
26 | dotnet_naming_rule.private_constants_rule.severity = none
27 | dotnet_naming_rule.private_constants_rule.style = upper_camel_case_style
28 | dotnet_naming_rule.private_constants_rule.symbols = private_constants_symbols
29 | dotnet_naming_rule.private_instance_fields_rule.import_to_resharper = True
30 | dotnet_naming_rule.private_instance_fields_rule.resharper_description = Instance fields (private)
31 | dotnet_naming_rule.private_instance_fields_rule.resharper_exclusive_prefixes_suffixes = true
32 | dotnet_naming_rule.private_instance_fields_rule.resharper_guid = 4a98fdf6-7d98-4f5a-afeb-ea44ad98c70c
33 | dotnet_naming_rule.private_instance_fields_rule.severity = none
34 | dotnet_naming_rule.private_instance_fields_rule.style = lower_camel_case_style
35 | dotnet_naming_rule.private_instance_fields_rule.symbols = private_instance_fields_symbols
36 | dotnet_naming_rule.private_static_fields_rule.import_to_resharper = True
37 | dotnet_naming_rule.private_static_fields_rule.resharper_description = Static fields (private)
38 | dotnet_naming_rule.private_static_fields_rule.resharper_exclusive_prefixes_suffixes = true
39 | dotnet_naming_rule.private_static_fields_rule.resharper_guid = f9fce829-e6f4-4cb2-80f1-5497c44f51df
40 | dotnet_naming_rule.private_static_fields_rule.severity = none
41 | dotnet_naming_rule.private_static_fields_rule.style = upper_camel_case_style
42 | dotnet_naming_rule.private_static_fields_rule.symbols = private_static_fields_symbols
43 | dotnet_naming_rule.private_static_readonly_rule.import_to_resharper = True
44 | dotnet_naming_rule.private_static_readonly_rule.resharper_description = Static readonly fields (private)
45 | dotnet_naming_rule.private_static_readonly_rule.resharper_guid = 15b5b1f1-457c-4ca6-b278-5615aedc07d3
46 | dotnet_naming_rule.private_static_readonly_rule.severity = none
47 | dotnet_naming_rule.private_static_readonly_rule.style = upper_camel_case_style
48 | dotnet_naming_rule.private_static_readonly_rule.symbols = private_static_readonly_symbols
49 | dotnet_naming_rule.unity_serialized_field_rule.import_to_resharper = True
50 | dotnet_naming_rule.unity_serialized_field_rule.resharper_description = Unity serialized field
51 | dotnet_naming_rule.unity_serialized_field_rule.resharper_guid = 5f0fdb63-c892-4d2c-9324-15c80b22a7ef
52 | dotnet_naming_rule.unity_serialized_field_rule.severity = none
53 | dotnet_naming_rule.unity_serialized_field_rule.style = lower_camel_case_style
54 | dotnet_naming_rule.unity_serialized_field_rule.symbols = unity_serialized_field_symbols
55 | dotnet_naming_style.lower_camel_case_style.capitalization = camel_case
56 | dotnet_naming_style.upper_camel_case_style.capitalization = pascal_case
57 | dotnet_naming_symbols.local_constants_symbols.applicable_accessibilities = *
58 | dotnet_naming_symbols.local_constants_symbols.applicable_kinds = local
59 | dotnet_naming_symbols.local_constants_symbols.required_modifiers = const
60 | dotnet_naming_symbols.local_constants_symbols.resharper_applicable_kinds = local_constant
61 | dotnet_naming_symbols.local_constants_symbols.resharper_required_modifiers = any
62 | dotnet_naming_symbols.private_constants_symbols.applicable_accessibilities = internal,private,protected,protected_internal,private_protected
63 | dotnet_naming_symbols.private_constants_symbols.applicable_kinds = field
64 | dotnet_naming_symbols.private_constants_symbols.required_modifiers = const
65 | dotnet_naming_symbols.private_constants_symbols.resharper_applicable_kinds = constant_field
66 | dotnet_naming_symbols.private_constants_symbols.resharper_required_modifiers = any
67 | dotnet_naming_symbols.private_instance_fields_symbols.applicable_accessibilities = internal,private,protected,protected_internal,private_protected
68 | dotnet_naming_symbols.private_instance_fields_symbols.applicable_kinds = field
69 | dotnet_naming_symbols.private_instance_fields_symbols.resharper_applicable_kinds = field,readonly_field
70 | dotnet_naming_symbols.private_instance_fields_symbols.resharper_required_modifiers = instance
71 | dotnet_naming_symbols.private_static_fields_symbols.applicable_accessibilities = internal,private,protected,protected_internal,private_protected
72 | dotnet_naming_symbols.private_static_fields_symbols.applicable_kinds = field
73 | dotnet_naming_symbols.private_static_fields_symbols.required_modifiers = static
74 | dotnet_naming_symbols.private_static_fields_symbols.resharper_applicable_kinds = field
75 | dotnet_naming_symbols.private_static_fields_symbols.resharper_required_modifiers = static
76 | dotnet_naming_symbols.private_static_readonly_symbols.applicable_accessibilities = internal,private,protected,protected_internal,private_protected
77 | dotnet_naming_symbols.private_static_readonly_symbols.applicable_kinds = field
78 | dotnet_naming_symbols.private_static_readonly_symbols.required_modifiers = readonly,static
79 | dotnet_naming_symbols.private_static_readonly_symbols.resharper_applicable_kinds = readonly_field
80 | dotnet_naming_symbols.private_static_readonly_symbols.resharper_required_modifiers = static
81 | dotnet_naming_symbols.unity_serialized_field_symbols.applicable_accessibilities = *
82 | dotnet_naming_symbols.unity_serialized_field_symbols.applicable_kinds =
83 | dotnet_naming_symbols.unity_serialized_field_symbols.resharper_applicable_kinds = unity_serialised_field
84 | dotnet_naming_symbols.unity_serialized_field_symbols.resharper_required_modifiers = instance
85 | dotnet_style_parentheses_in_arithmetic_binary_operators = never_if_unnecessary:none
86 | dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:none
87 | dotnet_style_parentheses_in_relational_binary_operators = never_if_unnecessary:none
88 | dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion
89 | dotnet_style_predefined_type_for_member_access = true:suggestion
90 | dotnet_style_qualification_for_event = true:suggestion
91 | dotnet_style_qualification_for_field = true:suggestion
92 | dotnet_style_qualification_for_method = true:suggestion
93 | dotnet_style_qualification_for_property = true:suggestion
94 | dotnet_style_require_accessibility_modifiers = for_non_interface_members:warning
95 |
96 | # ReSharper properties
97 | resharper_align_multiline_binary_expressions_chain = false
98 | resharper_align_multiline_statement_conditions = false
99 | resharper_apply_auto_detected_rules = false
100 | resharper_blank_lines_after_block_statements = 0
101 | resharper_blank_lines_around_auto_property = 0
102 | resharper_blank_lines_around_property = 0
103 | resharper_blank_lines_around_single_line_type = 0
104 | resharper_braces_for_for = required
105 | resharper_braces_for_foreach = required
106 | resharper_braces_for_ifelse = required
107 | resharper_braces_for_while = required
108 | resharper_csharp_blank_lines_around_field = 0
109 | resharper_csharp_blank_lines_inside_region = 0
110 | resharper_csharp_empty_block_style = together_same_line
111 | resharper_csharp_insert_final_newline = true
112 | resharper_csharp_keep_blank_lines_in_code = 1
113 | resharper_csharp_stick_comment = false
114 | resharper_csharp_wrap_before_binary_opsign = true
115 | resharper_csharp_wrap_before_declaration_rpar = true
116 | resharper_csharp_wrap_before_invocation_rpar = true
117 | resharper_csharp_wrap_multiple_declaration_style = wrap_if_long
118 | resharper_csharp_wrap_multiple_type_parameter_constraints_style = wrap_if_long
119 | resharper_force_attribute_style = join
120 | resharper_formatter_off_tag = @formatter:off
121 | resharper_formatter_on_tag = @formatter:on
122 | resharper_indent_preprocessor_directives = normal
123 | resharper_indent_preprocessor_if = outdent
124 | resharper_indent_preprocessor_other = outdent
125 | resharper_indent_preprocessor_region = outdent
126 | resharper_new_line_before_while = true
127 | resharper_place_accessorholder_attribute_on_same_line = false
128 | resharper_place_accessor_attribute_on_same_line = false
129 | resharper_place_field_attribute_on_same_line = false
130 | resharper_place_simple_embedded_statement_on_same_line = false
131 | resharper_show_autodetect_configure_formatting_tip = false
132 | resharper_treat_case_statement_with_break_as_simple = false
133 | resharper_use_indent_from_vs = false
134 | resharper_wrap_before_eq = true
135 | resharper_wrap_before_primary_constructor_declaration_rpar = true
136 | resharper_wrap_for_stmt_header_style = wrap_if_long
137 | resharper_wrap_primary_constructor_parameters_style = wrap_if_long
138 |
139 | # ReSharper inspection severities
140 | resharper_arrange_redundant_parentheses_highlighting = hint
141 | resharper_check_namespace_highlighting = none
142 | resharper_empty_region_highlighting = none
143 | resharper_enforce_do_while_statement_braces_highlighting = warning
144 | resharper_enforce_fixed_statement_braces_highlighting = warning
145 | resharper_enforce_foreach_statement_braces_highlighting = warning
146 | resharper_enforce_for_statement_braces_highlighting = warning
147 | resharper_enforce_if_statement_braces_highlighting = warning
148 | resharper_enforce_lock_statement_braces_highlighting = warning
149 | resharper_enforce_using_statement_braces_highlighting = warning
150 | resharper_enforce_while_statement_braces_highlighting = warning
151 | resharper_inconsistent_naming_highlighting = none
152 | resharper_loop_can_be_converted_to_query_highlighting = none
153 | resharper_member_can_be_private_global_highlighting = none
154 | resharper_mvc_action_not_resolved_highlighting = warning
155 | resharper_mvc_area_not_resolved_highlighting = warning
156 | resharper_mvc_controller_not_resolved_highlighting = warning
157 | resharper_mvc_masterpage_not_resolved_highlighting = warning
158 | resharper_mvc_partial_view_not_resolved_highlighting = warning
159 | resharper_mvc_template_not_resolved_highlighting = warning
160 | resharper_mvc_view_component_not_resolved_highlighting = warning
161 | resharper_mvc_view_component_view_not_resolved_highlighting = warning
162 | resharper_mvc_view_not_resolved_highlighting = warning
163 | resharper_razor_assembly_not_resolved_highlighting = warning
164 | resharper_redundant_default_member_initializer_highlighting = none
165 | resharper_suggest_discard_declaration_var_style_highlighting = none
166 | resharper_web_config_module_not_resolved_highlighting = warning
167 | resharper_web_config_type_not_resolved_highlighting = warning
168 | resharper_web_config_wrong_module_highlighting = warning
169 |
170 | [{*.har,*.jsb2,*.jsb3,*.json,*.jsonc,*.postman_collection,*.postman_collection.json,*.postman_environment,*.postman_environment.json,.babelrc,.eslintrc,.prettierrc,.stylelintrc,.ws-context,jest.config}]
171 | indent_style = space
172 | indent_size = 2
173 |
174 | [*.asmdef]
175 | indent_style = space
176 | indent_size = 2
177 |
178 | [*.{appxmanifest,asax,ascx,aspx,axaml,blockshader,build,c,c++,c++m,cc,ccm,cginc,compute,cp,cpp,cppm,cs,cshtml,cu,cuh,cxx,cxxm,dtd,fs,fsi,fsscript,fsx,fx,fxh,h,h++,hh,hlsl,hlsli,hlslinc,hp,hpp,hxx,icc,inc,inl,ino,ipp,ixx,master,ml,mli,mpp,mq4,mq5,mqh,mxx,nuspec,paml,razor,resw,resx,shader,shaderFoundry,skin,tcc,tpp,urtshader,usf,ush,uxml,vb,xaml,xamlx,xoml,xsd}]
179 | indent_style = space
180 | indent_size = 4
181 | tab_width = 4
182 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # This .gitignore file should be placed at the root of your Unity project directory
2 | #
3 | # Get latest from https://github.com/github/gitignore/blob/main/Unity.gitignore
4 | #
5 | /[Ll]ibrary/
6 | /[Tt]emp/
7 | /[Oo]bj/
8 | /[Bb]uild/
9 | /[Bb]uilds/
10 | /[Ll]ogs/
11 | /[Uu]ser[Ss]ettings/
12 |
13 | # MemoryCaptures can get excessive in size.
14 | # They also could contain extremely sensitive data
15 | /[Mm]emoryCaptures/
16 |
17 | # Recordings can get excessive in size
18 | /[Rr]ecordings/
19 |
20 | # Uncomment this line if you wish to ignore the asset store tools plugin
21 | # /[Aa]ssets/AssetStoreTools*
22 |
23 | # Autogenerated Jetbrains Rider plugin
24 | /[Aa]ssets/Plugins/Editor/JetBrains*
25 |
26 | # Visual Studio cache directory
27 | .vs/
28 |
29 | # Gradle cache directory
30 | .gradle/
31 |
32 | # Autogenerated VS/MD/Consulo solution and project files
33 | ExportedObj/
34 | .consulo/
35 | *.csproj
36 | *.unityproj
37 | *.sln
38 | *.suo
39 | *.tmp
40 | *.user
41 | *.userprefs
42 | *.pidb
43 | *.booproj
44 | *.svd
45 | *.pdb
46 | *.mdb
47 | *.opendb
48 | *.VC.db
49 |
50 | # Unity3D generated meta files
51 | *.pidb.meta
52 | *.pdb.meta
53 | *.mdb.meta
54 |
55 | # Unity3D generated file on crash reports
56 | sysinfo.txt
57 |
58 | # Builds
59 | *.apk
60 | *.aab
61 | *.unitypackage
62 | *.app
63 |
64 | # Crashlytics generated file
65 | crashlytics-build.properties
66 |
67 | # Packed Addressables
68 | /[Aa]ssets/[Aa]ddressable[Aa]ssets[Dd]ata/*/*.bin*
69 |
70 | # Temporary auto-generated Android Assets
71 | /[Aa]ssets/[Ss]treamingAssets/aa.meta
72 | /[Aa]ssets/[Ss]treamingAssets/aa/*
73 |
74 |
75 | # XmlStorage
76 | [Ss]aves/
77 | [Ss]aves2/
78 |
--------------------------------------------------------------------------------
/.idea/.idea.XmlStorage/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 | # Rider ignored files
5 | /contentModel.xml
6 | /modules.xml
7 | /projectSettingsUpdater.xml
8 | /.idea.XmlStorage.iml
9 | # Editor-based HTTP Client requests
10 | /httpRequests/
11 | # Datasource local storage ignored files
12 | /dataSources/
13 | /dataSources.local.xml
14 |
--------------------------------------------------------------------------------
/.idea/.idea.XmlStorage/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/.idea/.idea.XmlStorage/.idea/indexLayout.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/.idea.XmlStorage/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.vsconfig:
--------------------------------------------------------------------------------
1 | {
2 | "version": "1.0",
3 | "components": [
4 | "Microsoft.VisualStudio.Workload.ManagedGame"
5 | ]
6 | }
7 |
--------------------------------------------------------------------------------
/Assets/XmlStorage.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a0aab459db0e40543b1ad725f45dbf4f
3 | folderAsset: yes
4 | timeCreated: 1444725532
5 | licenseType: Pro
6 | DefaultImporter:
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/Assets/XmlStorage/Example.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: deab0e0e644e0b24992a05b9f0fa5e33
3 | folderAsset: yes
4 | timeCreated: 1444725546
5 | licenseType: Pro
6 | DefaultImporter:
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/Assets/XmlStorage/Example/Scenes.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 614a9583fca9fb3428f822b2c2d564f3
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/XmlStorage/Example/Scenes/XmlStorage.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 812c168f9359ec142a06d3c9bf5cb757
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/XmlStorage/Example/Scenes/XmlStorage.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: 10
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_UseRadianceAmbientProbe: 0
42 | --- !u!157 &3
43 | LightmapSettings:
44 | m_ObjectHideFlags: 0
45 | serializedVersion: 13
46 | m_BakeOnSceneLoad: 1
47 | m_GISettings:
48 | serializedVersion: 2
49 | m_BounceScale: 1
50 | m_IndirectOutputScale: 1
51 | m_AlbedoBoost: 1
52 | m_EnvironmentLightingMode: 0
53 | m_EnableBakedLightmaps: 1
54 | m_EnableRealtimeLightmaps: 1
55 | m_LightmapEditorSettings:
56 | serializedVersion: 12
57 | m_Resolution: 2
58 | m_BakeResolution: 40
59 | m_AtlasSize: 1024
60 | m_AO: 0
61 | m_AOMaxDistance: 1
62 | m_CompAOExponent: 0
63 | m_CompAOExponentDirect: 0
64 | m_ExtractAmbientOcclusion: 0
65 | m_Padding: 2
66 | m_LightmapParameters: {fileID: 0}
67 | m_LightmapsBakeMode: 1
68 | m_TextureCompression: 1
69 | m_ReflectionCompression: 2
70 | m_MixedBakeMode: 1
71 | m_BakeBackend: 0
72 | m_PVRSampling: 1
73 | m_PVRDirectSampleCount: 32
74 | m_PVRSampleCount: 500
75 | m_PVRBounces: 2
76 | m_PVREnvironmentSampleCount: 500
77 | m_PVREnvironmentReferencePointCount: 2048
78 | m_PVRFilteringMode: 0
79 | m_PVRDenoiserTypeDirect: 0
80 | m_PVRDenoiserTypeIndirect: 0
81 | m_PVRDenoiserTypeAO: 0
82 | m_PVRFilterTypeDirect: 0
83 | m_PVRFilterTypeIndirect: 0
84 | m_PVRFilterTypeAO: 0
85 | m_PVREnvironmentMIS: 0
86 | m_PVRCulling: 1
87 | m_PVRFilteringGaussRadiusDirect: 1
88 | m_PVRFilteringGaussRadiusIndirect: 5
89 | m_PVRFilteringGaussRadiusAO: 2
90 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5
91 | m_PVRFilteringAtrousPositionSigmaIndirect: 2
92 | m_PVRFilteringAtrousPositionSigmaAO: 1
93 | m_ExportTrainingData: 0
94 | m_TrainingDataDestination: TrainingData
95 | m_LightProbeSampleCountMultiplier: 4
96 | m_LightingDataAsset: {fileID: 112000000, guid: de8b672a7beac194f90eb09b0f9d9372,
97 | type: 2}
98 | m_LightingSettings: {fileID: 1057559254}
99 | --- !u!196 &4
100 | NavMeshSettings:
101 | serializedVersion: 2
102 | m_ObjectHideFlags: 0
103 | m_BuildSettings:
104 | serializedVersion: 3
105 | agentTypeID: 0
106 | agentRadius: 0.5
107 | agentHeight: 2
108 | agentSlope: 45
109 | agentClimb: 0.4
110 | ledgeDropHeight: 0
111 | maxJumpAcrossDistance: 0
112 | minRegionArea: 2
113 | manualCellSize: 0
114 | cellSize: 0.16666667
115 | manualTileSize: 0
116 | tileSize: 256
117 | buildHeightMesh: 0
118 | maxJobWorkers: 0
119 | preserveTilesOutsideBounds: 0
120 | debug:
121 | m_Flags: 0
122 | m_NavMeshData: {fileID: 0}
123 | --- !u!1 &67376466
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: 67376471}
132 | - component: {fileID: 67376470}
133 | - component: {fileID: 67376467}
134 | m_Layer: 0
135 | m_Name: Main Camera
136 | m_TagString: MainCamera
137 | m_Icon: {fileID: 0}
138 | m_NavMeshLayer: 0
139 | m_StaticEditorFlags: 0
140 | m_IsActive: 1
141 | --- !u!81 &67376467
142 | AudioListener:
143 | m_ObjectHideFlags: 0
144 | m_CorrespondingSourceObject: {fileID: 0}
145 | m_PrefabInstance: {fileID: 0}
146 | m_PrefabAsset: {fileID: 0}
147 | m_GameObject: {fileID: 67376466}
148 | m_Enabled: 1
149 | --- !u!20 &67376470
150 | Camera:
151 | m_ObjectHideFlags: 0
152 | m_CorrespondingSourceObject: {fileID: 0}
153 | m_PrefabInstance: {fileID: 0}
154 | m_PrefabAsset: {fileID: 0}
155 | m_GameObject: {fileID: 67376466}
156 | m_Enabled: 1
157 | serializedVersion: 2
158 | m_ClearFlags: 2
159 | m_BackGroundColor: {r: 0, g: 0, b: 0, a: 0.019607844}
160 | m_projectionMatrixMode: 1
161 | m_GateFitMode: 2
162 | m_FOVAxisMode: 0
163 | m_Iso: 200
164 | m_ShutterSpeed: 0.005
165 | m_Aperture: 16
166 | m_FocusDistance: 10
167 | m_FocalLength: 50
168 | m_BladeCount: 5
169 | m_Curvature: {x: 2, y: 11}
170 | m_BarrelClipping: 0.25
171 | m_Anamorphism: 0
172 | m_SensorSize: {x: 36, y: 24}
173 | m_LensShift: {x: 0, y: 0}
174 | m_NormalizedViewPortRect:
175 | serializedVersion: 2
176 | x: 0
177 | y: 0
178 | width: 1
179 | height: 1
180 | near clip plane: 0.3
181 | far clip plane: 10
182 | field of view: 60
183 | orthographic: 0
184 | orthographic size: 5
185 | m_Depth: -1
186 | m_CullingMask:
187 | serializedVersion: 2
188 | m_Bits: 4294967295
189 | m_RenderingPath: -1
190 | m_TargetTexture: {fileID: 0}
191 | m_TargetDisplay: 0
192 | m_TargetEye: 3
193 | m_HDR: 0
194 | m_AllowMSAA: 0
195 | m_AllowDynamicResolution: 0
196 | m_ForceIntoRT: 0
197 | m_OcclusionCulling: 1
198 | m_StereoConvergence: 10
199 | m_StereoSeparation: 0.022
200 | --- !u!4 &67376471
201 | Transform:
202 | m_ObjectHideFlags: 0
203 | m_CorrespondingSourceObject: {fileID: 0}
204 | m_PrefabInstance: {fileID: 0}
205 | m_PrefabAsset: {fileID: 0}
206 | m_GameObject: {fileID: 67376466}
207 | serializedVersion: 2
208 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
209 | m_LocalPosition: {x: 0, y: 1, z: -10}
210 | m_LocalScale: {x: 1, y: 1, z: 1}
211 | m_ConstrainProportionsScale: 0
212 | m_Children: []
213 | m_Father: {fileID: 0}
214 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
215 | --- !u!850595691 &1057559254
216 | LightingSettings:
217 | m_ObjectHideFlags: 0
218 | m_CorrespondingSourceObject: {fileID: 0}
219 | m_PrefabInstance: {fileID: 0}
220 | m_PrefabAsset: {fileID: 0}
221 | m_Name: Settings.lighting
222 | serializedVersion: 9
223 | m_EnableBakedLightmaps: 1
224 | m_EnableRealtimeLightmaps: 1
225 | m_RealtimeEnvironmentLighting: 1
226 | m_BounceScale: 1
227 | m_AlbedoBoost: 1
228 | m_IndirectOutputScale: 1
229 | m_UsingShadowmask: 0
230 | m_BakeBackend: 1
231 | m_LightmapMaxSize: 1024
232 | m_LightmapSizeFixed: 0
233 | m_UseMipmapLimits: 1
234 | m_BakeResolution: 40
235 | m_Padding: 2
236 | m_LightmapCompression: 3
237 | m_AO: 0
238 | m_AOMaxDistance: 1
239 | m_CompAOExponent: 0
240 | m_CompAOExponentDirect: 0
241 | m_ExtractAO: 0
242 | m_MixedBakeMode: 1
243 | m_LightmapsBakeMode: 1
244 | m_FilterMode: 1
245 | m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0}
246 | m_ExportTrainingData: 0
247 | m_EnableWorkerProcessBaking: 1
248 | m_TrainingDataDestination: TrainingData
249 | m_RealtimeResolution: 2
250 | m_ForceWhiteAlbedo: 0
251 | m_ForceUpdates: 0
252 | m_PVRCulling: 1
253 | m_PVRSampling: 1
254 | m_PVRDirectSampleCount: 32
255 | m_PVRSampleCount: 512
256 | m_PVREnvironmentSampleCount: 512
257 | m_PVREnvironmentReferencePointCount: 2048
258 | m_LightProbeSampleCountMultiplier: 4
259 | m_PVRBounces: 2
260 | m_PVRMinBounces: 2
261 | m_PVREnvironmentImportanceSampling: 0
262 | m_PVRFilteringMode: 0
263 | m_PVRDenoiserTypeDirect: 0
264 | m_PVRDenoiserTypeIndirect: 0
265 | m_PVRDenoiserTypeAO: 0
266 | m_PVRFilterTypeDirect: 0
267 | m_PVRFilterTypeIndirect: 0
268 | m_PVRFilterTypeAO: 0
269 | m_PVRFilteringGaussRadiusDirect: 1
270 | m_PVRFilteringGaussRadiusIndirect: 5
271 | m_PVRFilteringGaussRadiusAO: 2
272 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5
273 | m_PVRFilteringAtrousPositionSigmaIndirect: 2
274 | m_PVRFilteringAtrousPositionSigmaAO: 1
275 | m_RespectSceneVisibilityWhenBakingGI: 0
276 | --- !u!1 &1729761026
277 | GameObject:
278 | m_ObjectHideFlags: 0
279 | m_CorrespondingSourceObject: {fileID: 0}
280 | m_PrefabInstance: {fileID: 0}
281 | m_PrefabAsset: {fileID: 0}
282 | serializedVersion: 6
283 | m_Component:
284 | - component: {fileID: 1729761028}
285 | - component: {fileID: 1729761027}
286 | m_Layer: 0
287 | m_Name: Example
288 | m_TagString: Untagged
289 | m_Icon: {fileID: 0}
290 | m_NavMeshLayer: 0
291 | m_StaticEditorFlags: 0
292 | m_IsActive: 1
293 | --- !u!114 &1729761027
294 | MonoBehaviour:
295 | m_ObjectHideFlags: 0
296 | m_CorrespondingSourceObject: {fileID: 0}
297 | m_PrefabInstance: {fileID: 0}
298 | m_PrefabAsset: {fileID: 0}
299 | m_GameObject: {fileID: 1729761026}
300 | m_Enabled: 1
301 | m_EditorHideFlags: 0
302 | m_Script: {fileID: 11500000, guid: f945dc5cbb055824caae304f2da1e83b, type: 3}
303 | m_Name:
304 | m_EditorClassIdentifier:
305 | test1:
306 | v1: 2147483647
307 | v2: 3.4028235e+38
308 | v3:
309 | - {x: 1, y: 1, z: 1}
310 | - {x: 0, y: 0, z: 0}
311 | test2:
312 | v1: -2147483648
313 | v2: -3.4028235e+38
314 | v3:
315 | - {x: 1, y: 0, z: 0}
316 | - {x: -1, y: 0, z: 0}
317 | test3:
318 | v1: 0
319 | v2: 1e-45
320 | v3:
321 | - {x: 0, y: 0, z: 1}
322 | - {x: 0, y: 0, z: -1}
323 | - {x: 0, y: 1, z: 0}
324 | - {x: 0, y: -1, z: 0}
325 | --- !u!4 &1729761028
326 | Transform:
327 | m_ObjectHideFlags: 0
328 | m_CorrespondingSourceObject: {fileID: 0}
329 | m_PrefabInstance: {fileID: 0}
330 | m_PrefabAsset: {fileID: 0}
331 | m_GameObject: {fileID: 1729761026}
332 | serializedVersion: 2
333 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
334 | m_LocalPosition: {x: 0, y: 0, z: 0}
335 | m_LocalScale: {x: 1, y: 1, z: 1}
336 | m_ConstrainProportionsScale: 0
337 | m_Children: []
338 | m_Father: {fileID: 0}
339 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
340 | --- !u!1660057539 &9223372036854775807
341 | SceneRoots:
342 | m_ObjectHideFlags: 0
343 | m_Roots:
344 | - {fileID: 67376471}
345 | - {fileID: 1729761028}
346 |
--------------------------------------------------------------------------------
/Assets/XmlStorage/Example/Scenes/XmlStorage.unity.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: ba7c8636d6e2ac44c9ffef3815996a62
3 | timeCreated: 1444725557
4 | licenseType: Pro
5 | DefaultImporter:
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/XmlStorage/Example/Scenes/XmlStorage/LightingData.asset:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/a3geek/XmlStorage/fb8ef23c71ec044222f5dc0d5d1a1027fd973c6d/Assets/XmlStorage/Example/Scenes/XmlStorage/LightingData.asset
--------------------------------------------------------------------------------
/Assets/XmlStorage/Example/Scenes/XmlStorage/LightingData.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: de8b672a7beac194f90eb09b0f9d9372
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 112000000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/XmlStorage/Example/Scenes/XmlStorage/ReflectionProbe-0.exr:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/a3geek/XmlStorage/fb8ef23c71ec044222f5dc0d5d1a1027fd973c6d/Assets/XmlStorage/Example/Scenes/XmlStorage/ReflectionProbe-0.exr
--------------------------------------------------------------------------------
/Assets/XmlStorage/Example/Scenes/XmlStorage/ReflectionProbe-0.exr.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 9a47e459ed859d244b37a6fafb739707
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 13
7 | mipmaps:
8 | mipMapMode: 0
9 | enableMipMap: 1
10 | sRGBTexture: 1
11 | linearTexture: 0
12 | fadeOut: 0
13 | borderMipMap: 0
14 | mipMapsPreserveCoverage: 0
15 | alphaTestReferenceValue: 0.5
16 | mipMapFadeDistanceStart: 1
17 | mipMapFadeDistanceEnd: 3
18 | bumpmap:
19 | convertToNormalMap: 0
20 | externalNormalMap: 0
21 | heightScale: 0.25
22 | normalMapFilter: 0
23 | flipGreenChannel: 0
24 | isReadable: 0
25 | streamingMipmaps: 0
26 | streamingMipmapsPriority: 0
27 | vTOnly: 0
28 | ignoreMipmapLimit: 0
29 | grayScaleToAlpha: 0
30 | generateCubemap: 6
31 | cubemapConvolution: 1
32 | seamlessCubemap: 1
33 | textureFormat: 1
34 | maxTextureSize: 2048
35 | textureSettings:
36 | serializedVersion: 2
37 | filterMode: 2
38 | aniso: 0
39 | mipBias: 0
40 | wrapU: 1
41 | wrapV: 1
42 | wrapW: 1
43 | nPOTScale: 1
44 | lightmap: 0
45 | compressionQuality: 50
46 | spriteMode: 0
47 | spriteExtrude: 1
48 | spriteMeshType: 1
49 | alignment: 0
50 | spritePivot: {x: 0.5, y: 0.5}
51 | spritePixelsToUnits: 100
52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
53 | spriteGenerateFallbackPhysicsShape: 1
54 | alphaUsage: 1
55 | alphaIsTransparency: 0
56 | spriteTessellationDetail: -1
57 | textureType: 0
58 | textureShape: 2
59 | singleChannelComponent: 0
60 | flipbookRows: 1
61 | flipbookColumns: 1
62 | maxTextureSizeSet: 0
63 | compressionQualitySet: 0
64 | textureFormatSet: 0
65 | ignorePngGamma: 0
66 | applyGammaDecoding: 0
67 | swizzle: 50462976
68 | cookieLightType: 0
69 | platformSettings:
70 | - serializedVersion: 4
71 | buildTarget: DefaultTexturePlatform
72 | maxTextureSize: 2048
73 | resizeAlgorithm: 0
74 | textureFormat: -1
75 | textureCompression: 1
76 | compressionQuality: 100
77 | crunchedCompression: 0
78 | allowsAlphaSplitting: 0
79 | overridden: 0
80 | ignorePlatformSupport: 0
81 | androidETC2FallbackOverride: 0
82 | forceMaximumCompressionQuality_BC6H_BC7: 0
83 | - serializedVersion: 4
84 | buildTarget: Standalone
85 | maxTextureSize: 2048
86 | resizeAlgorithm: 0
87 | textureFormat: -1
88 | textureCompression: 1
89 | compressionQuality: 50
90 | crunchedCompression: 0
91 | allowsAlphaSplitting: 0
92 | overridden: 0
93 | ignorePlatformSupport: 0
94 | androidETC2FallbackOverride: 0
95 | forceMaximumCompressionQuality_BC6H_BC7: 0
96 | spriteSheet:
97 | serializedVersion: 2
98 | sprites: []
99 | outline: []
100 | customData:
101 | physicsShape: []
102 | bones: []
103 | spriteID:
104 | internalID: 0
105 | vertices: []
106 | indices:
107 | edges: []
108 | weights: []
109 | secondaryTextures: []
110 | spriteCustomMetadata:
111 | entries: []
112 | nameFileIdTable: {}
113 | mipmapLimitGroupName:
114 | pSDRemoveMatte: 0
115 | userData:
116 | assetBundleName:
117 | assetBundleVariant:
118 |
--------------------------------------------------------------------------------
/Assets/XmlStorage/Example/Scripts.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 69e8dc6be71d96643aac7b1e042cbf3f
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/XmlStorage/Example/Scripts/SetAndGet.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.IO;
3 | using UnityEngine;
4 |
5 | namespace XmlStorage.Example
6 | {
7 | public class SetAndGet : MonoBehaviour
8 | {
9 | [SerializeField]
10 | private Test test1 = new(int.MaxValue, float.MaxValue, new[] { Vector3.one, Vector3.zero });
11 | [SerializeField]
12 | private Test test2 = new(int.MinValue, float.MinValue, new[] { Vector3.right, Vector3.left });
13 | [SerializeField]
14 | private Test test3 = new(0, float.Epsilon, new[] { Vector3.forward, Vector3.back, Vector3.up, Vector3.down });
15 |
16 |
17 | private void Awake()
18 | {
19 | Storage.DirectoryPath = Path.Combine(Storage.GetDefaultDirectoryPath(), "Prefs");
20 | Storage.CurrentDataGroupName = "Prefs";
21 |
22 | Get();
23 | this.Set();
24 | Get();
25 | }
26 |
27 | private void Set()
28 | {
29 | Storage.Set("int", 10);
30 | Storage.Set("float", 1.2345f);
31 | Storage.Set("bool", true);
32 | Storage.Set("string", "Test");
33 | Storage.Set("test1", this.test1);
34 | Storage.Set("test2", this.test2);
35 | Storage.Set("test3", this.test3);
36 | Storage.Save();
37 | }
38 |
39 | private static void Get()
40 | {
41 | Storage.Load();
42 |
43 | Debug.Log("Expect: 10, Result: " + Storage.Get("int"));
44 | Debug.Log("Expect: 1.2345f, Result: " + Storage.Get("float"));
45 | Debug.Log("Expect: true, Result: " + Storage.Get("bool"));
46 | Debug.Log("Expect: Test, Result: " + Storage.Get("string"));
47 | Debug.Log(Storage.Get("test1"));
48 | Debug.Log(Storage.Get("test2"));
49 | Debug.Log(Storage.Get("test3"));
50 | Debug.Log("");
51 | }
52 |
53 |
54 | [Serializable]
55 | public class Test
56 | {
57 | public int v1;
58 | public float v2;
59 | public Vector3[] v3;
60 |
61 |
62 | public Test() { }
63 |
64 | public Test(int v1, float v2, Vector3[] v3)
65 | {
66 | this.v1 = v1;
67 | this.v2 = v2;
68 | this.v3 = v3;
69 | }
70 |
71 | public override string ToString()
72 | {
73 | var v3 = "(";
74 | foreach (var e in this.v3)
75 | {
76 | v3 += e + ", ";
77 | }
78 | v3 += ")";
79 |
80 | return $"v1 = {this.v1}, v2 = {this.v2}, v3 = {v3}";
81 | }
82 | }
83 | }
84 | }
85 |
--------------------------------------------------------------------------------
/Assets/XmlStorage/Example/Scripts/SetAndGet.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: f945dc5cbb055824caae304f2da1e83b
3 | timeCreated: 1470212978
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/XmlStorage/Tests.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: fcb27d55d15f58e409d6a825e0f69e38
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/XmlStorage/Tests/CollectionTests.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using NUnit.Framework;
4 | using UnityEngine;
5 |
6 | namespace XmlStorage.Tests
7 | {
8 | public class CollectionTests
9 | {
10 | [SetUp]
11 | public void Setup()
12 | {
13 | Storage.CurrentDataGroupName = "Collections";
14 | }
15 |
16 | [Test]
17 | public void ListTest()
18 | {
19 | var list = new List { Vector3.one, Vector3.zero };
20 | Storage.Set("list", list);
21 | Storage.Save();
22 | Storage.Load();
23 | CollectionAssert.AreEqual(list, Storage.Get("list", new List()));
24 | }
25 |
26 | [Test]
27 | public void ArrayTest()
28 | {
29 | var array = new[] { Vector2.one, Vector2.zero };
30 | Storage.Set("array", array);
31 | Storage.Save();
32 | Storage.Load();
33 | CollectionAssert.AreEqual(array, Storage.Get("array", Array.Empty()));
34 | }
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/Assets/XmlStorage/Tests/CollectionTests.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 52c60dad3441670439db078457c98183
--------------------------------------------------------------------------------
/Assets/XmlStorage/Tests/CustomClassTests.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using NUnit.Framework;
3 | using UnityEngine;
4 | using System.Xml.Serialization;
5 |
6 | namespace XmlStorage.Tests
7 | {
8 | public class CustomClassTests
9 | {
10 | [SetUp]
11 | public void Setup()
12 | {
13 | Storage.CurrentDataGroupName = "CustomClass";
14 | }
15 |
16 | [Test]
17 | public void CustomObjectTest()
18 | {
19 | var obj = new CustomData { Id = 5, Name = "Data", Pos = Vector2.one };
20 | Storage.Set("obj", obj);
21 | Storage.Save();
22 | Storage.Load();
23 |
24 | var result = Storage.Get("obj", new CustomData());
25 | Assert.AreEqual(obj.Id, result.Id);
26 | Assert.AreEqual(obj.Name, result.Name);
27 | Assert.AreEqual(obj.Pos, result.Pos);
28 | }
29 |
30 | [Test]
31 | public void NestedCustomObjectTest()
32 | {
33 | var obj = new Parent
34 | {
35 | Title = "P",
36 | Child = new CustomData { Id = 1, Name = "C", Pos = new Vector2(3, 4) }
37 | };
38 | Storage.Set("nest", obj);
39 | Storage.Save();
40 | Storage.Load();
41 |
42 | var result = Storage.Get("nest", new Parent());
43 | Assert.AreEqual(obj.Title, result.Title);
44 | Assert.AreEqual(obj.Child.Id, result.Child.Id);
45 | }
46 |
47 | [Test]
48 | public void XmlIgnoreTest()
49 | {
50 | var obj = new WithIgnore { Value = "Yes", Ignore = "No" };
51 | Storage.Set("ign", obj);
52 | Storage.Save();
53 | Storage.Load();
54 |
55 | var res = Storage.Get("ign", new WithIgnore());
56 | Assert.AreEqual("Yes", res.Value);
57 | Assert.IsNull(res.Ignore);
58 | }
59 |
60 |
61 | [Serializable]
62 | public class CustomData
63 | {
64 | public int Id;
65 | public string Name;
66 | public Vector2 Pos;
67 | }
68 |
69 | [Serializable]
70 | public class WithIgnore
71 | {
72 | public string Value;
73 |
74 | [XmlIgnore]
75 | public string Ignore;
76 | }
77 |
78 | [Serializable]
79 | public class Parent
80 | {
81 | public string Title;
82 | public CustomData Child;
83 | }
84 | }
85 | }
86 |
--------------------------------------------------------------------------------
/Assets/XmlStorage/Tests/CustomClassTests.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 6baa0905c8b26ab48bfb292d5f5942e5
--------------------------------------------------------------------------------
/Assets/XmlStorage/Tests/PrimitiveTypeTests.cs:
--------------------------------------------------------------------------------
1 | using NUnit.Framework;
2 |
3 | namespace XmlStorage.Tests
4 | {
5 | public class PrimitiveTypeTests
6 | {
7 | [SetUp]
8 | public void Setup()
9 | {
10 | Storage.CurrentDataGroupName = "PrimitiveTypes";
11 | }
12 |
13 | [TestCase(42)]
14 | [TestCase(-1)]
15 | public void IntTest(int value)
16 | {
17 | Storage.SetInt("intKey", value);
18 | Storage.Save();
19 | Storage.Load();
20 | Assert.AreEqual(value, Storage.GetInt("intKey"));
21 | }
22 |
23 | [TestCase(3.14f)]
24 | public void FloatTest(float value)
25 | {
26 | Storage.SetFloat("floatKey", value);
27 | Storage.Save();
28 | Storage.Load();
29 | Assert.AreEqual(value, Storage.GetFloat("floatKey"));
30 | }
31 |
32 | [TestCase(true)]
33 | [TestCase(false)]
34 | public void BoolTest(bool value)
35 | {
36 | Storage.SetBool("boolKey", value);
37 | Storage.Save();
38 | Storage.Load();
39 | Assert.AreEqual(value, Storage.GetBool("boolKey"));
40 | }
41 |
42 | [TestCase("ABC_abc")]
43 | public void StringTest(string value)
44 | {
45 | Storage.SetString("stringKey", value);
46 | Storage.Save();
47 | Storage.Load();
48 | Assert.AreEqual(value, Storage.GetString("stringKey"));
49 | }
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/Assets/XmlStorage/Tests/PrimitiveTypeTests.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d067331311ba885449ecb332a9b19f65
--------------------------------------------------------------------------------
/Assets/XmlStorage/Tests/SetupAndCleanup.cs:
--------------------------------------------------------------------------------
1 | using System.IO;
2 | using NUnit.Framework;
3 | using UnityEngine.TestTools;
4 |
5 | namespace XmlStorage.Tests
6 | {
7 | [PrebuildSetup(typeof(SetupAndCleanup))]
8 | [PostBuildCleanup(typeof(SetupAndCleanup))]
9 | public class SetupAndCleanup : IPrebuildSetup, IPostBuildCleanup
10 | {
11 | public void Setup()
12 | {
13 | Storage.DirectoryPath = Path.Combine(Storage.GetDefaultDirectoryPath(), "XmlTests");
14 | }
15 |
16 | public void Cleanup()
17 | {
18 | var path = Path.Combine(Storage.GetDefaultDirectoryPath(), "XmlTests");
19 | if (Directory.Exists(path))
20 | {
21 | Directory.Delete(path, true);
22 | }
23 |
24 | Storage.DirectoryPath = Storage.GetDefaultDirectoryPath();
25 | }
26 |
27 | [Test]
28 | public void Build()
29 | {
30 | Assert.That(true, Is.True);
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/Assets/XmlStorage/Tests/SetupAndCleanup.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 5c269f88169e38942836a7e1523c0c28
--------------------------------------------------------------------------------
/Assets/XmlStorage/Tests/SystemTests.cs:
--------------------------------------------------------------------------------
1 | using NUnit.Framework;
2 |
3 | namespace XmlStorage.Tests
4 | {
5 | public class SystemTests
6 | {
7 | [SetUp]
8 | public void Setup()
9 | {
10 | Storage.CurrentDataGroupName = "SystemTests";
11 | }
12 |
13 | [Test]
14 | public void HasKeyAndDeleteTest()
15 | {
16 | Storage.Set("temp", 42);
17 | Assert.IsTrue(Storage.HasKey("temp", typeof(int)));
18 | Storage.Delete("temp", typeof(int));
19 | Assert.IsFalse(Storage.HasKey("temp", typeof(int)));
20 | }
21 |
22 | [Test]
23 | public void KeyTypeTest()
24 | {
25 | Storage.Set("key", 10);
26 | Storage.Set("key", 0.1f);
27 | Storage.Set("key", "value");
28 | Storage.Save();
29 | Storage.Load();
30 |
31 | Assert.AreEqual(10, Storage.Get("key", 0));
32 | Assert.AreEqual(0.1f, Storage.Get("key", 0f));
33 | Assert.AreEqual("value", Storage.Get("key", ""));
34 | }
35 |
36 | [Test]
37 | public void WrongTypeTest()
38 | {
39 | Storage.Set("wrong", "123");
40 | Storage.Save();
41 | Storage.Load();
42 | Assert.AreEqual(-1, Storage.Get("wrong", -1));
43 | }
44 |
45 | [Test]
46 | public void MultipleGroupsTest()
47 | {
48 | var group = Storage.CurrentDataGroupName;
49 |
50 | Storage.CurrentDataGroupName = "GroupA";
51 | Storage.Set("k", 1);
52 |
53 | Storage.CurrentDataGroupName = "GroupB";
54 | Storage.Set("k", 2);
55 |
56 | Storage.Save();
57 | Storage.Load();
58 |
59 | Storage.CurrentDataGroupName = "GroupA";
60 | Assert.AreEqual(1, Storage.Get("k", 0));
61 |
62 | Storage.CurrentDataGroupName = "GroupB";
63 | Assert.AreEqual(2, Storage.Get("k", 0));
64 |
65 | Storage.CurrentDataGroupName = group;
66 | }
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/Assets/XmlStorage/Tests/SystemTests.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 74d5ad15294f36645aee8fbbe9502204
--------------------------------------------------------------------------------
/Assets/XmlStorage/Tests/Tests.asmdef:
--------------------------------------------------------------------------------
1 | {
2 | "name": "XmlStorage.Tests",
3 | "rootNamespace": "",
4 | "references": [
5 | "UnityEngine.TestRunner",
6 | "UnityEditor.TestRunner",
7 | "XmlStorage"
8 | ],
9 | "includePlatforms": [
10 | "Editor"
11 | ],
12 | "excludePlatforms": [],
13 | "allowUnsafeCode": false,
14 | "overrideReferences": false,
15 | "precompiledReferences": [
16 | "nunit.framework.dll"
17 | ],
18 | "autoReferenced": true,
19 | "defineConstraints": [
20 | "UNITY_INCLUDE_TESTS"
21 | ],
22 | "versionDefines": [],
23 | "noEngineReferences": false
24 | }
--------------------------------------------------------------------------------
/Assets/XmlStorage/Tests/Tests.asmdef.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 5f4bc0caa37a0f543bb3c956c3d05daa
3 | AssemblyDefinitionImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/XmlStorage/Tests/UnityTypeTests.cs:
--------------------------------------------------------------------------------
1 | using NUnit.Framework;
2 | using UnityEngine;
3 |
4 | namespace XmlStorage.Tests
5 | {
6 | public class UnityTypeTests
7 | {
8 | [SetUp]
9 | public void Setup()
10 | {
11 | Storage.CurrentDataGroupName = "UnityTypes";
12 | }
13 |
14 | [Test]
15 | public void Vector2Test()
16 | {
17 | var val = new Vector2(1f, 2f);
18 | Storage.Set("v2", val);
19 | Storage.Save();
20 | Storage.Load();
21 | Assert.AreEqual(val, Storage.Get("v2", Vector2.zero));
22 | }
23 |
24 | [Test]
25 | public void QuaternionTest()
26 | {
27 | var val = Quaternion.Euler(0f, 90f, 0f);
28 | Storage.Set("q", val);
29 | Storage.Save();
30 | Storage.Load();
31 | Assert.AreEqual(val, Storage.Get("q", Quaternion.identity));
32 | }
33 |
34 | [Test]
35 | public void ColorTest()
36 | {
37 | var val = new Color(0.1f, 0.2f, 0.3f);
38 | Storage.Set("color", val);
39 | Storage.Save();
40 | Storage.Load();
41 | Assert.AreEqual(val, Storage.Get("color", Color.black));
42 | }
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/Assets/XmlStorage/Tests/UnityTypeTests.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 7fc70d3763582a141b1fc8bc2b446b1b
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2017 a3geek
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 |
--------------------------------------------------------------------------------
/Packages/com.a3geek.xmlstorage/Runtime.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 858bbc6408bf9f44a961c8d357993dce
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Packages/com.a3geek.xmlstorage/Runtime/Scripts.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 6946ceda0cbf13c48a17adc05008497f
3 | folderAsset: yes
4 | timeCreated: 1444725538
5 | licenseType: Pro
6 | DefaultImporter:
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/Packages/com.a3geek.xmlstorage/Runtime/Scripts/Data.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: ee41aa24c84c3964fba9684dfbf74a45
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Packages/com.a3geek.xmlstorage/Runtime/Scripts/Data/Data.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Text;
4 |
5 | namespace XmlStorage.Data
6 | {
7 | internal sealed class Data
8 | {
9 | private const char Connector = '_';
10 |
11 | private readonly StringBuilder builder = new();
12 | private readonly Dictionary data = new(); // Key: key + "_" + valueType.FullName
13 |
14 |
15 | public void Update(string key, T value, Type valueType)
16 | {
17 | var globalKey = this.GetGlobalKey(key, valueType);
18 | if (this.TryGet(globalKey, out var element))
19 | {
20 | element.Value = value;
21 | }
22 | else
23 | {
24 | this.data[globalKey] = new DataElement(key, value, valueType);
25 | }
26 | }
27 |
28 | public Dictionary.ValueCollection GetElements()
29 | {
30 | return this.data.Values;
31 | }
32 |
33 | public bool TryGet(string key, Type valueType, out DataElement result)
34 | {
35 | return this.TryGet(this.GetGlobalKey(key, valueType), out result);
36 | }
37 |
38 | public bool Delete(string key, Type valueType)
39 | {
40 | var globalKey = this.GetGlobalKey(key, valueType);
41 | return this.data.Remove(globalKey);
42 | }
43 |
44 | public void DeleteAll()
45 | {
46 | this.data.Clear();
47 | }
48 |
49 | private bool TryGet(string globalKey, out DataElement result)
50 | {
51 | return this.data.TryGetValue(globalKey, out result);
52 | }
53 |
54 | private string GetGlobalKey(string key, Type valueType)
55 | {
56 | this.builder.Clear();
57 | return this.builder
58 | .Append(key)
59 | .Append(Connector)
60 | .Append(valueType.FullName)
61 | .ToString();
62 | }
63 | }
64 | }
65 |
--------------------------------------------------------------------------------
/Packages/com.a3geek.xmlstorage/Runtime/Scripts/Data/Data.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 54ed480c4c8baeb4eac687fa3f8ae8f6
--------------------------------------------------------------------------------
/Packages/com.a3geek.xmlstorage/Runtime/Scripts/Data/DataElement.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace XmlStorage.Data
4 | {
5 | internal sealed class DataElement
6 | {
7 | public readonly string Key;
8 | public object Value;
9 | public readonly Type ValueType;
10 |
11 |
12 | public DataElement(string key, object value, Type valueType)
13 | {
14 | this.Key = key;
15 | this.Value = value;
16 | this.ValueType = valueType;
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/Packages/com.a3geek.xmlstorage/Runtime/Scripts/Data/DataElement.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 59d49dcf044968b45815a6358556d2b2
--------------------------------------------------------------------------------
/Packages/com.a3geek.xmlstorage/Runtime/Scripts/Data/DataGroup.cs:
--------------------------------------------------------------------------------
1 | namespace XmlStorage.Data
2 | {
3 | /// DataGroupはXmlStorage外からのアクセスを許可する
4 | public sealed class DataGroup
5 | {
6 | public string GroupName { get; }
7 | public FilePath FilePath => new(Storage.DirectoryPath, this.GroupName, Storage.Extension);
8 |
9 | private readonly Data data = new();
10 |
11 |
12 | internal DataGroup(string groupName)
13 | {
14 | this.GroupName = groupName;
15 | }
16 |
17 | internal Data GetData()
18 | {
19 | return this.data;
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Packages/com.a3geek.xmlstorage/Runtime/Scripts/Data/DataGroup.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 826157d240122e545ba21aa506e84e12
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Packages/com.a3geek.xmlstorage/Runtime/Scripts/Data/DataGroups.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace XmlStorage.Data
4 | {
5 | internal sealed class DataGroups
6 | {
7 | private const string DefaultGroupName = nameof(XmlStorage);
8 |
9 | private readonly Dictionary groups = new(); // Key: GroupName
10 |
11 |
12 | public DataGroup GetGroup(string groupName)
13 | {
14 | if (string.IsNullOrEmpty(groupName))
15 | {
16 | return this.GetGroup(DefaultGroupName);
17 | }
18 |
19 | if (this.groups.TryGetValue(groupName, out var group))
20 | {
21 | return group;
22 | }
23 |
24 | group = new DataGroup(groupName);
25 | this.groups[groupName] = group;
26 |
27 | return group;
28 | }
29 |
30 | public IEnumerator GetEnumerator()
31 | {
32 | foreach (var (_, dataGroup) in this.groups)
33 | {
34 | yield return dataGroup;
35 | }
36 | }
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/Packages/com.a3geek.xmlstorage/Runtime/Scripts/Data/DataGroups.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 629ab6b10dd3a924585dbf595c788932
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Packages/com.a3geek.xmlstorage/Runtime/Scripts/Data/FilePath.cs:
--------------------------------------------------------------------------------
1 | using System.IO;
2 |
3 | namespace XmlStorage.Data
4 | {
5 | public readonly ref struct FilePath
6 | {
7 | private const char Dot = '.';
8 | private static readonly char Separator = Path.DirectorySeparatorChar;
9 |
10 | public readonly string DirectoryPath;
11 | public readonly string FileName;
12 | public readonly string Extension;
13 |
14 |
15 | public FilePath(string directoryPath, string fileName, string extension)
16 | {
17 | this.DirectoryPath = directoryPath;
18 | this.FileName = fileName;
19 | this.Extension = extension;
20 | }
21 |
22 | public string GetFullPath()
23 | {
24 | var directory = this.DirectoryPath.TrimEnd(Separator);
25 | if (!Directory.Exists(directory))
26 | {
27 | Directory.CreateDirectory(directory);
28 | }
29 |
30 | return this.DirectoryPath + Separator + this.FileName + Dot + this.Extension.TrimStart(Dot);
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/Packages/com.a3geek.xmlstorage/Runtime/Scripts/Data/FilePath.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 928eab4748646b94bb62696c7ad75333
--------------------------------------------------------------------------------
/Packages/com.a3geek.xmlstorage/Runtime/Scripts/Storage.cs:
--------------------------------------------------------------------------------
1 | using System.IO;
2 | using XmlStorage.Data;
3 | using XmlStorage.XmlData;
4 |
5 | namespace XmlStorage
6 | {
7 | public static partial class Storage
8 | {
9 | internal const string Extension = "xml";
10 | private const string LoadPattern = "*." + Extension;
11 | private const string DefaultDataGroupName = "Prefs";
12 |
13 | public static string CurrentDataGroupName { get; set; } = DefaultDataGroupName;
14 | public static DataGroup CurrentDataGroup => GetCurrentDataGroup(CurrentDataGroupName);
15 | public static string DirectoryPath { get; set; } = GetDefaultDirectoryPath();
16 |
17 | private static DataGroups DataGroups
18 | {
19 | get
20 | {
21 | if (DataGroupsInternal == null)
22 | {
23 | Load();
24 | }
25 |
26 | return DataGroupsInternal;
27 | }
28 | }
29 | private static DataGroups DataGroupsInternal = null;
30 |
31 |
32 | public static void Save()
33 | {
34 | foreach (var group in DataGroups)
35 | {
36 | var xml = new XmlDataGroup(group);
37 | Serializer.Serialize(group.FilePath.GetFullPath(), xml);
38 | }
39 | }
40 |
41 | public static void Load()
42 | {
43 | var groups = new DataGroups();
44 |
45 | if (Directory.Exists(DirectoryPath))
46 | {
47 | var files = Directory.GetFiles(DirectoryPath, LoadPattern, SearchOption.TopDirectoryOnly);
48 | foreach (var path in files)
49 | {
50 | var xml = Serializer.Deserialize(path);
51 | xml?.LoadToDataGroup(groups.GetGroup(xml.GroupName));
52 | }
53 | }
54 |
55 | DataGroupsInternal = groups;
56 | }
57 |
58 | public static string GetDefaultDirectoryPath()
59 | {
60 | #if UNITY_EDITOR
61 | return Directory.GetCurrentDirectory();
62 | #else
63 | return System.AppDomain.CurrentDomain.BaseDirectory;
64 | #endif
65 | }
66 |
67 | private static DataGroup GetCurrentDataGroup(string groupName)
68 | {
69 | return DataGroups.GetGroup(string.IsNullOrEmpty(groupName) ? DefaultDataGroupName : groupName);
70 | }
71 | }
72 | }
73 |
--------------------------------------------------------------------------------
/Packages/com.a3geek.xmlstorage/Runtime/Scripts/Storage.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 8d5fc68c742c4ee47b15b8c640571136
3 | timeCreated: 1444725579
4 | licenseType: Pro
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Packages/com.a3geek.xmlstorage/Runtime/Scripts/Storage.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: dc0fa806c1839b44ea21241175c99969
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Packages/com.a3geek.xmlstorage/Runtime/Scripts/Storage/Accessor.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace XmlStorage
4 | {
5 | public static partial class Storage
6 | {
7 | public static bool HasKey(string key, Type type, string groupName = null)
8 | {
9 | var group = GetCurrentDataGroup(groupName ?? CurrentDataGroupName);
10 | return group.GetData().TryGet(key, type, out _);
11 | }
12 |
13 | public static bool Delete(string key, Type type, string groupName = null)
14 | {
15 | var group = GetCurrentDataGroup(groupName ?? CurrentDataGroupName);
16 | return group.GetData().Delete(key, type);
17 | }
18 |
19 | public static void DeleteAll(string groupName = null)
20 | {
21 | var group = GetCurrentDataGroup(groupName ?? CurrentDataGroupName);
22 | group.GetData().DeleteAll();
23 | }
24 |
25 | #region "Setter"
26 | public static void Set(string key, T value, string groupName = null)
27 | {
28 | SetValue(key, value, typeof(T), groupName);
29 | }
30 |
31 | public static void SetInt(string key, int value, string groupName = null)
32 | {
33 | SetValue(key, value, typeof(int), groupName);
34 | }
35 |
36 | public static void SetFloat(string key, float value, string groupName = null)
37 | {
38 | SetValue(key, value, typeof(float), groupName);
39 | }
40 |
41 | public static void SetBool(string key, bool value, string groupName = null)
42 | {
43 | SetValue(key, value, typeof(bool), groupName);
44 | }
45 |
46 | public static void SetString(string key, string value, string groupName = null)
47 | {
48 | SetValue(key, value, typeof(string), groupName);
49 | }
50 |
51 | private static void SetValue(string key, T value, Type valueType, string groupName = null)
52 | {
53 | var group = GetCurrentDataGroup(groupName ?? CurrentDataGroupName);
54 | group.GetData().Update(key, value, valueType);
55 | }
56 | #endregion
57 |
58 | #region "Getter"
59 | public static T Get(string key, T defaultValue = default, string groupName = null)
60 | {
61 | return GetValue(key, defaultValue, typeof(T), groupName);
62 | }
63 |
64 | public static int GetInt(string key, int defaultValue = 0, string groupName = null)
65 | {
66 | return GetValue(key, defaultValue, typeof(int), groupName);
67 | }
68 |
69 | public static float GetFloat(string key, float defaultValue = 0f, string groupName = null)
70 | {
71 | return GetValue(key, defaultValue, typeof(float), groupName);
72 | }
73 |
74 | public static bool GetBool(string key, bool defaultValue = false, string groupName = null)
75 | {
76 | return GetValue(key, defaultValue, typeof(bool), groupName);
77 | }
78 |
79 | public static string GetString(string key, string defaultValue = "", string groupName = null)
80 | {
81 | return GetValue(key, defaultValue, typeof(string), groupName);
82 | }
83 |
84 | private static T GetValue(string key, T defaultValue, Type valueType, string groupName = null)
85 | {
86 | var group = GetCurrentDataGroup(groupName ?? CurrentDataGroupName);
87 | if (!group.GetData().TryGet(key, valueType, out var data))
88 | {
89 | return defaultValue;
90 | }
91 |
92 | return data.Value is T v ? v : defaultValue;
93 | }
94 | #endregion
95 | }
96 | }
97 |
--------------------------------------------------------------------------------
/Packages/com.a3geek.xmlstorage/Runtime/Scripts/Storage/Accessor.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 690fd437840821549a9dc59c9904c01a
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Packages/com.a3geek.xmlstorage/Runtime/Scripts/Utilities.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 01a86247079b5f24ea1b748e75d5390f
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Packages/com.a3geek.xmlstorage/Runtime/Scripts/Utilities/CustomExtensions.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: e6e0a0952ce369d4684b5c0819cc642e
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Packages/com.a3geek.xmlstorage/Runtime/Scripts/Utilities/CustomExtensions/StringExtensions.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Reflection;
3 |
4 | namespace XmlStorage.Utilities.CustomExtensions
5 | {
6 | internal static class StringExtensions
7 | {
8 | public static bool TryGetTypeAsTypeName(this string typeName, out Type type)
9 | {
10 | type = GetType(typeName, 0);
11 | return type != null;
12 | }
13 |
14 | // https://answers.unity.com/questions/206665/typegettypestring-does-not-work-in-unity.html
15 | private static Type GetType(in string typeName, uint tryCount)
16 | {
17 | try
18 | {
19 | return tryCount switch
20 | {
21 | 0 => Type.GetType(typeName) ?? GetType(typeName, 1),
22 | 1 => FindFromAssemblyName(typeName) ?? GetType(typeName, 2),
23 | 2 => FindFromAssemblies(typeName) ?? GetType(typeName, 3),
24 | _ => null
25 | };
26 | }
27 | catch
28 | {
29 | return GetType(typeName, tryCount + 1);
30 | }
31 |
32 | static Type FindFromAssemblyName(in string typeName)
33 | {
34 | if (!typeName.Contains("."))
35 | {
36 | return null;
37 | }
38 |
39 | var assemblyName = typeName[..typeName.IndexOf('.')];
40 | var assembly = Assembly.Load(assemblyName);
41 | return assembly.GetType(typeName);
42 | }
43 |
44 | static Type FindFromAssemblies(in string typeName)
45 | {
46 | var referencedAssemblies = Assembly.GetExecutingAssembly().GetReferencedAssemblies();
47 | foreach (var assemblyName in referencedAssemblies)
48 | {
49 | var assembly = Assembly.Load(assemblyName);
50 | var type = assembly.GetType(typeName);
51 | if (type != null)
52 | {
53 | return type;
54 | }
55 | }
56 |
57 | return null;
58 | }
59 | }
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/Packages/com.a3geek.xmlstorage/Runtime/Scripts/Utilities/CustomExtensions/StringExtensions.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 60d9acc47ba47384ca8fa830d7fd53cc
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Packages/com.a3geek.xmlstorage/Runtime/Scripts/Utilities/CustomExtensions/TypeExtensions.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace XmlStorage.Utilities.CustomExtensions
4 | {
5 | internal static class TypeExtensions
6 | {
7 | public static bool IsNeedSerialize(this Type type)
8 | {
9 | return type.IsClass || !type.IsSerializable;
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Packages/com.a3geek.xmlstorage/Runtime/Scripts/Utilities/CustomExtensions/TypeExtensions.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 4296e47cafb478d428533b6d06af67f8
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Packages/com.a3geek.xmlstorage/Runtime/Scripts/Utilities/EncodedStringWriter.cs:
--------------------------------------------------------------------------------
1 | using System.IO;
2 | using System.Text;
3 |
4 | namespace XmlStorage.Utilities
5 | {
6 | internal class EncodedStringWriter : StringWriter
7 | {
8 | public override Encoding Encoding => this.encoding;
9 |
10 | protected readonly Encoding encoding = Encoding.UTF8;
11 |
12 |
13 | public EncodedStringWriter() { }
14 |
15 | public EncodedStringWriter(in Encoding encoding) : this()
16 | {
17 | this.encoding = encoding ?? this.encoding;
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/Packages/com.a3geek.xmlstorage/Runtime/Scripts/Utilities/EncodedStringWriter.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 4f356f5dcf3b548408065ee3c07de84c
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Packages/com.a3geek.xmlstorage/Runtime/Scripts/XmlData.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d86d5ad085bbbfb45831d4e3b3abcd03
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Packages/com.a3geek.xmlstorage/Runtime/Scripts/XmlData/Serializer.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.IO;
4 | using System.Text;
5 | using System.Xml.Serialization;
6 | using XmlStorage.Utilities.CustomExtensions;
7 |
8 | namespace XmlStorage.XmlData
9 | {
10 | internal static class Serializer
11 | {
12 | private static readonly UTF8Encoding Encode = new(false);
13 | private static readonly Dictionary XmlSerializers = new();
14 |
15 |
16 | public static void Serialize(string filePath, XmlDataGroup xmlDataGroup)
17 | {
18 | using var sw = new StreamWriter(filePath, false, Encode);
19 | var serializer = GetXmlSerializer(typeof(XmlDataGroup));
20 | serializer.Serialize(sw, xmlDataGroup);
21 | }
22 |
23 | public static object Serialize(object value, Type type)
24 | {
25 | if (!type.IsNeedSerialize())
26 | {
27 | return value;
28 | }
29 |
30 | using var sw = new StringWriter();
31 | var serializer = GetXmlSerializer(type);
32 | serializer.Serialize(sw, value);
33 |
34 | return sw.ToString();
35 | }
36 |
37 | public static XmlDataGroup Deserialize(string filePath)
38 | {
39 | try
40 | {
41 | using var sr = new StreamReader(filePath, Encode);
42 | var serializer = GetXmlSerializer(typeof(XmlDataGroup));
43 | return serializer.Deserialize(sr) as XmlDataGroup;
44 | }
45 | catch
46 | {
47 | return null;
48 | }
49 | }
50 |
51 | public static object Deserialize(object value, Type type)
52 | {
53 | if (!type.IsNeedSerialize())
54 | {
55 | return value;
56 | }
57 |
58 | using var sr = new StringReader(value.ToString());
59 | var serializer = GetXmlSerializer(type);
60 | return serializer.Deserialize(sr);
61 | }
62 |
63 | private static XmlSerializer GetXmlSerializer(Type type)
64 | {
65 | if (XmlSerializers.TryGetValue(type, out var serializer))
66 | {
67 | return serializer;
68 | }
69 |
70 | serializer = new XmlSerializer(type);
71 | XmlSerializers.Add(type, serializer);
72 | return serializer;
73 | }
74 | }
75 | }
76 |
--------------------------------------------------------------------------------
/Packages/com.a3geek.xmlstorage/Runtime/Scripts/XmlData/Serializer.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 2c0cd90143083cf45973872d81dae898
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Packages/com.a3geek.xmlstorage/Runtime/Scripts/XmlData/XmlDataElement.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using XmlStorage.Data;
3 | using XmlStorage.Utilities.CustomExtensions;
4 |
5 | namespace XmlStorage.XmlData
6 | {
7 | [Serializable]
8 | public class XmlDataElement
9 | {
10 | public string Key;
11 | public object Value;
12 | public string TypeName;
13 |
14 |
15 | public XmlDataElement() { }
16 |
17 | internal XmlDataElement(DataElement element)
18 | {
19 | this.Key = element.Key;
20 | this.Value = Serializer.Serialize(element.Value, element.ValueType);
21 | this.TypeName = element.ValueType.AssemblyQualifiedName;
22 | }
23 |
24 | internal bool TryGetDataElementTuple(out (string key, object value, Type valueType) tuple)
25 | {
26 | if (!this.TypeName.TryGetTypeAsTypeName(out var type))
27 | {
28 | tuple = default;
29 | return false;
30 | }
31 |
32 | tuple = (this.Key, Serializer.Deserialize(this.Value, type), type);
33 | return true;
34 | }
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/Packages/com.a3geek.xmlstorage/Runtime/Scripts/XmlData/XmlDataElement.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 679a79656de812646831d1b508592061
--------------------------------------------------------------------------------
/Packages/com.a3geek.xmlstorage/Runtime/Scripts/XmlData/XmlDataGroup.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using XmlStorage.Data;
3 |
4 | namespace XmlStorage.XmlData
5 | {
6 | [Serializable]
7 | public class XmlDataGroup
8 | {
9 | public string GroupName;
10 | public XmlDataElement[] Elements;
11 |
12 |
13 | public XmlDataGroup() { }
14 |
15 | internal XmlDataGroup(DataGroup group)
16 | {
17 | this.GroupName = group.GroupName;
18 |
19 | var dataElements = group.GetData().GetElements();
20 |
21 | var cnt = 0;
22 | var elements = new XmlDataElement[dataElements.Count];
23 | foreach (var dataElement in dataElements)
24 | {
25 | elements[cnt++] = new XmlDataElement(dataElement);
26 | }
27 |
28 | this.Elements = elements;
29 | }
30 |
31 | internal void LoadToDataGroup(DataGroup group)
32 | {
33 | var data = group.GetData();
34 | foreach (var e in this.Elements)
35 | {
36 | if (e.TryGetDataElementTuple(out var tuple))
37 | {
38 | data.Update(tuple.key, tuple.value, tuple.valueType);
39 | }
40 | }
41 | }
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/Packages/com.a3geek.xmlstorage/Runtime/Scripts/XmlData/XmlDataGroup.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: c3a9a38634f0c9e4ebed7f1bfc8c9b89
--------------------------------------------------------------------------------
/Packages/com.a3geek.xmlstorage/XmlStorage.asmdef:
--------------------------------------------------------------------------------
1 | {
2 | "name": "XmlStorage",
3 | "rootNamespace": "XmlStorage",
4 | "references": [],
5 | "includePlatforms": [],
6 | "excludePlatforms": [],
7 | "allowUnsafeCode": false,
8 | "overrideReferences": false,
9 | "precompiledReferences": [],
10 | "autoReferenced": true,
11 | "defineConstraints": [],
12 | "versionDefines": [],
13 | "noEngineReferences": true
14 | }
--------------------------------------------------------------------------------
/Packages/com.a3geek.xmlstorage/XmlStorage.asmdef.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 8a28b3e3580f52545b3d0c6a47632578
3 | AssemblyDefinitionImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Packages/com.a3geek.xmlstorage/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "com.a3geek.xmlstorage",
3 | "displayName": "XmlStorage",
4 | "version": "8.0.1",
5 | "description": "Provides data saving and loading operations for XML files."
6 | }
--------------------------------------------------------------------------------
/Packages/com.a3geek.xmlstorage/package.json.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: b78ebcd2f4a51c4469d765bbc4bbb593
3 | PackageManifestImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Packages/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "dependencies": {
3 | "com.unity.ide.rider": "3.0.36",
4 | "com.unity.test-framework": "1.4.6",
5 | "com.unity.modules.accessibility": "1.0.0",
6 | "com.unity.modules.ai": "1.0.0",
7 | "com.unity.modules.androidjni": "1.0.0",
8 | "com.unity.modules.animation": "1.0.0",
9 | "com.unity.modules.assetbundle": "1.0.0",
10 | "com.unity.modules.audio": "1.0.0",
11 | "com.unity.modules.cloth": "1.0.0",
12 | "com.unity.modules.director": "1.0.0",
13 | "com.unity.modules.imageconversion": "1.0.0",
14 | "com.unity.modules.imgui": "1.0.0",
15 | "com.unity.modules.jsonserialize": "1.0.0",
16 | "com.unity.modules.particlesystem": "1.0.0",
17 | "com.unity.modules.physics": "1.0.0",
18 | "com.unity.modules.physics2d": "1.0.0",
19 | "com.unity.modules.screencapture": "1.0.0",
20 | "com.unity.modules.terrain": "1.0.0",
21 | "com.unity.modules.terrainphysics": "1.0.0",
22 | "com.unity.modules.tilemap": "1.0.0",
23 | "com.unity.modules.ui": "1.0.0",
24 | "com.unity.modules.uielements": "1.0.0",
25 | "com.unity.modules.umbra": "1.0.0",
26 | "com.unity.modules.unityanalytics": "1.0.0",
27 | "com.unity.modules.unitywebrequest": "1.0.0",
28 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0",
29 | "com.unity.modules.unitywebrequestaudio": "1.0.0",
30 | "com.unity.modules.unitywebrequesttexture": "1.0.0",
31 | "com.unity.modules.unitywebrequestwww": "1.0.0",
32 | "com.unity.modules.vehicles": "1.0.0",
33 | "com.unity.modules.video": "1.0.0",
34 | "com.unity.modules.vr": "1.0.0",
35 | "com.unity.modules.wind": "1.0.0",
36 | "com.unity.modules.xr": "1.0.0"
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/Packages/packages-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "dependencies": {
3 | "com.a3geek.xmlstorage": {
4 | "version": "file:com.a3geek.xmlstorage",
5 | "depth": 0,
6 | "source": "embedded",
7 | "dependencies": {}
8 | },
9 | "com.unity.ext.nunit": {
10 | "version": "2.0.5",
11 | "depth": 1,
12 | "source": "registry",
13 | "dependencies": {},
14 | "url": "https://packages.unity.com"
15 | },
16 | "com.unity.ide.rider": {
17 | "version": "3.0.36",
18 | "depth": 0,
19 | "source": "registry",
20 | "dependencies": {
21 | "com.unity.ext.nunit": "1.0.6"
22 | },
23 | "url": "https://packages.unity.com"
24 | },
25 | "com.unity.test-framework": {
26 | "version": "1.4.6",
27 | "depth": 0,
28 | "source": "registry",
29 | "dependencies": {
30 | "com.unity.ext.nunit": "2.0.3",
31 | "com.unity.modules.imgui": "1.0.0",
32 | "com.unity.modules.jsonserialize": "1.0.0"
33 | },
34 | "url": "https://packages.unity.com"
35 | },
36 | "com.unity.modules.accessibility": {
37 | "version": "1.0.0",
38 | "depth": 0,
39 | "source": "builtin",
40 | "dependencies": {}
41 | },
42 | "com.unity.modules.ai": {
43 | "version": "1.0.0",
44 | "depth": 0,
45 | "source": "builtin",
46 | "dependencies": {}
47 | },
48 | "com.unity.modules.androidjni": {
49 | "version": "1.0.0",
50 | "depth": 0,
51 | "source": "builtin",
52 | "dependencies": {}
53 | },
54 | "com.unity.modules.animation": {
55 | "version": "1.0.0",
56 | "depth": 0,
57 | "source": "builtin",
58 | "dependencies": {}
59 | },
60 | "com.unity.modules.assetbundle": {
61 | "version": "1.0.0",
62 | "depth": 0,
63 | "source": "builtin",
64 | "dependencies": {}
65 | },
66 | "com.unity.modules.audio": {
67 | "version": "1.0.0",
68 | "depth": 0,
69 | "source": "builtin",
70 | "dependencies": {}
71 | },
72 | "com.unity.modules.cloth": {
73 | "version": "1.0.0",
74 | "depth": 0,
75 | "source": "builtin",
76 | "dependencies": {
77 | "com.unity.modules.physics": "1.0.0"
78 | }
79 | },
80 | "com.unity.modules.director": {
81 | "version": "1.0.0",
82 | "depth": 0,
83 | "source": "builtin",
84 | "dependencies": {
85 | "com.unity.modules.audio": "1.0.0",
86 | "com.unity.modules.animation": "1.0.0"
87 | }
88 | },
89 | "com.unity.modules.hierarchycore": {
90 | "version": "1.0.0",
91 | "depth": 1,
92 | "source": "builtin",
93 | "dependencies": {}
94 | },
95 | "com.unity.modules.imageconversion": {
96 | "version": "1.0.0",
97 | "depth": 0,
98 | "source": "builtin",
99 | "dependencies": {}
100 | },
101 | "com.unity.modules.imgui": {
102 | "version": "1.0.0",
103 | "depth": 0,
104 | "source": "builtin",
105 | "dependencies": {}
106 | },
107 | "com.unity.modules.jsonserialize": {
108 | "version": "1.0.0",
109 | "depth": 0,
110 | "source": "builtin",
111 | "dependencies": {}
112 | },
113 | "com.unity.modules.particlesystem": {
114 | "version": "1.0.0",
115 | "depth": 0,
116 | "source": "builtin",
117 | "dependencies": {}
118 | },
119 | "com.unity.modules.physics": {
120 | "version": "1.0.0",
121 | "depth": 0,
122 | "source": "builtin",
123 | "dependencies": {}
124 | },
125 | "com.unity.modules.physics2d": {
126 | "version": "1.0.0",
127 | "depth": 0,
128 | "source": "builtin",
129 | "dependencies": {}
130 | },
131 | "com.unity.modules.screencapture": {
132 | "version": "1.0.0",
133 | "depth": 0,
134 | "source": "builtin",
135 | "dependencies": {
136 | "com.unity.modules.imageconversion": "1.0.0"
137 | }
138 | },
139 | "com.unity.modules.subsystems": {
140 | "version": "1.0.0",
141 | "depth": 1,
142 | "source": "builtin",
143 | "dependencies": {
144 | "com.unity.modules.jsonserialize": "1.0.0"
145 | }
146 | },
147 | "com.unity.modules.terrain": {
148 | "version": "1.0.0",
149 | "depth": 0,
150 | "source": "builtin",
151 | "dependencies": {}
152 | },
153 | "com.unity.modules.terrainphysics": {
154 | "version": "1.0.0",
155 | "depth": 0,
156 | "source": "builtin",
157 | "dependencies": {
158 | "com.unity.modules.physics": "1.0.0",
159 | "com.unity.modules.terrain": "1.0.0"
160 | }
161 | },
162 | "com.unity.modules.tilemap": {
163 | "version": "1.0.0",
164 | "depth": 0,
165 | "source": "builtin",
166 | "dependencies": {
167 | "com.unity.modules.physics2d": "1.0.0"
168 | }
169 | },
170 | "com.unity.modules.ui": {
171 | "version": "1.0.0",
172 | "depth": 0,
173 | "source": "builtin",
174 | "dependencies": {}
175 | },
176 | "com.unity.modules.uielements": {
177 | "version": "1.0.0",
178 | "depth": 0,
179 | "source": "builtin",
180 | "dependencies": {
181 | "com.unity.modules.ui": "1.0.0",
182 | "com.unity.modules.imgui": "1.0.0",
183 | "com.unity.modules.jsonserialize": "1.0.0",
184 | "com.unity.modules.hierarchycore": "1.0.0"
185 | }
186 | },
187 | "com.unity.modules.umbra": {
188 | "version": "1.0.0",
189 | "depth": 0,
190 | "source": "builtin",
191 | "dependencies": {}
192 | },
193 | "com.unity.modules.unityanalytics": {
194 | "version": "1.0.0",
195 | "depth": 0,
196 | "source": "builtin",
197 | "dependencies": {
198 | "com.unity.modules.unitywebrequest": "1.0.0",
199 | "com.unity.modules.jsonserialize": "1.0.0"
200 | }
201 | },
202 | "com.unity.modules.unitywebrequest": {
203 | "version": "1.0.0",
204 | "depth": 0,
205 | "source": "builtin",
206 | "dependencies": {}
207 | },
208 | "com.unity.modules.unitywebrequestassetbundle": {
209 | "version": "1.0.0",
210 | "depth": 0,
211 | "source": "builtin",
212 | "dependencies": {
213 | "com.unity.modules.assetbundle": "1.0.0",
214 | "com.unity.modules.unitywebrequest": "1.0.0"
215 | }
216 | },
217 | "com.unity.modules.unitywebrequestaudio": {
218 | "version": "1.0.0",
219 | "depth": 0,
220 | "source": "builtin",
221 | "dependencies": {
222 | "com.unity.modules.unitywebrequest": "1.0.0",
223 | "com.unity.modules.audio": "1.0.0"
224 | }
225 | },
226 | "com.unity.modules.unitywebrequesttexture": {
227 | "version": "1.0.0",
228 | "depth": 0,
229 | "source": "builtin",
230 | "dependencies": {
231 | "com.unity.modules.unitywebrequest": "1.0.0",
232 | "com.unity.modules.imageconversion": "1.0.0"
233 | }
234 | },
235 | "com.unity.modules.unitywebrequestwww": {
236 | "version": "1.0.0",
237 | "depth": 0,
238 | "source": "builtin",
239 | "dependencies": {
240 | "com.unity.modules.unitywebrequest": "1.0.0",
241 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0",
242 | "com.unity.modules.unitywebrequestaudio": "1.0.0",
243 | "com.unity.modules.audio": "1.0.0",
244 | "com.unity.modules.assetbundle": "1.0.0",
245 | "com.unity.modules.imageconversion": "1.0.0"
246 | }
247 | },
248 | "com.unity.modules.vehicles": {
249 | "version": "1.0.0",
250 | "depth": 0,
251 | "source": "builtin",
252 | "dependencies": {
253 | "com.unity.modules.physics": "1.0.0"
254 | }
255 | },
256 | "com.unity.modules.video": {
257 | "version": "1.0.0",
258 | "depth": 0,
259 | "source": "builtin",
260 | "dependencies": {
261 | "com.unity.modules.audio": "1.0.0",
262 | "com.unity.modules.ui": "1.0.0",
263 | "com.unity.modules.unitywebrequest": "1.0.0"
264 | }
265 | },
266 | "com.unity.modules.vr": {
267 | "version": "1.0.0",
268 | "depth": 0,
269 | "source": "builtin",
270 | "dependencies": {
271 | "com.unity.modules.jsonserialize": "1.0.0",
272 | "com.unity.modules.physics": "1.0.0",
273 | "com.unity.modules.xr": "1.0.0"
274 | }
275 | },
276 | "com.unity.modules.wind": {
277 | "version": "1.0.0",
278 | "depth": 0,
279 | "source": "builtin",
280 | "dependencies": {}
281 | },
282 | "com.unity.modules.xr": {
283 | "version": "1.0.0",
284 | "depth": 0,
285 | "source": "builtin",
286 | "dependencies": {
287 | "com.unity.modules.physics": "1.0.0",
288 | "com.unity.modules.jsonserialize": "1.0.0",
289 | "com.unity.modules.subsystems": "1.0.0"
290 | }
291 | }
292 | }
293 | }
294 |
--------------------------------------------------------------------------------
/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_EnableOutputSuspension: 1
16 | m_SpatializerPlugin:
17 | m_AmbisonicDecoderPlugin:
18 | m_DisableAudio: 0
19 | m_VirtualizeEffects: 1
20 | m_RequestedDSPBufferSize: 0
21 |
--------------------------------------------------------------------------------
/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: 18
7 | m_Gravity: {x: 0, y: -9.81, z: 0}
8 | m_DefaultMaterial: {fileID: 0}
9 | m_BounceThreshold: 2
10 | m_DefaultMaxDepenetrationVelocity: 10
11 | m_SleepThreshold: 0.005
12 | m_DefaultContactOffset: 0.01
13 | m_DefaultSolverIterations: 6
14 | m_DefaultSolverVelocityIterations: 1
15 | m_QueriesHitBackfaces: 0
16 | m_QueriesHitTriggers: 1
17 | m_EnableAdaptiveForce: 0
18 | m_ClothInterCollisionDistance: 0.1
19 | m_ClothInterCollisionStiffness: 0.2
20 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
21 | m_SimulationMode: 0
22 | m_AutoSyncTransforms: 1
23 | m_ReuseCollisionCallbacks: 0
24 | m_InvokeCollisionCallbacks: 1
25 | m_ClothInterCollisionSettingsToggle: 0
26 | m_ClothGravity: {x: 0, y: -9.81, z: 0}
27 | m_ContactPairsMode: 0
28 | m_BroadphaseType: 0
29 | m_FrictionType: 0
30 | m_EnableEnhancedDeterminism: 0
31 | m_ImprovedPatchFriction: 0
32 | m_SolverType: 0
33 | m_DefaultMaxAngularSpeed: 7
34 | m_ScratchBufferChunkCount: 4
35 | m_CurrentBackendId: 4072204805
36 | m_FastMotionThreshold: 3.4028235e+38
37 |
--------------------------------------------------------------------------------
/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 | m_UseUCBPForAssetBundles: 0
10 |
--------------------------------------------------------------------------------
/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: 13
7 | m_SerializationMode: 2
8 | m_LineEndingsForNewScripts: 1
9 | m_DefaultBehaviorMode: 0
10 | m_PrefabRegularEnvironment: {fileID: 0}
11 | m_PrefabUIEnvironment: {fileID: 0}
12 | m_SpritePackerMode: 2
13 | m_SpritePackerCacheSize: 10
14 | m_SpritePackerPaddingPower: 1
15 | m_Bc7TextureCompressor: 0
16 | m_EtcTextureCompressorBehavior: 0
17 | m_EtcTextureFastCompressor: 2
18 | m_EtcTextureNormalCompressor: 2
19 | m_EtcTextureBestCompressor: 5
20 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmref
21 | m_ProjectGenerationRootNamespace:
22 | m_EnableTextureStreamingInEditMode: 1
23 | m_EnableTextureStreamingInPlayMode: 1
24 | m_EnableEditorAsyncCPUTextureLoading: 0
25 | m_AsyncShaderCompilation: 1
26 | m_PrefabModeAllowAutoSave: 1
27 | m_EnterPlayModeOptionsEnabled: 1
28 | m_EnterPlayModeOptions: 0
29 | m_GameObjectNamingDigits: 1
30 | m_GameObjectNamingScheme: 0
31 | m_AssetNamingUsesSpace: 1
32 | m_InspectorUseIMGUIDefaultInspector: 0
33 | m_UseLegacyProbeSampleCount: 1
34 | m_SerializeInlineMappingsOnOneLine: 0
35 | m_DisableCookiesInLightmapper: 1
36 | m_AssetPipelineMode: 1
37 | m_RefreshImportMode: 0
38 | m_CacheServerMode: 0
39 | m_CacheServerEndpoint:
40 | m_CacheServerNamespacePrefix: default
41 | m_CacheServerEnableDownload: 1
42 | m_CacheServerEnableUpload: 1
43 | m_CacheServerEnableAuth: 0
44 | m_CacheServerEnableTls: 0
45 | m_CacheServerValidationMode: 2
46 | m_CacheServerDownloadBatchSize: 128
47 | m_EnableEnlightenBakedGI: 0
48 | m_ReferencedClipsExactNaming: 0
49 |
--------------------------------------------------------------------------------
/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: 16
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_DepthNormals:
17 | m_Mode: 1
18 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0}
19 | m_MotionVectors:
20 | m_Mode: 1
21 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0}
22 | m_LightHalo:
23 | m_Mode: 1
24 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0}
25 | m_LensFlare:
26 | m_Mode: 1
27 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0}
28 | m_VideoShadersIncludeMode: 2
29 | m_AlwaysIncludedShaders:
30 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0}
31 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0}
32 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0}
33 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0}
34 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0}
35 | - {fileID: 10782, guid: 0000000000000000f000000000000000, type: 0}
36 | - {fileID: 17000, guid: 0000000000000000f000000000000000, type: 0}
37 | - {fileID: 16000, guid: 0000000000000000f000000000000000, type: 0}
38 | m_PreloadedShaders: []
39 | m_PreloadShadersBatchTimeLimit: -1
40 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000,
41 | type: 0}
42 | m_CustomRenderPipeline: {fileID: 0}
43 | m_TransparencySortMode: 0
44 | m_TransparencySortAxis: {x: 0, y: 0, z: 1}
45 | m_DefaultRenderingPath: 1
46 | m_DefaultMobileRenderingPath: 1
47 | m_TierSettings: []
48 | m_LightmapStripping: 0
49 | m_FogStripping: 0
50 | m_InstancingStripping: 0
51 | m_BrgStripping: 0
52 | m_LightmapKeepPlain: 1
53 | m_LightmapKeepDirCombined: 1
54 | m_LightmapKeepDynamicPlain: 1
55 | m_LightmapKeepDynamicDirCombined: 1
56 | m_LightmapKeepShadowMask: 1
57 | m_LightmapKeepSubtractive: 1
58 | m_FogKeepLinear: 1
59 | m_FogKeepExp: 1
60 | m_FogKeepExp2: 1
61 | m_AlbedoSwatchInfos: []
62 | m_RenderPipelineGlobalSettingsMap: {}
63 | m_LightsUseLinearIntensity: 0
64 | m_LightsUseColorTemperature: 0
65 | m_LogWhenShaderIsCompiled: 0
66 | m_LightProbeOutsideHullStrategy: 0
67 | m_CameraRelativeLightCulling: 0
68 | m_CameraRelativeShadowCulling: 0
69 |
--------------------------------------------------------------------------------
/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 | m_UsePhysicalKeys: 1
297 |
--------------------------------------------------------------------------------
/ProjectSettings/MemorySettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!387306366 &1
4 | MemorySettings:
5 | m_ObjectHideFlags: 0
6 | m_EditorMemorySettings:
7 | m_MainAllocatorBlockSize: -1
8 | m_ThreadAllocatorBlockSize: -1
9 | m_MainGfxBlockSize: -1
10 | m_ThreadGfxBlockSize: -1
11 | m_CacheBlockSize: -1
12 | m_TypetreeBlockSize: -1
13 | m_ProfilerBlockSize: -1
14 | m_ProfilerEditorBlockSize: -1
15 | m_BucketAllocatorGranularity: -1
16 | m_BucketAllocatorBucketsCount: -1
17 | m_BucketAllocatorBlockSize: -1
18 | m_BucketAllocatorBlockCount: -1
19 | m_ProfilerBucketAllocatorGranularity: -1
20 | m_ProfilerBucketAllocatorBucketsCount: -1
21 | m_ProfilerBucketAllocatorBlockSize: -1
22 | m_ProfilerBucketAllocatorBlockCount: -1
23 | m_TempAllocatorSizeMain: -1
24 | m_JobTempAllocatorBlockSize: -1
25 | m_BackgroundJobTempAllocatorBlockSize: -1
26 | m_JobTempAllocatorReducedBlockSize: -1
27 | m_TempAllocatorSizeGIBakingWorker: -1
28 | m_TempAllocatorSizeNavMeshWorker: -1
29 | m_TempAllocatorSizeAudioWorker: -1
30 | m_TempAllocatorSizeCloudWorker: -1
31 | m_TempAllocatorSizeGfx: -1
32 | m_TempAllocatorSizeJobWorker: -1
33 | m_TempAllocatorSizeBackgroundWorker: -1
34 | m_TempAllocatorSizePreloadManager: -1
35 | m_PlatformMemorySettings: {}
36 |
--------------------------------------------------------------------------------
/ProjectSettings/MultiplayerManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!655991488 &1
4 | MultiplayerManager:
5 | m_ObjectHideFlags: 0
6 | m_EnableMultiplayerRoles: 0
7 | m_StrippingTypes: {}
8 |
--------------------------------------------------------------------------------
/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: 3
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 | buildHeightMesh: 0
88 | maxJobWorkers: 0
89 | preserveTilesOutsideBounds: 0
90 | debug:
91 | m_Flags: 0
92 | m_SettingNames:
93 | - Humanoid
94 |
--------------------------------------------------------------------------------
/ProjectSettings/NetworkManager.asset:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/a3geek/XmlStorage/fb8ef23c71ec044222f5dc0d5d1a1027fd973c6d/ProjectSettings/NetworkManager.asset
--------------------------------------------------------------------------------
/ProjectSettings/PackageManagerSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &1
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 61
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_GameObject: {fileID: 0}
10 | m_Enabled: 1
11 | m_EditorHideFlags: 0
12 | m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0}
13 | m_Name:
14 | m_EditorClassIdentifier:
15 | m_EnablePreReleasePackages: 0
16 | m_EnablePackageDependencies: 0
17 | m_AdvancedSettingsExpanded: 1
18 | m_ScopedRegistriesSettingsExpanded: 1
19 | m_SeeAllPackageVersions: 0
20 | oneTimeWarningShown: 0
21 | m_Registries:
22 | - m_Id: main
23 | m_Name:
24 | m_Url: https://packages.unity.com
25 | m_Scopes: []
26 | m_IsDefault: 1
27 | m_Capabilities: 7
28 | m_UserSelectedRegistryName:
29 | m_UserAddingNewScopedRegistry: 0
30 | m_RegistryInfoDraft:
31 | m_Modified: 0
32 | m_ErrorMessage:
33 | m_UserModificationsInstanceId: -852
34 | m_OriginalInstanceId: -854
35 | m_LoadAssets: 0
36 |
--------------------------------------------------------------------------------
/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: 6
7 | m_Gravity: {x: 0, y: -9.81}
8 | m_DefaultMaterial: {fileID: 0}
9 | m_VelocityIterations: 8
10 | m_PositionIterations: 3
11 | m_BounceThreshold: 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_ContactThreshold: 0
23 | m_JobOptions:
24 | serializedVersion: 2
25 | useMultithreading: 0
26 | useConsistencySorting: 0
27 | m_InterpolationPosesPerJob: 100
28 | m_NewContactsPerJob: 30
29 | m_CollideContactsPerJob: 100
30 | m_ClearFlagsPerJob: 200
31 | m_ClearBodyForcesPerJob: 200
32 | m_SyncDiscreteFixturesPerJob: 50
33 | m_SyncContinuousFixturesPerJob: 50
34 | m_FindNearestContactsPerJob: 100
35 | m_UpdateTriggerContactsPerJob: 100
36 | m_IslandSolverCostThreshold: 100
37 | m_IslandSolverBodyCostScale: 1
38 | m_IslandSolverContactCostScale: 10
39 | m_IslandSolverJointCostScale: 10
40 | m_IslandSolverBodiesPerJob: 50
41 | m_IslandSolverContactsPerJob: 50
42 | m_SimulationMode: 0
43 | m_SimulationLayers:
44 | serializedVersion: 2
45 | m_Bits: 4294967295
46 | m_MaxSubStepCount: 4
47 | m_MinSubStepFPS: 30
48 | m_UseSubStepping: 0
49 | m_UseSubStepContacts: 0
50 | m_QueriesHitTriggers: 1
51 | m_QueriesStartInColliders: 1
52 | m_CallbacksOnDisable: 1
53 | m_ReuseCollisionCallbacks: 1
54 | m_AutoSyncTransforms: 1
55 | m_GizmoOptions: 43
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 | serializedVersion: 2
7 | m_DefaultPresets: {}
8 |
--------------------------------------------------------------------------------
/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: 28
7 | productGUID: 2dc152806377573498376e4281e244f3
8 | AndroidProfiler: 0
9 | AndroidFilterTouchesWhenObscured: 0
10 | AndroidEnableSustainedPerformanceMode: 0
11 | defaultScreenOrientation: 4
12 | targetDevice: 2
13 | useOnDemandResources: 0
14 | accelerometerFrequency: 60
15 | companyName: a3geek
16 | productName: XmlStorage
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: 0
21 | m_ShowUnitySplashLogo: 0
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 | unsupportedMSAAFallback: 0
52 | m_SpriteBatchMaxVertexCount: 65535
53 | m_SpriteBatchVertexThreshold: 300
54 | m_MTRendering: 1
55 | mipStripping: 0
56 | numberOfMipsStripped: 0
57 | numberOfMipsStrippedPerMipmapLimitGroup: {}
58 | m_StackTraceTypes: 010000000100000001000000010000000100000001000000
59 | iosShowActivityIndicatorOnLoading: -1
60 | androidShowActivityIndicatorOnLoading: -1
61 | iosUseCustomAppBackgroundBehavior: 0
62 | allowedAutorotateToPortrait: 1
63 | allowedAutorotateToPortraitUpsideDown: 1
64 | allowedAutorotateToLandscapeRight: 1
65 | allowedAutorotateToLandscapeLeft: 1
66 | useOSAutorotation: 1
67 | use32BitDisplayBuffer: 1
68 | preserveFramebufferAlpha: 0
69 | disableDepthAndStencilBuffers: 0
70 | androidStartInFullscreen: 1
71 | androidRenderOutsideSafeArea: 0
72 | androidUseSwappy: 0
73 | androidBlitType: 0
74 | androidResizeableActivity: 1
75 | androidDefaultWindowWidth: 1920
76 | androidDefaultWindowHeight: 1080
77 | androidMinimumWindowWidth: 400
78 | androidMinimumWindowHeight: 300
79 | androidFullscreenMode: 1
80 | androidAutoRotationBehavior: 1
81 | androidPredictiveBackSupport: 0
82 | androidApplicationEntry: 1
83 | defaultIsNativeResolution: 1
84 | macRetinaSupport: 1
85 | runInBackground: 1
86 | muteOtherAudioSources: 0
87 | Prepare IOS For Recording: 0
88 | Force IOS Speakers When Recording: 0
89 | deferSystemGesturesMode: 0
90 | hideHomeButton: 0
91 | submitAnalytics: 1
92 | usePlayerLog: 1
93 | dedicatedServerOptimizations: 1
94 | bakeCollisionMeshes: 0
95 | forceSingleInstance: 1
96 | useFlipModelSwapchain: 1
97 | resizableWindow: 1
98 | useMacAppStoreValidation: 0
99 | macAppStoreCategory: public.app-category.games
100 | gpuSkinning: 0
101 | meshDeformation: 0
102 | xboxPIXTextureCapture: 0
103 | xboxEnableAvatar: 0
104 | xboxEnableKinect: 0
105 | xboxEnableKinectAutoTracking: 0
106 | xboxEnableFitness: 0
107 | visibleInBackground: 1
108 | allowFullscreenSwitch: 1
109 | fullscreenMode: 1
110 | xboxSpeechDB: 0
111 | xboxEnableHeadOrientation: 0
112 | xboxEnableGuest: 0
113 | xboxEnablePIXSampling: 0
114 | metalFramebufferOnly: 0
115 | xboxOneResolution: 0
116 | xboxOneSResolution: 0
117 | xboxOneXResolution: 3
118 | xboxOneMonoLoggingLevel: 0
119 | xboxOneLoggingLevel: 1
120 | xboxOneDisableEsram: 0
121 | xboxOneEnableTypeOptimization: 0
122 | xboxOnePresentImmediateThreshold: 0
123 | switchQueueCommandMemory: 0
124 | switchQueueControlMemory: 16384
125 | switchQueueComputeMemory: 262144
126 | switchNVNShaderPoolsGranularity: 33554432
127 | switchNVNDefaultPoolsGranularity: 16777216
128 | switchNVNOtherPoolsGranularity: 16777216
129 | switchGpuScratchPoolGranularity: 2097152
130 | switchAllowGpuScratchShrinking: 0
131 | switchNVNMaxPublicTextureIDCount: 0
132 | switchNVNMaxPublicSamplerIDCount: 0
133 | switchMaxWorkerMultiple: 8
134 | switchNVNGraphicsFirmwareMemory: 32
135 | vulkanNumSwapchainBuffers: 3
136 | vulkanEnableSetSRGBWrite: 0
137 | vulkanEnablePreTransform: 0
138 | vulkanEnableLateAcquireNextImage: 0
139 | vulkanEnableCommandBufferRecycling: 1
140 | loadStoreDebugModeEnabled: 0
141 | visionOSBundleVersion: 1.0
142 | tvOSBundleVersion: 1.0
143 | bundleVersion: 1.0
144 | preloadedAssets: []
145 | metroInputSource: 0
146 | wsaTransparentSwapchain: 0
147 | m_HolographicPauseOnTrackingLoss: 1
148 | xboxOneDisableKinectGpuReservation: 0
149 | xboxOneEnable7thCore: 0
150 | vrSettings:
151 | enable360StereoCapture: 0
152 | isWsaHolographicRemotingEnabled: 0
153 | enableFrameTimingStats: 0
154 | enableOpenGLProfilerGPURecorders: 1
155 | allowHDRDisplaySupport: 0
156 | useHDRDisplay: 0
157 | hdrBitDepth: 0
158 | m_ColorGamuts: 00000000
159 | targetPixelDensity: 30
160 | resolutionScalingMode: 0
161 | resetResolutionOnWindowResize: 0
162 | androidSupportedAspectRatio: 1
163 | androidMaxAspectRatio: 2.1
164 | androidMinAspectRatio: 1
165 | applicationIdentifier:
166 | Android: com.Company.ProductName
167 | Standalone: com.a3geek.XmlStorage
168 | Tizen: com.Company.ProductName
169 | iPhone: com.Company.ProductName
170 | tvOS: com.Company.ProductName
171 | buildNumber:
172 | Standalone: 0
173 | VisionOS: 0
174 | iPhone: 0
175 | tvOS: 0
176 | overrideDefaultApplicationIdentifier: 0
177 | AndroidBundleVersionCode: 1
178 | AndroidMinSdkVersion: 23
179 | AndroidTargetSdkVersion: 0
180 | AndroidPreferredInstallLocation: 1
181 | aotOptions:
182 | stripEngineCode: 1
183 | iPhoneStrippingLevel: 0
184 | iPhoneScriptCallOptimization: 0
185 | ForceInternetPermission: 0
186 | ForceSDCardPermission: 0
187 | CreateWallpaper: 0
188 | androidSplitApplicationBinary: 0
189 | keepLoadedShadersAlive: 0
190 | StripUnusedMeshComponents: 0
191 | strictShaderVariantMatching: 0
192 | VertexChannelCompressionMask: 214
193 | iPhoneSdkVersion: 988
194 | iOSSimulatorArchitecture: 0
195 | iOSTargetOSVersionString: 13.0
196 | tvOSSdkVersion: 0
197 | tvOSSimulatorArchitecture: 0
198 | tvOSRequireExtendedGameController: 0
199 | tvOSTargetOSVersionString: 13.0
200 | VisionOSSdkVersion: 0
201 | VisionOSTargetOSVersionString: 1.0
202 | uIPrerenderedIcon: 0
203 | uIRequiresPersistentWiFi: 0
204 | uIRequiresFullScreen: 1
205 | uIStatusBarHidden: 1
206 | uIExitOnSuspend: 0
207 | uIStatusBarStyle: 0
208 | appleTVSplashScreen: {fileID: 0}
209 | appleTVSplashScreen2x: {fileID: 0}
210 | tvOSSmallIconLayers: []
211 | tvOSSmallIconLayers2x: []
212 | tvOSLargeIconLayers: []
213 | tvOSLargeIconLayers2x: []
214 | tvOSTopShelfImageLayers: []
215 | tvOSTopShelfImageLayers2x: []
216 | tvOSTopShelfImageWideLayers: []
217 | tvOSTopShelfImageWideLayers2x: []
218 | iOSLaunchScreenType: 0
219 | iOSLaunchScreenPortrait: {fileID: 0}
220 | iOSLaunchScreenLandscape: {fileID: 0}
221 | iOSLaunchScreenBackgroundColor:
222 | serializedVersion: 2
223 | rgba: 0
224 | iOSLaunchScreenFillPct: 100
225 | iOSLaunchScreenSize: 100
226 | iOSLaunchScreeniPadType: 0
227 | iOSLaunchScreeniPadImage: {fileID: 0}
228 | iOSLaunchScreeniPadBackgroundColor:
229 | serializedVersion: 2
230 | rgba: 0
231 | iOSLaunchScreeniPadFillPct: 100
232 | iOSLaunchScreeniPadSize: 100
233 | iOSLaunchScreenCustomStoryboardPath:
234 | iOSLaunchScreeniPadCustomStoryboardPath:
235 | iOSDeviceRequirements: []
236 | iOSURLSchemes: []
237 | macOSURLSchemes: []
238 | iOSBackgroundModes: 0
239 | iOSMetalForceHardShadows: 0
240 | metalEditorSupport: 1
241 | metalAPIValidation: 1
242 | metalCompileShaderBinary: 0
243 | iOSRenderExtraFrameOnPause: 1
244 | iosCopyPluginsCodeInsteadOfSymlink: 0
245 | appleDeveloperTeamID:
246 | iOSManualSigningProvisioningProfileID:
247 | tvOSManualSigningProvisioningProfileID:
248 | VisionOSManualSigningProvisioningProfileID:
249 | iOSManualSigningProvisioningProfileType: 0
250 | tvOSManualSigningProvisioningProfileType: 0
251 | VisionOSManualSigningProvisioningProfileType: 0
252 | appleEnableAutomaticSigning: 0
253 | iOSRequireARKit: 0
254 | iOSAutomaticallyDetectAndAddCapabilities: 1
255 | appleEnableProMotion: 0
256 | shaderPrecisionModel: 0
257 | clonedFromGUID: 00000000000000000000000000000000
258 | templatePackageId:
259 | templateDefaultScene:
260 | useCustomMainManifest: 0
261 | useCustomLauncherManifest: 0
262 | useCustomMainGradleTemplate: 0
263 | useCustomLauncherGradleManifest: 0
264 | useCustomBaseGradleTemplate: 0
265 | useCustomGradlePropertiesTemplate: 0
266 | useCustomGradleSettingsTemplate: 0
267 | useCustomProguardFile: 0
268 | AndroidTargetArchitectures: 5
269 | AndroidSplashScreenScale: 0
270 | androidSplashScreen: {fileID: 0}
271 | AndroidKeystoreName:
272 | AndroidKeyaliasName:
273 | AndroidEnableArmv9SecurityFeatures: 0
274 | AndroidEnableArm64MTE: 0
275 | AndroidBuildApkPerCpuArchitecture: 0
276 | AndroidTVCompatibility: 1
277 | AndroidIsGame: 1
278 | AndroidEnableTango: 0
279 | androidEnableBanner: 1
280 | androidUseLowAccuracyLocation: 0
281 | androidUseCustomKeystore: 0
282 | m_AndroidBanners:
283 | - width: 320
284 | height: 180
285 | banner: {fileID: 0}
286 | androidGamepadSupportLevel: 0
287 | AndroidMinifyRelease: 0
288 | AndroidMinifyDebug: 0
289 | AndroidValidateAppBundleSize: 1
290 | AndroidAppBundleSizeToValidate: 200
291 | AndroidReportGooglePlayAppDependencies: 1
292 | androidSymbolsSizeThreshold: 800
293 | m_BuildTargetIcons:
294 | - m_BuildTarget:
295 | m_Icons:
296 | - serializedVersion: 2
297 | m_Icon: {fileID: 0}
298 | m_Width: 128
299 | m_Height: 128
300 | m_Kind: 0
301 | m_BuildTargetPlatformIcons: []
302 | m_BuildTargetBatching: []
303 | m_BuildTargetShaderSettings: []
304 | m_BuildTargetGraphicsJobs:
305 | - m_BuildTarget: WindowsStandaloneSupport
306 | m_GraphicsJobs: 0
307 | - m_BuildTarget: MacStandaloneSupport
308 | m_GraphicsJobs: 0
309 | - m_BuildTarget: LinuxStandaloneSupport
310 | m_GraphicsJobs: 0
311 | - m_BuildTarget: AndroidPlayer
312 | m_GraphicsJobs: 0
313 | - m_BuildTarget: iOSSupport
314 | m_GraphicsJobs: 0
315 | - m_BuildTarget: PS4Player
316 | m_GraphicsJobs: 0
317 | - m_BuildTarget: PS5Player
318 | m_GraphicsJobs: 0
319 | - m_BuildTarget: XboxOnePlayer
320 | m_GraphicsJobs: 0
321 | - m_BuildTarget: GameCoreXboxOneSupport
322 | m_GraphicsJobs: 0
323 | - m_BuildTarget: GameCoreScarlettSupport
324 | m_GraphicsJobs: 0
325 | - m_BuildTarget: Switch
326 | m_GraphicsJobs: 0
327 | - m_BuildTarget: WebGLSupport
328 | m_GraphicsJobs: 0
329 | - m_BuildTarget: MetroSupport
330 | m_GraphicsJobs: 0
331 | - m_BuildTarget: AppleTVSupport
332 | m_GraphicsJobs: 0
333 | - m_BuildTarget: VisionOSPlayer
334 | m_GraphicsJobs: 0
335 | - m_BuildTarget: CloudRendering
336 | m_GraphicsJobs: 0
337 | - m_BuildTarget: EmbeddedLinux
338 | m_GraphicsJobs: 0
339 | - m_BuildTarget: QNX
340 | m_GraphicsJobs: 0
341 | - m_BuildTarget: ReservedCFE
342 | m_GraphicsJobs: 0
343 | m_BuildTargetGraphicsJobMode:
344 | - m_BuildTarget: PS4Player
345 | m_GraphicsJobMode: 0
346 | - m_BuildTarget: XboxOnePlayer
347 | m_GraphicsJobMode: 0
348 | m_BuildTargetGraphicsAPIs:
349 | - m_BuildTarget: iOSSupport
350 | m_APIs: 10000000
351 | m_Automatic: 1
352 | - m_BuildTarget: AndroidPlayer
353 | m_APIs: 0b000000
354 | m_Automatic: 0
355 | m_BuildTargetVRSettings:
356 | - m_BuildTarget: Android
357 | m_Enabled: 0
358 | m_Devices:
359 | - Oculus
360 | - m_BuildTarget: Windows Store Apps
361 | m_Enabled: 0
362 | m_Devices: []
363 | - m_BuildTarget: N3DS
364 | m_Enabled: 0
365 | m_Devices: []
366 | - m_BuildTarget: PS3
367 | m_Enabled: 0
368 | m_Devices: []
369 | - m_BuildTarget: PS4
370 | m_Enabled: 0
371 | m_Devices:
372 | - PlayStationVR
373 | - m_BuildTarget: PSM
374 | m_Enabled: 0
375 | m_Devices: []
376 | - m_BuildTarget: PSP2
377 | m_Enabled: 0
378 | m_Devices: []
379 | - m_BuildTarget: SamsungTV
380 | m_Enabled: 0
381 | m_Devices: []
382 | - m_BuildTarget: Standalone
383 | m_Enabled: 0
384 | m_Devices:
385 | - Oculus
386 | - m_BuildTarget: Tizen
387 | m_Enabled: 0
388 | m_Devices: []
389 | - m_BuildTarget: WebGL
390 | m_Enabled: 0
391 | m_Devices: []
392 | - m_BuildTarget: WebPlayer
393 | m_Enabled: 0
394 | m_Devices: []
395 | - m_BuildTarget: WiiU
396 | m_Enabled: 0
397 | m_Devices: []
398 | - m_BuildTarget: Xbox360
399 | m_Enabled: 0
400 | m_Devices: []
401 | - m_BuildTarget: XboxOne
402 | m_Enabled: 0
403 | m_Devices: []
404 | - m_BuildTarget: iPhone
405 | m_Enabled: 0
406 | m_Devices: []
407 | - m_BuildTarget: tvOS
408 | m_Enabled: 0
409 | m_Devices: []
410 | m_DefaultShaderChunkSizeInMB: 16
411 | m_DefaultShaderChunkCount: 0
412 | openGLRequireES31: 0
413 | openGLRequireES31AEP: 0
414 | openGLRequireES32: 0
415 | m_TemplateCustomTags: {}
416 | mobileMTRendering:
417 | iPhone: 1
418 | tvOS: 1
419 | m_BuildTargetGroupLightmapEncodingQuality:
420 | - serializedVersion: 2
421 | m_BuildTarget: Standalone
422 | m_EncodingQuality: 1
423 | - serializedVersion: 2
424 | m_BuildTarget: XboxOne
425 | m_EncodingQuality: 1
426 | - serializedVersion: 2
427 | m_BuildTarget: PS4
428 | m_EncodingQuality: 1
429 | m_BuildTargetGroupLightmapSettings: []
430 | m_BuildTargetGroupLoadStoreDebugModeSettings: []
431 | m_BuildTargetNormalMapEncoding: []
432 | m_BuildTargetDefaultTextureCompressionFormat: []
433 | playModeTestRunnerEnabled: 0
434 | runPlayModeTestAsEditModeTest: 0
435 | actionOnDotNetUnhandledException: 1
436 | editorGfxJobOverride: 1
437 | enableInternalProfiler: 0
438 | logObjCUncaughtExceptions: 1
439 | enableCrashReportAPI: 0
440 | cameraUsageDescription:
441 | locationUsageDescription:
442 | microphoneUsageDescription:
443 | bluetoothUsageDescription:
444 | macOSTargetOSVersion: 11.0
445 | switchNMETAOverride:
446 | switchNetLibKey:
447 | switchSocketMemoryPoolSize: 6144
448 | switchSocketAllocatorPoolSize: 128
449 | switchSocketConcurrencyLimit: 14
450 | switchScreenResolutionBehavior: 2
451 | switchUseCPUProfiler: 0
452 | switchEnableFileSystemTrace: 0
453 | switchLTOSetting: 0
454 | switchApplicationID: 0x01004b9000490000
455 | switchNSODependencies:
456 | switchCompilerFlags:
457 | switchTitleNames_0:
458 | switchTitleNames_1:
459 | switchTitleNames_2:
460 | switchTitleNames_3:
461 | switchTitleNames_4:
462 | switchTitleNames_5:
463 | switchTitleNames_6:
464 | switchTitleNames_7:
465 | switchTitleNames_8:
466 | switchTitleNames_9:
467 | switchTitleNames_10:
468 | switchTitleNames_11:
469 | switchTitleNames_12:
470 | switchTitleNames_13:
471 | switchTitleNames_14:
472 | switchTitleNames_15:
473 | switchPublisherNames_0:
474 | switchPublisherNames_1:
475 | switchPublisherNames_2:
476 | switchPublisherNames_3:
477 | switchPublisherNames_4:
478 | switchPublisherNames_5:
479 | switchPublisherNames_6:
480 | switchPublisherNames_7:
481 | switchPublisherNames_8:
482 | switchPublisherNames_9:
483 | switchPublisherNames_10:
484 | switchPublisherNames_11:
485 | switchPublisherNames_12:
486 | switchPublisherNames_13:
487 | switchPublisherNames_14:
488 | switchPublisherNames_15:
489 | switchIcons_0: {fileID: 0}
490 | switchIcons_1: {fileID: 0}
491 | switchIcons_2: {fileID: 0}
492 | switchIcons_3: {fileID: 0}
493 | switchIcons_4: {fileID: 0}
494 | switchIcons_5: {fileID: 0}
495 | switchIcons_6: {fileID: 0}
496 | switchIcons_7: {fileID: 0}
497 | switchIcons_8: {fileID: 0}
498 | switchIcons_9: {fileID: 0}
499 | switchIcons_10: {fileID: 0}
500 | switchIcons_11: {fileID: 0}
501 | switchIcons_12: {fileID: 0}
502 | switchIcons_13: {fileID: 0}
503 | switchIcons_14: {fileID: 0}
504 | switchIcons_15: {fileID: 0}
505 | switchSmallIcons_0: {fileID: 0}
506 | switchSmallIcons_1: {fileID: 0}
507 | switchSmallIcons_2: {fileID: 0}
508 | switchSmallIcons_3: {fileID: 0}
509 | switchSmallIcons_4: {fileID: 0}
510 | switchSmallIcons_5: {fileID: 0}
511 | switchSmallIcons_6: {fileID: 0}
512 | switchSmallIcons_7: {fileID: 0}
513 | switchSmallIcons_8: {fileID: 0}
514 | switchSmallIcons_9: {fileID: 0}
515 | switchSmallIcons_10: {fileID: 0}
516 | switchSmallIcons_11: {fileID: 0}
517 | switchSmallIcons_12: {fileID: 0}
518 | switchSmallIcons_13: {fileID: 0}
519 | switchSmallIcons_14: {fileID: 0}
520 | switchSmallIcons_15: {fileID: 0}
521 | switchManualHTML:
522 | switchAccessibleURLs:
523 | switchLegalInformation:
524 | switchMainThreadStackSize: 1048576
525 | switchPresenceGroupId:
526 | switchLogoHandling: 0
527 | switchReleaseVersion: 0
528 | switchDisplayVersion: 1.0.0
529 | switchStartupUserAccount: 0
530 | switchSupportedLanguagesMask: 0
531 | switchLogoType: 0
532 | switchApplicationErrorCodeCategory:
533 | switchUserAccountSaveDataSize: 0
534 | switchUserAccountSaveDataJournalSize: 0
535 | switchApplicationAttribute: 0
536 | switchCardSpecSize: -1
537 | switchCardSpecClock: -1
538 | switchRatingsMask: 0
539 | switchRatingsInt_0: 0
540 | switchRatingsInt_1: 0
541 | switchRatingsInt_2: 0
542 | switchRatingsInt_3: 0
543 | switchRatingsInt_4: 0
544 | switchRatingsInt_5: 0
545 | switchRatingsInt_6: 0
546 | switchRatingsInt_7: 0
547 | switchRatingsInt_8: 0
548 | switchRatingsInt_9: 0
549 | switchRatingsInt_10: 0
550 | switchRatingsInt_11: 0
551 | switchRatingsInt_12: 0
552 | switchLocalCommunicationIds_0:
553 | switchLocalCommunicationIds_1:
554 | switchLocalCommunicationIds_2:
555 | switchLocalCommunicationIds_3:
556 | switchLocalCommunicationIds_4:
557 | switchLocalCommunicationIds_5:
558 | switchLocalCommunicationIds_6:
559 | switchLocalCommunicationIds_7:
560 | switchParentalControl: 0
561 | switchAllowsScreenshot: 1
562 | switchAllowsVideoCapturing: 1
563 | switchAllowsRuntimeAddOnContentInstall: 0
564 | switchDataLossConfirmation: 0
565 | switchUserAccountLockEnabled: 0
566 | switchSystemResourceMemory: 16777216
567 | switchSupportedNpadStyles: 3
568 | switchNativeFsCacheSize: 32
569 | switchIsHoldTypeHorizontal: 0
570 | switchSupportedNpadCount: 8
571 | switchEnableTouchScreen: 1
572 | switchSocketConfigEnabled: 0
573 | switchTcpInitialSendBufferSize: 32
574 | switchTcpInitialReceiveBufferSize: 64
575 | switchTcpAutoSendBufferSizeMax: 256
576 | switchTcpAutoReceiveBufferSizeMax: 256
577 | switchUdpSendBufferSize: 9
578 | switchUdpReceiveBufferSize: 42
579 | switchSocketBufferEfficiency: 4
580 | switchSocketInitializeEnabled: 1
581 | switchNetworkInterfaceManagerInitializeEnabled: 1
582 | switchDisableHTCSPlayerConnection: 0
583 | switchUseNewStyleFilepaths: 1
584 | switchUseLegacyFmodPriorities: 0
585 | switchUseMicroSleepForYield: 1
586 | switchEnableRamDiskSupport: 0
587 | switchMicroSleepForYieldTime: 25
588 | switchRamDiskSpaceSize: 12
589 | switchUpgradedPlayerSettingsToNMETA: 0
590 | ps4NPAgeRating: 12
591 | ps4NPTitleSecret:
592 | ps4NPTrophyPackPath:
593 | ps4ParentalLevel: 1
594 | ps4ContentID: ED1633-NPXX51362_00-0000000000000000
595 | ps4Category: 0
596 | ps4MasterVersion: 01.00
597 | ps4AppVersion: 01.00
598 | ps4AppType: 0
599 | ps4ParamSfxPath:
600 | ps4VideoOutPixelFormat: 0
601 | ps4VideoOutInitialWidth: 1920
602 | ps4VideoOutBaseModeInitialWidth: 1920
603 | ps4VideoOutReprojectionRate: 120
604 | ps4PronunciationXMLPath:
605 | ps4PronunciationSIGPath:
606 | ps4BackgroundImagePath:
607 | ps4StartupImagePath:
608 | ps4StartupImagesFolder:
609 | ps4IconImagesFolder:
610 | ps4SaveDataImagePath:
611 | ps4SdkOverride:
612 | ps4BGMPath:
613 | ps4ShareFilePath:
614 | ps4ShareOverlayImagePath:
615 | ps4PrivacyGuardImagePath:
616 | ps4ExtraSceSysFile:
617 | ps4NPtitleDatPath:
618 | ps4RemotePlayKeyAssignment: -1
619 | ps4RemotePlayKeyMappingDir:
620 | ps4PlayTogetherPlayerCount: 0
621 | ps4EnterButtonAssignment: 1
622 | ps4ApplicationParam1: 0
623 | ps4ApplicationParam2: 0
624 | ps4ApplicationParam3: 0
625 | ps4ApplicationParam4: 0
626 | ps4DownloadDataSize: 0
627 | ps4GarlicHeapSize: 2048
628 | ps4ProGarlicHeapSize: 2560
629 | playerPrefsMaxSize: 32768
630 | ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ
631 | ps4pnSessions: 1
632 | ps4pnPresence: 1
633 | ps4pnFriends: 1
634 | ps4pnGameCustomData: 1
635 | playerPrefsSupport: 0
636 | enableApplicationExit: 0
637 | resetTempFolder: 1
638 | restrictedAudioUsageRights: 0
639 | ps4UseResolutionFallback: 0
640 | ps4ReprojectionSupport: 0
641 | ps4UseAudio3dBackend: 0
642 | ps4UseLowGarlicFragmentationMode: 1
643 | ps4SocialScreenEnabled: 0
644 | ps4ScriptOptimizationLevel: 3
645 | ps4Audio3dVirtualSpeakerCount: 14
646 | ps4attribCpuUsage: 0
647 | ps4PatchPkgPath:
648 | ps4PatchLatestPkgPath:
649 | ps4PatchChangeinfoPath:
650 | ps4PatchDayOne: 0
651 | ps4attribUserManagement: 0
652 | ps4attribMoveSupport: 0
653 | ps4attrib3DSupport: 0
654 | ps4attribShareSupport: 0
655 | ps4attribExclusiveVR: 0
656 | ps4disableAutoHideSplash: 0
657 | ps4videoRecordingFeaturesUsed: 0
658 | ps4contentSearchFeaturesUsed: 0
659 | ps4CompatibilityPS5: 0
660 | ps4AllowPS5Detection: 0
661 | ps4GPU800MHz: 1
662 | ps4attribEyeToEyeDistanceSettingVR: 0
663 | ps4IncludedModules: []
664 | ps4attribVROutputEnabled: 0
665 | monoEnv:
666 | splashScreenBackgroundSourceLandscape: {fileID: 0}
667 | splashScreenBackgroundSourcePortrait: {fileID: 0}
668 | blurSplashScreenBackground: 1
669 | spritePackerPolicy:
670 | webGLMemorySize: 256
671 | webGLExceptionSupport: 1
672 | webGLNameFilesAsHashes: 0
673 | webGLShowDiagnostics: 0
674 | webGLDataCaching: 0
675 | webGLDebugSymbols: 0
676 | webGLEmscriptenArgs:
677 | webGLModulesDirectory:
678 | webGLTemplate: APPLICATION:Default
679 | webGLAnalyzeBuildSize: 0
680 | webGLUseEmbeddedResources: 0
681 | webGLCompressionFormat: 1
682 | webGLWasmArithmeticExceptions: 0
683 | webGLLinkerTarget: 0
684 | webGLThreadsSupport: 0
685 | webGLDecompressionFallback: 0
686 | webGLInitialMemorySize: 32
687 | webGLMaximumMemorySize: 2048
688 | webGLMemoryGrowthMode: 2
689 | webGLMemoryLinearGrowthStep: 16
690 | webGLMemoryGeometricGrowthStep: 0.2
691 | webGLMemoryGeometricGrowthCap: 96
692 | webGLEnableWebGPU: 0
693 | webGLPowerPreference: 2
694 | webGLWebAssemblyTable: 0
695 | webGLWebAssemblyBigInt: 0
696 | webGLCloseOnQuit: 0
697 | webWasm2023: 0
698 | scriptingDefineSymbols: {}
699 | additionalCompilerArguments: {}
700 | platformArchitecture:
701 | iPhone: 1
702 | scriptingBackend:
703 | Android: 0
704 | Standalone: 0
705 | WP8: 2
706 | WebGL: 1
707 | WebPlayer: 0
708 | Windows Store Apps: 2
709 | iPhone: 1
710 | il2cppCompilerConfiguration: {}
711 | il2cppCodeGeneration: {}
712 | il2cppStacktraceInformation: {}
713 | managedStrippingLevel:
714 | Android: 1
715 | EmbeddedLinux: 1
716 | GameCoreScarlett: 1
717 | GameCoreXboxOne: 1
718 | Nintendo Switch: 1
719 | PS4: 1
720 | PS5: 1
721 | QNX: 1
722 | ReservedCFE: 1
723 | VisionOS: 1
724 | WebGL: 1
725 | Windows Store Apps: 1
726 | XboxOne: 1
727 | iPhone: 1
728 | tvOS: 1
729 | incrementalIl2cppBuild:
730 | iPhone: 0
731 | suppressCommonWarnings: 1
732 | allowUnsafeCode: 0
733 | useDeterministicCompilation: 1
734 | additionalIl2CppArgs:
735 | scriptingRuntimeVersion: 1
736 | gcIncremental: 1
737 | gcWBarrierValidation: 0
738 | apiCompatibilityLevelPerPlatform:
739 | Standalone: 6
740 | editorAssembliesCompatibilityLevel: 2
741 | m_RenderingPath: 1
742 | m_MobileRenderingPath: 1
743 | metroPackageName: XmlSaver
744 | metroPackageVersion:
745 | metroCertificatePath:
746 | metroCertificatePassword:
747 | metroCertificateSubject:
748 | metroCertificateIssuer:
749 | metroCertificateNotAfter: 0000000000000000
750 | metroApplicationDescription: XmlSaver
751 | wsaImages: {}
752 | metroTileShortName:
753 | metroTileShowName: 0
754 | metroMediumTileShowName: 0
755 | metroLargeTileShowName: 0
756 | metroWideTileShowName: 0
757 | metroSupportStreamingInstall: 0
758 | metroLastRequiredScene: 0
759 | metroDefaultTileSize: 1
760 | metroTileForegroundText: 1
761 | metroTileBackgroundColor: {r: 0, g: 0, b: 0, a: 1}
762 | metroSplashScreenBackgroundColor: {r: 0, g: 0, b: 0, a: 1}
763 | metroSplashScreenUseBackgroundColor: 0
764 | syncCapabilities: 0
765 | platformCapabilities: {}
766 | metroTargetDeviceFamilies: {}
767 | metroFTAName:
768 | metroFTAFileTypes: []
769 | metroProtocolName:
770 | vcxProjDefaultLanguage:
771 | XboxOneProductId:
772 | XboxOneUpdateKey:
773 | XboxOneSandboxId:
774 | XboxOneContentId:
775 | XboxOneTitleId:
776 | XboxOneSCId:
777 | XboxOneGameOsOverridePath:
778 | XboxOnePackagingOverridePath:
779 | XboxOneAppManifestOverridePath:
780 | XboxOneVersion: 1.0.0.0
781 | XboxOnePackageEncryption: 0
782 | XboxOnePackageUpdateGranularity: 2
783 | XboxOneDescription:
784 | XboxOneLanguage:
785 | - enus
786 | XboxOneCapability: []
787 | XboxOneGameRating: {}
788 | XboxOneIsContentPackage: 0
789 | XboxOneEnhancedXboxCompatibilityMode: 0
790 | XboxOneEnableGPUVariability: 0
791 | XboxOneSockets: {}
792 | XboxOneSplashScreen: {fileID: 0}
793 | XboxOneAllowedProductIds: []
794 | XboxOnePersistentLocalStorageSize: 0
795 | XboxOneXTitleMemory: 8
796 | XboxOneOverrideIdentityName:
797 | XboxOneOverrideIdentityPublisher:
798 | vrEditorSettings: {}
799 | cloudServicesEnabled:
800 | Analytics: 0
801 | Build: 0
802 | Collab: 0
803 | ErrorHub: 0
804 | Game_Performance: 0
805 | Hub: 0
806 | Purchasing: 0
807 | UNet: 0
808 | Unity_Ads: 0
809 | luminIcon:
810 | m_Name:
811 | m_ModelFolderPath:
812 | m_PortalFolderPath:
813 | luminCert:
814 | m_CertPath:
815 | m_SignPackage: 1
816 | luminIsChannelApp: 0
817 | luminVersion:
818 | m_VersionCode: 1
819 | m_VersionName:
820 | hmiPlayerDataPath:
821 | hmiForceSRGBBlit: 0
822 | embeddedLinuxEnableGamepadInput: 0
823 | hmiCpuConfiguration:
824 | hmiLogStartupTiming: 0
825 | qnxGraphicConfPath:
826 | apiCompatibilityLevel: 3
827 | captureStartupLogs: {}
828 | activeInputHandler: 0
829 | windowsGamepadBackendHint: 0
830 | cloudProjectId:
831 | framebufferDepthMemorylessMode: 0
832 | qualitySettingsNames: []
833 | projectName:
834 | organizationId:
835 | cloudEnabled: 0
836 | legacyClampBlendShapeWeights: 1
837 | hmiLoadingImage: {fileID: 0}
838 | platformRequiresReadableAssets: 0
839 | virtualTexturingSupportEnabled: 0
840 | insecureHttpOption: 0
841 | androidVulkanDenyFilterList: []
842 | androidVulkanAllowFilterList: []
843 |
--------------------------------------------------------------------------------
/ProjectSettings/ProjectVersion.txt:
--------------------------------------------------------------------------------
1 | m_EditorVersion: 6000.0.41f1
2 | m_EditorVersionWithRevision: 6000.0.41f1 (46e447368a18)
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: 4
10 | name: Fastest
11 | pixelLightCount: 0
12 | shadows: 0
13 | shadowResolution: 0
14 | shadowProjection: 1
15 | shadowCascades: 1
16 | shadowDistance: 15
17 | shadowNearPlaneOffset: 2
18 | shadowCascade2Split: 0.33333334
19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
20 | shadowmaskMode: 0
21 | skinWeights: 1
22 | globalTextureMipmapLimit: 1
23 | textureMipmapLimitSettings: []
24 | anisotropicTextures: 0
25 | antiAliasing: 0
26 | softParticles: 0
27 | softVegetation: 0
28 | realtimeReflectionProbes: 0
29 | billboardsFaceCameraPosition: 0
30 | useLegacyDetailDistribution: 1
31 | adaptiveVsync: 0
32 | vSyncCount: 0
33 | realtimeGICPUUsage: 25
34 | adaptiveVsyncExtraA: 0
35 | adaptiveVsyncExtraB: 0
36 | lodBias: 0.3
37 | maximumLODLevel: 0
38 | enableLODCrossFade: 1
39 | streamingMipmapsActive: 0
40 | streamingMipmapsAddAllCameras: 1
41 | streamingMipmapsMemoryBudget: 512
42 | streamingMipmapsRenderersPerFrame: 512
43 | streamingMipmapsMaxLevelReduction: 2
44 | streamingMipmapsMaxFileIORequests: 1024
45 | particleRaycastBudget: 4
46 | asyncUploadTimeSlice: 2
47 | asyncUploadBufferSize: 16
48 | asyncUploadPersistentBuffer: 1
49 | resolutionScalingFixedDPIFactor: 1
50 | customRenderPipeline: {fileID: 0}
51 | terrainQualityOverrides: 0
52 | terrainPixelError: 1
53 | terrainDetailDensityScale: 1
54 | terrainBasemapDistance: 1000
55 | terrainDetailDistance: 80
56 | terrainTreeDistance: 5000
57 | terrainBillboardStart: 50
58 | terrainFadeLength: 5
59 | terrainMaxTrees: 50
60 | excludedTargetPlatforms: []
61 | - serializedVersion: 4
62 | name: Fast
63 | pixelLightCount: 0
64 | shadows: 0
65 | shadowResolution: 0
66 | shadowProjection: 1
67 | shadowCascades: 1
68 | shadowDistance: 20
69 | shadowNearPlaneOffset: 2
70 | shadowCascade2Split: 0.33333334
71 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
72 | shadowmaskMode: 0
73 | skinWeights: 2
74 | globalTextureMipmapLimit: 0
75 | textureMipmapLimitSettings: []
76 | anisotropicTextures: 0
77 | antiAliasing: 0
78 | softParticles: 0
79 | softVegetation: 0
80 | realtimeReflectionProbes: 0
81 | billboardsFaceCameraPosition: 0
82 | useLegacyDetailDistribution: 1
83 | adaptiveVsync: 0
84 | vSyncCount: 0
85 | realtimeGICPUUsage: 25
86 | adaptiveVsyncExtraA: 0
87 | adaptiveVsyncExtraB: 0
88 | lodBias: 0.4
89 | maximumLODLevel: 0
90 | enableLODCrossFade: 1
91 | streamingMipmapsActive: 0
92 | streamingMipmapsAddAllCameras: 1
93 | streamingMipmapsMemoryBudget: 512
94 | streamingMipmapsRenderersPerFrame: 512
95 | streamingMipmapsMaxLevelReduction: 2
96 | streamingMipmapsMaxFileIORequests: 1024
97 | particleRaycastBudget: 16
98 | asyncUploadTimeSlice: 2
99 | asyncUploadBufferSize: 16
100 | asyncUploadPersistentBuffer: 1
101 | resolutionScalingFixedDPIFactor: 1
102 | customRenderPipeline: {fileID: 0}
103 | terrainQualityOverrides: 0
104 | terrainPixelError: 1
105 | terrainDetailDensityScale: 1
106 | terrainBasemapDistance: 1000
107 | terrainDetailDistance: 80
108 | terrainTreeDistance: 5000
109 | terrainBillboardStart: 50
110 | terrainFadeLength: 5
111 | terrainMaxTrees: 50
112 | excludedTargetPlatforms: []
113 | - serializedVersion: 4
114 | name: Simple
115 | pixelLightCount: 1
116 | shadows: 1
117 | shadowResolution: 0
118 | shadowProjection: 1
119 | shadowCascades: 1
120 | shadowDistance: 20
121 | shadowNearPlaneOffset: 2
122 | shadowCascade2Split: 0.33333334
123 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
124 | shadowmaskMode: 0
125 | skinWeights: 2
126 | globalTextureMipmapLimit: 0
127 | textureMipmapLimitSettings: []
128 | anisotropicTextures: 1
129 | antiAliasing: 0
130 | softParticles: 0
131 | softVegetation: 0
132 | realtimeReflectionProbes: 0
133 | billboardsFaceCameraPosition: 0
134 | useLegacyDetailDistribution: 1
135 | adaptiveVsync: 0
136 | vSyncCount: 0
137 | realtimeGICPUUsage: 25
138 | adaptiveVsyncExtraA: 0
139 | adaptiveVsyncExtraB: 0
140 | lodBias: 0.7
141 | maximumLODLevel: 0
142 | enableLODCrossFade: 1
143 | streamingMipmapsActive: 0
144 | streamingMipmapsAddAllCameras: 1
145 | streamingMipmapsMemoryBudget: 512
146 | streamingMipmapsRenderersPerFrame: 512
147 | streamingMipmapsMaxLevelReduction: 2
148 | streamingMipmapsMaxFileIORequests: 1024
149 | particleRaycastBudget: 64
150 | asyncUploadTimeSlice: 2
151 | asyncUploadBufferSize: 16
152 | asyncUploadPersistentBuffer: 1
153 | resolutionScalingFixedDPIFactor: 1
154 | customRenderPipeline: {fileID: 0}
155 | terrainQualityOverrides: 0
156 | terrainPixelError: 1
157 | terrainDetailDensityScale: 1
158 | terrainBasemapDistance: 1000
159 | terrainDetailDistance: 80
160 | terrainTreeDistance: 5000
161 | terrainBillboardStart: 50
162 | terrainFadeLength: 5
163 | terrainMaxTrees: 50
164 | excludedTargetPlatforms: []
165 | - serializedVersion: 4
166 | name: Good
167 | pixelLightCount: 2
168 | shadows: 2
169 | shadowResolution: 1
170 | shadowProjection: 1
171 | shadowCascades: 2
172 | shadowDistance: 40
173 | shadowNearPlaneOffset: 2
174 | shadowCascade2Split: 0.33333334
175 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
176 | shadowmaskMode: 1
177 | skinWeights: 2
178 | globalTextureMipmapLimit: 0
179 | textureMipmapLimitSettings: []
180 | anisotropicTextures: 1
181 | antiAliasing: 0
182 | softParticles: 0
183 | softVegetation: 1
184 | realtimeReflectionProbes: 1
185 | billboardsFaceCameraPosition: 1
186 | useLegacyDetailDistribution: 1
187 | adaptiveVsync: 0
188 | vSyncCount: 1
189 | realtimeGICPUUsage: 50
190 | adaptiveVsyncExtraA: 0
191 | adaptiveVsyncExtraB: 0
192 | lodBias: 1
193 | maximumLODLevel: 0
194 | enableLODCrossFade: 1
195 | streamingMipmapsActive: 0
196 | streamingMipmapsAddAllCameras: 1
197 | streamingMipmapsMemoryBudget: 512
198 | streamingMipmapsRenderersPerFrame: 512
199 | streamingMipmapsMaxLevelReduction: 2
200 | streamingMipmapsMaxFileIORequests: 1024
201 | particleRaycastBudget: 256
202 | asyncUploadTimeSlice: 2
203 | asyncUploadBufferSize: 16
204 | asyncUploadPersistentBuffer: 1
205 | resolutionScalingFixedDPIFactor: 1
206 | customRenderPipeline: {fileID: 0}
207 | terrainQualityOverrides: 0
208 | terrainPixelError: 1
209 | terrainDetailDensityScale: 1
210 | terrainBasemapDistance: 1000
211 | terrainDetailDistance: 80
212 | terrainTreeDistance: 5000
213 | terrainBillboardStart: 50
214 | terrainFadeLength: 5
215 | terrainMaxTrees: 50
216 | excludedTargetPlatforms: []
217 | - serializedVersion: 4
218 | name: Beautiful
219 | pixelLightCount: 3
220 | shadows: 2
221 | shadowResolution: 2
222 | shadowProjection: 1
223 | shadowCascades: 2
224 | shadowDistance: 70
225 | shadowNearPlaneOffset: 2
226 | shadowCascade2Split: 0.33333334
227 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
228 | shadowmaskMode: 1
229 | skinWeights: 4
230 | globalTextureMipmapLimit: 0
231 | textureMipmapLimitSettings: []
232 | anisotropicTextures: 2
233 | antiAliasing: 2
234 | softParticles: 1
235 | softVegetation: 1
236 | realtimeReflectionProbes: 1
237 | billboardsFaceCameraPosition: 1
238 | useLegacyDetailDistribution: 1
239 | adaptiveVsync: 0
240 | vSyncCount: 1
241 | realtimeGICPUUsage: 50
242 | adaptiveVsyncExtraA: 0
243 | adaptiveVsyncExtraB: 0
244 | lodBias: 1.5
245 | maximumLODLevel: 0
246 | enableLODCrossFade: 1
247 | streamingMipmapsActive: 0
248 | streamingMipmapsAddAllCameras: 1
249 | streamingMipmapsMemoryBudget: 512
250 | streamingMipmapsRenderersPerFrame: 512
251 | streamingMipmapsMaxLevelReduction: 2
252 | streamingMipmapsMaxFileIORequests: 1024
253 | particleRaycastBudget: 1024
254 | asyncUploadTimeSlice: 2
255 | asyncUploadBufferSize: 16
256 | asyncUploadPersistentBuffer: 1
257 | resolutionScalingFixedDPIFactor: 1
258 | customRenderPipeline: {fileID: 0}
259 | terrainQualityOverrides: 0
260 | terrainPixelError: 1
261 | terrainDetailDensityScale: 1
262 | terrainBasemapDistance: 1000
263 | terrainDetailDistance: 80
264 | terrainTreeDistance: 5000
265 | terrainBillboardStart: 50
266 | terrainFadeLength: 5
267 | terrainMaxTrees: 50
268 | excludedTargetPlatforms: []
269 | - serializedVersion: 4
270 | name: Fantastic
271 | pixelLightCount: 4
272 | shadows: 2
273 | shadowResolution: 2
274 | shadowProjection: 1
275 | shadowCascades: 4
276 | shadowDistance: 150
277 | shadowNearPlaneOffset: 2
278 | shadowCascade2Split: 0.33333334
279 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
280 | shadowmaskMode: 1
281 | skinWeights: 4
282 | globalTextureMipmapLimit: 0
283 | textureMipmapLimitSettings: []
284 | anisotropicTextures: 2
285 | antiAliasing: 2
286 | softParticles: 1
287 | softVegetation: 1
288 | realtimeReflectionProbes: 1
289 | billboardsFaceCameraPosition: 1
290 | useLegacyDetailDistribution: 1
291 | adaptiveVsync: 0
292 | vSyncCount: 1
293 | realtimeGICPUUsage: 100
294 | adaptiveVsyncExtraA: 0
295 | adaptiveVsyncExtraB: 0
296 | lodBias: 2
297 | maximumLODLevel: 0
298 | enableLODCrossFade: 1
299 | streamingMipmapsActive: 0
300 | streamingMipmapsAddAllCameras: 1
301 | streamingMipmapsMemoryBudget: 512
302 | streamingMipmapsRenderersPerFrame: 512
303 | streamingMipmapsMaxLevelReduction: 2
304 | streamingMipmapsMaxFileIORequests: 1024
305 | particleRaycastBudget: 4096
306 | asyncUploadTimeSlice: 2
307 | asyncUploadBufferSize: 16
308 | asyncUploadPersistentBuffer: 1
309 | resolutionScalingFixedDPIFactor: 1
310 | customRenderPipeline: {fileID: 0}
311 | terrainQualityOverrides: 0
312 | terrainPixelError: 1
313 | terrainDetailDensityScale: 1
314 | terrainBasemapDistance: 1000
315 | terrainDetailDistance: 80
316 | terrainTreeDistance: 5000
317 | terrainBillboardStart: 50
318 | terrainFadeLength: 5
319 | terrainMaxTrees: 50
320 | excludedTargetPlatforms: []
321 | m_TextureMipmapLimitGroupNames: []
322 | m_PerPlatformDefaultQuality:
323 | Android: 2
324 | BlackBerry: 2
325 | GLES Emulation: 5
326 | Nintendo 3DS: 5
327 | PS3: 5
328 | PS4: 5
329 | PSM: 5
330 | PSP2: 2
331 | Samsung TV: 2
332 | Standalone: 5
333 | Tizen: 2
334 | WP8: 5
335 | Web: 5
336 | WebGL: 3
337 | Wii U: 5
338 | Windows Store Apps: 5
339 | XBOX360: 5
340 | XboxOne: 5
341 | iPhone: 2
342 |
--------------------------------------------------------------------------------
/ProjectSettings/SceneTemplateSettings.json:
--------------------------------------------------------------------------------
1 | {
2 | "templatePinStates": [],
3 | "dependencyTypeInfos": [
4 | {
5 | "userAdded": false,
6 | "type": "UnityEngine.AnimationClip",
7 | "defaultInstantiationMode": 0
8 | },
9 | {
10 | "userAdded": false,
11 | "type": "UnityEditor.Animations.AnimatorController",
12 | "defaultInstantiationMode": 0
13 | },
14 | {
15 | "userAdded": false,
16 | "type": "UnityEngine.AnimatorOverrideController",
17 | "defaultInstantiationMode": 0
18 | },
19 | {
20 | "userAdded": false,
21 | "type": "UnityEditor.Audio.AudioMixerController",
22 | "defaultInstantiationMode": 0
23 | },
24 | {
25 | "userAdded": false,
26 | "type": "UnityEngine.ComputeShader",
27 | "defaultInstantiationMode": 1
28 | },
29 | {
30 | "userAdded": false,
31 | "type": "UnityEngine.Cubemap",
32 | "defaultInstantiationMode": 0
33 | },
34 | {
35 | "userAdded": false,
36 | "type": "UnityEngine.GameObject",
37 | "defaultInstantiationMode": 0
38 | },
39 | {
40 | "userAdded": false,
41 | "type": "UnityEditor.LightingDataAsset",
42 | "defaultInstantiationMode": 0
43 | },
44 | {
45 | "userAdded": false,
46 | "type": "UnityEngine.LightingSettings",
47 | "defaultInstantiationMode": 0
48 | },
49 | {
50 | "userAdded": false,
51 | "type": "UnityEngine.Material",
52 | "defaultInstantiationMode": 0
53 | },
54 | {
55 | "userAdded": false,
56 | "type": "UnityEditor.MonoScript",
57 | "defaultInstantiationMode": 1
58 | },
59 | {
60 | "userAdded": false,
61 | "type": "UnityEngine.PhysicMaterial",
62 | "defaultInstantiationMode": 0
63 | },
64 | {
65 | "userAdded": false,
66 | "type": "UnityEngine.PhysicsMaterial",
67 | "defaultInstantiationMode": 0
68 | },
69 | {
70 | "userAdded": false,
71 | "type": "UnityEngine.PhysicsMaterial2D",
72 | "defaultInstantiationMode": 0
73 | },
74 | {
75 | "userAdded": false,
76 | "type": "UnityEngine.Rendering.PostProcessing.PostProcessProfile",
77 | "defaultInstantiationMode": 0
78 | },
79 | {
80 | "userAdded": false,
81 | "type": "UnityEngine.Rendering.PostProcessing.PostProcessResources",
82 | "defaultInstantiationMode": 0
83 | },
84 | {
85 | "userAdded": false,
86 | "type": "UnityEngine.Rendering.VolumeProfile",
87 | "defaultInstantiationMode": 0
88 | },
89 | {
90 | "userAdded": false,
91 | "type": "UnityEditor.SceneAsset",
92 | "defaultInstantiationMode": 0
93 | },
94 | {
95 | "userAdded": false,
96 | "type": "UnityEngine.Shader",
97 | "defaultInstantiationMode": 1
98 | },
99 | {
100 | "userAdded": false,
101 | "type": "UnityEngine.ShaderVariantCollection",
102 | "defaultInstantiationMode": 1
103 | },
104 | {
105 | "userAdded": false,
106 | "type": "UnityEngine.Texture",
107 | "defaultInstantiationMode": 0
108 | },
109 | {
110 | "userAdded": false,
111 | "type": "UnityEngine.Texture2D",
112 | "defaultInstantiationMode": 0
113 | },
114 | {
115 | "userAdded": false,
116 | "type": "UnityEngine.Timeline.TimelineAsset",
117 | "defaultInstantiationMode": 0
118 | }
119 | ],
120 | "defaultDependencyTypeInfo": {
121 | "userAdded": false,
122 | "type": "",
123 | "defaultInstantiationMode": 1
124 | },
125 | "newSceneOverride": 0
126 | }
--------------------------------------------------------------------------------
/ProjectSettings/TagManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!78 &1
4 | TagManager:
5 | serializedVersion: 3
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 | m_RenderingLayers:
45 | - Default
46 |
--------------------------------------------------------------------------------
/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:
7 | m_Count: 2822399
8 | m_Rate:
9 | m_Denominator: 1
10 | m_Numerator: 141120000
11 | Maximum Allowed Timestep: 0.33333334
12 | m_TimeScale: 1
13 | Maximum Particle Timestep: 0.03
14 |
--------------------------------------------------------------------------------
/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_DashboardUrl: https://dashboard.unity3d.com
13 | m_TestInitMode: 0
14 | CrashReportingSettings:
15 | m_EventUrl: https://perf-events.cloud.unity3d.com
16 | m_Enabled: 0
17 | m_LogBufferSize: 10
18 | m_CaptureEditorExceptions: 1
19 | UnityPurchasingSettings:
20 | m_Enabled: 0
21 | m_TestMode: 0
22 | UnityAnalyticsSettings:
23 | m_Enabled: 0
24 | m_TestMode: 0
25 | m_InitializeOnStartup: 1
26 | m_PackageRequiringCoreStatsPresent: 0
27 | UnityAdsSettings:
28 | m_Enabled: 0
29 | m_InitializeOnStartup: 1
30 | m_TestMode: 0
31 | m_IosGameId:
32 | m_AndroidGameId:
33 | m_GameIds: {}
34 | m_GameId:
35 | PerformanceReportingSettings:
36 | m_Enabled: 0
37 |
--------------------------------------------------------------------------------
/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_StripUpdateShader: {fileID: 0}
10 | m_EmptyShader: {fileID: 0}
11 | m_RenderPipeSettingsPath:
12 | m_FixedTimeStep: 0.016666668
13 | m_MaxDeltaTime: 0.05
14 | m_MaxScrubTime: 30
15 | m_MaxCapacity: 100000000
16 | m_CompiledVersion: 0
17 | m_RuntimeVersion: 0
18 | m_RuntimeResources: {fileID: 0}
19 | m_BatchEmptyLifetime: 300
20 |
--------------------------------------------------------------------------------
/ProjectSettings/VersionControlSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!890905787 &1
4 | VersionControlSettings:
5 | m_ObjectHideFlags: 0
6 | m_Mode: Visible Meta Files
7 | m_CollabEditorSettings:
8 | inProgressEnabled: 1
9 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | XmlStorage
2 | ===
3 | XML形式でデータを保存するライブラリです。
4 |
5 |
6 | ## 概要
7 | Unityの[PlayerPrefs](https://docs.unity3d.com/jp/current/ScriptReference/PlayerPrefs.html)は、対応する型が非常に限定的であり、レジストリに保存するため値の確認に手間がかかるなどの問題があります。
8 | それらの問題を解決し置き換えることを目的として開発されたのがXmlStoraです。
9 | 既存コードのPlayerPrefsをStorageに全置換すれば、そのまま動作させることができます。
10 |
11 | ## 導入
12 | UPMで「Add package from git URL」選択して以下のURLを入力してください。
13 | ```
14 | https://github.com/a3geek/XmlStorage.git?path=Packages/com.a3geek.xmlstorage
15 | ```
16 |
17 | ## Usage
18 | サンプルコード
19 | ```` csharp
20 | private void Start()
21 | {
22 | Storage.Set("int1", 1);
23 | Storage.SetInt("int2", 2);
24 | Storage.Save(); // ファイルに保存
25 |
26 | Debug.Log(Storage.Get("int1", 0)); // 1
27 | Debug.Log(Storage.GetInt("int2", 0)); // 2
28 | Debug.Log(Storage.GetInt("int3", 0)); // 0
29 | }
30 | ````
31 | より詳しい使い方は[Example](Assets/XmlStorage/Example/)や[Tests](Assets/XmlStorage/Tests)を参照してください。
32 |
33 | ## Behaviour
34 | - シリアライズ可能なクラスであれば保存可能
35 | ```` csharp
36 | [System.Serializable]
37 | public class Test
38 | {
39 | public int int1 = 10;
40 | public string str = "str";
41 |
42 | public Test() { }
43 | }
44 |
45 | void Start()
46 | {
47 | var test = new Test();
48 | test.int1 = 100;
49 | test.str = "STR";
50 |
51 | Storage.Set("test", test);
52 | Storage.Save();
53 |
54 | Debug.Log(Storage.Get("test").int1); // 100
55 | Debug.Log(Storage.Get("test").str); // "STR"
56 | }
57 | ````
58 |
59 |
60 | - Keyに指定した文字列が同一でも、保存するデータの型(System.Type情報)が異なれば別データとして保存
61 | ```` csharp
62 | void Start()
63 | {
64 | Storage.Set("value", "str");
65 | Storage.Set("value", 10);
66 | Storage.Set("value", 11);
67 | Storage.Save();
68 |
69 | Debug.Log(Storage.Get("value", "")); // str
70 | Debug.Log(Storage.Get("value", 0)); // 11
71 | }
72 | ````
73 |
74 |
75 | - `Storage.CurrentDataGroupName`によってデータグループを切り替えることが可能
76 | - デフォルトでは`Storage.DefaultDataGroupName`が設定されている
77 | - 各グループは独立しており、同じキー情報を持つデータがあってもコンフリクトしない
78 | - データグループ名が保存するファイル名に反映される
79 | ```` csharp
80 | void Start()
81 | {
82 | Debug.Log(Storage.CurrentDataGroupName); // Prefs
83 | Storage.Set("float", 1f);
84 | Storage.Set("int", 10);
85 |
86 | Debug.Log(Storage.Get("str", 0f)); // 1.0
87 | Debug.Log(Storage.Get("int", 0)); // 10
88 |
89 | // データグループを変更
90 | Storage.CurrentDataGroupName = "Test";
91 | Debug.Log(Storage.CurrentDataGroupName); // Test
92 |
93 | Storage.Set("float", 10f);
94 | Storage.Set("int", 100);
95 |
96 | Debug.Log(Storage.Get("str", 0f)); // 10.0
97 | Debug.Log(Storage.Get("int", 0)); // 10
98 | }
99 | ````
100 |
101 |
--------------------------------------------------------------------------------