├── ProjectSettings
├── ProjectVersion.txt
├── ClusterInputManager.asset
├── PresetManager.asset
├── XRSettings.asset
├── VersionControlSettings.asset
├── TimeManager.asset
├── EditorBuildSettings.asset
├── VFXManager.asset
├── AudioManager.asset
├── TagManager.asset
├── UnityConnectSettings.asset
├── PackageManagerSettings.asset
├── EditorSettings.asset
├── DynamicsManager.asset
├── NavMeshAreas.asset
├── Physics2DSettings.asset
├── GraphicsSettings.asset
├── InputManager.asset
├── QualitySettings.asset
└── ProjectSettings.asset
├── .vsconfig
├── Assets
├── Editor.meta
└── Editor
│ ├── InitializeProject.cs.meta
│ └── InitializeProject.cs
├── UserSettings
└── EditorUserSettings.asset
├── LICENSE
├── .gitignore
├── Packages
├── manifest.json
└── packages-lock.json
└── README.md
/ProjectSettings/ProjectVersion.txt:
--------------------------------------------------------------------------------
1 | m_EditorVersion: 2020.3.21f1
2 | m_EditorVersionWithRevision: 2020.3.21f1 (a38c86f6690f)
3 |
--------------------------------------------------------------------------------
/.vsconfig:
--------------------------------------------------------------------------------
1 | {
2 | "version": "1.0",
3 | "components": [
4 | "Microsoft.VisualStudio.Workload.ManagedGame"
5 | ]
6 | }
7 |
--------------------------------------------------------------------------------
/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/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 |
--------------------------------------------------------------------------------
/Assets/Editor.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 1df80d5334b4c3b4ab4e2aa5dc339848
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/ProjectSettings/XRSettings.asset:
--------------------------------------------------------------------------------
1 | {
2 | "m_SettingKeys": [
3 | "VR Device Disabled",
4 | "VR Device User Alert"
5 | ],
6 | "m_SettingValues": [
7 | "False",
8 | "False"
9 | ]
10 | }
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/ProjectSettings/TimeManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!5 &1
4 | TimeManager:
5 | m_ObjectHideFlags: 0
6 | Fixed Timestep: 0.02
7 | Maximum Allowed Timestep: 0.33333334
8 | m_TimeScale: 1
9 | Maximum Particle Timestep: 0.03
10 |
--------------------------------------------------------------------------------
/Assets/Editor/InitializeProject.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d9ca9698f3139704d9f8c68427fa54be
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/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 | - enabled: 1
9 | path: Assets/Scenes/Main.unity
10 | guid: 00000000000000000000000000000000
11 | m_configObjects: {}
12 |
--------------------------------------------------------------------------------
/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_RenderPipeSettingsPath:
11 | m_FixedTimeStep: 0.016666668
12 | m_MaxDeltaTime: 0.05
13 |
--------------------------------------------------------------------------------
/UserSettings/EditorUserSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!162 &1
4 | EditorUserSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 4
7 | m_ConfigSettings:
8 | vcSharedLogLevel:
9 | value: 0d5e400f0650
10 | flags: 0
11 | m_VCAutomaticAdd: 1
12 | m_VCDebugCom: 0
13 | m_VCDebugCmd: 0
14 | m_VCDebugOut: 0
15 | m_SemanticMergeMode: 2
16 | m_VCShowFailedCheckout: 1
17 | m_VCOverwriteFailedCheckoutAssets: 1
18 | m_VCOverlayIcons: 1
19 | m_VCAllowAsyncUpdate: 0
20 |
--------------------------------------------------------------------------------
/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/TagManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!78 &1
4 | TagManager:
5 | serializedVersion: 2
6 | tags: []
7 | layers:
8 | - Default
9 | - TransparentFX
10 | - Ignore Raycast
11 | -
12 | - Water
13 | - UI
14 | -
15 | -
16 | -
17 | -
18 | -
19 | -
20 | -
21 | -
22 | -
23 | -
24 | -
25 | -
26 | -
27 | -
28 | -
29 | -
30 | -
31 | -
32 | -
33 | -
34 | -
35 | -
36 | -
37 | -
38 | -
39 | -
40 | m_SortingLayers:
41 | - name: Default
42 | uniqueID: 0
43 | locked: 0
44 |
--------------------------------------------------------------------------------
/ProjectSettings/UnityConnectSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!310 &1
4 | UnityConnectSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 1
7 | m_Enabled: 0
8 | m_TestMode: 0
9 | m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events
10 | m_EventUrl: https://cdp.cloud.unity3d.com/v1/events
11 | m_ConfigUrl: https://config.uca.cloud.unity3d.com
12 | m_TestInitMode: 0
13 | CrashReportingSettings:
14 | m_EventUrl: https://perf-events.cloud.unity3d.com
15 | m_Enabled: 0
16 | m_LogBufferSize: 10
17 | m_CaptureEditorExceptions: 1
18 | UnityPurchasingSettings:
19 | m_Enabled: 0
20 | m_TestMode: 0
21 | UnityAnalyticsSettings:
22 | m_Enabled: 0
23 | m_TestMode: 0
24 | m_InitializeOnStartup: 1
25 | UnityAdsSettings:
26 | m_Enabled: 0
27 | m_InitializeOnStartup: 1
28 | m_TestMode: 0
29 | m_IosGameId:
30 | m_AndroidGameId:
31 | m_GameIds: {}
32 | m_GameId:
33 | PerformanceReportingSettings:
34 | m_Enabled: 0
35 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2022 mika
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 |
--------------------------------------------------------------------------------
/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_EnablePreviewPackages: 1
16 | m_EnablePackageDependencies: 1
17 | m_AdvancedSettingsExpanded: 1
18 | m_ScopedRegistriesSettingsExpanded: 1
19 | oneTimeWarningShown: 1
20 | m_Registries:
21 | - m_Id: main
22 | m_Name:
23 | m_Url: https://packages.unity.com
24 | m_Scopes: []
25 | m_IsDefault: 1
26 | m_Capabilities: 0
27 | m_UserSelectedRegistryName:
28 | m_UserAddingNewScopedRegistry: 0
29 | m_RegistryInfoDraft:
30 | m_ErrorMessage:
31 | m_Original:
32 | m_Id:
33 | m_Name:
34 | m_Url:
35 | m_Scopes: []
36 | m_IsDefault: 0
37 | m_Capabilities: 0
38 | m_Modified: 0
39 | m_Name:
40 | m_Url:
41 | m_Scopes:
42 | -
43 | m_SelectedScopeIndex: 0
44 |
--------------------------------------------------------------------------------
/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: 9
7 | m_ExternalVersionControlSupport: Visible Meta Files
8 | m_SerializationMode: 2
9 | m_LineEndingsForNewScripts: 2
10 | m_DefaultBehaviorMode: 0
11 | m_PrefabRegularEnvironment: {fileID: 0}
12 | m_PrefabUIEnvironment: {fileID: 0}
13 | m_SpritePackerMode: 0
14 | m_SpritePackerPaddingPower: 1
15 | m_EtcTextureCompressorBehavior: 1
16 | m_EtcTextureFastCompressor: 1
17 | m_EtcTextureNormalCompressor: 2
18 | m_EtcTextureBestCompressor: 4
19 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;asmref;rsp
20 | m_ProjectGenerationRootNamespace:
21 | m_CollabEditorSettings:
22 | inProgressEnabled: 1
23 | m_EnableTextureStreamingInEditMode: 1
24 | m_EnableTextureStreamingInPlayMode: 1
25 | m_AsyncShaderCompilation: 1
26 | m_EnterPlayModeOptionsEnabled: 0
27 | m_EnterPlayModeOptions: 3
28 | m_ShowLightmapResolutionOverlay: 1
29 | m_UseLegacyProbeSampleCount: 0
30 | m_AssetPipelineMode: 1
31 | m_CacheServerMode: 0
32 | m_CacheServerEndpoint:
33 | m_CacheServerNamespacePrefix: default
34 | m_CacheServerEnableDownload: 1
35 | m_CacheServerEnableUpload: 1
36 |
--------------------------------------------------------------------------------
/.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/master/Unity.gitignore
4 | #
5 | /[Ll]ibrary/
6 | /[Tt]emp/
7 | /[Oo]bj/
8 | /[Bb]uild/
9 | /[Bb]uilds/
10 | /[Ll]ogs/
11 | /[Mm]emoryCaptures/
12 |
13 | # Asset meta data should only be ignored when the corresponding asset is also ignored
14 | !/[Aa]ssets/**/*.meta
15 |
16 | # Uncomment this line if you wish to ignore the asset store tools plugin
17 | # /[Aa]ssets/AssetStoreTools*
18 |
19 | # Autogenerated Jetbrains Rider plugin
20 | [Aa]ssets/Plugins/Editor/JetBrains*
21 |
22 | # Visual Studio cache directory
23 | .vs/
24 |
25 | # Gradle cache directory
26 | .gradle/
27 |
28 | # Autogenerated VS/MD/Consulo solution and project files
29 | ExportedObj/
30 | .consulo/
31 | *.csproj
32 | *.unityproj
33 | *.sln
34 | *.suo
35 | *.tmp
36 | *.user
37 | *.userprefs
38 | *.pidb
39 | *.booproj
40 | *.svd
41 | *.pdb
42 | *.mdb
43 | *.opendb
44 | *.VC.db
45 |
46 | # Unity3D generated meta files
47 | *.pidb.meta
48 | *.pdb.meta
49 | *.mdb.meta
50 |
51 | # Unity3D generated file on crash reports
52 | sysinfo.txt
53 |
54 | # Builds
55 | *.apk
56 | *.unitypackage
57 |
58 | # Crashlytics generated file
59 | crashlytics-build.properties
60 |
61 |
--------------------------------------------------------------------------------
/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: 13
7 | m_Gravity: {x: 0, y: -9.81, z: 0}
8 | m_DefaultMaterial: {fileID: 0}
9 | m_BounceThreshold: 2
10 | m_SleepThreshold: 0.005
11 | m_DefaultContactOffset: 0.01
12 | m_DefaultSolverIterations: 6
13 | m_DefaultSolverVelocityIterations: 1
14 | m_QueriesHitBackfaces: 0
15 | m_QueriesHitTriggers: 1
16 | m_EnableAdaptiveForce: 0
17 | m_ClothInterCollisionDistance: 0.1
18 | m_ClothInterCollisionStiffness: 0.2
19 | m_ContactsGeneration: 1
20 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
21 | m_AutoSimulation: 1
22 | m_AutoSyncTransforms: 0
23 | m_ReuseCollisionCallbacks: 0
24 | m_ClothInterCollisionSettingsToggle: 0
25 | m_ClothGravity: {x: 0, y: -9.81, z: 0}
26 | m_ContactPairsMode: 0
27 | m_BroadphaseType: 0
28 | m_WorldBounds:
29 | m_Center: {x: 0, y: 0, z: 0}
30 | m_Extent: {x: 250, y: 250, z: 250}
31 | m_WorldSubdivisions: 8
32 | m_FrictionType: 0
33 | m_EnableEnhancedDeterminism: 0
34 | m_EnableUnifiedHeightmaps: 1
35 | m_SolverType: 0
36 | m_DefaultMaxAngularSpeed: 50
37 |
--------------------------------------------------------------------------------
/Packages/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "dependencies": {
3 | "com.unity.ide.visualstudio": "2.0.23",
4 | "com.unity.textmeshpro": "3.0.6",
5 | "com.unity.ugui": "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.imageconversion": "1.0.0",
13 | "com.unity.modules.imgui": "1.0.0",
14 | "com.unity.modules.jsonserialize": "1.0.0",
15 | "com.unity.modules.particlesystem": "1.0.0",
16 | "com.unity.modules.physics": "1.0.0",
17 | "com.unity.modules.physics2d": "1.0.0",
18 | "com.unity.modules.screencapture": "1.0.0",
19 | "com.unity.modules.terrain": "1.0.0",
20 | "com.unity.modules.terrainphysics": "1.0.0",
21 | "com.unity.modules.tilemap": "1.0.0",
22 | "com.unity.modules.ui": "1.0.0",
23 | "com.unity.modules.uielements": "1.0.0",
24 | "com.unity.modules.umbra": "1.0.0",
25 | "com.unity.modules.unitywebrequest": "1.0.0",
26 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0",
27 | "com.unity.modules.unitywebrequestaudio": "1.0.0",
28 | "com.unity.modules.unitywebrequesttexture": "1.0.0",
29 | "com.unity.modules.unitywebrequestwww": "1.0.0",
30 | "com.unity.modules.vehicles": "1.0.0",
31 | "com.unity.modules.video": "1.0.0",
32 | "com.unity.modules.vr": "1.0.0",
33 | "com.unity.modules.wind": "1.0.0",
34 | "com.unity.modules.xr": "1.0.0"
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # UnityInitializeProject
2 |
3 | When starting a new project, you always have to do the same things over and over again.. not anymore!
4 |
5 |
6 | ## Usage
7 |
8 | - Use with UnityLauncherPro https://github.com/unitycoder/UnityLauncherPro/wiki/Initialize-Project-Script
9 | - Or, copy the [script](https://github.com/unitycoder/UnityInitializeProject/blob/main/Assets/Editor/InitializeProject.cs) into Editor/ folder and run from Tools/UnityLibrary/Initialize Project
10 |
11 |
12 | ### Current Features
13 |
14 | - Create common folders (like Scenes, Materials, Prefabs, Scripts..)
15 | - Colorspace to linear
16 | - Save Main scene
17 | - Add scene to build settings
18 | - Set main camera to 0,3,-10
19 | - Disable sceneview camera Easing & Acceleration
20 | - Set 3D gizmos size smaller
21 | - Disable splash screen
22 | - Set company name, product name (TODO need to assign these somewhere..)
23 | - Remove unwanted packages
24 | - Add wanted packages
25 | - NEW: Import your favourite asset store packages (.unitypackage)
26 |
27 | *This example script is designed for my own workflows, but you can edit it and use inside Unity or through UnityLauncherPro (when creating new project there).
28 |
29 | ### Links
30 | - Unity forum thread https://forum.unity.com/threads/github-automatic-project-initialization-editor-script.1352966/
31 |
32 | ### Videos
33 | - Compare manual setup vs automatic setup: (youtube link)
34 | [](https://www.youtube.com/watch?v=NAG8BnsUTSY)
35 |
36 | ### Images
37 |
38 | Just 1 click to setup everything!
39 | 
40 |
--------------------------------------------------------------------------------
/ProjectSettings/NavMeshAreas.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!126 &1
4 | NavMeshProjectSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | areas:
8 | - name: Walkable
9 | cost: 1
10 | - name: Not Walkable
11 | cost: 1
12 | - name: Jump
13 | cost: 2
14 | - name:
15 | cost: 1
16 | - name:
17 | cost: 1
18 | - name:
19 | cost: 1
20 | - name:
21 | cost: 1
22 | - name:
23 | cost: 1
24 | - name:
25 | cost: 1
26 | - name:
27 | cost: 1
28 | - name:
29 | cost: 1
30 | - name:
31 | cost: 1
32 | - name:
33 | cost: 1
34 | - name:
35 | cost: 1
36 | - name:
37 | cost: 1
38 | - name:
39 | cost: 1
40 | - name:
41 | cost: 1
42 | - name:
43 | cost: 1
44 | - name:
45 | cost: 1
46 | - name:
47 | cost: 1
48 | - name:
49 | cost: 1
50 | - name:
51 | cost: 1
52 | - name:
53 | cost: 1
54 | - name:
55 | cost: 1
56 | - name:
57 | cost: 1
58 | - name:
59 | cost: 1
60 | - name:
61 | cost: 1
62 | - name:
63 | cost: 1
64 | - name:
65 | cost: 1
66 | - name:
67 | cost: 1
68 | - name:
69 | cost: 1
70 | - name:
71 | cost: 1
72 | m_LastAgentTypeID: -887442657
73 | m_Settings:
74 | - serializedVersion: 2
75 | agentTypeID: 0
76 | agentRadius: 0.5
77 | agentHeight: 2
78 | agentSlope: 45
79 | agentClimb: 0.75
80 | ledgeDropHeight: 0
81 | maxJumpAcrossDistance: 0
82 | minRegionArea: 2
83 | manualCellSize: 0
84 | cellSize: 0.16666667
85 | manualTileSize: 0
86 | tileSize: 256
87 | accuratePlacement: 0
88 | debug:
89 | m_Flags: 0
90 | m_SettingNames:
91 | - Humanoid
92 |
--------------------------------------------------------------------------------
/ProjectSettings/Physics2DSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!19 &1
4 | Physics2DSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 4
7 | m_Gravity: {x: 0, y: -9.81}
8 | m_DefaultMaterial: {fileID: 0}
9 | m_VelocityIterations: 8
10 | m_PositionIterations: 3
11 | m_VelocityThreshold: 1
12 | m_MaxLinearCorrection: 0.2
13 | m_MaxAngularCorrection: 8
14 | m_MaxTranslationSpeed: 100
15 | m_MaxRotationSpeed: 360
16 | m_BaumgarteScale: 0.2
17 | m_BaumgarteTimeOfImpactScale: 0.75
18 | m_TimeToSleep: 0.5
19 | m_LinearSleepTolerance: 0.01
20 | m_AngularSleepTolerance: 2
21 | m_DefaultContactOffset: 0.01
22 | m_JobOptions:
23 | serializedVersion: 2
24 | useMultithreading: 0
25 | useConsistencySorting: 0
26 | m_InterpolationPosesPerJob: 100
27 | m_NewContactsPerJob: 30
28 | m_CollideContactsPerJob: 100
29 | m_ClearFlagsPerJob: 200
30 | m_ClearBodyForcesPerJob: 200
31 | m_SyncDiscreteFixturesPerJob: 50
32 | m_SyncContinuousFixturesPerJob: 50
33 | m_FindNearestContactsPerJob: 100
34 | m_UpdateTriggerContactsPerJob: 100
35 | m_IslandSolverCostThreshold: 100
36 | m_IslandSolverBodyCostScale: 1
37 | m_IslandSolverContactCostScale: 10
38 | m_IslandSolverJointCostScale: 10
39 | m_IslandSolverBodiesPerJob: 50
40 | m_IslandSolverContactsPerJob: 50
41 | m_AutoSimulation: 1
42 | m_QueriesHitTriggers: 1
43 | m_QueriesStartInColliders: 1
44 | m_CallbacksOnDisable: 1
45 | m_ReuseCollisionCallbacks: 0
46 | m_AutoSyncTransforms: 0
47 | m_AlwaysShowColliders: 0
48 | m_ShowColliderSleep: 1
49 | m_ShowColliderContacts: 0
50 | m_ShowColliderAABB: 0
51 | m_ContactArrowScale: 0.2
52 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412}
53 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432}
54 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745}
55 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804}
56 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
57 |
--------------------------------------------------------------------------------
/ProjectSettings/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: 13
7 | m_Deferred:
8 | m_Mode: 1
9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0}
10 | m_DeferredReflections:
11 | m_Mode: 1
12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0}
13 | m_ScreenSpaceShadows:
14 | m_Mode: 1
15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0}
16 | m_LegacyDeferred:
17 | m_Mode: 1
18 | m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0}
19 | m_DepthNormals:
20 | m_Mode: 1
21 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0}
22 | m_MotionVectors:
23 | m_Mode: 1
24 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0}
25 | m_LightHalo:
26 | m_Mode: 1
27 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0}
28 | m_LensFlare:
29 | m_Mode: 1
30 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0}
31 | m_AlwaysIncludedShaders:
32 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0}
33 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0}
34 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0}
35 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0}
36 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0}
37 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0}
38 | - {fileID: 10783, guid: 0000000000000000f000000000000000, type: 0}
39 | m_PreloadedShaders: []
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_LightmapKeepPlain: 1
52 | m_LightmapKeepDirCombined: 1
53 | m_LightmapKeepDynamicPlain: 1
54 | m_LightmapKeepDynamicDirCombined: 1
55 | m_LightmapKeepShadowMask: 1
56 | m_LightmapKeepSubtractive: 1
57 | m_FogKeepLinear: 1
58 | m_FogKeepExp: 1
59 | m_FogKeepExp2: 1
60 | m_AlbedoSwatchInfos: []
61 | m_LightsUseLinearIntensity: 0
62 | m_LightsUseColorTemperature: 0
63 | m_LogWhenShaderIsCompiled: 0
64 | m_AllowEnlightenSupportForUpgradedProject: 0
65 |
--------------------------------------------------------------------------------
/ProjectSettings/InputManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!13 &1
4 | InputManager:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | m_Axes:
8 | - serializedVersion: 3
9 | m_Name: Horizontal
10 | descriptiveName:
11 | descriptiveNegativeName:
12 | negativeButton: left
13 | positiveButton: right
14 | altNegativeButton: a
15 | altPositiveButton: d
16 | gravity: 3
17 | dead: 0.001
18 | sensitivity: 3
19 | snap: 1
20 | invert: 0
21 | type: 0
22 | axis: 0
23 | joyNum: 0
24 | - serializedVersion: 3
25 | m_Name: Vertical
26 | descriptiveName:
27 | descriptiveNegativeName:
28 | negativeButton: down
29 | positiveButton: up
30 | altNegativeButton: s
31 | altPositiveButton: w
32 | gravity: 3
33 | dead: 0.001
34 | sensitivity: 3
35 | snap: 1
36 | invert: 0
37 | type: 0
38 | axis: 0
39 | joyNum: 0
40 | - serializedVersion: 3
41 | m_Name: Fire1
42 | descriptiveName:
43 | descriptiveNegativeName:
44 | negativeButton:
45 | positiveButton: left ctrl
46 | altNegativeButton:
47 | altPositiveButton: mouse 0
48 | gravity: 1000
49 | dead: 0.001
50 | sensitivity: 1000
51 | snap: 0
52 | invert: 0
53 | type: 0
54 | axis: 0
55 | joyNum: 0
56 | - serializedVersion: 3
57 | m_Name: Fire2
58 | descriptiveName:
59 | descriptiveNegativeName:
60 | negativeButton:
61 | positiveButton: left alt
62 | altNegativeButton:
63 | altPositiveButton: mouse 1
64 | gravity: 1000
65 | dead: 0.001
66 | sensitivity: 1000
67 | snap: 0
68 | invert: 0
69 | type: 0
70 | axis: 0
71 | joyNum: 0
72 | - serializedVersion: 3
73 | m_Name: Fire3
74 | descriptiveName:
75 | descriptiveNegativeName:
76 | negativeButton:
77 | positiveButton: left shift
78 | altNegativeButton:
79 | altPositiveButton: mouse 2
80 | gravity: 1000
81 | dead: 0.001
82 | sensitivity: 1000
83 | snap: 0
84 | invert: 0
85 | type: 0
86 | axis: 0
87 | joyNum: 0
88 | - serializedVersion: 3
89 | m_Name: Jump
90 | descriptiveName:
91 | descriptiveNegativeName:
92 | negativeButton:
93 | positiveButton: space
94 | altNegativeButton:
95 | altPositiveButton:
96 | gravity: 1000
97 | dead: 0.001
98 | sensitivity: 1000
99 | snap: 0
100 | invert: 0
101 | type: 0
102 | axis: 0
103 | joyNum: 0
104 | - serializedVersion: 3
105 | m_Name: Mouse X
106 | descriptiveName:
107 | descriptiveNegativeName:
108 | negativeButton:
109 | positiveButton:
110 | altNegativeButton:
111 | altPositiveButton:
112 | gravity: 0
113 | dead: 0
114 | sensitivity: 0.1
115 | snap: 0
116 | invert: 0
117 | type: 1
118 | axis: 0
119 | joyNum: 0
120 | - serializedVersion: 3
121 | m_Name: Mouse Y
122 | descriptiveName:
123 | descriptiveNegativeName:
124 | negativeButton:
125 | positiveButton:
126 | altNegativeButton:
127 | altPositiveButton:
128 | gravity: 0
129 | dead: 0
130 | sensitivity: 0.1
131 | snap: 0
132 | invert: 0
133 | type: 1
134 | axis: 1
135 | joyNum: 0
136 | - serializedVersion: 3
137 | m_Name: Mouse ScrollWheel
138 | descriptiveName:
139 | descriptiveNegativeName:
140 | negativeButton:
141 | positiveButton:
142 | altNegativeButton:
143 | altPositiveButton:
144 | gravity: 0
145 | dead: 0
146 | sensitivity: 0.1
147 | snap: 0
148 | invert: 0
149 | type: 1
150 | axis: 2
151 | joyNum: 0
152 | - serializedVersion: 3
153 | m_Name: Horizontal
154 | descriptiveName:
155 | descriptiveNegativeName:
156 | negativeButton:
157 | positiveButton:
158 | altNegativeButton:
159 | altPositiveButton:
160 | gravity: 0
161 | dead: 0.19
162 | sensitivity: 1
163 | snap: 0
164 | invert: 0
165 | type: 2
166 | axis: 0
167 | joyNum: 0
168 | - serializedVersion: 3
169 | m_Name: Vertical
170 | descriptiveName:
171 | descriptiveNegativeName:
172 | negativeButton:
173 | positiveButton:
174 | altNegativeButton:
175 | altPositiveButton:
176 | gravity: 0
177 | dead: 0.19
178 | sensitivity: 1
179 | snap: 0
180 | invert: 1
181 | type: 2
182 | axis: 1
183 | joyNum: 0
184 | - serializedVersion: 3
185 | m_Name: Fire1
186 | descriptiveName:
187 | descriptiveNegativeName:
188 | negativeButton:
189 | positiveButton: joystick button 0
190 | altNegativeButton:
191 | altPositiveButton:
192 | gravity: 1000
193 | dead: 0.001
194 | sensitivity: 1000
195 | snap: 0
196 | invert: 0
197 | type: 0
198 | axis: 0
199 | joyNum: 0
200 | - serializedVersion: 3
201 | m_Name: Fire2
202 | descriptiveName:
203 | descriptiveNegativeName:
204 | negativeButton:
205 | positiveButton: joystick button 1
206 | altNegativeButton:
207 | altPositiveButton:
208 | gravity: 1000
209 | dead: 0.001
210 | sensitivity: 1000
211 | snap: 0
212 | invert: 0
213 | type: 0
214 | axis: 0
215 | joyNum: 0
216 | - serializedVersion: 3
217 | m_Name: Fire3
218 | descriptiveName:
219 | descriptiveNegativeName:
220 | negativeButton:
221 | positiveButton: joystick button 2
222 | altNegativeButton:
223 | altPositiveButton:
224 | gravity: 1000
225 | dead: 0.001
226 | sensitivity: 1000
227 | snap: 0
228 | invert: 0
229 | type: 0
230 | axis: 0
231 | joyNum: 0
232 | - serializedVersion: 3
233 | m_Name: Jump
234 | descriptiveName:
235 | descriptiveNegativeName:
236 | negativeButton:
237 | positiveButton: joystick button 3
238 | altNegativeButton:
239 | altPositiveButton:
240 | gravity: 1000
241 | dead: 0.001
242 | sensitivity: 1000
243 | snap: 0
244 | invert: 0
245 | type: 0
246 | axis: 0
247 | joyNum: 0
248 | - serializedVersion: 3
249 | m_Name: Submit
250 | descriptiveName:
251 | descriptiveNegativeName:
252 | negativeButton:
253 | positiveButton: return
254 | altNegativeButton:
255 | altPositiveButton: joystick button 0
256 | gravity: 1000
257 | dead: 0.001
258 | sensitivity: 1000
259 | snap: 0
260 | invert: 0
261 | type: 0
262 | axis: 0
263 | joyNum: 0
264 | - serializedVersion: 3
265 | m_Name: Submit
266 | descriptiveName:
267 | descriptiveNegativeName:
268 | negativeButton:
269 | positiveButton: enter
270 | altNegativeButton:
271 | altPositiveButton: space
272 | gravity: 1000
273 | dead: 0.001
274 | sensitivity: 1000
275 | snap: 0
276 | invert: 0
277 | type: 0
278 | axis: 0
279 | joyNum: 0
280 | - serializedVersion: 3
281 | m_Name: Cancel
282 | descriptiveName:
283 | descriptiveNegativeName:
284 | negativeButton:
285 | positiveButton: escape
286 | altNegativeButton:
287 | altPositiveButton: joystick button 1
288 | gravity: 1000
289 | dead: 0.001
290 | sensitivity: 1000
291 | snap: 0
292 | invert: 0
293 | type: 0
294 | axis: 0
295 | joyNum: 0
296 |
--------------------------------------------------------------------------------
/ProjectSettings/QualitySettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!47 &1
4 | QualitySettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 5
7 | m_CurrentQuality: 5
8 | m_QualitySettings:
9 | - serializedVersion: 2
10 | name: Very Low
11 | pixelLightCount: 0
12 | shadows: 0
13 | shadowResolution: 0
14 | shadowProjection: 1
15 | shadowCascades: 1
16 | shadowDistance: 15
17 | shadowNearPlaneOffset: 3
18 | shadowCascade2Split: 0.33333334
19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
20 | shadowmaskMode: 0
21 | skinWeights: 1
22 | textureQuality: 1
23 | anisotropicTextures: 0
24 | antiAliasing: 0
25 | softParticles: 0
26 | softVegetation: 0
27 | realtimeReflectionProbes: 0
28 | billboardsFaceCameraPosition: 0
29 | vSyncCount: 0
30 | lodBias: 0.3
31 | maximumLODLevel: 0
32 | streamingMipmapsActive: 0
33 | streamingMipmapsAddAllCameras: 1
34 | streamingMipmapsMemoryBudget: 512
35 | streamingMipmapsRenderersPerFrame: 512
36 | streamingMipmapsMaxLevelReduction: 2
37 | streamingMipmapsMaxFileIORequests: 1024
38 | particleRaycastBudget: 4
39 | asyncUploadTimeSlice: 2
40 | asyncUploadBufferSize: 16
41 | asyncUploadPersistentBuffer: 1
42 | resolutionScalingFixedDPIFactor: 1
43 | customRenderPipeline: {fileID: 0}
44 | excludedTargetPlatforms: []
45 | - serializedVersion: 2
46 | name: Low
47 | pixelLightCount: 0
48 | shadows: 0
49 | shadowResolution: 0
50 | shadowProjection: 1
51 | shadowCascades: 1
52 | shadowDistance: 20
53 | shadowNearPlaneOffset: 3
54 | shadowCascade2Split: 0.33333334
55 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
56 | shadowmaskMode: 0
57 | skinWeights: 2
58 | textureQuality: 0
59 | anisotropicTextures: 0
60 | antiAliasing: 0
61 | softParticles: 0
62 | softVegetation: 0
63 | realtimeReflectionProbes: 0
64 | billboardsFaceCameraPosition: 0
65 | vSyncCount: 0
66 | lodBias: 0.4
67 | maximumLODLevel: 0
68 | streamingMipmapsActive: 0
69 | streamingMipmapsAddAllCameras: 1
70 | streamingMipmapsMemoryBudget: 512
71 | streamingMipmapsRenderersPerFrame: 512
72 | streamingMipmapsMaxLevelReduction: 2
73 | streamingMipmapsMaxFileIORequests: 1024
74 | particleRaycastBudget: 16
75 | asyncUploadTimeSlice: 2
76 | asyncUploadBufferSize: 16
77 | asyncUploadPersistentBuffer: 1
78 | resolutionScalingFixedDPIFactor: 1
79 | customRenderPipeline: {fileID: 0}
80 | excludedTargetPlatforms: []
81 | - serializedVersion: 2
82 | name: Medium
83 | pixelLightCount: 1
84 | shadows: 1
85 | shadowResolution: 0
86 | shadowProjection: 1
87 | shadowCascades: 1
88 | shadowDistance: 20
89 | shadowNearPlaneOffset: 3
90 | shadowCascade2Split: 0.33333334
91 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
92 | shadowmaskMode: 0
93 | skinWeights: 2
94 | textureQuality: 0
95 | anisotropicTextures: 1
96 | antiAliasing: 0
97 | softParticles: 0
98 | softVegetation: 0
99 | realtimeReflectionProbes: 0
100 | billboardsFaceCameraPosition: 0
101 | vSyncCount: 1
102 | lodBias: 0.7
103 | maximumLODLevel: 0
104 | streamingMipmapsActive: 0
105 | streamingMipmapsAddAllCameras: 1
106 | streamingMipmapsMemoryBudget: 512
107 | streamingMipmapsRenderersPerFrame: 512
108 | streamingMipmapsMaxLevelReduction: 2
109 | streamingMipmapsMaxFileIORequests: 1024
110 | particleRaycastBudget: 64
111 | asyncUploadTimeSlice: 2
112 | asyncUploadBufferSize: 16
113 | asyncUploadPersistentBuffer: 1
114 | resolutionScalingFixedDPIFactor: 1
115 | customRenderPipeline: {fileID: 0}
116 | excludedTargetPlatforms: []
117 | - serializedVersion: 2
118 | name: High
119 | pixelLightCount: 2
120 | shadows: 2
121 | shadowResolution: 1
122 | shadowProjection: 1
123 | shadowCascades: 2
124 | shadowDistance: 40
125 | shadowNearPlaneOffset: 3
126 | shadowCascade2Split: 0.33333334
127 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
128 | shadowmaskMode: 1
129 | skinWeights: 2
130 | textureQuality: 0
131 | anisotropicTextures: 1
132 | antiAliasing: 0
133 | softParticles: 0
134 | softVegetation: 1
135 | realtimeReflectionProbes: 1
136 | billboardsFaceCameraPosition: 1
137 | vSyncCount: 1
138 | lodBias: 1
139 | maximumLODLevel: 0
140 | streamingMipmapsActive: 0
141 | streamingMipmapsAddAllCameras: 1
142 | streamingMipmapsMemoryBudget: 512
143 | streamingMipmapsRenderersPerFrame: 512
144 | streamingMipmapsMaxLevelReduction: 2
145 | streamingMipmapsMaxFileIORequests: 1024
146 | particleRaycastBudget: 256
147 | asyncUploadTimeSlice: 2
148 | asyncUploadBufferSize: 16
149 | asyncUploadPersistentBuffer: 1
150 | resolutionScalingFixedDPIFactor: 1
151 | customRenderPipeline: {fileID: 0}
152 | excludedTargetPlatforms: []
153 | - serializedVersion: 2
154 | name: Very High
155 | pixelLightCount: 3
156 | shadows: 2
157 | shadowResolution: 2
158 | shadowProjection: 1
159 | shadowCascades: 2
160 | shadowDistance: 70
161 | shadowNearPlaneOffset: 3
162 | shadowCascade2Split: 0.33333334
163 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
164 | shadowmaskMode: 1
165 | skinWeights: 4
166 | textureQuality: 0
167 | anisotropicTextures: 2
168 | antiAliasing: 2
169 | softParticles: 1
170 | softVegetation: 1
171 | realtimeReflectionProbes: 1
172 | billboardsFaceCameraPosition: 1
173 | vSyncCount: 1
174 | lodBias: 1.5
175 | maximumLODLevel: 0
176 | streamingMipmapsActive: 0
177 | streamingMipmapsAddAllCameras: 1
178 | streamingMipmapsMemoryBudget: 512
179 | streamingMipmapsRenderersPerFrame: 512
180 | streamingMipmapsMaxLevelReduction: 2
181 | streamingMipmapsMaxFileIORequests: 1024
182 | particleRaycastBudget: 1024
183 | asyncUploadTimeSlice: 2
184 | asyncUploadBufferSize: 16
185 | asyncUploadPersistentBuffer: 1
186 | resolutionScalingFixedDPIFactor: 1
187 | customRenderPipeline: {fileID: 0}
188 | excludedTargetPlatforms: []
189 | - serializedVersion: 2
190 | name: Ultra
191 | pixelLightCount: 4
192 | shadows: 2
193 | shadowResolution: 2
194 | shadowProjection: 1
195 | shadowCascades: 4
196 | shadowDistance: 150
197 | shadowNearPlaneOffset: 3
198 | shadowCascade2Split: 0.33333334
199 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
200 | shadowmaskMode: 1
201 | skinWeights: 255
202 | textureQuality: 0
203 | anisotropicTextures: 2
204 | antiAliasing: 2
205 | softParticles: 1
206 | softVegetation: 1
207 | realtimeReflectionProbes: 1
208 | billboardsFaceCameraPosition: 1
209 | vSyncCount: 1
210 | lodBias: 2
211 | maximumLODLevel: 0
212 | streamingMipmapsActive: 0
213 | streamingMipmapsAddAllCameras: 1
214 | streamingMipmapsMemoryBudget: 512
215 | streamingMipmapsRenderersPerFrame: 512
216 | streamingMipmapsMaxLevelReduction: 2
217 | streamingMipmapsMaxFileIORequests: 1024
218 | particleRaycastBudget: 4096
219 | asyncUploadTimeSlice: 2
220 | asyncUploadBufferSize: 16
221 | asyncUploadPersistentBuffer: 1
222 | resolutionScalingFixedDPIFactor: 1
223 | customRenderPipeline: {fileID: 0}
224 | excludedTargetPlatforms: []
225 | m_PerPlatformDefaultQuality:
226 | Android: 2
227 | CloudRendering: 5
228 | GameCoreScarlett: 5
229 | GameCoreXboxOne: 5
230 | Lumin: 5
231 | Nintendo Switch: 5
232 | PS4: 5
233 | PS5: 5
234 | Stadia: 5
235 | Standalone: 5
236 | WebGL: 3
237 | Windows Store Apps: 5
238 | XboxOne: 5
239 | iPhone: 2
240 | tvOS: 2
241 |
--------------------------------------------------------------------------------
/Packages/packages-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "dependencies": {
3 | "com.unity.ext.nunit": {
4 | "version": "1.0.6",
5 | "depth": 2,
6 | "source": "registry",
7 | "dependencies": {},
8 | "url": "https://packages.unity.com"
9 | },
10 | "com.unity.ide.visualstudio": {
11 | "version": "2.0.23",
12 | "depth": 0,
13 | "source": "registry",
14 | "dependencies": {
15 | "com.unity.test-framework": "1.1.9"
16 | },
17 | "url": "https://packages.unity.com"
18 | },
19 | "com.unity.test-framework": {
20 | "version": "1.1.29",
21 | "depth": 1,
22 | "source": "registry",
23 | "dependencies": {
24 | "com.unity.ext.nunit": "1.0.6",
25 | "com.unity.modules.imgui": "1.0.0",
26 | "com.unity.modules.jsonserialize": "1.0.0"
27 | },
28 | "url": "https://packages.unity.com"
29 | },
30 | "com.unity.textmeshpro": {
31 | "version": "3.0.6",
32 | "depth": 0,
33 | "source": "registry",
34 | "dependencies": {
35 | "com.unity.ugui": "1.0.0"
36 | },
37 | "url": "https://packages.unity.com"
38 | },
39 | "com.unity.ugui": {
40 | "version": "1.0.0",
41 | "depth": 0,
42 | "source": "builtin",
43 | "dependencies": {
44 | "com.unity.modules.ui": "1.0.0",
45 | "com.unity.modules.imgui": "1.0.0"
46 | }
47 | },
48 | "com.unity.modules.ai": {
49 | "version": "1.0.0",
50 | "depth": 0,
51 | "source": "builtin",
52 | "dependencies": {}
53 | },
54 | "com.unity.modules.androidjni": {
55 | "version": "1.0.0",
56 | "depth": 0,
57 | "source": "builtin",
58 | "dependencies": {}
59 | },
60 | "com.unity.modules.animation": {
61 | "version": "1.0.0",
62 | "depth": 0,
63 | "source": "builtin",
64 | "dependencies": {}
65 | },
66 | "com.unity.modules.assetbundle": {
67 | "version": "1.0.0",
68 | "depth": 0,
69 | "source": "builtin",
70 | "dependencies": {}
71 | },
72 | "com.unity.modules.audio": {
73 | "version": "1.0.0",
74 | "depth": 0,
75 | "source": "builtin",
76 | "dependencies": {}
77 | },
78 | "com.unity.modules.cloth": {
79 | "version": "1.0.0",
80 | "depth": 0,
81 | "source": "builtin",
82 | "dependencies": {
83 | "com.unity.modules.physics": "1.0.0"
84 | }
85 | },
86 | "com.unity.modules.imageconversion": {
87 | "version": "1.0.0",
88 | "depth": 0,
89 | "source": "builtin",
90 | "dependencies": {}
91 | },
92 | "com.unity.modules.imgui": {
93 | "version": "1.0.0",
94 | "depth": 0,
95 | "source": "builtin",
96 | "dependencies": {}
97 | },
98 | "com.unity.modules.jsonserialize": {
99 | "version": "1.0.0",
100 | "depth": 0,
101 | "source": "builtin",
102 | "dependencies": {}
103 | },
104 | "com.unity.modules.particlesystem": {
105 | "version": "1.0.0",
106 | "depth": 0,
107 | "source": "builtin",
108 | "dependencies": {}
109 | },
110 | "com.unity.modules.physics": {
111 | "version": "1.0.0",
112 | "depth": 0,
113 | "source": "builtin",
114 | "dependencies": {}
115 | },
116 | "com.unity.modules.physics2d": {
117 | "version": "1.0.0",
118 | "depth": 0,
119 | "source": "builtin",
120 | "dependencies": {}
121 | },
122 | "com.unity.modules.screencapture": {
123 | "version": "1.0.0",
124 | "depth": 0,
125 | "source": "builtin",
126 | "dependencies": {
127 | "com.unity.modules.imageconversion": "1.0.0"
128 | }
129 | },
130 | "com.unity.modules.subsystems": {
131 | "version": "1.0.0",
132 | "depth": 1,
133 | "source": "builtin",
134 | "dependencies": {
135 | "com.unity.modules.jsonserialize": "1.0.0"
136 | }
137 | },
138 | "com.unity.modules.terrain": {
139 | "version": "1.0.0",
140 | "depth": 0,
141 | "source": "builtin",
142 | "dependencies": {}
143 | },
144 | "com.unity.modules.terrainphysics": {
145 | "version": "1.0.0",
146 | "depth": 0,
147 | "source": "builtin",
148 | "dependencies": {
149 | "com.unity.modules.physics": "1.0.0",
150 | "com.unity.modules.terrain": "1.0.0"
151 | }
152 | },
153 | "com.unity.modules.tilemap": {
154 | "version": "1.0.0",
155 | "depth": 0,
156 | "source": "builtin",
157 | "dependencies": {
158 | "com.unity.modules.physics2d": "1.0.0"
159 | }
160 | },
161 | "com.unity.modules.ui": {
162 | "version": "1.0.0",
163 | "depth": 0,
164 | "source": "builtin",
165 | "dependencies": {}
166 | },
167 | "com.unity.modules.uielements": {
168 | "version": "1.0.0",
169 | "depth": 0,
170 | "source": "builtin",
171 | "dependencies": {
172 | "com.unity.modules.ui": "1.0.0",
173 | "com.unity.modules.imgui": "1.0.0",
174 | "com.unity.modules.jsonserialize": "1.0.0",
175 | "com.unity.modules.uielementsnative": "1.0.0"
176 | }
177 | },
178 | "com.unity.modules.uielementsnative": {
179 | "version": "1.0.0",
180 | "depth": 1,
181 | "source": "builtin",
182 | "dependencies": {
183 | "com.unity.modules.ui": "1.0.0",
184 | "com.unity.modules.imgui": "1.0.0",
185 | "com.unity.modules.jsonserialize": "1.0.0"
186 | }
187 | },
188 | "com.unity.modules.umbra": {
189 | "version": "1.0.0",
190 | "depth": 0,
191 | "source": "builtin",
192 | "dependencies": {}
193 | },
194 | "com.unity.modules.unitywebrequest": {
195 | "version": "1.0.0",
196 | "depth": 0,
197 | "source": "builtin",
198 | "dependencies": {}
199 | },
200 | "com.unity.modules.unitywebrequestassetbundle": {
201 | "version": "1.0.0",
202 | "depth": 0,
203 | "source": "builtin",
204 | "dependencies": {
205 | "com.unity.modules.assetbundle": "1.0.0",
206 | "com.unity.modules.unitywebrequest": "1.0.0"
207 | }
208 | },
209 | "com.unity.modules.unitywebrequestaudio": {
210 | "version": "1.0.0",
211 | "depth": 0,
212 | "source": "builtin",
213 | "dependencies": {
214 | "com.unity.modules.unitywebrequest": "1.0.0",
215 | "com.unity.modules.audio": "1.0.0"
216 | }
217 | },
218 | "com.unity.modules.unitywebrequesttexture": {
219 | "version": "1.0.0",
220 | "depth": 0,
221 | "source": "builtin",
222 | "dependencies": {
223 | "com.unity.modules.unitywebrequest": "1.0.0",
224 | "com.unity.modules.imageconversion": "1.0.0"
225 | }
226 | },
227 | "com.unity.modules.unitywebrequestwww": {
228 | "version": "1.0.0",
229 | "depth": 0,
230 | "source": "builtin",
231 | "dependencies": {
232 | "com.unity.modules.unitywebrequest": "1.0.0",
233 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0",
234 | "com.unity.modules.unitywebrequestaudio": "1.0.0",
235 | "com.unity.modules.audio": "1.0.0",
236 | "com.unity.modules.assetbundle": "1.0.0",
237 | "com.unity.modules.imageconversion": "1.0.0"
238 | }
239 | },
240 | "com.unity.modules.vehicles": {
241 | "version": "1.0.0",
242 | "depth": 0,
243 | "source": "builtin",
244 | "dependencies": {
245 | "com.unity.modules.physics": "1.0.0"
246 | }
247 | },
248 | "com.unity.modules.video": {
249 | "version": "1.0.0",
250 | "depth": 0,
251 | "source": "builtin",
252 | "dependencies": {
253 | "com.unity.modules.audio": "1.0.0",
254 | "com.unity.modules.ui": "1.0.0",
255 | "com.unity.modules.unitywebrequest": "1.0.0"
256 | }
257 | },
258 | "com.unity.modules.vr": {
259 | "version": "1.0.0",
260 | "depth": 0,
261 | "source": "builtin",
262 | "dependencies": {
263 | "com.unity.modules.jsonserialize": "1.0.0",
264 | "com.unity.modules.physics": "1.0.0",
265 | "com.unity.modules.xr": "1.0.0"
266 | }
267 | },
268 | "com.unity.modules.wind": {
269 | "version": "1.0.0",
270 | "depth": 0,
271 | "source": "builtin",
272 | "dependencies": {}
273 | },
274 | "com.unity.modules.xr": {
275 | "version": "1.0.0",
276 | "depth": 0,
277 | "source": "builtin",
278 | "dependencies": {
279 | "com.unity.modules.physics": "1.0.0",
280 | "com.unity.modules.jsonserialize": "1.0.0",
281 | "com.unity.modules.subsystems": "1.0.0"
282 | }
283 | }
284 | }
285 | }
286 |
--------------------------------------------------------------------------------
/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: 22
7 | productGUID: 724ea9413a832ae44b7541851f59c06a
8 | AndroidProfiler: 0
9 | AndroidFilterTouchesWhenObscured: 0
10 | AndroidEnableSustainedPerformanceMode: 0
11 | defaultScreenOrientation: 4
12 | targetDevice: 2
13 | useOnDemandResources: 0
14 | accelerometerFrequency: 60
15 | companyName: Company
16 | productName: Project
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: 1
22 | m_SplashScreenOverlayOpacity: 1
23 | m_SplashScreenAnimation: 1
24 | m_SplashScreenLogoStyle: 1
25 | m_SplashScreenDrawMode: 0
26 | m_SplashScreenBackgroundAnimationZoom: 1
27 | m_SplashScreenLogoAnimationZoom: 1
28 | m_SplashScreenBackgroundLandscapeAspect: 1
29 | m_SplashScreenBackgroundPortraitAspect: 1
30 | m_SplashScreenBackgroundLandscapeUvs:
31 | serializedVersion: 2
32 | x: 0
33 | y: 0
34 | width: 1
35 | height: 1
36 | m_SplashScreenBackgroundPortraitUvs:
37 | serializedVersion: 2
38 | x: 0
39 | y: 0
40 | width: 1
41 | height: 1
42 | m_SplashScreenLogos: []
43 | m_VirtualRealitySplashScreen: {fileID: 0}
44 | m_HolographicTrackingLossScreen: {fileID: 0}
45 | defaultScreenWidth: 1024
46 | defaultScreenHeight: 768
47 | defaultScreenWidthWeb: 960
48 | defaultScreenHeightWeb: 600
49 | m_StereoRenderingPath: 0
50 | m_ActiveColorSpace: 1
51 | m_MTRendering: 1
52 | mipStripping: 0
53 | numberOfMipsStripped: 0
54 | m_StackTraceTypes: 010000000100000001000000010000000100000001000000
55 | iosShowActivityIndicatorOnLoading: -1
56 | androidShowActivityIndicatorOnLoading: -1
57 | iosUseCustomAppBackgroundBehavior: 0
58 | iosAllowHTTPDownload: 1
59 | allowedAutorotateToPortrait: 1
60 | allowedAutorotateToPortraitUpsideDown: 1
61 | allowedAutorotateToLandscapeRight: 1
62 | allowedAutorotateToLandscapeLeft: 1
63 | useOSAutorotation: 1
64 | use32BitDisplayBuffer: 1
65 | preserveFramebufferAlpha: 0
66 | disableDepthAndStencilBuffers: 0
67 | androidStartInFullscreen: 1
68 | androidRenderOutsideSafeArea: 1
69 | androidUseSwappy: 0
70 | androidBlitType: 0
71 | androidResizableWindow: 0
72 | androidDefaultWindowWidth: 1920
73 | androidDefaultWindowHeight: 1080
74 | androidMinimumWindowWidth: 400
75 | androidMinimumWindowHeight: 300
76 | androidFullscreenMode: 1
77 | defaultIsNativeResolution: 1
78 | macRetinaSupport: 1
79 | runInBackground: 0
80 | captureSingleScreen: 0
81 | muteOtherAudioSources: 0
82 | Prepare IOS For Recording: 0
83 | Force IOS Speakers When Recording: 0
84 | deferSystemGesturesMode: 0
85 | hideHomeButton: 0
86 | submitAnalytics: 1
87 | usePlayerLog: 1
88 | bakeCollisionMeshes: 0
89 | forceSingleInstance: 0
90 | useFlipModelSwapchain: 1
91 | resizableWindow: 0
92 | useMacAppStoreValidation: 0
93 | macAppStoreCategory: public.app-category.games
94 | gpuSkinning: 0
95 | xboxPIXTextureCapture: 0
96 | xboxEnableAvatar: 0
97 | xboxEnableKinect: 0
98 | xboxEnableKinectAutoTracking: 0
99 | xboxEnableFitness: 0
100 | visibleInBackground: 1
101 | allowFullscreenSwitch: 1
102 | fullscreenMode: 1
103 | xboxSpeechDB: 0
104 | xboxEnableHeadOrientation: 0
105 | xboxEnableGuest: 0
106 | xboxEnablePIXSampling: 0
107 | metalFramebufferOnly: 0
108 | xboxOneResolution: 0
109 | xboxOneSResolution: 0
110 | xboxOneXResolution: 3
111 | xboxOneMonoLoggingLevel: 0
112 | xboxOneLoggingLevel: 1
113 | xboxOneDisableEsram: 0
114 | xboxOneEnableTypeOptimization: 0
115 | xboxOnePresentImmediateThreshold: 0
116 | switchQueueCommandMemory: 1048576
117 | switchQueueControlMemory: 16384
118 | switchQueueComputeMemory: 262144
119 | switchNVNShaderPoolsGranularity: 33554432
120 | switchNVNDefaultPoolsGranularity: 16777216
121 | switchNVNOtherPoolsGranularity: 16777216
122 | switchNVNMaxPublicTextureIDCount: 0
123 | switchNVNMaxPublicSamplerIDCount: 0
124 | stadiaPresentMode: 0
125 | stadiaTargetFramerate: 0
126 | vulkanNumSwapchainBuffers: 3
127 | vulkanEnableSetSRGBWrite: 0
128 | vulkanEnablePreTransform: 0
129 | vulkanEnableLateAcquireNextImage: 0
130 | vulkanEnableCommandBufferRecycling: 1
131 | m_SupportedAspectRatios:
132 | 4:3: 1
133 | 5:4: 1
134 | 16:10: 1
135 | 16:9: 1
136 | Others: 1
137 | bundleVersion: 1.0
138 | preloadedAssets: []
139 | metroInputSource: 0
140 | wsaTransparentSwapchain: 0
141 | m_HolographicPauseOnTrackingLoss: 1
142 | xboxOneDisableKinectGpuReservation: 1
143 | xboxOneEnable7thCore: 1
144 | vrSettings:
145 | enable360StereoCapture: 0
146 | isWsaHolographicRemotingEnabled: 0
147 | enableFrameTimingStats: 0
148 | useHDRDisplay: 0
149 | D3DHDRBitDepth: 0
150 | m_ColorGamuts: 00000000
151 | targetPixelDensity: 30
152 | resolutionScalingMode: 0
153 | androidSupportedAspectRatio: 1
154 | androidMaxAspectRatio: 2.1
155 | applicationIdentifier: {}
156 | buildNumber:
157 | Standalone: 0
158 | iPhone: 0
159 | tvOS: 0
160 | overrideDefaultApplicationIdentifier: 0
161 | AndroidBundleVersionCode: 1
162 | AndroidMinSdkVersion: 19
163 | AndroidTargetSdkVersion: 0
164 | AndroidPreferredInstallLocation: 1
165 | aotOptions:
166 | stripEngineCode: 1
167 | iPhoneStrippingLevel: 0
168 | iPhoneScriptCallOptimization: 0
169 | ForceInternetPermission: 0
170 | ForceSDCardPermission: 0
171 | CreateWallpaper: 0
172 | APKExpansionFiles: 0
173 | keepLoadedShadersAlive: 0
174 | StripUnusedMeshComponents: 0
175 | VertexChannelCompressionMask: 4054
176 | iPhoneSdkVersion: 988
177 | iOSTargetOSVersionString: 11.0
178 | tvOSSdkVersion: 0
179 | tvOSRequireExtendedGameController: 0
180 | tvOSTargetOSVersionString: 11.0
181 | uIPrerenderedIcon: 0
182 | uIRequiresPersistentWiFi: 0
183 | uIRequiresFullScreen: 1
184 | uIStatusBarHidden: 1
185 | uIExitOnSuspend: 0
186 | uIStatusBarStyle: 0
187 | appleTVSplashScreen: {fileID: 0}
188 | appleTVSplashScreen2x: {fileID: 0}
189 | tvOSSmallIconLayers: []
190 | tvOSSmallIconLayers2x: []
191 | tvOSLargeIconLayers: []
192 | tvOSLargeIconLayers2x: []
193 | tvOSTopShelfImageLayers: []
194 | tvOSTopShelfImageLayers2x: []
195 | tvOSTopShelfImageWideLayers: []
196 | tvOSTopShelfImageWideLayers2x: []
197 | iOSLaunchScreenType: 0
198 | iOSLaunchScreenPortrait: {fileID: 0}
199 | iOSLaunchScreenLandscape: {fileID: 0}
200 | iOSLaunchScreenBackgroundColor:
201 | serializedVersion: 2
202 | rgba: 0
203 | iOSLaunchScreenFillPct: 100
204 | iOSLaunchScreenSize: 100
205 | iOSLaunchScreenCustomXibPath:
206 | iOSLaunchScreeniPadType: 0
207 | iOSLaunchScreeniPadImage: {fileID: 0}
208 | iOSLaunchScreeniPadBackgroundColor:
209 | serializedVersion: 2
210 | rgba: 0
211 | iOSLaunchScreeniPadFillPct: 100
212 | iOSLaunchScreeniPadSize: 100
213 | iOSLaunchScreeniPadCustomXibPath:
214 | iOSLaunchScreenCustomStoryboardPath:
215 | iOSLaunchScreeniPadCustomStoryboardPath:
216 | iOSDeviceRequirements: []
217 | iOSURLSchemes: []
218 | iOSBackgroundModes: 0
219 | iOSMetalForceHardShadows: 0
220 | metalEditorSupport: 1
221 | metalAPIValidation: 1
222 | iOSRenderExtraFrameOnPause: 0
223 | iosCopyPluginsCodeInsteadOfSymlink: 0
224 | appleDeveloperTeamID:
225 | iOSManualSigningProvisioningProfileID:
226 | tvOSManualSigningProvisioningProfileID:
227 | iOSManualSigningProvisioningProfileType: 0
228 | tvOSManualSigningProvisioningProfileType: 0
229 | appleEnableAutomaticSigning: 0
230 | iOSRequireARKit: 0
231 | iOSAutomaticallyDetectAndAddCapabilities: 1
232 | appleEnableProMotion: 0
233 | shaderPrecisionModel: 0
234 | clonedFromGUID: 00000000000000000000000000000000
235 | templatePackageId:
236 | templateDefaultScene:
237 | useCustomMainManifest: 0
238 | useCustomLauncherManifest: 0
239 | useCustomMainGradleTemplate: 0
240 | useCustomLauncherGradleManifest: 0
241 | useCustomBaseGradleTemplate: 0
242 | useCustomGradlePropertiesTemplate: 0
243 | useCustomProguardFile: 0
244 | AndroidTargetArchitectures: 1
245 | AndroidTargetDevices: 0
246 | AndroidSplashScreenScale: 0
247 | androidSplashScreen: {fileID: 0}
248 | AndroidKeystoreName:
249 | AndroidKeyaliasName:
250 | AndroidBuildApkPerCpuArchitecture: 0
251 | AndroidTVCompatibility: 0
252 | AndroidIsGame: 1
253 | AndroidEnableTango: 0
254 | androidEnableBanner: 1
255 | androidUseLowAccuracyLocation: 0
256 | androidUseCustomKeystore: 0
257 | m_AndroidBanners:
258 | - width: 320
259 | height: 180
260 | banner: {fileID: 0}
261 | androidGamepadSupportLevel: 0
262 | chromeosInputEmulation: 1
263 | AndroidMinifyWithR8: 0
264 | AndroidMinifyRelease: 0
265 | AndroidMinifyDebug: 0
266 | AndroidValidateAppBundleSize: 1
267 | AndroidAppBundleSizeToValidate: 150
268 | m_BuildTargetIcons: []
269 | m_BuildTargetPlatformIcons: []
270 | m_BuildTargetBatching: []
271 | m_BuildTargetGraphicsJobs: []
272 | m_BuildTargetGraphicsJobMode: []
273 | m_BuildTargetGraphicsAPIs:
274 | - m_BuildTarget: iOSSupport
275 | m_APIs: 10000000
276 | m_Automatic: 1
277 | m_BuildTargetVRSettings: []
278 | openGLRequireES31: 0
279 | openGLRequireES31AEP: 0
280 | openGLRequireES32: 0
281 | m_TemplateCustomTags: {}
282 | mobileMTRendering:
283 | Android: 1
284 | iPhone: 1
285 | tvOS: 1
286 | m_BuildTargetGroupLightmapEncodingQuality: []
287 | m_BuildTargetGroupLightmapSettings: []
288 | m_BuildTargetNormalMapEncoding: []
289 | playModeTestRunnerEnabled: 0
290 | runPlayModeTestAsEditModeTest: 0
291 | actionOnDotNetUnhandledException: 1
292 | enableInternalProfiler: 0
293 | logObjCUncaughtExceptions: 1
294 | enableCrashReportAPI: 0
295 | cameraUsageDescription:
296 | locationUsageDescription:
297 | microphoneUsageDescription:
298 | bluetoothUsageDescription:
299 | switchNMETAOverride:
300 | switchNetLibKey:
301 | switchSocketMemoryPoolSize: 6144
302 | switchSocketAllocatorPoolSize: 128
303 | switchSocketConcurrencyLimit: 14
304 | switchScreenResolutionBehavior: 2
305 | switchUseCPUProfiler: 0
306 | switchUseGOLDLinker: 0
307 | switchApplicationID: 0x01004b9000490000
308 | switchNSODependencies:
309 | switchTitleNames_0:
310 | switchTitleNames_1:
311 | switchTitleNames_2:
312 | switchTitleNames_3:
313 | switchTitleNames_4:
314 | switchTitleNames_5:
315 | switchTitleNames_6:
316 | switchTitleNames_7:
317 | switchTitleNames_8:
318 | switchTitleNames_9:
319 | switchTitleNames_10:
320 | switchTitleNames_11:
321 | switchTitleNames_12:
322 | switchTitleNames_13:
323 | switchTitleNames_14:
324 | switchTitleNames_15:
325 | switchPublisherNames_0:
326 | switchPublisherNames_1:
327 | switchPublisherNames_2:
328 | switchPublisherNames_3:
329 | switchPublisherNames_4:
330 | switchPublisherNames_5:
331 | switchPublisherNames_6:
332 | switchPublisherNames_7:
333 | switchPublisherNames_8:
334 | switchPublisherNames_9:
335 | switchPublisherNames_10:
336 | switchPublisherNames_11:
337 | switchPublisherNames_12:
338 | switchPublisherNames_13:
339 | switchPublisherNames_14:
340 | switchPublisherNames_15:
341 | switchIcons_0: {fileID: 0}
342 | switchIcons_1: {fileID: 0}
343 | switchIcons_2: {fileID: 0}
344 | switchIcons_3: {fileID: 0}
345 | switchIcons_4: {fileID: 0}
346 | switchIcons_5: {fileID: 0}
347 | switchIcons_6: {fileID: 0}
348 | switchIcons_7: {fileID: 0}
349 | switchIcons_8: {fileID: 0}
350 | switchIcons_9: {fileID: 0}
351 | switchIcons_10: {fileID: 0}
352 | switchIcons_11: {fileID: 0}
353 | switchIcons_12: {fileID: 0}
354 | switchIcons_13: {fileID: 0}
355 | switchIcons_14: {fileID: 0}
356 | switchIcons_15: {fileID: 0}
357 | switchSmallIcons_0: {fileID: 0}
358 | switchSmallIcons_1: {fileID: 0}
359 | switchSmallIcons_2: {fileID: 0}
360 | switchSmallIcons_3: {fileID: 0}
361 | switchSmallIcons_4: {fileID: 0}
362 | switchSmallIcons_5: {fileID: 0}
363 | switchSmallIcons_6: {fileID: 0}
364 | switchSmallIcons_7: {fileID: 0}
365 | switchSmallIcons_8: {fileID: 0}
366 | switchSmallIcons_9: {fileID: 0}
367 | switchSmallIcons_10: {fileID: 0}
368 | switchSmallIcons_11: {fileID: 0}
369 | switchSmallIcons_12: {fileID: 0}
370 | switchSmallIcons_13: {fileID: 0}
371 | switchSmallIcons_14: {fileID: 0}
372 | switchSmallIcons_15: {fileID: 0}
373 | switchManualHTML:
374 | switchAccessibleURLs:
375 | switchLegalInformation:
376 | switchMainThreadStackSize: 1048576
377 | switchPresenceGroupId:
378 | switchLogoHandling: 0
379 | switchReleaseVersion: 0
380 | switchDisplayVersion: 1.0.0
381 | switchStartupUserAccount: 0
382 | switchTouchScreenUsage: 0
383 | switchSupportedLanguagesMask: 0
384 | switchLogoType: 0
385 | switchApplicationErrorCodeCategory:
386 | switchUserAccountSaveDataSize: 0
387 | switchUserAccountSaveDataJournalSize: 0
388 | switchApplicationAttribute: 0
389 | switchCardSpecSize: -1
390 | switchCardSpecClock: -1
391 | switchRatingsMask: 0
392 | switchRatingsInt_0: 0
393 | switchRatingsInt_1: 0
394 | switchRatingsInt_2: 0
395 | switchRatingsInt_3: 0
396 | switchRatingsInt_4: 0
397 | switchRatingsInt_5: 0
398 | switchRatingsInt_6: 0
399 | switchRatingsInt_7: 0
400 | switchRatingsInt_8: 0
401 | switchRatingsInt_9: 0
402 | switchRatingsInt_10: 0
403 | switchRatingsInt_11: 0
404 | switchRatingsInt_12: 0
405 | switchLocalCommunicationIds_0:
406 | switchLocalCommunicationIds_1:
407 | switchLocalCommunicationIds_2:
408 | switchLocalCommunicationIds_3:
409 | switchLocalCommunicationIds_4:
410 | switchLocalCommunicationIds_5:
411 | switchLocalCommunicationIds_6:
412 | switchLocalCommunicationIds_7:
413 | switchParentalControl: 0
414 | switchAllowsScreenshot: 1
415 | switchAllowsVideoCapturing: 1
416 | switchAllowsRuntimeAddOnContentInstall: 0
417 | switchDataLossConfirmation: 0
418 | switchUserAccountLockEnabled: 0
419 | switchSystemResourceMemory: 16777216
420 | switchSupportedNpadStyles: 22
421 | switchNativeFsCacheSize: 32
422 | switchIsHoldTypeHorizontal: 0
423 | switchSupportedNpadCount: 8
424 | switchSocketConfigEnabled: 0
425 | switchTcpInitialSendBufferSize: 32
426 | switchTcpInitialReceiveBufferSize: 64
427 | switchTcpAutoSendBufferSizeMax: 256
428 | switchTcpAutoReceiveBufferSizeMax: 256
429 | switchUdpSendBufferSize: 9
430 | switchUdpReceiveBufferSize: 42
431 | switchSocketBufferEfficiency: 4
432 | switchSocketInitializeEnabled: 1
433 | switchNetworkInterfaceManagerInitializeEnabled: 1
434 | switchPlayerConnectionEnabled: 1
435 | switchUseNewStyleFilepaths: 0
436 | switchUseMicroSleepForYield: 1
437 | switchMicroSleepForYieldTime: 25
438 | ps4NPAgeRating: 12
439 | ps4NPTitleSecret:
440 | ps4NPTrophyPackPath:
441 | ps4ParentalLevel: 11
442 | ps4ContentID: ED1633-NPXX51362_00-0000000000000000
443 | ps4Category: 0
444 | ps4MasterVersion: 01.00
445 | ps4AppVersion: 01.00
446 | ps4AppType: 0
447 | ps4ParamSfxPath:
448 | ps4VideoOutPixelFormat: 0
449 | ps4VideoOutInitialWidth: 1920
450 | ps4VideoOutBaseModeInitialWidth: 1920
451 | ps4VideoOutReprojectionRate: 60
452 | ps4PronunciationXMLPath:
453 | ps4PronunciationSIGPath:
454 | ps4BackgroundImagePath:
455 | ps4StartupImagePath:
456 | ps4StartupImagesFolder:
457 | ps4IconImagesFolder:
458 | ps4SaveDataImagePath:
459 | ps4SdkOverride:
460 | ps4BGMPath:
461 | ps4ShareFilePath:
462 | ps4ShareOverlayImagePath:
463 | ps4PrivacyGuardImagePath:
464 | ps4ExtraSceSysFile:
465 | ps4NPtitleDatPath:
466 | ps4RemotePlayKeyAssignment: -1
467 | ps4RemotePlayKeyMappingDir:
468 | ps4PlayTogetherPlayerCount: 0
469 | ps4EnterButtonAssignment: 2
470 | ps4ApplicationParam1: 0
471 | ps4ApplicationParam2: 0
472 | ps4ApplicationParam3: 0
473 | ps4ApplicationParam4: 0
474 | ps4DownloadDataSize: 0
475 | ps4GarlicHeapSize: 2048
476 | ps4ProGarlicHeapSize: 2560
477 | playerPrefsMaxSize: 32768
478 | ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ
479 | ps4pnSessions: 1
480 | ps4pnPresence: 1
481 | ps4pnFriends: 1
482 | ps4pnGameCustomData: 1
483 | playerPrefsSupport: 0
484 | enableApplicationExit: 0
485 | resetTempFolder: 1
486 | restrictedAudioUsageRights: 0
487 | ps4UseResolutionFallback: 0
488 | ps4ReprojectionSupport: 0
489 | ps4UseAudio3dBackend: 0
490 | ps4UseLowGarlicFragmentationMode: 1
491 | ps4SocialScreenEnabled: 0
492 | ps4ScriptOptimizationLevel: 2
493 | ps4Audio3dVirtualSpeakerCount: 14
494 | ps4attribCpuUsage: 0
495 | ps4PatchPkgPath:
496 | ps4PatchLatestPkgPath:
497 | ps4PatchChangeinfoPath:
498 | ps4PatchDayOne: 0
499 | ps4attribUserManagement: 0
500 | ps4attribMoveSupport: 0
501 | ps4attrib3DSupport: 0
502 | ps4attribShareSupport: 0
503 | ps4attribExclusiveVR: 0
504 | ps4disableAutoHideSplash: 0
505 | ps4videoRecordingFeaturesUsed: 0
506 | ps4contentSearchFeaturesUsed: 0
507 | ps4CompatibilityPS5: 0
508 | ps4AllowPS5Detection: 0
509 | ps4GPU800MHz: 1
510 | ps4attribEyeToEyeDistanceSettingVR: 0
511 | ps4IncludedModules: []
512 | ps4attribVROutputEnabled: 0
513 | monoEnv:
514 | splashScreenBackgroundSourceLandscape: {fileID: 0}
515 | splashScreenBackgroundSourcePortrait: {fileID: 0}
516 | blurSplashScreenBackground: 1
517 | spritePackerPolicy:
518 | webGLMemorySize: 32
519 | webGLExceptionSupport: 1
520 | webGLNameFilesAsHashes: 0
521 | webGLDataCaching: 1
522 | webGLDebugSymbols: 0
523 | webGLEmscriptenArgs:
524 | webGLModulesDirectory:
525 | webGLTemplate: APPLICATION:Default
526 | webGLAnalyzeBuildSize: 0
527 | webGLUseEmbeddedResources: 0
528 | webGLCompressionFormat: 0
529 | webGLWasmArithmeticExceptions: 0
530 | webGLLinkerTarget: 1
531 | webGLThreadsSupport: 0
532 | webGLDecompressionFallback: 0
533 | scriptingDefineSymbols: {}
534 | additionalCompilerArguments: {}
535 | platformArchitecture: {}
536 | scriptingBackend: {}
537 | il2cppCompilerConfiguration: {}
538 | managedStrippingLevel: {}
539 | incrementalIl2cppBuild: {}
540 | suppressCommonWarnings: 1
541 | allowUnsafeCode: 0
542 | useDeterministicCompilation: 1
543 | useReferenceAssemblies: 1
544 | enableRoslynAnalyzers: 1
545 | additionalIl2CppArgs:
546 | scriptingRuntimeVersion: 1
547 | gcIncremental: 0
548 | assemblyVersionValidation: 1
549 | gcWBarrierValidation: 0
550 | apiCompatibilityLevelPerPlatform: {}
551 | m_RenderingPath: 1
552 | m_MobileRenderingPath: 1
553 | metroPackageName: UnityInitializeProject
554 | metroPackageVersion:
555 | metroCertificatePath:
556 | metroCertificatePassword:
557 | metroCertificateSubject:
558 | metroCertificateIssuer:
559 | metroCertificateNotAfter: 0000000000000000
560 | metroApplicationDescription: UnityInitializeProject
561 | wsaImages: {}
562 | metroTileShortName:
563 | metroTileShowName: 0
564 | metroMediumTileShowName: 0
565 | metroLargeTileShowName: 0
566 | metroWideTileShowName: 0
567 | metroSupportStreamingInstall: 0
568 | metroLastRequiredScene: 0
569 | metroDefaultTileSize: 1
570 | metroTileForegroundText: 2
571 | metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0}
572 | metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628,
573 | a: 1}
574 | metroSplashScreenUseBackgroundColor: 0
575 | platformCapabilities: {}
576 | metroTargetDeviceFamilies: {}
577 | metroFTAName:
578 | metroFTAFileTypes: []
579 | metroProtocolName:
580 | XboxOneProductId:
581 | XboxOneUpdateKey:
582 | XboxOneSandboxId:
583 | XboxOneContentId:
584 | XboxOneTitleId:
585 | XboxOneSCId:
586 | XboxOneGameOsOverridePath:
587 | XboxOnePackagingOverridePath:
588 | XboxOneAppManifestOverridePath:
589 | XboxOneVersion: 1.0.0.0
590 | XboxOnePackageEncryption: 0
591 | XboxOnePackageUpdateGranularity: 2
592 | XboxOneDescription:
593 | XboxOneLanguage:
594 | - enus
595 | XboxOneCapability: []
596 | XboxOneGameRating: {}
597 | XboxOneIsContentPackage: 0
598 | XboxOneEnhancedXboxCompatibilityMode: 0
599 | XboxOneEnableGPUVariability: 1
600 | XboxOneSockets: {}
601 | XboxOneSplashScreen: {fileID: 0}
602 | XboxOneAllowedProductIds: []
603 | XboxOnePersistentLocalStorageSize: 0
604 | XboxOneXTitleMemory: 8
605 | XboxOneOverrideIdentityName:
606 | XboxOneOverrideIdentityPublisher:
607 | vrEditorSettings: {}
608 | cloudServicesEnabled: {}
609 | luminIcon:
610 | m_Name:
611 | m_ModelFolderPath:
612 | m_PortalFolderPath:
613 | luminCert:
614 | m_CertPath:
615 | m_SignPackage: 1
616 | luminIsChannelApp: 0
617 | luminVersion:
618 | m_VersionCode: 1
619 | m_VersionName:
620 | apiCompatibilityLevel: 6
621 | activeInputHandler: 0
622 | cloudProjectId:
623 | framebufferDepthMemorylessMode: 0
624 | qualitySettingsNames: []
625 | projectName:
626 | organizationId:
627 | cloudEnabled: 0
628 | legacyClampBlendShapeWeights: 0
629 | virtualTexturingSupportEnabled: 0
630 |
--------------------------------------------------------------------------------
/Assets/Editor/InitializeProject.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.IO;
4 | using System.Linq;
5 | using System.Reflection;
6 | using UnityEditor;
7 | using UnityEditor.PackageManager;
8 | using UnityEditor.PackageManager.Requests;
9 | using UnityEditor.SceneManagement;
10 | using UnityEngine;
11 |
12 | namespace UnityLauncherProTools
13 | {
14 | public class InitializeProject : EditorWindow
15 | {
16 | static readonly string id = "InitializeProject_";
17 |
18 | // settings
19 | static string[] folders = new string[] { "Fonts", "Materials", "Models", "Prefabs", "Scenes", "Scripts", "Shaders", "Sounds", "Textures" };
20 |
21 | static Dictionary addPackages = new Dictionary() { { "com.unity.ide.visualstudio", "2.0.25" }, { "com.unity.ugui", null } };
22 | static string[] blackListedPackages = new string[] { "com.unity.modules.unityanalytics", "com.unity.modules.director", "com.unity.collab-proxy", "com.unity.ide.rider", "com.unity.ide.vscode", "com.unity.test-framework", "com.unity.timeline", "com.unity.visualscripting" };
23 |
24 | static InitializeProject window;
25 | static string assetsFolder;
26 | static bool deleteFile = true;
27 |
28 | static bool createFolders = true;
29 | static bool updatePackages = true;
30 |
31 | static bool importAssets = true;
32 | static List items;
33 | static List checkedStates;
34 |
35 | static SearchRequest currentSearch;
36 | static List packagesToResolve = new List();
37 | static int currentPackageIndex = 0;
38 | static bool isSearching = false;
39 |
40 | [MenuItem("Tools/UnityLibrary/Initialize Project")]
41 | public static void InitManually()
42 | {
43 | // called manually from menu, so dont delete file when testing
44 | deleteFile = false;
45 | Init();
46 | }
47 |
48 | // this method is called from launcher, without parameters, so delete is called
49 | public static void Init()
50 | {
51 | window = (InitializeProject)EditorWindow.GetWindow(typeof(InitializeProject));
52 | window.titleContent = new GUIContent("Initialize Project");
53 | window.minSize = new Vector2(450, 550);
54 |
55 | // fetch latest package numbers> only scan those with null version
56 | packagesToResolve = addPackages.Where(kvp => kvp.Value == null).Select(kvp => kvp.Key).ToList();
57 | currentPackageIndex = 0;
58 | StartNextPackageVersionSearch();
59 |
60 | LoadSettings();
61 | window.Show();
62 | }
63 |
64 | void OnGUI()
65 | {
66 | GUILayout.Label("Project Setup", EditorStyles.boldLabel);
67 | GUILayout.Space(10);
68 |
69 | Checkbox("Create Folders", "Common folders: Scripts, Scenes, Textures..", ref createFolders);
70 | Checkbox("Update Packages", "Adds and removes packages from manifest.json", ref updatePackages);
71 | Checkbox("Import Assets", "Imports selected assets from the list below", ref importAssets);
72 |
73 | GUILayout.Space(10);
74 | if (GUILayout.Button("Setup Project", GUILayout.Height(64)))
75 | {
76 | SetupProject();
77 | }
78 |
79 | DrawAddAssets();
80 | DrawAssetList();
81 |
82 | // enter to confirm
83 | if (Event.current.keyCode == KeyCode.Return) SetupProject();
84 | }
85 |
86 | static void DrawAssetList()
87 | {
88 | GUILayout.Space(5);
89 | GUILayout.Box("", GUILayout.ExpandWidth(true), GUILayout.Height(2));
90 | GUILayout.Space(5);
91 |
92 | // Draw list of items
93 | for (int i = 0; i < items.Count; i++)
94 | {
95 | GUILayout.BeginHorizontal();
96 |
97 | bool newState = EditorGUILayout.Toggle(checkedStates[i], GUILayout.Width(20));
98 | if (newState != checkedStates[i])
99 | {
100 | checkedStates[i] = newState;
101 | }
102 |
103 | var filename = Path.GetFileName(items[i]);
104 | GUILayout.Label(filename, GUILayout.Width(350));
105 |
106 | EditorGUI.BeginDisabledGroup(i == 0);
107 | if (GUILayout.Button("^", GUILayout.Width(20)))
108 | {
109 | var item = items[i];
110 | var state = checkedStates[i];
111 | items.RemoveAt(i);
112 | checkedStates.RemoveAt(i);
113 | items.Insert(i - 1, item);
114 | checkedStates.Insert(i - 1, state);
115 | }
116 | EditorGUI.EndDisabledGroup();
117 |
118 | EditorGUI.BeginDisabledGroup(i == items.Count - 1);
119 | if (GUILayout.Button("v", GUILayout.Width(20)))
120 | {
121 | var item = items[i];
122 | var state = checkedStates[i];
123 | items.RemoveAt(i);
124 | checkedStates.RemoveAt(i);
125 | items.Insert(i + 1, item);
126 | checkedStates.Insert(i + 1, state);
127 | }
128 | EditorGUI.EndDisabledGroup();
129 |
130 | if (GUILayout.Button("x", GUILayout.Width(20)))
131 | {
132 | items.RemoveAt(i);
133 | checkedStates.RemoveAt(i);
134 | }
135 | GUILayout.EndHorizontal();
136 | }
137 | }
138 |
139 | private static void DrawAddAssets()
140 | {
141 | GUILayout.Space(10);
142 | GUILayout.Box("", GUILayout.ExpandWidth(true), GUILayout.Height(2));
143 |
144 | if (GUILayout.Button("Select assets..."))
145 | {
146 | // TODO add support for custom asset store folder (2022 and later)
147 | var assetsFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Unity\\Asset Store-5.x");
148 | if (Directory.Exists(assetsFolder) == true)
149 | {
150 | string path = EditorUtility.OpenFilePanel("Select Asset to Include", assetsFolder, "unitypackage");
151 | if (!string.IsNullOrEmpty(path))
152 | {
153 | // dont add if already in list
154 | if (items.Contains(path) == false)
155 | {
156 | items.Add(path);
157 | checkedStates.Add(true);
158 | }
159 | else
160 | {
161 | var filename = Path.GetFileName(path);
162 | Debug.LogWarning(filename + " is already added.");
163 | }
164 | }
165 | }
166 | else
167 | {
168 | Debug.LogError("Asset folder not found: " + assetsFolder);
169 | }
170 | }
171 | }
172 |
173 | static void SetupProject()
174 | {
175 | assetsFolder = Application.dataPath;
176 |
177 | if (createFolders) CreateFolders();
178 |
179 | // TODO set these somewhere globally?
180 | PlayerSettings.companyName = "Company";
181 | PlayerSettings.productName = "Project";
182 |
183 | PlayerSettings.colorSpace = ColorSpace.Linear;
184 |
185 | // save scene
186 | var scenePath = "Assets/Scenes/Main.unity";
187 | if (Directory.Exists(scenePath) == false)
188 | {
189 | Directory.CreateDirectory("Assets/Scenes");
190 | }
191 | EditorSceneManager.SaveScene(EditorSceneManager.GetActiveScene(), scenePath);
192 |
193 | // add scene to build settings
194 | List editorBuildSettingsScenes = new List();
195 | if (!string.IsNullOrEmpty(scenePath)) editorBuildSettingsScenes.Add(new EditorBuildSettingsScene(scenePath, true));
196 | EditorBuildSettings.scenes = editorBuildSettingsScenes.ToArray();
197 |
198 | // TODO 2d/3d mode for editor?
199 |
200 | if (updatePackages == true) UpdatePackages();
201 | AssetDatabase.Refresh();
202 | SaveSettingsAndImportAssets(import: true);
203 |
204 | // skybox off from lighting settings
205 | RenderSettings.skybox = null;
206 |
207 | // skybox off from camera
208 | Camera.main.clearFlags = CameraClearFlags.SolidColor;
209 | // TODO set background color?
210 |
211 | // reset camera pos
212 | Camera.main.transform.position = new Vector3(0, 3, -10);
213 |
214 | // disable editor camera easing and acceleration
215 | #if UNITY_2019_1_OR_NEWER
216 | if (SceneView.lastActiveSceneView != null) SceneView.lastActiveSceneView.cameraSettings.easingEnabled = false;
217 | if (SceneView.lastActiveSceneView != null) SceneView.lastActiveSceneView.cameraSettings.accelerationEnabled = false;
218 | #endif
219 |
220 | // paraller imports 2021.2 or later (BUT doesnt seem to work..?)
221 | #if UNITY_2021_2_OR_NEWER
222 | EnableParallelAssetImport(true);
223 | #endif
224 |
225 | // GizmoUtility in 2022.1
226 | //GizmoUtility.SetGizmoEnabled(GizmoType.Move, true);
227 |
228 | // set sceneview gizmos size https://github.com/unity3d-kr/GizmoHotkeys/blob/05516ebfc3ce1655cbefb150d328e2b66e03646d/Editor/SelectionGizmo.cs
229 | Assembly asm = Assembly.GetAssembly(typeof(Editor));
230 | Type type = asm.GetType("UnityEditor.AnnotationUtility");
231 | if (type != null)
232 | {
233 | PropertyInfo iconSizeProperty = type.GetProperty("iconSize", BindingFlags.Static | BindingFlags.NonPublic);
234 | if (iconSizeProperty != null)
235 | {
236 | //float nowIconSize = (float)iconSizeProperty.GetValue(asm, null);
237 | iconSizeProperty.SetValue(asm, 0.01f, null);
238 | }
239 | }
240 |
241 | // disable unity splash
242 | PlayerSettings.SplashScreen.show = false;
243 |
244 | // TODO adjust quality settings (but only in mobile? add toggle: webgl/mobile/windows)
245 |
246 | window.Close();
247 |
248 | // self destruct this editor script file
249 | if (deleteFile == true)
250 | {
251 | // FIXME in editor: file is deleted, if re-import some script, while editorwindow is open (resets deletefile bool?)
252 | var scriptPath = Path.Combine(assetsFolder, "Editor/InitializeProject.cs");
253 |
254 | Debug.Log("Deleting init script: " + scriptPath);
255 | if (File.Exists(scriptPath)) File.Delete(scriptPath);
256 | if (File.Exists(scriptPath + ".meta")) File.Delete(scriptPath + ".meta");
257 | }
258 | else
259 | {
260 | Debug.Log("File not deleted when called init manually");
261 | }
262 | AssetDatabase.Refresh();
263 | // if imported assets, need to enter playmode and off for some reason..
264 | }
265 |
266 | private void OnEnable()
267 | {
268 | LoadSettings();
269 | }
270 |
271 | private void OnDestroy()
272 | {
273 | SaveSettingsAndImportAssets();
274 | if (importAssets == true)
275 | {
276 | // NOTE have to enter playmode to fully import asset packages???
277 | #if UNITY_2019_1_OR_NEWER
278 | EditorApplication.EnterPlaymode(); // not available in <2019.1
279 |
280 | var stopperScript = Path.Combine(assetsFolder, "Editor/StopPlaymode.cs");
281 | string contents = @"
282 | using UnityEditor;
283 | using UnityEngine;
284 | using System.IO;
285 | using UnityEditor.Callbacks;
286 |
287 | [InitializeOnLoad]
288 | public class StopPlaymode
289 | {
290 | static StopPlaymode()
291 | {
292 | EditorApplication.ExitPlaymode();
293 | EditorApplication.delayCall += DeleteSelfScript;
294 | }
295 |
296 | static void DeleteSelfScript()
297 | {
298 | var scriptPath = Path.Combine(Application.dataPath, ""Editor/StopPlaymode.cs"");
299 | if (File.Exists(scriptPath))
300 | {
301 | File.Delete(scriptPath);
302 | File.Delete(scriptPath + "".meta"");
303 | AssetDatabase.Refresh();
304 | }
305 | }
306 | }";
307 | File.WriteAllText(stopperScript, contents);
308 | }
309 |
310 | //// create dummy editor script to stop playmode and delete itself
311 | //if (File.Exists(stopperScript) == false)
312 | //{
313 | // string contents = "using UnityEditor;\n\n[InitializeOnLoad]\npublic class StopPlaymode\n{\n static StopPlaymode()\n {\n EditorApplication.ExitPlaymode();\n System.IO.File.Delete(\"" + stopperScript + "\");}\n}";
314 | // File.WriteAllText(stopperScript, contents);
315 | //}
316 |
317 | #endif
318 | }
319 |
320 | private void OnDisable()
321 | {
322 | SaveSettingsAndImportAssets();
323 | }
324 |
325 | private static void LoadSettings()
326 | {
327 | items = new List();
328 | checkedStates = new List();
329 |
330 | importAssets = EditorPrefs.GetBool(id + "importAssets", true);
331 | var listOfAssets = EditorPrefs.GetString(id + "listOfAssets", "");
332 | var checkedState = EditorPrefs.GetString(id + "checkedState", "");
333 |
334 | if (listOfAssets != "")
335 | {
336 | var assets = listOfAssets.Split('|');
337 | foreach (var asset in assets)
338 | {
339 | if (asset != "")
340 | {
341 | items.Add(asset);
342 | }
343 | }
344 |
345 | var states = checkedState.Split('|');
346 | foreach (var state in states)
347 | {
348 | if (state != "")
349 | {
350 | checkedStates.Add(state == "1");
351 | }
352 | }
353 | }
354 | }
355 |
356 | static void SaveSettingsAndImportAssets(bool import = false)
357 | {
358 | string listOfAssets = "";
359 | string checkedState = "";
360 | for (int i = 0; i < items.Count; i++)
361 | {
362 | if (checkedStates[i] == true)
363 | {
364 | if (import == true)
365 | {
366 | if (File.Exists(items[i]) == false)
367 | {
368 | Debug.LogError("File not found: " + items[i]);
369 | continue;
370 | }
371 | Debug.Log("Importing: " + Path.GetFileName(items[i]));
372 | if (importAssets == true) AssetDatabase.ImportPackage(items[i], false);
373 | }
374 | }
375 | listOfAssets += items[i] + "|";
376 | checkedState += (checkedStates[i] == true ? 1 : 0) + "|";
377 | }
378 | EditorPrefs.SetString(id + "listOfAssets", listOfAssets);
379 | EditorPrefs.SetString(id + "checkedState", checkedState);
380 | EditorPrefs.SetBool(id + "importAssets", importAssets);
381 | }
382 |
383 | static void UpdatePackages()
384 | {
385 | // check if packages.json exists
386 | var packagesPath = Path.Combine(assetsFolder, "../Packages/manifest.json");
387 | if (!File.Exists(packagesPath)) return;
388 |
389 | var json = File.ReadAllText(packagesPath);
390 |
391 | // NOTE this seems to work in 2020.3 and later?
392 | var jsonConvertType = Type.GetType("Newtonsoft.Json.JsonConvert, Newtonsoft.Json");
393 | if (jsonConvertType != null)
394 | {
395 | jsonConvertType = Assembly.Load("Newtonsoft.Json").GetType("Newtonsoft.Json.JsonConvert");
396 | }
397 |
398 | IJsonSerializer jsonSerializer;
399 | if (jsonConvertType != null)
400 | {
401 | jsonSerializer = new NewtonsoftJsonSerializer(jsonConvertType);
402 | }
403 | else
404 | {
405 | jsonSerializer = new DefaultJsonSerializer();
406 | }
407 |
408 | // do we have real newtonsoft
409 | Type type = Type.GetType("Newtonsoft.Json.JsonConvert, Newtonsoft.Json");
410 | if (type != null)
411 | {
412 | //Debug.Log("We have Newtonsoft.Json");
413 | var fromJson = jsonSerializer.Deserialize(json);
414 |
415 | // remove blacklisted packages
416 | for (int i = fromJson.dependencies.Count; i > -1; i--)
417 | {
418 | for (int k = 0; k < blackListedPackages.Length; k++)
419 | {
420 | if (fromJson.dependencies.ContainsKey(blackListedPackages[k]))
421 | {
422 | fromJson.dependencies.Remove(blackListedPackages[k]);
423 | //Debug.Log("Removed " + blackListedPackages[k]);
424 | }
425 | }
426 | }
427 |
428 | // add wanted packages, if missing
429 | // add wanted packages, if missing
430 | foreach (KeyValuePair item in addPackages)
431 | {
432 | var packageName = item.Key;
433 | var version = item.Value;
434 |
435 | // If version is still null/empty here, we treat it as "install latest via PackageManager"
436 | if (string.IsNullOrEmpty(version))
437 | {
438 | #if UNITY_2019_1_OR_NEWER
439 | Debug.Log($"Version for '{packageName}' not resolved yet, installing latest via PackageManager.Client.Add");
440 | Client.Add(packageName); // no @version = latest compatible
441 | #else
442 | Debug.Log($"Skipping '{packageName}': no version and Package Manager API not available on this Unity version.");
443 | #endif
444 | continue;
445 | }
446 |
447 | if (fromJson.dependencies.ContainsKey(packageName) == false)
448 | {
449 | fromJson.dependencies.Add(packageName, version);
450 | Debug.Log("Added " + packageName + "@" + version);
451 | }
452 | else
453 | {
454 | if (fromJson.dependencies[packageName] != version)
455 | {
456 | Debug.Log("Updated " + packageName + " from " + fromJson.dependencies[packageName] + " to " + version);
457 | fromJson.dependencies[packageName] = version;
458 | }
459 | }
460 | }
461 |
462 |
463 | // TODO add pretty print
464 | var toJson = jsonSerializer.Serialize(fromJson);
465 |
466 | // FIXME temporary pretty print, by adding new lines and tabs
467 | toJson = toJson.Replace(",", ",\n");
468 | toJson = toJson.Replace("{", "{\n");
469 | toJson = toJson.Replace("}", "\n}");
470 | toJson = toJson.Replace("\"dependencies", "\t\"dependencies");
471 | toJson = toJson.Replace("\"com.", "\t\t\"com.");
472 | //Debug.Log(toJson);
473 |
474 | File.WriteAllText(packagesPath, toJson);
475 | }
476 | else
477 | {
478 | Debug.Log("Newtonsoft.Json is not available, cannot remove packages..");
479 | }
480 | } // UpdatePackages()
481 |
482 | static void StartNextPackageVersionSearch()
483 | {
484 | if (currentPackageIndex >= packagesToResolve.Count)
485 | {
486 | Debug.Log("Finished resolving all null-version packages.");
487 | return;
488 | }
489 |
490 | var packageName = packagesToResolve[currentPackageIndex];
491 | Debug.Log($"Searching for latest version of {packageName}...");
492 | currentSearch = Client.Search(packageName);
493 | EditorApplication.update += PackageVersionFetchProgress;
494 | isSearching = true;
495 | }
496 |
497 | static void PackageVersionFetchProgress()
498 | {
499 | if (!isSearching || currentSearch == null || !currentSearch.IsCompleted) return;
500 |
501 | var packageName = packagesToResolve[currentPackageIndex];
502 |
503 | if (currentSearch.Status == StatusCode.Success)
504 | {
505 | var latestVersion = currentSearch.Result
506 | .OrderByDescending(p => p.version)
507 | .FirstOrDefault()?.version;
508 |
509 | if (latestVersion != null)
510 | {
511 | Debug.Log($"Resolved {packageName} to version {latestVersion}");
512 | addPackages[packageName] = latestVersion; // <--- important
513 | }
514 | else
515 | {
516 | Debug.LogWarning($"No version found for {packageName}");
517 | }
518 | }
519 | else
520 | {
521 | Debug.LogError($"Failed to resolve {packageName}: {currentSearch.Error.message}");
522 | }
523 |
524 | isSearching = false;
525 | EditorApplication.update -= PackageVersionFetchProgress;
526 | currentPackageIndex++;
527 | StartNextPackageVersionSearch();
528 | }
529 |
530 |
531 | // toggle with clickable label text
532 | static void Checkbox(string label, string tooltip, ref bool value)
533 | {
534 | EditorGUILayout.BeginHorizontal();
535 | //if (GUILayout.Button(label, EditorStyles.label)) value = !value;
536 | //value = EditorGUILayout.ToggleLeft(label, value);
537 | // show tooltip in toggle
538 | value = EditorGUILayout.Toggle(new GUIContent(label, tooltip), value);
539 | EditorGUILayout.EndHorizontal();
540 | }
541 |
542 | static void CreateFolders()
543 | {
544 | // create each folder if it doesnt exists
545 | foreach (string folder in folders)
546 | {
547 | if (!Directory.Exists(assetsFolder + " / " + folder))
548 | {
549 | Directory.CreateDirectory(assetsFolder + "/" + folder);
550 | }
551 | }
552 | }
553 |
554 | #if UNITY_2021_2_OR_NEWER
555 | // NOTE doesnt work?
556 | public static void EnableParallelAssetImport(bool enabled)
557 | {
558 | var assembly = typeof(EditorSettings).Assembly;
559 | var type = assembly.GetType("UnityEditor.AssetPipelinePreferences");
560 |
561 | if (type != null)
562 | {
563 | var method = type.GetMethod("SetParallelImport", BindingFlags.Static | BindingFlags.NonPublic);
564 | if (method != null)
565 | {
566 | method.Invoke(null, new object[] { enabled });
567 | Debug.Log($"Parallel Import {(enabled ? "enabled" : "disabled")} via script.");
568 | }
569 | else
570 | {
571 | Debug.LogWarning("SetParallelImport method not found.");
572 | }
573 | }
574 | else
575 | {
576 | Debug.LogWarning("AssetPipelinePreferences type not found.");
577 | }
578 | }
579 | #endif
580 |
581 | } // class InitializeProject
582 |
583 | #region JSON_HANDLING
584 | public class DependenciesManifest
585 | {
586 | public Dictionary dependencies { get; set; }
587 | }
588 |
589 | public interface IJsonSerializer
590 | {
591 | string Serialize(object obj);
592 | T Deserialize(string json);
593 | }
594 |
595 | public class DefaultJsonSerializer : IJsonSerializer
596 | {
597 | public string Serialize(object obj)
598 | {
599 | return "default serializer";
600 | }
601 |
602 | public T Deserialize(string json)
603 | {
604 | return default(T);
605 | }
606 | }
607 |
608 | public class NewtonsoftJsonSerializer : IJsonSerializer
609 | {
610 | private readonly Type jsonConvertType;
611 |
612 | public NewtonsoftJsonSerializer(Type jsonConvertType)
613 | {
614 | this.jsonConvertType = jsonConvertType;
615 | }
616 |
617 | public string Serialize(object obj)
618 | {
619 | var serializeMethod = jsonConvertType.GetMethod("SerializeObject", new Type[] { typeof(object) });
620 | return (string)serializeMethod.Invoke(null, new object[] { obj });
621 | }
622 |
623 | public T Deserialize(string json)
624 | {
625 | var deserializeMethod = jsonConvertType.GetMethod("DeserializeObject", new Type[] { typeof(string), typeof(Type) });
626 | return (T)deserializeMethod.Invoke(null, new object[] { json, typeof(T) });
627 | }
628 | }
629 | #endregion
630 | }
631 |
--------------------------------------------------------------------------------