├── .gitignore
├── Assets
├── AddressableAssetsData.meta
├── AddressableAssetsData
│ ├── AddressableAssetSettings.asset
│ ├── AddressableAssetSettings.asset.meta
│ ├── AssetGroupTemplates.meta
│ ├── AssetGroupTemplates
│ │ ├── Packed Assets.asset
│ │ └── Packed Assets.asset.meta
│ ├── AssetGroups.meta
│ ├── AssetGroups
│ │ ├── Built In Data.asset
│ │ ├── Built In Data.asset.meta
│ │ ├── Default Local Group.asset
│ │ ├── Default Local Group.asset.meta
│ │ ├── EncryptedAssets.asset
│ │ ├── EncryptedAssets.asset.meta
│ │ ├── PlainAssets.asset
│ │ ├── PlainAssets.asset.meta
│ │ ├── Schemas.meta
│ │ └── Schemas
│ │ │ ├── Built In Data_PlayerDataGroupSchema.asset
│ │ │ ├── Built In Data_PlayerDataGroupSchema.asset.meta
│ │ │ ├── Default Local Group_BundledAssetGroupSchema.asset
│ │ │ ├── Default Local Group_BundledAssetGroupSchema.asset.meta
│ │ │ ├── Default Local Group_ContentUpdateGroupSchema.asset
│ │ │ ├── Default Local Group_ContentUpdateGroupSchema.asset.meta
│ │ │ ├── EncryptedAssets_BundledAssetGroupSchema.asset
│ │ │ ├── EncryptedAssets_BundledAssetGroupSchema.asset.meta
│ │ │ ├── EncryptedAssets_ContentUpdateGroupSchema.asset
│ │ │ ├── EncryptedAssets_ContentUpdateGroupSchema.asset.meta
│ │ │ ├── PlainAssets_BundledAssetGroupSchema.asset
│ │ │ ├── PlainAssets_BundledAssetGroupSchema.asset.meta
│ │ │ ├── PlainAssets_ContentUpdateGroupSchema.asset
│ │ │ └── PlainAssets_ContentUpdateGroupSchema.asset.meta
│ ├── DataBuilders.meta
│ ├── DataBuilders
│ │ ├── BuildScriptFastMode.asset
│ │ ├── BuildScriptFastMode.asset.meta
│ │ ├── BuildScriptOnDemandEncrypt.asset
│ │ ├── BuildScriptOnDemandEncrypt.asset.meta
│ │ ├── BuildScriptPackedMode.asset
│ │ ├── BuildScriptPackedMode.asset.meta
│ │ ├── BuildScriptPackedPlayMode.asset
│ │ ├── BuildScriptPackedPlayMode.asset.meta
│ │ ├── BuildScriptVirtualMode.asset
│ │ └── BuildScriptVirtualMode.asset.meta
│ ├── DefaultObject.asset
│ ├── DefaultObject.asset.meta
│ └── Windows.meta
├── EncryptedTexts.meta
├── EncryptedTexts
│ ├── 1 1.jpg
│ ├── 1 1.jpg.meta
│ ├── 1 2.jpg
│ ├── 1 2.jpg.meta
│ ├── 1 3.jpg
│ ├── 1 3.jpg.meta
│ ├── 1.jpg
│ ├── 1.jpg.meta
│ ├── 2 1.jpg
│ ├── 2 1.jpg.meta
│ ├── 2 2.jpg
│ ├── 2 2.jpg.meta
│ ├── 2 3.jpg
│ ├── 2 3.jpg.meta
│ ├── 2.jpg
│ ├── 2.jpg.meta
│ ├── 3 1.jpg
│ ├── 3 1.jpg.meta
│ ├── 3 2.jpg
│ ├── 3 2.jpg.meta
│ ├── 3 3.jpg
│ ├── 3 3.jpg.meta
│ ├── 3.jpg
│ └── 3.jpg.meta
├── PlainTexts.meta
├── PlainTexts
│ ├── 4 1.jpg
│ ├── 4 1.jpg.meta
│ ├── 4 2.jpg
│ ├── 4 2.jpg.meta
│ ├── 4 3.jpg
│ ├── 4 3.jpg.meta
│ ├── 4.jpg
│ ├── 4.jpg.meta
│ ├── 5 1.jpg
│ ├── 5 1.jpg.meta
│ ├── 5 2.jpg
│ ├── 5 2.jpg.meta
│ ├── 5 3.jpg
│ ├── 5 3.jpg.meta
│ ├── 5.jpg
│ ├── 5.jpg.meta
│ ├── 6 1.jpg
│ ├── 6 1.jpg.meta
│ ├── 6 2.jpg
│ ├── 6 2.jpg.meta
│ ├── 6 3.jpg
│ ├── 6 3.jpg.meta
│ ├── 6.jpg
│ └── 6.jpg.meta
├── Scenes.meta
├── Scenes
│ ├── SampleScene.unity
│ └── SampleScene.unity.meta
├── Scripts.meta
└── Scripts
│ ├── AddressableAssetLoader.cs
│ ├── AddressableAssetLoader.cs.meta
│ ├── Editor.meta
│ ├── Editor
│ ├── BuildScriptOnDemandEncryptMode.cs
│ └── BuildScriptOnDemandEncryptMode.cs.meta
│ ├── LoadStarter.cs
│ ├── LoadStarter.cs.meta
│ ├── SeekableAesStreamcs.cs
│ └── SeekableAesStreamcs.cs.meta
├── LICENSE
└── Packages
├── manifest.json
└── packages-lock.json
/.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/*
--------------------------------------------------------------------------------
/Assets/AddressableAssetsData.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: cd271a979cc310c4d86441edacaec057
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AddressableAssetsData/AddressableAssetSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
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: 11500000, guid: 468a46d0ae32c3544b7d98094e6448a9, type: 3}
13 | m_Name: AddressableAssetSettings
14 | m_EditorClassIdentifier:
15 | m_DefaultGroup: 694272b9ea3b22d4f8698349d8648331
16 | m_OptimizeCatalogSize: 0
17 | m_BuildRemoteCatalog: 0
18 | m_BundleLocalCatalog: 0
19 | m_CatalogRequestsTimeout: 0
20 | m_DisableCatalogUpdateOnStart: 0
21 | m_IgnoreUnsupportedFilesInBuild: 0
22 | m_UniqueBundleIds: 0
23 | m_NonRecursiveBuilding: 0
24 | m_CCDEnabled: 0
25 | m_maxConcurrentWebRequests: 500
26 | m_ContiguousBundles: 0
27 | m_StripUnityVersionFromBundleBuild: 0
28 | m_DisableVisibleSubAssetRepresentations: 0
29 | m_ShaderBundleNaming: 0
30 | m_ShaderBundleCustomNaming:
31 | m_MonoScriptBundleNaming: 0
32 | m_MonoScriptBundleCustomNaming:
33 | m_RemoteCatalogBuildPath:
34 | m_Id:
35 | m_RemoteCatalogLoadPath:
36 | m_Id:
37 | m_ContentStateBuildPath:
38 | m_BuildAddressablesWithPlayerBuild: 2
39 | m_overridePlayerVersion:
40 | m_GroupAssets:
41 | - {fileID: 11400000, guid: a7e62dc694ef3914c904fa4cd1eaf099, type: 2}
42 | - {fileID: 11400000, guid: 8ea82b008d448e243bb90f2ac497b637, type: 2}
43 | - {fileID: 11400000, guid: 2c60c4e0c445e8444aa410d43679fc84, type: 2}
44 | - {fileID: 11400000, guid: b0ae33972c7dee34d96f323177617a4b, type: 2}
45 | m_BuildSettings:
46 | m_CompileScriptsInVirtualMode: 0
47 | m_CleanupStreamingAssetsAfterBuilds: 1
48 | m_LogResourceManagerExceptions: 1
49 | m_BundleBuildPath: Temp/com.unity.addressables/AssetBundles
50 | m_ProfileSettings:
51 | m_Profiles:
52 | - m_InheritedParent:
53 | m_Id: 51a9994be8a14d64a994ae4a33066641
54 | m_ProfileName: Default
55 | m_Values:
56 | - m_Id: 854bc4444e8300448951d198c6cb0334
57 | m_Value: '[UnityEditor.EditorUserBuildSettings.activeBuildTarget]'
58 | - m_Id: 3485f2e6cfb49c445b6423f13c766185
59 | m_Value: '[UnityEngine.AddressableAssets.Addressables.BuildPath]/[BuildTarget]'
60 | - m_Id: d0093434ca144504582a448c62e9fb23
61 | m_Value: '{UnityEngine.AddressableAssets.Addressables.RuntimePath}/[BuildTarget]'
62 | - m_Id: 2f3539a00884a7c4c977b8dbd43d97f1
63 | m_Value: ServerData/[BuildTarget]
64 | - m_Id: 28a3ebd9935cce34ea0f846880360373
65 | m_Value: http://localhost/[BuildTarget]
66 | - m_InheritedParent:
67 | m_Id: a1fae16a63e5de74598e959296ec1ec7
68 | m_ProfileName: MyProfile
69 | m_Values:
70 | - m_Id: 854bc4444e8300448951d198c6cb0334
71 | m_Value: '[UnityEditor.EditorUserBuildSettings.activeBuildTarget]'
72 | - m_Id: 3485f2e6cfb49c445b6423f13c766185
73 | m_Value: '[UnityEngine.AddressableAssets.Addressables.BuildPath]/[BuildTarget]'
74 | - m_Id: d0093434ca144504582a448c62e9fb23
75 | m_Value: '{UnityEngine.AddressableAssets.Addressables.RuntimePath}/[BuildTarget]'
76 | - m_Id: 2f3539a00884a7c4c977b8dbd43d97f1
77 | m_Value: LocalHostData/[BuildTarget]
78 | - m_Id: 28a3ebd9935cce34ea0f846880360373
79 | m_Value: http://[PrivateIpAddress]:[HostingServicePort]
80 | m_ProfileEntryNames:
81 | - m_Id: 854bc4444e8300448951d198c6cb0334
82 | m_Name: BuildTarget
83 | m_InlineUsage: 0
84 | - m_Id: 3485f2e6cfb49c445b6423f13c766185
85 | m_Name: LocalBuildPath
86 | m_InlineUsage: 0
87 | - m_Id: d0093434ca144504582a448c62e9fb23
88 | m_Name: LocalLoadPath
89 | m_InlineUsage: 0
90 | - m_Id: 2f3539a00884a7c4c977b8dbd43d97f1
91 | m_Name: RemoteBuildPath
92 | m_InlineUsage: 0
93 | - m_Id: 28a3ebd9935cce34ea0f846880360373
94 | m_Name: RemoteLoadPath
95 | m_InlineUsage: 0
96 | m_ProfileVersion: 1
97 | m_LabelTable:
98 | m_LabelNames:
99 | - default
100 | m_SchemaTemplates: []
101 | m_GroupTemplateObjects:
102 | - {fileID: 11400000, guid: cb04804fee5c3d54aa9785f656827102, type: 2}
103 | m_InitializationObjects: []
104 | m_CertificateHandlerType:
105 | m_AssemblyName:
106 | m_ClassName:
107 | m_ActivePlayerDataBuilderIndex: 4
108 | m_DataBuilders:
109 | - {fileID: 11400000, guid: 822db8bc363389c4dbcfe8d2309f3ac3, type: 2}
110 | - {fileID: 11400000, guid: ff82a8a7bf9cc1549a4ceb4fa1d14cc1, type: 2}
111 | - {fileID: 11400000, guid: 0cdf4ace71a67414195b66552c7f06b8, type: 2}
112 | - {fileID: 11400000, guid: 266125173517fd0489572e831904cc62, type: 2}
113 | - {fileID: 11400000, guid: f35790e86d26b9441b24dbb07f1e6f5d, type: 2}
114 | m_ActiveProfileId: 51a9994be8a14d64a994ae4a33066641
115 | m_HostingServicesManager:
116 | m_HostingServiceInfos:
117 | - classRef: UnityEditor.AddressableAssets.HostingServices.HttpHostingService,
118 | Unity.Addressables.Editor
119 | dataStore:
120 | m_SerializedData:
121 | - m_AssemblyName: mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
122 | m_ClassName: System.Int32
123 | m_Data: 62525
124 | m_Key: HostingServicePort
125 | - m_AssemblyName: mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
126 | m_ClassName: System.Int32
127 | m_Data: 0
128 | m_Key: HostingServiceUploadSpeed
129 | - m_AssemblyName: mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
130 | m_ClassName: System.String
131 | m_Data: Library/com.unity.addressables/aa/Windows/StandaloneWindows64
132 | m_Key: ContentRoot
133 | - m_AssemblyName: mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
134 | m_ClassName: System.Boolean
135 | m_Data: False
136 | m_Key: IsEnabled
137 | - m_AssemblyName: mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
138 | m_ClassName: System.String
139 | m_Data: Local Hosting
140 | m_Key: DescriptiveName
141 | - m_AssemblyName: mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
142 | m_ClassName: System.Int32
143 | m_Data: 0
144 | m_Key: InstanceId
145 | m_Settings: {fileID: 11400000}
146 | m_NextInstanceId: 1
147 | m_RegisteredServiceTypeRefs:
148 | - UnityEditor.AddressableAssets.HostingServices.HttpHostingService, Unity.Addressables.Editor
149 |
--------------------------------------------------------------------------------
/Assets/AddressableAssetsData/AddressableAssetSettings.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 2ae5fe1f1673fd440a61cdfbd62e72e9
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AddressableAssetsData/AssetGroupTemplates.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 6754b52db063c5c4ebbbc1702334a370
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AddressableAssetsData/AssetGroupTemplates/Packed Assets.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &-7570450496910408900
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 1
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: 11500000, guid: 5834b5087d578d24c926ce20cd31e6d6, type: 3}
13 | m_Name: ContentUpdateGroupSchema
14 | m_EditorClassIdentifier:
15 | m_Group: {fileID: 0}
16 | m_StaticContent: 0
17 | --- !u!114 &11400000
18 | MonoBehaviour:
19 | m_ObjectHideFlags: 0
20 | m_CorrespondingSourceObject: {fileID: 0}
21 | m_PrefabInstance: {fileID: 0}
22 | m_PrefabAsset: {fileID: 0}
23 | m_GameObject: {fileID: 0}
24 | m_Enabled: 1
25 | m_EditorHideFlags: 0
26 | m_Script: {fileID: 11500000, guid: 1a3c5d64ac83548c09dd1678b9f6f1cd, type: 3}
27 | m_Name: Packed Assets
28 | m_EditorClassIdentifier:
29 | m_SchemaObjects:
30 | - {fileID: 1609037088894614788}
31 | - {fileID: -7570450496910408900}
32 | m_Description: Pack assets into asset bundles.
33 | m_Settings: {fileID: 0}
34 | --- !u!114 &1609037088894614788
35 | MonoBehaviour:
36 | m_ObjectHideFlags: 1
37 | m_CorrespondingSourceObject: {fileID: 0}
38 | m_PrefabInstance: {fileID: 0}
39 | m_PrefabAsset: {fileID: 0}
40 | m_GameObject: {fileID: 0}
41 | m_Enabled: 1
42 | m_EditorHideFlags: 0
43 | m_Script: {fileID: 11500000, guid: e5d17a21594effb4e9591490b009e7aa, type: 3}
44 | m_Name: BundledAssetGroupSchema
45 | m_EditorClassIdentifier:
46 | m_Group: {fileID: 0}
47 | m_InternalBundleIdMode: 1
48 | m_Compression: 1
49 | m_IncludeAddressInCatalog: 1
50 | m_IncludeGUIDInCatalog: 1
51 | m_IncludeLabelsInCatalog: 1
52 | m_InternalIdNamingMode: 0
53 | m_CacheClearBehavior: 0
54 | m_IncludeInBuild: 1
55 | m_BundledAssetProviderType:
56 | m_AssemblyName:
57 | m_ClassName:
58 | m_ForceUniqueProvider: 0
59 | m_UseAssetBundleCache: 1
60 | m_UseAssetBundleCrc: 1
61 | m_UseAssetBundleCrcForCachedBundles: 1
62 | m_UseUWRForLocalBundles: 0
63 | m_Timeout: 0
64 | m_ChunkedTransfer: 0
65 | m_RedirectLimit: -1
66 | m_RetryCount: 0
67 | m_BuildPath:
68 | m_Id:
69 | m_LoadPath:
70 | m_Id:
71 | m_BundleMode: 0
72 | m_AssetBundleProviderType:
73 | m_AssemblyName:
74 | m_ClassName:
75 | m_BundleNaming: 0
76 | m_AssetLoadMode: 0
77 |
--------------------------------------------------------------------------------
/Assets/AddressableAssetsData/AssetGroupTemplates/Packed Assets.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: cb04804fee5c3d54aa9785f656827102
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AddressableAssetsData/AssetGroups.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 3b54e25960a61504a965a9e1db38f1cd
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AddressableAssetsData/AssetGroups/Built In Data.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
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: 11500000, guid: bbb281ee3bf0b054c82ac2347e9e782c, type: 3}
13 | m_Name: Built In Data
14 | m_EditorClassIdentifier:
15 | m_GroupName: Built In Data
16 | m_Data:
17 | m_SerializedData: []
18 | m_GUID: 8fcaca802f88fb4418d6c1803f7200b9
19 | m_SerializeEntries:
20 | - m_GUID: Resources
21 | m_Address: Resources
22 | m_ReadOnly: 1
23 | m_SerializedLabels: []
24 | - m_GUID: EditorSceneList
25 | m_Address: EditorSceneList
26 | m_ReadOnly: 1
27 | m_SerializedLabels: []
28 | m_ReadOnly: 1
29 | m_Settings: {fileID: 11400000, guid: 2ae5fe1f1673fd440a61cdfbd62e72e9, type: 2}
30 | m_SchemaSet:
31 | m_Schemas:
32 | - {fileID: 11400000, guid: 5a34f7bef409a6f42a68056ccd09b20d, type: 2}
33 |
--------------------------------------------------------------------------------
/Assets/AddressableAssetsData/AssetGroups/Built In Data.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a7e62dc694ef3914c904fa4cd1eaf099
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AddressableAssetsData/AssetGroups/Default Local Group.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
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: 11500000, guid: bbb281ee3bf0b054c82ac2347e9e782c, type: 3}
13 | m_Name: Default Local Group
14 | m_EditorClassIdentifier:
15 | m_GroupName: Default Local Group
16 | m_Data:
17 | m_SerializedData: []
18 | m_GUID: 694272b9ea3b22d4f8698349d8648331
19 | m_SerializeEntries: []
20 | m_ReadOnly: 0
21 | m_Settings: {fileID: 11400000, guid: 2ae5fe1f1673fd440a61cdfbd62e72e9, type: 2}
22 | m_SchemaSet:
23 | m_Schemas:
24 | - {fileID: 11400000, guid: 6f8a559a3645a684599a2ef60c88a551, type: 2}
25 | - {fileID: 11400000, guid: 6c4bdfa24e10e664aa8ccb71bae10cb3, type: 2}
26 |
--------------------------------------------------------------------------------
/Assets/AddressableAssetsData/AssetGroups/Default Local Group.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 8ea82b008d448e243bb90f2ac497b637
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AddressableAssetsData/AssetGroups/EncryptedAssets.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
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: 11500000, guid: bbb281ee3bf0b054c82ac2347e9e782c, type: 3}
13 | m_Name: EncryptedAssets
14 | m_EditorClassIdentifier:
15 | m_GroupName: EncryptedAssets
16 | m_Data:
17 | m_SerializedData: []
18 | m_GUID: 5cb9fa4ba5ded274f9c1dda692a481c4
19 | m_SerializeEntries:
20 | - m_GUID: 3f0a3e029e674d046a195cf35af79440
21 | m_Address: Assets/EncryptedTexts
22 | m_ReadOnly: 0
23 | m_SerializedLabels: []
24 | m_ReadOnly: 0
25 | m_Settings: {fileID: 11400000, guid: 2ae5fe1f1673fd440a61cdfbd62e72e9, type: 2}
26 | m_SchemaSet:
27 | m_Schemas:
28 | - {fileID: 11400000, guid: 4cdb9848bd882554fbc566803566d50b, type: 2}
29 | - {fileID: 11400000, guid: e3fe73258154cf049a7008820b8f4dff, type: 2}
30 |
--------------------------------------------------------------------------------
/Assets/AddressableAssetsData/AssetGroups/EncryptedAssets.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 2c60c4e0c445e8444aa410d43679fc84
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AddressableAssetsData/AssetGroups/PlainAssets.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
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: 11500000, guid: bbb281ee3bf0b054c82ac2347e9e782c, type: 3}
13 | m_Name: PlainAssets
14 | m_EditorClassIdentifier:
15 | m_GroupName: PlainAssets
16 | m_Data:
17 | m_SerializedData: []
18 | m_GUID: 696a5bbdc8090ff49bd2765b18e00213
19 | m_SerializeEntries:
20 | - m_GUID: edda4123c46873647b630768287c277a
21 | m_Address: Assets/PlainTexts
22 | m_ReadOnly: 0
23 | m_SerializedLabels: []
24 | m_ReadOnly: 0
25 | m_Settings: {fileID: 11400000, guid: 2ae5fe1f1673fd440a61cdfbd62e72e9, type: 2}
26 | m_SchemaSet:
27 | m_Schemas:
28 | - {fileID: 11400000, guid: 6c763e50d082016458ff346040883bed, type: 2}
29 | - {fileID: 11400000, guid: e2460e1a60bc34346aa686fac5fece40, type: 2}
30 |
--------------------------------------------------------------------------------
/Assets/AddressableAssetsData/AssetGroups/PlainAssets.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: b0ae33972c7dee34d96f323177617a4b
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AddressableAssetsData/AssetGroups/Schemas.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 40bf16fe9350c354bb06f43a4c14aa97
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AddressableAssetsData/AssetGroups/Schemas/Built In Data_PlayerDataGroupSchema.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
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: 11500000, guid: b1487f5d688e4f94f828f879d599dbdc, type: 3}
13 | m_Name: Built In Data_PlayerDataGroupSchema
14 | m_EditorClassIdentifier:
15 | m_Group: {fileID: 11400000, guid: a7e62dc694ef3914c904fa4cd1eaf099, type: 2}
16 | m_IncludeResourcesFolders: 1
17 | m_IncludeBuildSettingsScenes: 1
18 |
--------------------------------------------------------------------------------
/Assets/AddressableAssetsData/AssetGroups/Schemas/Built In Data_PlayerDataGroupSchema.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 5a34f7bef409a6f42a68056ccd09b20d
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AddressableAssetsData/AssetGroups/Schemas/Default Local Group_BundledAssetGroupSchema.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
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: 11500000, guid: e5d17a21594effb4e9591490b009e7aa, type: 3}
13 | m_Name: Default Local Group_BundledAssetGroupSchema
14 | m_EditorClassIdentifier:
15 | m_Group: {fileID: 11400000, guid: 8ea82b008d448e243bb90f2ac497b637, type: 2}
16 | m_InternalBundleIdMode: 1
17 | m_Compression: 1
18 | m_IncludeAddressInCatalog: 1
19 | m_IncludeGUIDInCatalog: 1
20 | m_IncludeLabelsInCatalog: 1
21 | m_InternalIdNamingMode: 1
22 | m_CacheClearBehavior: 0
23 | m_IncludeInBuild: 1
24 | m_BundledAssetProviderType:
25 | m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
26 | m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.BundledAssetProvider
27 | m_ForceUniqueProvider: 0
28 | m_UseAssetBundleCache: 1
29 | m_UseAssetBundleCrc: 1
30 | m_UseAssetBundleCrcForCachedBundles: 1
31 | m_UseUWRForLocalBundles: 0
32 | m_Timeout: 0
33 | m_ChunkedTransfer: 0
34 | m_RedirectLimit: -1
35 | m_RetryCount: 0
36 | m_BuildPath:
37 | m_Id: 3485f2e6cfb49c445b6423f13c766185
38 | m_LoadPath:
39 | m_Id: d0093434ca144504582a448c62e9fb23
40 | m_BundleMode: 0
41 | m_AssetBundleProviderType:
42 | m_AssemblyName: Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
43 | m_ClassName: CustomAssetBundleProvider
44 | m_BundleNaming: 2
45 | m_AssetLoadMode: 0
46 |
--------------------------------------------------------------------------------
/Assets/AddressableAssetsData/AssetGroups/Schemas/Default Local Group_BundledAssetGroupSchema.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 6c4bdfa24e10e664aa8ccb71bae10cb3
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AddressableAssetsData/AssetGroups/Schemas/Default Local Group_ContentUpdateGroupSchema.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
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: 11500000, guid: 5834b5087d578d24c926ce20cd31e6d6, type: 3}
13 | m_Name: Default Local Group_ContentUpdateGroupSchema
14 | m_EditorClassIdentifier:
15 | m_Group: {fileID: 11400000, guid: 8ea82b008d448e243bb90f2ac497b637, type: 2}
16 | m_StaticContent: 0
17 |
--------------------------------------------------------------------------------
/Assets/AddressableAssetsData/AssetGroups/Schemas/Default Local Group_ContentUpdateGroupSchema.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 6f8a559a3645a684599a2ef60c88a551
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AddressableAssetsData/AssetGroups/Schemas/EncryptedAssets_BundledAssetGroupSchema.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
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: 11500000, guid: e5d17a21594effb4e9591490b009e7aa, type: 3}
13 | m_Name: EncryptedAssets_BundledAssetGroupSchema
14 | m_EditorClassIdentifier:
15 | m_Group: {fileID: 11400000, guid: 2c60c4e0c445e8444aa410d43679fc84, type: 2}
16 | m_InternalBundleIdMode: 1
17 | m_Compression: 1
18 | m_IncludeAddressInCatalog: 1
19 | m_IncludeGUIDInCatalog: 1
20 | m_IncludeLabelsInCatalog: 1
21 | m_InternalIdNamingMode: 0
22 | m_CacheClearBehavior: 0
23 | m_IncludeInBuild: 1
24 | m_BundledAssetProviderType:
25 | m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
26 | m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.BundledAssetProvider
27 | m_ForceUniqueProvider: 0
28 | m_UseAssetBundleCache: 1
29 | m_UseAssetBundleCrc: 1
30 | m_UseAssetBundleCrcForCachedBundles: 1
31 | m_UseUWRForLocalBundles: 0
32 | m_Timeout: 0
33 | m_ChunkedTransfer: 0
34 | m_RedirectLimit: -1
35 | m_RetryCount: 0
36 | m_BuildPath:
37 | m_Id: 3485f2e6cfb49c445b6423f13c766185
38 | m_LoadPath:
39 | m_Id: d0093434ca144504582a448c62e9fb23
40 | m_BundleMode: 0
41 | m_AssetBundleProviderType:
42 | m_AssemblyName: Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
43 | m_ClassName: CustomAssetBundleProvider
44 | m_BundleNaming: 0
45 | m_AssetLoadMode: 0
46 |
--------------------------------------------------------------------------------
/Assets/AddressableAssetsData/AssetGroups/Schemas/EncryptedAssets_BundledAssetGroupSchema.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 4cdb9848bd882554fbc566803566d50b
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AddressableAssetsData/AssetGroups/Schemas/EncryptedAssets_ContentUpdateGroupSchema.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
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: 11500000, guid: 5834b5087d578d24c926ce20cd31e6d6, type: 3}
13 | m_Name: EncryptedAssets_ContentUpdateGroupSchema
14 | m_EditorClassIdentifier:
15 | m_Group: {fileID: 11400000, guid: 2c60c4e0c445e8444aa410d43679fc84, type: 2}
16 | m_StaticContent: 0
17 |
--------------------------------------------------------------------------------
/Assets/AddressableAssetsData/AssetGroups/Schemas/EncryptedAssets_ContentUpdateGroupSchema.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: e3fe73258154cf049a7008820b8f4dff
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AddressableAssetsData/AssetGroups/Schemas/PlainAssets_BundledAssetGroupSchema.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
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: 11500000, guid: e5d17a21594effb4e9591490b009e7aa, type: 3}
13 | m_Name: PlainAssets_BundledAssetGroupSchema
14 | m_EditorClassIdentifier:
15 | m_Group: {fileID: 11400000, guid: b0ae33972c7dee34d96f323177617a4b, type: 2}
16 | m_InternalBundleIdMode: 1
17 | m_Compression: 1
18 | m_IncludeAddressInCatalog: 1
19 | m_IncludeGUIDInCatalog: 1
20 | m_IncludeLabelsInCatalog: 1
21 | m_InternalIdNamingMode: 0
22 | m_CacheClearBehavior: 0
23 | m_IncludeInBuild: 1
24 | m_BundledAssetProviderType:
25 | m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
26 | m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.BundledAssetProvider
27 | m_ForceUniqueProvider: 0
28 | m_UseAssetBundleCache: 1
29 | m_UseAssetBundleCrc: 1
30 | m_UseAssetBundleCrcForCachedBundles: 1
31 | m_UseUWRForLocalBundles: 0
32 | m_Timeout: 0
33 | m_ChunkedTransfer: 0
34 | m_RedirectLimit: -1
35 | m_RetryCount: 0
36 | m_BuildPath:
37 | m_Id: 3485f2e6cfb49c445b6423f13c766185
38 | m_LoadPath:
39 | m_Id: d0093434ca144504582a448c62e9fb23
40 | m_BundleMode: 0
41 | m_AssetBundleProviderType:
42 | m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
43 | m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider
44 | m_BundleNaming: 0
45 | m_AssetLoadMode: 0
46 |
--------------------------------------------------------------------------------
/Assets/AddressableAssetsData/AssetGroups/Schemas/PlainAssets_BundledAssetGroupSchema.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 6c763e50d082016458ff346040883bed
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AddressableAssetsData/AssetGroups/Schemas/PlainAssets_ContentUpdateGroupSchema.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
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: 11500000, guid: 5834b5087d578d24c926ce20cd31e6d6, type: 3}
13 | m_Name: PlainAssets_ContentUpdateGroupSchema
14 | m_EditorClassIdentifier:
15 | m_Group: {fileID: 11400000, guid: b0ae33972c7dee34d96f323177617a4b, type: 2}
16 | m_StaticContent: 0
17 |
--------------------------------------------------------------------------------
/Assets/AddressableAssetsData/AssetGroups/Schemas/PlainAssets_ContentUpdateGroupSchema.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: e2460e1a60bc34346aa686fac5fece40
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AddressableAssetsData/DataBuilders.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 531164206f1825643ba67dbf466f4402
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AddressableAssetsData/DataBuilders/BuildScriptFastMode.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
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: 11500000, guid: 88d21199f5d473f4db36845f2318f180, type: 3}
13 | m_Name: BuildScriptFastMode
14 | m_EditorClassIdentifier:
15 | instanceProviderType:
16 | m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
17 | m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.InstanceProvider
18 | sceneProviderType:
19 | m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
20 | m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.SceneProvider
21 |
--------------------------------------------------------------------------------
/Assets/AddressableAssetsData/DataBuilders/BuildScriptFastMode.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 822db8bc363389c4dbcfe8d2309f3ac3
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AddressableAssetsData/DataBuilders/BuildScriptOnDemandEncrypt.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
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: 11500000, guid: eb41ca12e7f3d0542aa69e57e5e9f77b, type: 3}
13 | m_Name: BuildScriptOnDemandEncrypt
14 | m_EditorClassIdentifier:
15 | instanceProviderType:
16 | m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
17 | m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.InstanceProvider
18 | sceneProviderType:
19 | m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
20 | m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.SceneProvider
21 |
--------------------------------------------------------------------------------
/Assets/AddressableAssetsData/DataBuilders/BuildScriptOnDemandEncrypt.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: f35790e86d26b9441b24dbb07f1e6f5d
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedMode.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
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: 11500000, guid: 3e2e0ffa088c91d41a086d0b8cb16bdc, type: 3}
13 | m_Name: BuildScriptPackedMode
14 | m_EditorClassIdentifier:
15 | instanceProviderType:
16 | m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
17 | m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.InstanceProvider
18 | sceneProviderType:
19 | m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
20 | m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.SceneProvider
21 |
--------------------------------------------------------------------------------
/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedMode.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 266125173517fd0489572e831904cc62
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedPlayMode.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
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: 11500000, guid: ad8c280d42ee0ed41a27db23b43dd2bf, type: 3}
13 | m_Name: BuildScriptPackedPlayMode
14 | m_EditorClassIdentifier:
15 | instanceProviderType:
16 | m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
17 | m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.InstanceProvider
18 | sceneProviderType:
19 | m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
20 | m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.SceneProvider
21 |
--------------------------------------------------------------------------------
/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedPlayMode.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 0cdf4ace71a67414195b66552c7f06b8
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AddressableAssetsData/DataBuilders/BuildScriptVirtualMode.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
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: 11500000, guid: bb0e4994b34add1409fd8ccaf4a82de5, type: 3}
13 | m_Name: BuildScriptVirtualMode
14 | m_EditorClassIdentifier:
15 | instanceProviderType:
16 | m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
17 | m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.InstanceProvider
18 | sceneProviderType:
19 | m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
20 | m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.SceneProvider
21 |
--------------------------------------------------------------------------------
/Assets/AddressableAssetsData/DataBuilders/BuildScriptVirtualMode.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: ff82a8a7bf9cc1549a4ceb4fa1d14cc1
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AddressableAssetsData/DefaultObject.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
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: 11500000, guid: 3a189bb168d8d90478a09ea08c2f3d72, type: 3}
13 | m_Name: DefaultObject
14 | m_EditorClassIdentifier:
15 | m_AddressableAssetSettingsGuid: 2ae5fe1f1673fd440a61cdfbd62e72e9
16 |
--------------------------------------------------------------------------------
/Assets/AddressableAssetsData/DefaultObject.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a346598ce29554c498ff01282458f311
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AddressableAssetsData/Windows.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 242f7b6b861c6214dba85f74eebeb252
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/EncryptedTexts.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 3f0a3e029e674d046a195cf35af79440
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/EncryptedTexts/1 1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/umekan/EncryptAddressables/e7ba32bb3441cc926e0e6fad6d304b4bae4db140/Assets/EncryptedTexts/1 1.jpg
--------------------------------------------------------------------------------
/Assets/EncryptedTexts/1 1.jpg.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 1717caed7d754d34eab83949e3ca113b
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 11
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 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | vTOnly: 0
27 | grayScaleToAlpha: 0
28 | generateCubemap: 6
29 | cubemapConvolution: 0
30 | seamlessCubemap: 0
31 | textureFormat: 1
32 | maxTextureSize: 2048
33 | textureSettings:
34 | serializedVersion: 2
35 | filterMode: 1
36 | aniso: 1
37 | mipBias: 0
38 | wrapU: 0
39 | wrapV: 0
40 | wrapW: 0
41 | nPOTScale: 1
42 | lightmap: 0
43 | compressionQuality: 50
44 | spriteMode: 0
45 | spriteExtrude: 1
46 | spriteMeshType: 1
47 | alignment: 0
48 | spritePivot: {x: 0.5, y: 0.5}
49 | spritePixelsToUnits: 100
50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
51 | spriteGenerateFallbackPhysicsShape: 1
52 | alphaUsage: 1
53 | alphaIsTransparency: 0
54 | spriteTessellationDetail: -1
55 | textureType: 0
56 | textureShape: 1
57 | singleChannelComponent: 0
58 | flipbookRows: 1
59 | flipbookColumns: 1
60 | maxTextureSizeSet: 0
61 | compressionQualitySet: 0
62 | textureFormatSet: 0
63 | ignorePngGamma: 0
64 | applyGammaDecoding: 0
65 | platformSettings:
66 | - serializedVersion: 3
67 | buildTarget: DefaultTexturePlatform
68 | maxTextureSize: 2048
69 | resizeAlgorithm: 0
70 | textureFormat: -1
71 | textureCompression: 1
72 | compressionQuality: 50
73 | crunchedCompression: 0
74 | allowsAlphaSplitting: 0
75 | overridden: 0
76 | androidETC2FallbackOverride: 0
77 | forceMaximumCompressionQuality_BC6H_BC7: 0
78 | spriteSheet:
79 | serializedVersion: 2
80 | sprites: []
81 | outline: []
82 | physicsShape: []
83 | bones: []
84 | spriteID:
85 | internalID: 0
86 | vertices: []
87 | indices:
88 | edges: []
89 | weights: []
90 | secondaryTextures: []
91 | spritePackingTag:
92 | pSDRemoveMatte: 0
93 | pSDShowRemoveMatteOption: 0
94 | userData:
95 | assetBundleName:
96 | assetBundleVariant:
97 |
--------------------------------------------------------------------------------
/Assets/EncryptedTexts/1 2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/umekan/EncryptAddressables/e7ba32bb3441cc926e0e6fad6d304b4bae4db140/Assets/EncryptedTexts/1 2.jpg
--------------------------------------------------------------------------------
/Assets/EncryptedTexts/1 2.jpg.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: fad41e9817ff07643a67634799ed4fea
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 11
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 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | vTOnly: 0
27 | grayScaleToAlpha: 0
28 | generateCubemap: 6
29 | cubemapConvolution: 0
30 | seamlessCubemap: 0
31 | textureFormat: 1
32 | maxTextureSize: 2048
33 | textureSettings:
34 | serializedVersion: 2
35 | filterMode: 1
36 | aniso: 1
37 | mipBias: 0
38 | wrapU: 0
39 | wrapV: 0
40 | wrapW: 0
41 | nPOTScale: 1
42 | lightmap: 0
43 | compressionQuality: 50
44 | spriteMode: 0
45 | spriteExtrude: 1
46 | spriteMeshType: 1
47 | alignment: 0
48 | spritePivot: {x: 0.5, y: 0.5}
49 | spritePixelsToUnits: 100
50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
51 | spriteGenerateFallbackPhysicsShape: 1
52 | alphaUsage: 1
53 | alphaIsTransparency: 0
54 | spriteTessellationDetail: -1
55 | textureType: 0
56 | textureShape: 1
57 | singleChannelComponent: 0
58 | flipbookRows: 1
59 | flipbookColumns: 1
60 | maxTextureSizeSet: 0
61 | compressionQualitySet: 0
62 | textureFormatSet: 0
63 | ignorePngGamma: 0
64 | applyGammaDecoding: 0
65 | platformSettings:
66 | - serializedVersion: 3
67 | buildTarget: DefaultTexturePlatform
68 | maxTextureSize: 2048
69 | resizeAlgorithm: 0
70 | textureFormat: -1
71 | textureCompression: 1
72 | compressionQuality: 50
73 | crunchedCompression: 0
74 | allowsAlphaSplitting: 0
75 | overridden: 0
76 | androidETC2FallbackOverride: 0
77 | forceMaximumCompressionQuality_BC6H_BC7: 0
78 | spriteSheet:
79 | serializedVersion: 2
80 | sprites: []
81 | outline: []
82 | physicsShape: []
83 | bones: []
84 | spriteID:
85 | internalID: 0
86 | vertices: []
87 | indices:
88 | edges: []
89 | weights: []
90 | secondaryTextures: []
91 | spritePackingTag:
92 | pSDRemoveMatte: 0
93 | pSDShowRemoveMatteOption: 0
94 | userData:
95 | assetBundleName:
96 | assetBundleVariant:
97 |
--------------------------------------------------------------------------------
/Assets/EncryptedTexts/1 3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/umekan/EncryptAddressables/e7ba32bb3441cc926e0e6fad6d304b4bae4db140/Assets/EncryptedTexts/1 3.jpg
--------------------------------------------------------------------------------
/Assets/EncryptedTexts/1 3.jpg.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 3ee0ff47e6a0bcb48aa98b871c63a599
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 11
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 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | vTOnly: 0
27 | grayScaleToAlpha: 0
28 | generateCubemap: 6
29 | cubemapConvolution: 0
30 | seamlessCubemap: 0
31 | textureFormat: 1
32 | maxTextureSize: 2048
33 | textureSettings:
34 | serializedVersion: 2
35 | filterMode: 1
36 | aniso: 1
37 | mipBias: 0
38 | wrapU: 0
39 | wrapV: 0
40 | wrapW: 0
41 | nPOTScale: 1
42 | lightmap: 0
43 | compressionQuality: 50
44 | spriteMode: 0
45 | spriteExtrude: 1
46 | spriteMeshType: 1
47 | alignment: 0
48 | spritePivot: {x: 0.5, y: 0.5}
49 | spritePixelsToUnits: 100
50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
51 | spriteGenerateFallbackPhysicsShape: 1
52 | alphaUsage: 1
53 | alphaIsTransparency: 0
54 | spriteTessellationDetail: -1
55 | textureType: 0
56 | textureShape: 1
57 | singleChannelComponent: 0
58 | flipbookRows: 1
59 | flipbookColumns: 1
60 | maxTextureSizeSet: 0
61 | compressionQualitySet: 0
62 | textureFormatSet: 0
63 | ignorePngGamma: 0
64 | applyGammaDecoding: 0
65 | platformSettings:
66 | - serializedVersion: 3
67 | buildTarget: DefaultTexturePlatform
68 | maxTextureSize: 2048
69 | resizeAlgorithm: 0
70 | textureFormat: -1
71 | textureCompression: 1
72 | compressionQuality: 50
73 | crunchedCompression: 0
74 | allowsAlphaSplitting: 0
75 | overridden: 0
76 | androidETC2FallbackOverride: 0
77 | forceMaximumCompressionQuality_BC6H_BC7: 0
78 | spriteSheet:
79 | serializedVersion: 2
80 | sprites: []
81 | outline: []
82 | physicsShape: []
83 | bones: []
84 | spriteID:
85 | internalID: 0
86 | vertices: []
87 | indices:
88 | edges: []
89 | weights: []
90 | secondaryTextures: []
91 | spritePackingTag:
92 | pSDRemoveMatte: 0
93 | pSDShowRemoveMatteOption: 0
94 | userData:
95 | assetBundleName:
96 | assetBundleVariant:
97 |
--------------------------------------------------------------------------------
/Assets/EncryptedTexts/1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/umekan/EncryptAddressables/e7ba32bb3441cc926e0e6fad6d304b4bae4db140/Assets/EncryptedTexts/1.jpg
--------------------------------------------------------------------------------
/Assets/EncryptedTexts/1.jpg.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: b05561dd2bd6f9b4b89f3e6c5c364d17
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 11
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 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | vTOnly: 0
27 | grayScaleToAlpha: 0
28 | generateCubemap: 6
29 | cubemapConvolution: 0
30 | seamlessCubemap: 0
31 | textureFormat: 1
32 | maxTextureSize: 2048
33 | textureSettings:
34 | serializedVersion: 2
35 | filterMode: 1
36 | aniso: 1
37 | mipBias: 0
38 | wrapU: 0
39 | wrapV: 0
40 | wrapW: 0
41 | nPOTScale: 1
42 | lightmap: 0
43 | compressionQuality: 50
44 | spriteMode: 0
45 | spriteExtrude: 1
46 | spriteMeshType: 1
47 | alignment: 0
48 | spritePivot: {x: 0.5, y: 0.5}
49 | spritePixelsToUnits: 100
50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
51 | spriteGenerateFallbackPhysicsShape: 1
52 | alphaUsage: 1
53 | alphaIsTransparency: 0
54 | spriteTessellationDetail: -1
55 | textureType: 0
56 | textureShape: 1
57 | singleChannelComponent: 0
58 | flipbookRows: 1
59 | flipbookColumns: 1
60 | maxTextureSizeSet: 0
61 | compressionQualitySet: 0
62 | textureFormatSet: 0
63 | ignorePngGamma: 0
64 | applyGammaDecoding: 0
65 | platformSettings:
66 | - serializedVersion: 3
67 | buildTarget: DefaultTexturePlatform
68 | maxTextureSize: 2048
69 | resizeAlgorithm: 0
70 | textureFormat: -1
71 | textureCompression: 1
72 | compressionQuality: 50
73 | crunchedCompression: 0
74 | allowsAlphaSplitting: 0
75 | overridden: 0
76 | androidETC2FallbackOverride: 0
77 | forceMaximumCompressionQuality_BC6H_BC7: 0
78 | spriteSheet:
79 | serializedVersion: 2
80 | sprites: []
81 | outline: []
82 | physicsShape: []
83 | bones: []
84 | spriteID:
85 | internalID: 0
86 | vertices: []
87 | indices:
88 | edges: []
89 | weights: []
90 | secondaryTextures: []
91 | spritePackingTag:
92 | pSDRemoveMatte: 0
93 | pSDShowRemoveMatteOption: 0
94 | userData:
95 | assetBundleName:
96 | assetBundleVariant:
97 |
--------------------------------------------------------------------------------
/Assets/EncryptedTexts/2 1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/umekan/EncryptAddressables/e7ba32bb3441cc926e0e6fad6d304b4bae4db140/Assets/EncryptedTexts/2 1.jpg
--------------------------------------------------------------------------------
/Assets/EncryptedTexts/2 1.jpg.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 79eae101ff4ac7743a1df35bd98faf6e
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 11
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 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | vTOnly: 0
27 | grayScaleToAlpha: 0
28 | generateCubemap: 6
29 | cubemapConvolution: 0
30 | seamlessCubemap: 0
31 | textureFormat: 1
32 | maxTextureSize: 2048
33 | textureSettings:
34 | serializedVersion: 2
35 | filterMode: 1
36 | aniso: 1
37 | mipBias: 0
38 | wrapU: 0
39 | wrapV: 0
40 | wrapW: 0
41 | nPOTScale: 1
42 | lightmap: 0
43 | compressionQuality: 50
44 | spriteMode: 0
45 | spriteExtrude: 1
46 | spriteMeshType: 1
47 | alignment: 0
48 | spritePivot: {x: 0.5, y: 0.5}
49 | spritePixelsToUnits: 100
50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
51 | spriteGenerateFallbackPhysicsShape: 1
52 | alphaUsage: 1
53 | alphaIsTransparency: 0
54 | spriteTessellationDetail: -1
55 | textureType: 0
56 | textureShape: 1
57 | singleChannelComponent: 0
58 | flipbookRows: 1
59 | flipbookColumns: 1
60 | maxTextureSizeSet: 0
61 | compressionQualitySet: 0
62 | textureFormatSet: 0
63 | ignorePngGamma: 0
64 | applyGammaDecoding: 0
65 | platformSettings:
66 | - serializedVersion: 3
67 | buildTarget: DefaultTexturePlatform
68 | maxTextureSize: 2048
69 | resizeAlgorithm: 0
70 | textureFormat: -1
71 | textureCompression: 1
72 | compressionQuality: 50
73 | crunchedCompression: 0
74 | allowsAlphaSplitting: 0
75 | overridden: 0
76 | androidETC2FallbackOverride: 0
77 | forceMaximumCompressionQuality_BC6H_BC7: 0
78 | spriteSheet:
79 | serializedVersion: 2
80 | sprites: []
81 | outline: []
82 | physicsShape: []
83 | bones: []
84 | spriteID:
85 | internalID: 0
86 | vertices: []
87 | indices:
88 | edges: []
89 | weights: []
90 | secondaryTextures: []
91 | spritePackingTag:
92 | pSDRemoveMatte: 0
93 | pSDShowRemoveMatteOption: 0
94 | userData:
95 | assetBundleName:
96 | assetBundleVariant:
97 |
--------------------------------------------------------------------------------
/Assets/EncryptedTexts/2 2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/umekan/EncryptAddressables/e7ba32bb3441cc926e0e6fad6d304b4bae4db140/Assets/EncryptedTexts/2 2.jpg
--------------------------------------------------------------------------------
/Assets/EncryptedTexts/2 2.jpg.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: f34fb1230edb97c41a9b64f954dc6a73
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 11
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 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | vTOnly: 0
27 | grayScaleToAlpha: 0
28 | generateCubemap: 6
29 | cubemapConvolution: 0
30 | seamlessCubemap: 0
31 | textureFormat: 1
32 | maxTextureSize: 2048
33 | textureSettings:
34 | serializedVersion: 2
35 | filterMode: 1
36 | aniso: 1
37 | mipBias: 0
38 | wrapU: 0
39 | wrapV: 0
40 | wrapW: 0
41 | nPOTScale: 1
42 | lightmap: 0
43 | compressionQuality: 50
44 | spriteMode: 0
45 | spriteExtrude: 1
46 | spriteMeshType: 1
47 | alignment: 0
48 | spritePivot: {x: 0.5, y: 0.5}
49 | spritePixelsToUnits: 100
50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
51 | spriteGenerateFallbackPhysicsShape: 1
52 | alphaUsage: 1
53 | alphaIsTransparency: 0
54 | spriteTessellationDetail: -1
55 | textureType: 0
56 | textureShape: 1
57 | singleChannelComponent: 0
58 | flipbookRows: 1
59 | flipbookColumns: 1
60 | maxTextureSizeSet: 0
61 | compressionQualitySet: 0
62 | textureFormatSet: 0
63 | ignorePngGamma: 0
64 | applyGammaDecoding: 0
65 | platformSettings:
66 | - serializedVersion: 3
67 | buildTarget: DefaultTexturePlatform
68 | maxTextureSize: 2048
69 | resizeAlgorithm: 0
70 | textureFormat: -1
71 | textureCompression: 1
72 | compressionQuality: 50
73 | crunchedCompression: 0
74 | allowsAlphaSplitting: 0
75 | overridden: 0
76 | androidETC2FallbackOverride: 0
77 | forceMaximumCompressionQuality_BC6H_BC7: 0
78 | spriteSheet:
79 | serializedVersion: 2
80 | sprites: []
81 | outline: []
82 | physicsShape: []
83 | bones: []
84 | spriteID:
85 | internalID: 0
86 | vertices: []
87 | indices:
88 | edges: []
89 | weights: []
90 | secondaryTextures: []
91 | spritePackingTag:
92 | pSDRemoveMatte: 0
93 | pSDShowRemoveMatteOption: 0
94 | userData:
95 | assetBundleName:
96 | assetBundleVariant:
97 |
--------------------------------------------------------------------------------
/Assets/EncryptedTexts/2 3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/umekan/EncryptAddressables/e7ba32bb3441cc926e0e6fad6d304b4bae4db140/Assets/EncryptedTexts/2 3.jpg
--------------------------------------------------------------------------------
/Assets/EncryptedTexts/2 3.jpg.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 995bd6d1098cbf84a902e6afb686303b
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 11
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 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | vTOnly: 0
27 | grayScaleToAlpha: 0
28 | generateCubemap: 6
29 | cubemapConvolution: 0
30 | seamlessCubemap: 0
31 | textureFormat: 1
32 | maxTextureSize: 2048
33 | textureSettings:
34 | serializedVersion: 2
35 | filterMode: 1
36 | aniso: 1
37 | mipBias: 0
38 | wrapU: 0
39 | wrapV: 0
40 | wrapW: 0
41 | nPOTScale: 1
42 | lightmap: 0
43 | compressionQuality: 50
44 | spriteMode: 0
45 | spriteExtrude: 1
46 | spriteMeshType: 1
47 | alignment: 0
48 | spritePivot: {x: 0.5, y: 0.5}
49 | spritePixelsToUnits: 100
50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
51 | spriteGenerateFallbackPhysicsShape: 1
52 | alphaUsage: 1
53 | alphaIsTransparency: 0
54 | spriteTessellationDetail: -1
55 | textureType: 0
56 | textureShape: 1
57 | singleChannelComponent: 0
58 | flipbookRows: 1
59 | flipbookColumns: 1
60 | maxTextureSizeSet: 0
61 | compressionQualitySet: 0
62 | textureFormatSet: 0
63 | ignorePngGamma: 0
64 | applyGammaDecoding: 0
65 | platformSettings:
66 | - serializedVersion: 3
67 | buildTarget: DefaultTexturePlatform
68 | maxTextureSize: 2048
69 | resizeAlgorithm: 0
70 | textureFormat: -1
71 | textureCompression: 1
72 | compressionQuality: 50
73 | crunchedCompression: 0
74 | allowsAlphaSplitting: 0
75 | overridden: 0
76 | androidETC2FallbackOverride: 0
77 | forceMaximumCompressionQuality_BC6H_BC7: 0
78 | spriteSheet:
79 | serializedVersion: 2
80 | sprites: []
81 | outline: []
82 | physicsShape: []
83 | bones: []
84 | spriteID:
85 | internalID: 0
86 | vertices: []
87 | indices:
88 | edges: []
89 | weights: []
90 | secondaryTextures: []
91 | spritePackingTag:
92 | pSDRemoveMatte: 0
93 | pSDShowRemoveMatteOption: 0
94 | userData:
95 | assetBundleName:
96 | assetBundleVariant:
97 |
--------------------------------------------------------------------------------
/Assets/EncryptedTexts/2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/umekan/EncryptAddressables/e7ba32bb3441cc926e0e6fad6d304b4bae4db140/Assets/EncryptedTexts/2.jpg
--------------------------------------------------------------------------------
/Assets/EncryptedTexts/2.jpg.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 1dd9420b3ceb2d1459a9229c2678fbd5
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 11
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 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | vTOnly: 0
27 | grayScaleToAlpha: 0
28 | generateCubemap: 6
29 | cubemapConvolution: 0
30 | seamlessCubemap: 0
31 | textureFormat: 1
32 | maxTextureSize: 2048
33 | textureSettings:
34 | serializedVersion: 2
35 | filterMode: 1
36 | aniso: 1
37 | mipBias: 0
38 | wrapU: 0
39 | wrapV: 0
40 | wrapW: 0
41 | nPOTScale: 1
42 | lightmap: 0
43 | compressionQuality: 50
44 | spriteMode: 0
45 | spriteExtrude: 1
46 | spriteMeshType: 1
47 | alignment: 0
48 | spritePivot: {x: 0.5, y: 0.5}
49 | spritePixelsToUnits: 100
50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
51 | spriteGenerateFallbackPhysicsShape: 1
52 | alphaUsage: 1
53 | alphaIsTransparency: 0
54 | spriteTessellationDetail: -1
55 | textureType: 0
56 | textureShape: 1
57 | singleChannelComponent: 0
58 | flipbookRows: 1
59 | flipbookColumns: 1
60 | maxTextureSizeSet: 0
61 | compressionQualitySet: 0
62 | textureFormatSet: 0
63 | ignorePngGamma: 0
64 | applyGammaDecoding: 0
65 | platformSettings:
66 | - serializedVersion: 3
67 | buildTarget: DefaultTexturePlatform
68 | maxTextureSize: 2048
69 | resizeAlgorithm: 0
70 | textureFormat: -1
71 | textureCompression: 1
72 | compressionQuality: 50
73 | crunchedCompression: 0
74 | allowsAlphaSplitting: 0
75 | overridden: 0
76 | androidETC2FallbackOverride: 0
77 | forceMaximumCompressionQuality_BC6H_BC7: 0
78 | spriteSheet:
79 | serializedVersion: 2
80 | sprites: []
81 | outline: []
82 | physicsShape: []
83 | bones: []
84 | spriteID:
85 | internalID: 0
86 | vertices: []
87 | indices:
88 | edges: []
89 | weights: []
90 | secondaryTextures: []
91 | spritePackingTag:
92 | pSDRemoveMatte: 0
93 | pSDShowRemoveMatteOption: 0
94 | userData:
95 | assetBundleName:
96 | assetBundleVariant:
97 |
--------------------------------------------------------------------------------
/Assets/EncryptedTexts/3 1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/umekan/EncryptAddressables/e7ba32bb3441cc926e0e6fad6d304b4bae4db140/Assets/EncryptedTexts/3 1.jpg
--------------------------------------------------------------------------------
/Assets/EncryptedTexts/3 1.jpg.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: e8fe4b830775f59469810bee4c41a323
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 11
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 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | vTOnly: 0
27 | grayScaleToAlpha: 0
28 | generateCubemap: 6
29 | cubemapConvolution: 0
30 | seamlessCubemap: 0
31 | textureFormat: 1
32 | maxTextureSize: 2048
33 | textureSettings:
34 | serializedVersion: 2
35 | filterMode: 1
36 | aniso: 1
37 | mipBias: 0
38 | wrapU: 0
39 | wrapV: 0
40 | wrapW: 0
41 | nPOTScale: 1
42 | lightmap: 0
43 | compressionQuality: 50
44 | spriteMode: 0
45 | spriteExtrude: 1
46 | spriteMeshType: 1
47 | alignment: 0
48 | spritePivot: {x: 0.5, y: 0.5}
49 | spritePixelsToUnits: 100
50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
51 | spriteGenerateFallbackPhysicsShape: 1
52 | alphaUsage: 1
53 | alphaIsTransparency: 0
54 | spriteTessellationDetail: -1
55 | textureType: 0
56 | textureShape: 1
57 | singleChannelComponent: 0
58 | flipbookRows: 1
59 | flipbookColumns: 1
60 | maxTextureSizeSet: 0
61 | compressionQualitySet: 0
62 | textureFormatSet: 0
63 | ignorePngGamma: 0
64 | applyGammaDecoding: 0
65 | platformSettings:
66 | - serializedVersion: 3
67 | buildTarget: DefaultTexturePlatform
68 | maxTextureSize: 2048
69 | resizeAlgorithm: 0
70 | textureFormat: -1
71 | textureCompression: 1
72 | compressionQuality: 50
73 | crunchedCompression: 0
74 | allowsAlphaSplitting: 0
75 | overridden: 0
76 | androidETC2FallbackOverride: 0
77 | forceMaximumCompressionQuality_BC6H_BC7: 0
78 | spriteSheet:
79 | serializedVersion: 2
80 | sprites: []
81 | outline: []
82 | physicsShape: []
83 | bones: []
84 | spriteID:
85 | internalID: 0
86 | vertices: []
87 | indices:
88 | edges: []
89 | weights: []
90 | secondaryTextures: []
91 | spritePackingTag:
92 | pSDRemoveMatte: 0
93 | pSDShowRemoveMatteOption: 0
94 | userData:
95 | assetBundleName:
96 | assetBundleVariant:
97 |
--------------------------------------------------------------------------------
/Assets/EncryptedTexts/3 2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/umekan/EncryptAddressables/e7ba32bb3441cc926e0e6fad6d304b4bae4db140/Assets/EncryptedTexts/3 2.jpg
--------------------------------------------------------------------------------
/Assets/EncryptedTexts/3 2.jpg.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: e1fa371d772af29488d1624893a01704
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 11
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 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | vTOnly: 0
27 | grayScaleToAlpha: 0
28 | generateCubemap: 6
29 | cubemapConvolution: 0
30 | seamlessCubemap: 0
31 | textureFormat: 1
32 | maxTextureSize: 2048
33 | textureSettings:
34 | serializedVersion: 2
35 | filterMode: 1
36 | aniso: 1
37 | mipBias: 0
38 | wrapU: 0
39 | wrapV: 0
40 | wrapW: 0
41 | nPOTScale: 1
42 | lightmap: 0
43 | compressionQuality: 50
44 | spriteMode: 0
45 | spriteExtrude: 1
46 | spriteMeshType: 1
47 | alignment: 0
48 | spritePivot: {x: 0.5, y: 0.5}
49 | spritePixelsToUnits: 100
50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
51 | spriteGenerateFallbackPhysicsShape: 1
52 | alphaUsage: 1
53 | alphaIsTransparency: 0
54 | spriteTessellationDetail: -1
55 | textureType: 0
56 | textureShape: 1
57 | singleChannelComponent: 0
58 | flipbookRows: 1
59 | flipbookColumns: 1
60 | maxTextureSizeSet: 0
61 | compressionQualitySet: 0
62 | textureFormatSet: 0
63 | ignorePngGamma: 0
64 | applyGammaDecoding: 0
65 | platformSettings:
66 | - serializedVersion: 3
67 | buildTarget: DefaultTexturePlatform
68 | maxTextureSize: 2048
69 | resizeAlgorithm: 0
70 | textureFormat: -1
71 | textureCompression: 1
72 | compressionQuality: 50
73 | crunchedCompression: 0
74 | allowsAlphaSplitting: 0
75 | overridden: 0
76 | androidETC2FallbackOverride: 0
77 | forceMaximumCompressionQuality_BC6H_BC7: 0
78 | spriteSheet:
79 | serializedVersion: 2
80 | sprites: []
81 | outline: []
82 | physicsShape: []
83 | bones: []
84 | spriteID:
85 | internalID: 0
86 | vertices: []
87 | indices:
88 | edges: []
89 | weights: []
90 | secondaryTextures: []
91 | spritePackingTag:
92 | pSDRemoveMatte: 0
93 | pSDShowRemoveMatteOption: 0
94 | userData:
95 | assetBundleName:
96 | assetBundleVariant:
97 |
--------------------------------------------------------------------------------
/Assets/EncryptedTexts/3 3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/umekan/EncryptAddressables/e7ba32bb3441cc926e0e6fad6d304b4bae4db140/Assets/EncryptedTexts/3 3.jpg
--------------------------------------------------------------------------------
/Assets/EncryptedTexts/3 3.jpg.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 33c5a339cebf7a64a9673a27513e8170
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 11
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 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | vTOnly: 0
27 | grayScaleToAlpha: 0
28 | generateCubemap: 6
29 | cubemapConvolution: 0
30 | seamlessCubemap: 0
31 | textureFormat: 1
32 | maxTextureSize: 2048
33 | textureSettings:
34 | serializedVersion: 2
35 | filterMode: 1
36 | aniso: 1
37 | mipBias: 0
38 | wrapU: 0
39 | wrapV: 0
40 | wrapW: 0
41 | nPOTScale: 1
42 | lightmap: 0
43 | compressionQuality: 50
44 | spriteMode: 0
45 | spriteExtrude: 1
46 | spriteMeshType: 1
47 | alignment: 0
48 | spritePivot: {x: 0.5, y: 0.5}
49 | spritePixelsToUnits: 100
50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
51 | spriteGenerateFallbackPhysicsShape: 1
52 | alphaUsage: 1
53 | alphaIsTransparency: 0
54 | spriteTessellationDetail: -1
55 | textureType: 0
56 | textureShape: 1
57 | singleChannelComponent: 0
58 | flipbookRows: 1
59 | flipbookColumns: 1
60 | maxTextureSizeSet: 0
61 | compressionQualitySet: 0
62 | textureFormatSet: 0
63 | ignorePngGamma: 0
64 | applyGammaDecoding: 0
65 | platformSettings:
66 | - serializedVersion: 3
67 | buildTarget: DefaultTexturePlatform
68 | maxTextureSize: 2048
69 | resizeAlgorithm: 0
70 | textureFormat: -1
71 | textureCompression: 1
72 | compressionQuality: 50
73 | crunchedCompression: 0
74 | allowsAlphaSplitting: 0
75 | overridden: 0
76 | androidETC2FallbackOverride: 0
77 | forceMaximumCompressionQuality_BC6H_BC7: 0
78 | spriteSheet:
79 | serializedVersion: 2
80 | sprites: []
81 | outline: []
82 | physicsShape: []
83 | bones: []
84 | spriteID:
85 | internalID: 0
86 | vertices: []
87 | indices:
88 | edges: []
89 | weights: []
90 | secondaryTextures: []
91 | spritePackingTag:
92 | pSDRemoveMatte: 0
93 | pSDShowRemoveMatteOption: 0
94 | userData:
95 | assetBundleName:
96 | assetBundleVariant:
97 |
--------------------------------------------------------------------------------
/Assets/EncryptedTexts/3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/umekan/EncryptAddressables/e7ba32bb3441cc926e0e6fad6d304b4bae4db140/Assets/EncryptedTexts/3.jpg
--------------------------------------------------------------------------------
/Assets/EncryptedTexts/3.jpg.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: fc1aad8daa1a4dc4fb24eea90b0140d0
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 11
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 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | vTOnly: 0
27 | grayScaleToAlpha: 0
28 | generateCubemap: 6
29 | cubemapConvolution: 0
30 | seamlessCubemap: 0
31 | textureFormat: 1
32 | maxTextureSize: 2048
33 | textureSettings:
34 | serializedVersion: 2
35 | filterMode: 1
36 | aniso: 1
37 | mipBias: 0
38 | wrapU: 0
39 | wrapV: 0
40 | wrapW: 0
41 | nPOTScale: 1
42 | lightmap: 0
43 | compressionQuality: 50
44 | spriteMode: 0
45 | spriteExtrude: 1
46 | spriteMeshType: 1
47 | alignment: 0
48 | spritePivot: {x: 0.5, y: 0.5}
49 | spritePixelsToUnits: 100
50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
51 | spriteGenerateFallbackPhysicsShape: 1
52 | alphaUsage: 1
53 | alphaIsTransparency: 0
54 | spriteTessellationDetail: -1
55 | textureType: 0
56 | textureShape: 1
57 | singleChannelComponent: 0
58 | flipbookRows: 1
59 | flipbookColumns: 1
60 | maxTextureSizeSet: 0
61 | compressionQualitySet: 0
62 | textureFormatSet: 0
63 | ignorePngGamma: 0
64 | applyGammaDecoding: 0
65 | platformSettings:
66 | - serializedVersion: 3
67 | buildTarget: DefaultTexturePlatform
68 | maxTextureSize: 2048
69 | resizeAlgorithm: 0
70 | textureFormat: -1
71 | textureCompression: 1
72 | compressionQuality: 50
73 | crunchedCompression: 0
74 | allowsAlphaSplitting: 0
75 | overridden: 0
76 | androidETC2FallbackOverride: 0
77 | forceMaximumCompressionQuality_BC6H_BC7: 0
78 | spriteSheet:
79 | serializedVersion: 2
80 | sprites: []
81 | outline: []
82 | physicsShape: []
83 | bones: []
84 | spriteID:
85 | internalID: 0
86 | vertices: []
87 | indices:
88 | edges: []
89 | weights: []
90 | secondaryTextures: []
91 | spritePackingTag:
92 | pSDRemoveMatte: 0
93 | pSDShowRemoveMatteOption: 0
94 | userData:
95 | assetBundleName:
96 | assetBundleVariant:
97 |
--------------------------------------------------------------------------------
/Assets/PlainTexts.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: edda4123c46873647b630768287c277a
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/PlainTexts/4 1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/umekan/EncryptAddressables/e7ba32bb3441cc926e0e6fad6d304b4bae4db140/Assets/PlainTexts/4 1.jpg
--------------------------------------------------------------------------------
/Assets/PlainTexts/4 1.jpg.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d9f0c6224bd685a4599edeb2ccd45cb6
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 11
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 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | vTOnly: 0
27 | grayScaleToAlpha: 0
28 | generateCubemap: 6
29 | cubemapConvolution: 0
30 | seamlessCubemap: 0
31 | textureFormat: 1
32 | maxTextureSize: 2048
33 | textureSettings:
34 | serializedVersion: 2
35 | filterMode: 1
36 | aniso: 1
37 | mipBias: 0
38 | wrapU: 0
39 | wrapV: 0
40 | wrapW: 0
41 | nPOTScale: 1
42 | lightmap: 0
43 | compressionQuality: 50
44 | spriteMode: 0
45 | spriteExtrude: 1
46 | spriteMeshType: 1
47 | alignment: 0
48 | spritePivot: {x: 0.5, y: 0.5}
49 | spritePixelsToUnits: 100
50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
51 | spriteGenerateFallbackPhysicsShape: 1
52 | alphaUsage: 1
53 | alphaIsTransparency: 0
54 | spriteTessellationDetail: -1
55 | textureType: 0
56 | textureShape: 1
57 | singleChannelComponent: 0
58 | flipbookRows: 1
59 | flipbookColumns: 1
60 | maxTextureSizeSet: 0
61 | compressionQualitySet: 0
62 | textureFormatSet: 0
63 | ignorePngGamma: 0
64 | applyGammaDecoding: 0
65 | platformSettings:
66 | - serializedVersion: 3
67 | buildTarget: DefaultTexturePlatform
68 | maxTextureSize: 2048
69 | resizeAlgorithm: 0
70 | textureFormat: -1
71 | textureCompression: 1
72 | compressionQuality: 50
73 | crunchedCompression: 0
74 | allowsAlphaSplitting: 0
75 | overridden: 0
76 | androidETC2FallbackOverride: 0
77 | forceMaximumCompressionQuality_BC6H_BC7: 0
78 | spriteSheet:
79 | serializedVersion: 2
80 | sprites: []
81 | outline: []
82 | physicsShape: []
83 | bones: []
84 | spriteID:
85 | internalID: 0
86 | vertices: []
87 | indices:
88 | edges: []
89 | weights: []
90 | secondaryTextures: []
91 | spritePackingTag:
92 | pSDRemoveMatte: 0
93 | pSDShowRemoveMatteOption: 0
94 | userData:
95 | assetBundleName:
96 | assetBundleVariant:
97 |
--------------------------------------------------------------------------------
/Assets/PlainTexts/4 2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/umekan/EncryptAddressables/e7ba32bb3441cc926e0e6fad6d304b4bae4db140/Assets/PlainTexts/4 2.jpg
--------------------------------------------------------------------------------
/Assets/PlainTexts/4 2.jpg.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 4e4c4d2d99968ae418d92c16fbe5d4ec
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 11
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 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | vTOnly: 0
27 | grayScaleToAlpha: 0
28 | generateCubemap: 6
29 | cubemapConvolution: 0
30 | seamlessCubemap: 0
31 | textureFormat: 1
32 | maxTextureSize: 2048
33 | textureSettings:
34 | serializedVersion: 2
35 | filterMode: 1
36 | aniso: 1
37 | mipBias: 0
38 | wrapU: 0
39 | wrapV: 0
40 | wrapW: 0
41 | nPOTScale: 1
42 | lightmap: 0
43 | compressionQuality: 50
44 | spriteMode: 0
45 | spriteExtrude: 1
46 | spriteMeshType: 1
47 | alignment: 0
48 | spritePivot: {x: 0.5, y: 0.5}
49 | spritePixelsToUnits: 100
50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
51 | spriteGenerateFallbackPhysicsShape: 1
52 | alphaUsage: 1
53 | alphaIsTransparency: 0
54 | spriteTessellationDetail: -1
55 | textureType: 0
56 | textureShape: 1
57 | singleChannelComponent: 0
58 | flipbookRows: 1
59 | flipbookColumns: 1
60 | maxTextureSizeSet: 0
61 | compressionQualitySet: 0
62 | textureFormatSet: 0
63 | ignorePngGamma: 0
64 | applyGammaDecoding: 0
65 | platformSettings:
66 | - serializedVersion: 3
67 | buildTarget: DefaultTexturePlatform
68 | maxTextureSize: 2048
69 | resizeAlgorithm: 0
70 | textureFormat: -1
71 | textureCompression: 1
72 | compressionQuality: 50
73 | crunchedCompression: 0
74 | allowsAlphaSplitting: 0
75 | overridden: 0
76 | androidETC2FallbackOverride: 0
77 | forceMaximumCompressionQuality_BC6H_BC7: 0
78 | spriteSheet:
79 | serializedVersion: 2
80 | sprites: []
81 | outline: []
82 | physicsShape: []
83 | bones: []
84 | spriteID:
85 | internalID: 0
86 | vertices: []
87 | indices:
88 | edges: []
89 | weights: []
90 | secondaryTextures: []
91 | spritePackingTag:
92 | pSDRemoveMatte: 0
93 | pSDShowRemoveMatteOption: 0
94 | userData:
95 | assetBundleName:
96 | assetBundleVariant:
97 |
--------------------------------------------------------------------------------
/Assets/PlainTexts/4 3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/umekan/EncryptAddressables/e7ba32bb3441cc926e0e6fad6d304b4bae4db140/Assets/PlainTexts/4 3.jpg
--------------------------------------------------------------------------------
/Assets/PlainTexts/4 3.jpg.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 2341d66d7cf0a79498ec9b0196851853
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 11
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 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | vTOnly: 0
27 | grayScaleToAlpha: 0
28 | generateCubemap: 6
29 | cubemapConvolution: 0
30 | seamlessCubemap: 0
31 | textureFormat: 1
32 | maxTextureSize: 2048
33 | textureSettings:
34 | serializedVersion: 2
35 | filterMode: 1
36 | aniso: 1
37 | mipBias: 0
38 | wrapU: 0
39 | wrapV: 0
40 | wrapW: 0
41 | nPOTScale: 1
42 | lightmap: 0
43 | compressionQuality: 50
44 | spriteMode: 0
45 | spriteExtrude: 1
46 | spriteMeshType: 1
47 | alignment: 0
48 | spritePivot: {x: 0.5, y: 0.5}
49 | spritePixelsToUnits: 100
50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
51 | spriteGenerateFallbackPhysicsShape: 1
52 | alphaUsage: 1
53 | alphaIsTransparency: 0
54 | spriteTessellationDetail: -1
55 | textureType: 0
56 | textureShape: 1
57 | singleChannelComponent: 0
58 | flipbookRows: 1
59 | flipbookColumns: 1
60 | maxTextureSizeSet: 0
61 | compressionQualitySet: 0
62 | textureFormatSet: 0
63 | ignorePngGamma: 0
64 | applyGammaDecoding: 0
65 | platformSettings:
66 | - serializedVersion: 3
67 | buildTarget: DefaultTexturePlatform
68 | maxTextureSize: 2048
69 | resizeAlgorithm: 0
70 | textureFormat: -1
71 | textureCompression: 1
72 | compressionQuality: 50
73 | crunchedCompression: 0
74 | allowsAlphaSplitting: 0
75 | overridden: 0
76 | androidETC2FallbackOverride: 0
77 | forceMaximumCompressionQuality_BC6H_BC7: 0
78 | spriteSheet:
79 | serializedVersion: 2
80 | sprites: []
81 | outline: []
82 | physicsShape: []
83 | bones: []
84 | spriteID:
85 | internalID: 0
86 | vertices: []
87 | indices:
88 | edges: []
89 | weights: []
90 | secondaryTextures: []
91 | spritePackingTag:
92 | pSDRemoveMatte: 0
93 | pSDShowRemoveMatteOption: 0
94 | userData:
95 | assetBundleName:
96 | assetBundleVariant:
97 |
--------------------------------------------------------------------------------
/Assets/PlainTexts/4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/umekan/EncryptAddressables/e7ba32bb3441cc926e0e6fad6d304b4bae4db140/Assets/PlainTexts/4.jpg
--------------------------------------------------------------------------------
/Assets/PlainTexts/4.jpg.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 90af068c6bb5f594eb1f2f3a51d1e80e
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 11
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 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | vTOnly: 0
27 | grayScaleToAlpha: 0
28 | generateCubemap: 6
29 | cubemapConvolution: 0
30 | seamlessCubemap: 0
31 | textureFormat: 1
32 | maxTextureSize: 2048
33 | textureSettings:
34 | serializedVersion: 2
35 | filterMode: 1
36 | aniso: 1
37 | mipBias: 0
38 | wrapU: 0
39 | wrapV: 0
40 | wrapW: 0
41 | nPOTScale: 1
42 | lightmap: 0
43 | compressionQuality: 50
44 | spriteMode: 0
45 | spriteExtrude: 1
46 | spriteMeshType: 1
47 | alignment: 0
48 | spritePivot: {x: 0.5, y: 0.5}
49 | spritePixelsToUnits: 100
50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
51 | spriteGenerateFallbackPhysicsShape: 1
52 | alphaUsage: 1
53 | alphaIsTransparency: 0
54 | spriteTessellationDetail: -1
55 | textureType: 0
56 | textureShape: 1
57 | singleChannelComponent: 0
58 | flipbookRows: 1
59 | flipbookColumns: 1
60 | maxTextureSizeSet: 0
61 | compressionQualitySet: 0
62 | textureFormatSet: 0
63 | ignorePngGamma: 0
64 | applyGammaDecoding: 0
65 | platformSettings:
66 | - serializedVersion: 3
67 | buildTarget: DefaultTexturePlatform
68 | maxTextureSize: 2048
69 | resizeAlgorithm: 0
70 | textureFormat: -1
71 | textureCompression: 1
72 | compressionQuality: 50
73 | crunchedCompression: 0
74 | allowsAlphaSplitting: 0
75 | overridden: 0
76 | androidETC2FallbackOverride: 0
77 | forceMaximumCompressionQuality_BC6H_BC7: 0
78 | spriteSheet:
79 | serializedVersion: 2
80 | sprites: []
81 | outline: []
82 | physicsShape: []
83 | bones: []
84 | spriteID:
85 | internalID: 0
86 | vertices: []
87 | indices:
88 | edges: []
89 | weights: []
90 | secondaryTextures: []
91 | spritePackingTag:
92 | pSDRemoveMatte: 0
93 | pSDShowRemoveMatteOption: 0
94 | userData:
95 | assetBundleName:
96 | assetBundleVariant:
97 |
--------------------------------------------------------------------------------
/Assets/PlainTexts/5 1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/umekan/EncryptAddressables/e7ba32bb3441cc926e0e6fad6d304b4bae4db140/Assets/PlainTexts/5 1.jpg
--------------------------------------------------------------------------------
/Assets/PlainTexts/5 1.jpg.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: f505e8ae18aa56b438d0b52bedb6fd8c
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 11
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 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | vTOnly: 0
27 | grayScaleToAlpha: 0
28 | generateCubemap: 6
29 | cubemapConvolution: 0
30 | seamlessCubemap: 0
31 | textureFormat: 1
32 | maxTextureSize: 2048
33 | textureSettings:
34 | serializedVersion: 2
35 | filterMode: 1
36 | aniso: 1
37 | mipBias: 0
38 | wrapU: 0
39 | wrapV: 0
40 | wrapW: 0
41 | nPOTScale: 1
42 | lightmap: 0
43 | compressionQuality: 50
44 | spriteMode: 0
45 | spriteExtrude: 1
46 | spriteMeshType: 1
47 | alignment: 0
48 | spritePivot: {x: 0.5, y: 0.5}
49 | spritePixelsToUnits: 100
50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
51 | spriteGenerateFallbackPhysicsShape: 1
52 | alphaUsage: 1
53 | alphaIsTransparency: 0
54 | spriteTessellationDetail: -1
55 | textureType: 0
56 | textureShape: 1
57 | singleChannelComponent: 0
58 | flipbookRows: 1
59 | flipbookColumns: 1
60 | maxTextureSizeSet: 0
61 | compressionQualitySet: 0
62 | textureFormatSet: 0
63 | ignorePngGamma: 0
64 | applyGammaDecoding: 0
65 | platformSettings:
66 | - serializedVersion: 3
67 | buildTarget: DefaultTexturePlatform
68 | maxTextureSize: 2048
69 | resizeAlgorithm: 0
70 | textureFormat: -1
71 | textureCompression: 1
72 | compressionQuality: 50
73 | crunchedCompression: 0
74 | allowsAlphaSplitting: 0
75 | overridden: 0
76 | androidETC2FallbackOverride: 0
77 | forceMaximumCompressionQuality_BC6H_BC7: 0
78 | spriteSheet:
79 | serializedVersion: 2
80 | sprites: []
81 | outline: []
82 | physicsShape: []
83 | bones: []
84 | spriteID:
85 | internalID: 0
86 | vertices: []
87 | indices:
88 | edges: []
89 | weights: []
90 | secondaryTextures: []
91 | spritePackingTag:
92 | pSDRemoveMatte: 0
93 | pSDShowRemoveMatteOption: 0
94 | userData:
95 | assetBundleName:
96 | assetBundleVariant:
97 |
--------------------------------------------------------------------------------
/Assets/PlainTexts/5 2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/umekan/EncryptAddressables/e7ba32bb3441cc926e0e6fad6d304b4bae4db140/Assets/PlainTexts/5 2.jpg
--------------------------------------------------------------------------------
/Assets/PlainTexts/5 2.jpg.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 6a5966895184e06469bf9add4d6c24c4
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 11
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 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | vTOnly: 0
27 | grayScaleToAlpha: 0
28 | generateCubemap: 6
29 | cubemapConvolution: 0
30 | seamlessCubemap: 0
31 | textureFormat: 1
32 | maxTextureSize: 2048
33 | textureSettings:
34 | serializedVersion: 2
35 | filterMode: 1
36 | aniso: 1
37 | mipBias: 0
38 | wrapU: 0
39 | wrapV: 0
40 | wrapW: 0
41 | nPOTScale: 1
42 | lightmap: 0
43 | compressionQuality: 50
44 | spriteMode: 0
45 | spriteExtrude: 1
46 | spriteMeshType: 1
47 | alignment: 0
48 | spritePivot: {x: 0.5, y: 0.5}
49 | spritePixelsToUnits: 100
50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
51 | spriteGenerateFallbackPhysicsShape: 1
52 | alphaUsage: 1
53 | alphaIsTransparency: 0
54 | spriteTessellationDetail: -1
55 | textureType: 0
56 | textureShape: 1
57 | singleChannelComponent: 0
58 | flipbookRows: 1
59 | flipbookColumns: 1
60 | maxTextureSizeSet: 0
61 | compressionQualitySet: 0
62 | textureFormatSet: 0
63 | ignorePngGamma: 0
64 | applyGammaDecoding: 0
65 | platformSettings:
66 | - serializedVersion: 3
67 | buildTarget: DefaultTexturePlatform
68 | maxTextureSize: 2048
69 | resizeAlgorithm: 0
70 | textureFormat: -1
71 | textureCompression: 1
72 | compressionQuality: 50
73 | crunchedCompression: 0
74 | allowsAlphaSplitting: 0
75 | overridden: 0
76 | androidETC2FallbackOverride: 0
77 | forceMaximumCompressionQuality_BC6H_BC7: 0
78 | spriteSheet:
79 | serializedVersion: 2
80 | sprites: []
81 | outline: []
82 | physicsShape: []
83 | bones: []
84 | spriteID:
85 | internalID: 0
86 | vertices: []
87 | indices:
88 | edges: []
89 | weights: []
90 | secondaryTextures: []
91 | spritePackingTag:
92 | pSDRemoveMatte: 0
93 | pSDShowRemoveMatteOption: 0
94 | userData:
95 | assetBundleName:
96 | assetBundleVariant:
97 |
--------------------------------------------------------------------------------
/Assets/PlainTexts/5 3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/umekan/EncryptAddressables/e7ba32bb3441cc926e0e6fad6d304b4bae4db140/Assets/PlainTexts/5 3.jpg
--------------------------------------------------------------------------------
/Assets/PlainTexts/5 3.jpg.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 77d2ecc690ab6e34580d3b519afc79a6
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 11
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 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | vTOnly: 0
27 | grayScaleToAlpha: 0
28 | generateCubemap: 6
29 | cubemapConvolution: 0
30 | seamlessCubemap: 0
31 | textureFormat: 1
32 | maxTextureSize: 2048
33 | textureSettings:
34 | serializedVersion: 2
35 | filterMode: 1
36 | aniso: 1
37 | mipBias: 0
38 | wrapU: 0
39 | wrapV: 0
40 | wrapW: 0
41 | nPOTScale: 1
42 | lightmap: 0
43 | compressionQuality: 50
44 | spriteMode: 0
45 | spriteExtrude: 1
46 | spriteMeshType: 1
47 | alignment: 0
48 | spritePivot: {x: 0.5, y: 0.5}
49 | spritePixelsToUnits: 100
50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
51 | spriteGenerateFallbackPhysicsShape: 1
52 | alphaUsage: 1
53 | alphaIsTransparency: 0
54 | spriteTessellationDetail: -1
55 | textureType: 0
56 | textureShape: 1
57 | singleChannelComponent: 0
58 | flipbookRows: 1
59 | flipbookColumns: 1
60 | maxTextureSizeSet: 0
61 | compressionQualitySet: 0
62 | textureFormatSet: 0
63 | ignorePngGamma: 0
64 | applyGammaDecoding: 0
65 | platformSettings:
66 | - serializedVersion: 3
67 | buildTarget: DefaultTexturePlatform
68 | maxTextureSize: 2048
69 | resizeAlgorithm: 0
70 | textureFormat: -1
71 | textureCompression: 1
72 | compressionQuality: 50
73 | crunchedCompression: 0
74 | allowsAlphaSplitting: 0
75 | overridden: 0
76 | androidETC2FallbackOverride: 0
77 | forceMaximumCompressionQuality_BC6H_BC7: 0
78 | spriteSheet:
79 | serializedVersion: 2
80 | sprites: []
81 | outline: []
82 | physicsShape: []
83 | bones: []
84 | spriteID:
85 | internalID: 0
86 | vertices: []
87 | indices:
88 | edges: []
89 | weights: []
90 | secondaryTextures: []
91 | spritePackingTag:
92 | pSDRemoveMatte: 0
93 | pSDShowRemoveMatteOption: 0
94 | userData:
95 | assetBundleName:
96 | assetBundleVariant:
97 |
--------------------------------------------------------------------------------
/Assets/PlainTexts/5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/umekan/EncryptAddressables/e7ba32bb3441cc926e0e6fad6d304b4bae4db140/Assets/PlainTexts/5.jpg
--------------------------------------------------------------------------------
/Assets/PlainTexts/5.jpg.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: cba58254b60937040a246eeedeb832f3
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 11
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 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | vTOnly: 0
27 | grayScaleToAlpha: 0
28 | generateCubemap: 6
29 | cubemapConvolution: 0
30 | seamlessCubemap: 0
31 | textureFormat: 1
32 | maxTextureSize: 2048
33 | textureSettings:
34 | serializedVersion: 2
35 | filterMode: 1
36 | aniso: 1
37 | mipBias: 0
38 | wrapU: 0
39 | wrapV: 0
40 | wrapW: 0
41 | nPOTScale: 1
42 | lightmap: 0
43 | compressionQuality: 50
44 | spriteMode: 0
45 | spriteExtrude: 1
46 | spriteMeshType: 1
47 | alignment: 0
48 | spritePivot: {x: 0.5, y: 0.5}
49 | spritePixelsToUnits: 100
50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
51 | spriteGenerateFallbackPhysicsShape: 1
52 | alphaUsage: 1
53 | alphaIsTransparency: 0
54 | spriteTessellationDetail: -1
55 | textureType: 0
56 | textureShape: 1
57 | singleChannelComponent: 0
58 | flipbookRows: 1
59 | flipbookColumns: 1
60 | maxTextureSizeSet: 0
61 | compressionQualitySet: 0
62 | textureFormatSet: 0
63 | ignorePngGamma: 0
64 | applyGammaDecoding: 0
65 | platformSettings:
66 | - serializedVersion: 3
67 | buildTarget: DefaultTexturePlatform
68 | maxTextureSize: 2048
69 | resizeAlgorithm: 0
70 | textureFormat: -1
71 | textureCompression: 1
72 | compressionQuality: 50
73 | crunchedCompression: 0
74 | allowsAlphaSplitting: 0
75 | overridden: 0
76 | androidETC2FallbackOverride: 0
77 | forceMaximumCompressionQuality_BC6H_BC7: 0
78 | spriteSheet:
79 | serializedVersion: 2
80 | sprites: []
81 | outline: []
82 | physicsShape: []
83 | bones: []
84 | spriteID:
85 | internalID: 0
86 | vertices: []
87 | indices:
88 | edges: []
89 | weights: []
90 | secondaryTextures: []
91 | spritePackingTag:
92 | pSDRemoveMatte: 0
93 | pSDShowRemoveMatteOption: 0
94 | userData:
95 | assetBundleName:
96 | assetBundleVariant:
97 |
--------------------------------------------------------------------------------
/Assets/PlainTexts/6 1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/umekan/EncryptAddressables/e7ba32bb3441cc926e0e6fad6d304b4bae4db140/Assets/PlainTexts/6 1.jpg
--------------------------------------------------------------------------------
/Assets/PlainTexts/6 1.jpg.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 3676d64da85402742be493531d007043
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 11
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 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | vTOnly: 0
27 | grayScaleToAlpha: 0
28 | generateCubemap: 6
29 | cubemapConvolution: 0
30 | seamlessCubemap: 0
31 | textureFormat: 1
32 | maxTextureSize: 2048
33 | textureSettings:
34 | serializedVersion: 2
35 | filterMode: 1
36 | aniso: 1
37 | mipBias: 0
38 | wrapU: 0
39 | wrapV: 0
40 | wrapW: 0
41 | nPOTScale: 1
42 | lightmap: 0
43 | compressionQuality: 50
44 | spriteMode: 0
45 | spriteExtrude: 1
46 | spriteMeshType: 1
47 | alignment: 0
48 | spritePivot: {x: 0.5, y: 0.5}
49 | spritePixelsToUnits: 100
50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
51 | spriteGenerateFallbackPhysicsShape: 1
52 | alphaUsage: 1
53 | alphaIsTransparency: 0
54 | spriteTessellationDetail: -1
55 | textureType: 0
56 | textureShape: 1
57 | singleChannelComponent: 0
58 | flipbookRows: 1
59 | flipbookColumns: 1
60 | maxTextureSizeSet: 0
61 | compressionQualitySet: 0
62 | textureFormatSet: 0
63 | ignorePngGamma: 0
64 | applyGammaDecoding: 0
65 | platformSettings:
66 | - serializedVersion: 3
67 | buildTarget: DefaultTexturePlatform
68 | maxTextureSize: 2048
69 | resizeAlgorithm: 0
70 | textureFormat: -1
71 | textureCompression: 1
72 | compressionQuality: 50
73 | crunchedCompression: 0
74 | allowsAlphaSplitting: 0
75 | overridden: 0
76 | androidETC2FallbackOverride: 0
77 | forceMaximumCompressionQuality_BC6H_BC7: 0
78 | spriteSheet:
79 | serializedVersion: 2
80 | sprites: []
81 | outline: []
82 | physicsShape: []
83 | bones: []
84 | spriteID:
85 | internalID: 0
86 | vertices: []
87 | indices:
88 | edges: []
89 | weights: []
90 | secondaryTextures: []
91 | spritePackingTag:
92 | pSDRemoveMatte: 0
93 | pSDShowRemoveMatteOption: 0
94 | userData:
95 | assetBundleName:
96 | assetBundleVariant:
97 |
--------------------------------------------------------------------------------
/Assets/PlainTexts/6 2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/umekan/EncryptAddressables/e7ba32bb3441cc926e0e6fad6d304b4bae4db140/Assets/PlainTexts/6 2.jpg
--------------------------------------------------------------------------------
/Assets/PlainTexts/6 2.jpg.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: e271ade02fe740c4db339b318e43c6c4
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 11
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 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | vTOnly: 0
27 | grayScaleToAlpha: 0
28 | generateCubemap: 6
29 | cubemapConvolution: 0
30 | seamlessCubemap: 0
31 | textureFormat: 1
32 | maxTextureSize: 2048
33 | textureSettings:
34 | serializedVersion: 2
35 | filterMode: 1
36 | aniso: 1
37 | mipBias: 0
38 | wrapU: 0
39 | wrapV: 0
40 | wrapW: 0
41 | nPOTScale: 1
42 | lightmap: 0
43 | compressionQuality: 50
44 | spriteMode: 0
45 | spriteExtrude: 1
46 | spriteMeshType: 1
47 | alignment: 0
48 | spritePivot: {x: 0.5, y: 0.5}
49 | spritePixelsToUnits: 100
50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
51 | spriteGenerateFallbackPhysicsShape: 1
52 | alphaUsage: 1
53 | alphaIsTransparency: 0
54 | spriteTessellationDetail: -1
55 | textureType: 0
56 | textureShape: 1
57 | singleChannelComponent: 0
58 | flipbookRows: 1
59 | flipbookColumns: 1
60 | maxTextureSizeSet: 0
61 | compressionQualitySet: 0
62 | textureFormatSet: 0
63 | ignorePngGamma: 0
64 | applyGammaDecoding: 0
65 | platformSettings:
66 | - serializedVersion: 3
67 | buildTarget: DefaultTexturePlatform
68 | maxTextureSize: 2048
69 | resizeAlgorithm: 0
70 | textureFormat: -1
71 | textureCompression: 1
72 | compressionQuality: 50
73 | crunchedCompression: 0
74 | allowsAlphaSplitting: 0
75 | overridden: 0
76 | androidETC2FallbackOverride: 0
77 | forceMaximumCompressionQuality_BC6H_BC7: 0
78 | spriteSheet:
79 | serializedVersion: 2
80 | sprites: []
81 | outline: []
82 | physicsShape: []
83 | bones: []
84 | spriteID:
85 | internalID: 0
86 | vertices: []
87 | indices:
88 | edges: []
89 | weights: []
90 | secondaryTextures: []
91 | spritePackingTag:
92 | pSDRemoveMatte: 0
93 | pSDShowRemoveMatteOption: 0
94 | userData:
95 | assetBundleName:
96 | assetBundleVariant:
97 |
--------------------------------------------------------------------------------
/Assets/PlainTexts/6 3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/umekan/EncryptAddressables/e7ba32bb3441cc926e0e6fad6d304b4bae4db140/Assets/PlainTexts/6 3.jpg
--------------------------------------------------------------------------------
/Assets/PlainTexts/6 3.jpg.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 297770a0350445b44b1ddf03eb60aa26
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 11
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 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | vTOnly: 0
27 | grayScaleToAlpha: 0
28 | generateCubemap: 6
29 | cubemapConvolution: 0
30 | seamlessCubemap: 0
31 | textureFormat: 1
32 | maxTextureSize: 2048
33 | textureSettings:
34 | serializedVersion: 2
35 | filterMode: 1
36 | aniso: 1
37 | mipBias: 0
38 | wrapU: 0
39 | wrapV: 0
40 | wrapW: 0
41 | nPOTScale: 1
42 | lightmap: 0
43 | compressionQuality: 50
44 | spriteMode: 0
45 | spriteExtrude: 1
46 | spriteMeshType: 1
47 | alignment: 0
48 | spritePivot: {x: 0.5, y: 0.5}
49 | spritePixelsToUnits: 100
50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
51 | spriteGenerateFallbackPhysicsShape: 1
52 | alphaUsage: 1
53 | alphaIsTransparency: 0
54 | spriteTessellationDetail: -1
55 | textureType: 0
56 | textureShape: 1
57 | singleChannelComponent: 0
58 | flipbookRows: 1
59 | flipbookColumns: 1
60 | maxTextureSizeSet: 0
61 | compressionQualitySet: 0
62 | textureFormatSet: 0
63 | ignorePngGamma: 0
64 | applyGammaDecoding: 0
65 | platformSettings:
66 | - serializedVersion: 3
67 | buildTarget: DefaultTexturePlatform
68 | maxTextureSize: 2048
69 | resizeAlgorithm: 0
70 | textureFormat: -1
71 | textureCompression: 1
72 | compressionQuality: 50
73 | crunchedCompression: 0
74 | allowsAlphaSplitting: 0
75 | overridden: 0
76 | androidETC2FallbackOverride: 0
77 | forceMaximumCompressionQuality_BC6H_BC7: 0
78 | spriteSheet:
79 | serializedVersion: 2
80 | sprites: []
81 | outline: []
82 | physicsShape: []
83 | bones: []
84 | spriteID:
85 | internalID: 0
86 | vertices: []
87 | indices:
88 | edges: []
89 | weights: []
90 | secondaryTextures: []
91 | spritePackingTag:
92 | pSDRemoveMatte: 0
93 | pSDShowRemoveMatteOption: 0
94 | userData:
95 | assetBundleName:
96 | assetBundleVariant:
97 |
--------------------------------------------------------------------------------
/Assets/PlainTexts/6.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/umekan/EncryptAddressables/e7ba32bb3441cc926e0e6fad6d304b4bae4db140/Assets/PlainTexts/6.jpg
--------------------------------------------------------------------------------
/Assets/PlainTexts/6.jpg.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 77d81bf0ea495bb48a1f07423067eca8
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 11
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 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | vTOnly: 0
27 | grayScaleToAlpha: 0
28 | generateCubemap: 6
29 | cubemapConvolution: 0
30 | seamlessCubemap: 0
31 | textureFormat: 1
32 | maxTextureSize: 2048
33 | textureSettings:
34 | serializedVersion: 2
35 | filterMode: 1
36 | aniso: 1
37 | mipBias: 0
38 | wrapU: 0
39 | wrapV: 0
40 | wrapW: 0
41 | nPOTScale: 1
42 | lightmap: 0
43 | compressionQuality: 50
44 | spriteMode: 0
45 | spriteExtrude: 1
46 | spriteMeshType: 1
47 | alignment: 0
48 | spritePivot: {x: 0.5, y: 0.5}
49 | spritePixelsToUnits: 100
50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
51 | spriteGenerateFallbackPhysicsShape: 1
52 | alphaUsage: 1
53 | alphaIsTransparency: 0
54 | spriteTessellationDetail: -1
55 | textureType: 0
56 | textureShape: 1
57 | singleChannelComponent: 0
58 | flipbookRows: 1
59 | flipbookColumns: 1
60 | maxTextureSizeSet: 0
61 | compressionQualitySet: 0
62 | textureFormatSet: 0
63 | ignorePngGamma: 0
64 | applyGammaDecoding: 0
65 | platformSettings:
66 | - serializedVersion: 3
67 | buildTarget: DefaultTexturePlatform
68 | maxTextureSize: 2048
69 | resizeAlgorithm: 0
70 | textureFormat: -1
71 | textureCompression: 1
72 | compressionQuality: 50
73 | crunchedCompression: 0
74 | allowsAlphaSplitting: 0
75 | overridden: 0
76 | androidETC2FallbackOverride: 0
77 | forceMaximumCompressionQuality_BC6H_BC7: 0
78 | spriteSheet:
79 | serializedVersion: 2
80 | sprites: []
81 | outline: []
82 | physicsShape: []
83 | bones: []
84 | spriteID:
85 | internalID: 0
86 | vertices: []
87 | indices:
88 | edges: []
89 | weights: []
90 | secondaryTextures: []
91 | spritePackingTag:
92 | pSDRemoveMatte: 0
93 | pSDShowRemoveMatteOption: 0
94 | userData:
95 | assetBundleName:
96 | assetBundleVariant:
97 |
--------------------------------------------------------------------------------
/Assets/Scenes.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: db1a077fc7f40754ebb2e77f7929e6b2
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Scenes/SampleScene.unity:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!29 &1
4 | OcclusionCullingSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | m_OcclusionBakeSettings:
8 | smallestOccluder: 5
9 | smallestHole: 0.25
10 | backfaceThreshold: 100
11 | m_SceneGUID: 00000000000000000000000000000000
12 | m_OcclusionCullingData: {fileID: 0}
13 | --- !u!104 &2
14 | RenderSettings:
15 | m_ObjectHideFlags: 0
16 | serializedVersion: 9
17 | m_Fog: 0
18 | m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
19 | m_FogMode: 3
20 | m_FogDensity: 0.01
21 | m_LinearFogStart: 0
22 | m_LinearFogEnd: 300
23 | m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
24 | m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
25 | m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
26 | m_AmbientIntensity: 1
27 | m_AmbientMode: 0
28 | m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
29 | m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
30 | m_HaloStrength: 0.5
31 | m_FlareStrength: 1
32 | m_FlareFadeSpeed: 3
33 | m_HaloTexture: {fileID: 0}
34 | m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
35 | m_DefaultReflectionMode: 0
36 | m_DefaultReflectionResolution: 128
37 | m_ReflectionBounces: 1
38 | m_ReflectionIntensity: 1
39 | m_CustomReflection: {fileID: 0}
40 | m_Sun: {fileID: 705507994}
41 | m_IndirectSpecularColor: {r: 0.44657898, g: 0.4964133, b: 0.5748178, a: 1}
42 | m_UseRadianceAmbientProbe: 0
43 | --- !u!157 &3
44 | LightmapSettings:
45 | m_ObjectHideFlags: 0
46 | serializedVersion: 12
47 | m_GIWorkflowMode: 1
48 | m_GISettings:
49 | serializedVersion: 2
50 | m_BounceScale: 1
51 | m_IndirectOutputScale: 1
52 | m_AlbedoBoost: 1
53 | m_EnvironmentLightingMode: 0
54 | m_EnableBakedLightmaps: 1
55 | m_EnableRealtimeLightmaps: 0
56 | m_LightmapEditorSettings:
57 | serializedVersion: 12
58 | m_Resolution: 2
59 | m_BakeResolution: 40
60 | m_AtlasSize: 1024
61 | m_AO: 0
62 | m_AOMaxDistance: 1
63 | m_CompAOExponent: 1
64 | m_CompAOExponentDirect: 0
65 | m_ExtractAmbientOcclusion: 0
66 | m_Padding: 2
67 | m_LightmapParameters: {fileID: 0}
68 | m_LightmapsBakeMode: 1
69 | m_TextureCompression: 1
70 | m_FinalGather: 0
71 | m_FinalGatherFiltering: 1
72 | m_FinalGatherRayCount: 256
73 | m_ReflectionCompression: 2
74 | m_MixedBakeMode: 2
75 | m_BakeBackend: 1
76 | m_PVRSampling: 1
77 | m_PVRDirectSampleCount: 32
78 | m_PVRSampleCount: 500
79 | m_PVRBounces: 2
80 | m_PVREnvironmentSampleCount: 500
81 | m_PVREnvironmentReferencePointCount: 2048
82 | m_PVRFilteringMode: 2
83 | m_PVRDenoiserTypeDirect: 0
84 | m_PVRDenoiserTypeIndirect: 0
85 | m_PVRDenoiserTypeAO: 0
86 | m_PVRFilterTypeDirect: 0
87 | m_PVRFilterTypeIndirect: 0
88 | m_PVRFilterTypeAO: 0
89 | m_PVREnvironmentMIS: 0
90 | m_PVRCulling: 1
91 | m_PVRFilteringGaussRadiusDirect: 1
92 | m_PVRFilteringGaussRadiusIndirect: 5
93 | m_PVRFilteringGaussRadiusAO: 2
94 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5
95 | m_PVRFilteringAtrousPositionSigmaIndirect: 2
96 | m_PVRFilteringAtrousPositionSigmaAO: 1
97 | m_ExportTrainingData: 0
98 | m_TrainingDataDestination: TrainingData
99 | m_LightProbeSampleCountMultiplier: 4
100 | m_LightingDataAsset: {fileID: 0}
101 | m_LightingSettings: {fileID: 0}
102 | --- !u!196 &4
103 | NavMeshSettings:
104 | serializedVersion: 2
105 | m_ObjectHideFlags: 0
106 | m_BuildSettings:
107 | serializedVersion: 2
108 | agentTypeID: 0
109 | agentRadius: 0.5
110 | agentHeight: 2
111 | agentSlope: 45
112 | agentClimb: 0.4
113 | ledgeDropHeight: 0
114 | maxJumpAcrossDistance: 0
115 | minRegionArea: 2
116 | manualCellSize: 0
117 | cellSize: 0.16666667
118 | manualTileSize: 0
119 | tileSize: 256
120 | accuratePlacement: 0
121 | maxJobWorkers: 0
122 | preserveTilesOutsideBounds: 0
123 | debug:
124 | m_Flags: 0
125 | m_NavMeshData: {fileID: 0}
126 | --- !u!1 &348016130
127 | GameObject:
128 | m_ObjectHideFlags: 0
129 | m_CorrespondingSourceObject: {fileID: 0}
130 | m_PrefabInstance: {fileID: 0}
131 | m_PrefabAsset: {fileID: 0}
132 | serializedVersion: 6
133 | m_Component:
134 | - component: {fileID: 348016133}
135 | - component: {fileID: 348016132}
136 | - component: {fileID: 348016131}
137 | m_Layer: 0
138 | m_Name: EventSystem
139 | m_TagString: Untagged
140 | m_Icon: {fileID: 0}
141 | m_NavMeshLayer: 0
142 | m_StaticEditorFlags: 0
143 | m_IsActive: 1
144 | --- !u!114 &348016131
145 | MonoBehaviour:
146 | m_ObjectHideFlags: 0
147 | m_CorrespondingSourceObject: {fileID: 0}
148 | m_PrefabInstance: {fileID: 0}
149 | m_PrefabAsset: {fileID: 0}
150 | m_GameObject: {fileID: 348016130}
151 | m_Enabled: 1
152 | m_EditorHideFlags: 0
153 | m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3}
154 | m_Name:
155 | m_EditorClassIdentifier:
156 | m_HorizontalAxis: Horizontal
157 | m_VerticalAxis: Vertical
158 | m_SubmitButton: Submit
159 | m_CancelButton: Cancel
160 | m_InputActionsPerSecond: 10
161 | m_RepeatDelay: 0.5
162 | m_ForceModuleActive: 0
163 | --- !u!114 &348016132
164 | MonoBehaviour:
165 | m_ObjectHideFlags: 0
166 | m_CorrespondingSourceObject: {fileID: 0}
167 | m_PrefabInstance: {fileID: 0}
168 | m_PrefabAsset: {fileID: 0}
169 | m_GameObject: {fileID: 348016130}
170 | m_Enabled: 1
171 | m_EditorHideFlags: 0
172 | m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3}
173 | m_Name:
174 | m_EditorClassIdentifier:
175 | m_FirstSelected: {fileID: 0}
176 | m_sendNavigationEvents: 1
177 | m_DragThreshold: 10
178 | --- !u!4 &348016133
179 | Transform:
180 | m_ObjectHideFlags: 0
181 | m_CorrespondingSourceObject: {fileID: 0}
182 | m_PrefabInstance: {fileID: 0}
183 | m_PrefabAsset: {fileID: 0}
184 | m_GameObject: {fileID: 348016130}
185 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
186 | m_LocalPosition: {x: 0, y: 0, z: 0}
187 | m_LocalScale: {x: 1, y: 1, z: 1}
188 | m_Children: []
189 | m_Father: {fileID: 0}
190 | m_RootOrder: 3
191 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
192 | --- !u!1 &705507993
193 | GameObject:
194 | m_ObjectHideFlags: 0
195 | m_CorrespondingSourceObject: {fileID: 0}
196 | m_PrefabInstance: {fileID: 0}
197 | m_PrefabAsset: {fileID: 0}
198 | serializedVersion: 6
199 | m_Component:
200 | - component: {fileID: 705507995}
201 | - component: {fileID: 705507994}
202 | m_Layer: 0
203 | m_Name: Directional Light
204 | m_TagString: Untagged
205 | m_Icon: {fileID: 0}
206 | m_NavMeshLayer: 0
207 | m_StaticEditorFlags: 0
208 | m_IsActive: 1
209 | --- !u!108 &705507994
210 | Light:
211 | m_ObjectHideFlags: 0
212 | m_CorrespondingSourceObject: {fileID: 0}
213 | m_PrefabInstance: {fileID: 0}
214 | m_PrefabAsset: {fileID: 0}
215 | m_GameObject: {fileID: 705507993}
216 | m_Enabled: 1
217 | serializedVersion: 10
218 | m_Type: 1
219 | m_Shape: 0
220 | m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
221 | m_Intensity: 1
222 | m_Range: 10
223 | m_SpotAngle: 30
224 | m_InnerSpotAngle: 21.80208
225 | m_CookieSize: 10
226 | m_Shadows:
227 | m_Type: 2
228 | m_Resolution: -1
229 | m_CustomResolution: -1
230 | m_Strength: 1
231 | m_Bias: 0.05
232 | m_NormalBias: 0.4
233 | m_NearPlane: 0.2
234 | m_CullingMatrixOverride:
235 | e00: 1
236 | e01: 0
237 | e02: 0
238 | e03: 0
239 | e10: 0
240 | e11: 1
241 | e12: 0
242 | e13: 0
243 | e20: 0
244 | e21: 0
245 | e22: 1
246 | e23: 0
247 | e30: 0
248 | e31: 0
249 | e32: 0
250 | e33: 1
251 | m_UseCullingMatrixOverride: 0
252 | m_Cookie: {fileID: 0}
253 | m_DrawHalo: 0
254 | m_Flare: {fileID: 0}
255 | m_RenderMode: 0
256 | m_CullingMask:
257 | serializedVersion: 2
258 | m_Bits: 4294967295
259 | m_RenderingLayerMask: 1
260 | m_Lightmapping: 1
261 | m_LightShadowCasterMode: 0
262 | m_AreaSize: {x: 1, y: 1}
263 | m_BounceIntensity: 1
264 | m_ColorTemperature: 6570
265 | m_UseColorTemperature: 0
266 | m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
267 | m_UseBoundingSphereOverride: 0
268 | m_UseViewFrustumForShadowCasterCull: 1
269 | m_ShadowRadius: 0
270 | m_ShadowAngle: 0
271 | --- !u!4 &705507995
272 | Transform:
273 | m_ObjectHideFlags: 0
274 | m_CorrespondingSourceObject: {fileID: 0}
275 | m_PrefabInstance: {fileID: 0}
276 | m_PrefabAsset: {fileID: 0}
277 | m_GameObject: {fileID: 705507993}
278 | m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
279 | m_LocalPosition: {x: 0, y: 3, z: 0}
280 | m_LocalScale: {x: 1, y: 1, z: 1}
281 | m_Children: []
282 | m_Father: {fileID: 0}
283 | m_RootOrder: 1
284 | m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
285 | --- !u!1 &963194225
286 | GameObject:
287 | m_ObjectHideFlags: 0
288 | m_CorrespondingSourceObject: {fileID: 0}
289 | m_PrefabInstance: {fileID: 0}
290 | m_PrefabAsset: {fileID: 0}
291 | serializedVersion: 6
292 | m_Component:
293 | - component: {fileID: 963194228}
294 | - component: {fileID: 963194227}
295 | - component: {fileID: 963194226}
296 | m_Layer: 0
297 | m_Name: Main Camera
298 | m_TagString: MainCamera
299 | m_Icon: {fileID: 0}
300 | m_NavMeshLayer: 0
301 | m_StaticEditorFlags: 0
302 | m_IsActive: 1
303 | --- !u!81 &963194226
304 | AudioListener:
305 | m_ObjectHideFlags: 0
306 | m_CorrespondingSourceObject: {fileID: 0}
307 | m_PrefabInstance: {fileID: 0}
308 | m_PrefabAsset: {fileID: 0}
309 | m_GameObject: {fileID: 963194225}
310 | m_Enabled: 1
311 | --- !u!20 &963194227
312 | Camera:
313 | m_ObjectHideFlags: 0
314 | m_CorrespondingSourceObject: {fileID: 0}
315 | m_PrefabInstance: {fileID: 0}
316 | m_PrefabAsset: {fileID: 0}
317 | m_GameObject: {fileID: 963194225}
318 | m_Enabled: 1
319 | serializedVersion: 2
320 | m_ClearFlags: 1
321 | m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
322 | m_projectionMatrixMode: 1
323 | m_GateFitMode: 2
324 | m_FOVAxisMode: 0
325 | m_SensorSize: {x: 36, y: 24}
326 | m_LensShift: {x: 0, y: 0}
327 | m_FocalLength: 50
328 | m_NormalizedViewPortRect:
329 | serializedVersion: 2
330 | x: 0
331 | y: 0
332 | width: 1
333 | height: 1
334 | near clip plane: 0.3
335 | far clip plane: 1000
336 | field of view: 60
337 | orthographic: 0
338 | orthographic size: 5
339 | m_Depth: -1
340 | m_CullingMask:
341 | serializedVersion: 2
342 | m_Bits: 4294967295
343 | m_RenderingPath: -1
344 | m_TargetTexture: {fileID: 0}
345 | m_TargetDisplay: 0
346 | m_TargetEye: 3
347 | m_HDR: 1
348 | m_AllowMSAA: 1
349 | m_AllowDynamicResolution: 0
350 | m_ForceIntoRT: 0
351 | m_OcclusionCulling: 1
352 | m_StereoConvergence: 10
353 | m_StereoSeparation: 0.022
354 | --- !u!4 &963194228
355 | Transform:
356 | m_ObjectHideFlags: 0
357 | m_CorrespondingSourceObject: {fileID: 0}
358 | m_PrefabInstance: {fileID: 0}
359 | m_PrefabAsset: {fileID: 0}
360 | m_GameObject: {fileID: 963194225}
361 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
362 | m_LocalPosition: {x: 0, y: 1, z: -10}
363 | m_LocalScale: {x: 1, y: 1, z: 1}
364 | m_Children: []
365 | m_Father: {fileID: 0}
366 | m_RootOrder: 0
367 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
368 | --- !u!1 &1020445003
369 | GameObject:
370 | m_ObjectHideFlags: 0
371 | m_CorrespondingSourceObject: {fileID: 0}
372 | m_PrefabInstance: {fileID: 0}
373 | m_PrefabAsset: {fileID: 0}
374 | serializedVersion: 6
375 | m_Component:
376 | - component: {fileID: 1020445008}
377 | - component: {fileID: 1020445007}
378 | - component: {fileID: 1020445006}
379 | - component: {fileID: 1020445005}
380 | - component: {fileID: 1020445004}
381 | m_Layer: 5
382 | m_Name: Canvas
383 | m_TagString: Untagged
384 | m_Icon: {fileID: 0}
385 | m_NavMeshLayer: 0
386 | m_StaticEditorFlags: 0
387 | m_IsActive: 1
388 | --- !u!114 &1020445004
389 | MonoBehaviour:
390 | m_ObjectHideFlags: 0
391 | m_CorrespondingSourceObject: {fileID: 0}
392 | m_PrefabInstance: {fileID: 0}
393 | m_PrefabAsset: {fileID: 0}
394 | m_GameObject: {fileID: 1020445003}
395 | m_Enabled: 1
396 | m_EditorHideFlags: 0
397 | m_Script: {fileID: 11500000, guid: 54dd8d99ff0a4f644b364f2d38ea9f74, type: 3}
398 | m_Name:
399 | m_EditorClassIdentifier:
400 | _rawImage: {fileID: 1930513223}
401 | --- !u!114 &1020445005
402 | MonoBehaviour:
403 | m_ObjectHideFlags: 0
404 | m_CorrespondingSourceObject: {fileID: 0}
405 | m_PrefabInstance: {fileID: 0}
406 | m_PrefabAsset: {fileID: 0}
407 | m_GameObject: {fileID: 1020445003}
408 | m_Enabled: 1
409 | m_EditorHideFlags: 0
410 | m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
411 | m_Name:
412 | m_EditorClassIdentifier:
413 | m_IgnoreReversedGraphics: 1
414 | m_BlockingObjects: 0
415 | m_BlockingMask:
416 | serializedVersion: 2
417 | m_Bits: 4294967295
418 | --- !u!114 &1020445006
419 | MonoBehaviour:
420 | m_ObjectHideFlags: 0
421 | m_CorrespondingSourceObject: {fileID: 0}
422 | m_PrefabInstance: {fileID: 0}
423 | m_PrefabAsset: {fileID: 0}
424 | m_GameObject: {fileID: 1020445003}
425 | m_Enabled: 1
426 | m_EditorHideFlags: 0
427 | m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
428 | m_Name:
429 | m_EditorClassIdentifier:
430 | m_UiScaleMode: 0
431 | m_ReferencePixelsPerUnit: 100
432 | m_ScaleFactor: 1
433 | m_ReferenceResolution: {x: 800, y: 600}
434 | m_ScreenMatchMode: 0
435 | m_MatchWidthOrHeight: 0
436 | m_PhysicalUnit: 3
437 | m_FallbackScreenDPI: 96
438 | m_DefaultSpriteDPI: 96
439 | m_DynamicPixelsPerUnit: 1
440 | m_PresetInfoIsWorld: 0
441 | --- !u!223 &1020445007
442 | Canvas:
443 | m_ObjectHideFlags: 0
444 | m_CorrespondingSourceObject: {fileID: 0}
445 | m_PrefabInstance: {fileID: 0}
446 | m_PrefabAsset: {fileID: 0}
447 | m_GameObject: {fileID: 1020445003}
448 | m_Enabled: 1
449 | serializedVersion: 3
450 | m_RenderMode: 0
451 | m_Camera: {fileID: 0}
452 | m_PlaneDistance: 100
453 | m_PixelPerfect: 0
454 | m_ReceivesEvents: 1
455 | m_OverrideSorting: 0
456 | m_OverridePixelPerfect: 0
457 | m_SortingBucketNormalizedSize: 0
458 | m_AdditionalShaderChannelsFlag: 0
459 | m_SortingLayerID: 0
460 | m_SortingOrder: 0
461 | m_TargetDisplay: 0
462 | --- !u!224 &1020445008
463 | RectTransform:
464 | m_ObjectHideFlags: 0
465 | m_CorrespondingSourceObject: {fileID: 0}
466 | m_PrefabInstance: {fileID: 0}
467 | m_PrefabAsset: {fileID: 0}
468 | m_GameObject: {fileID: 1020445003}
469 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
470 | m_LocalPosition: {x: 0, y: 0, z: 0}
471 | m_LocalScale: {x: 0, y: 0, z: 0}
472 | m_Children:
473 | - {fileID: 1930513225}
474 | m_Father: {fileID: 0}
475 | m_RootOrder: 2
476 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
477 | m_AnchorMin: {x: 0, y: 0}
478 | m_AnchorMax: {x: 0, y: 0}
479 | m_AnchoredPosition: {x: 0, y: 0}
480 | m_SizeDelta: {x: 0, y: 0}
481 | m_Pivot: {x: 0, y: 0}
482 | --- !u!1 &1930513222
483 | GameObject:
484 | m_ObjectHideFlags: 0
485 | m_CorrespondingSourceObject: {fileID: 0}
486 | m_PrefabInstance: {fileID: 0}
487 | m_PrefabAsset: {fileID: 0}
488 | serializedVersion: 6
489 | m_Component:
490 | - component: {fileID: 1930513225}
491 | - component: {fileID: 1930513224}
492 | - component: {fileID: 1930513223}
493 | m_Layer: 5
494 | m_Name: RawImage
495 | m_TagString: Untagged
496 | m_Icon: {fileID: 0}
497 | m_NavMeshLayer: 0
498 | m_StaticEditorFlags: 0
499 | m_IsActive: 1
500 | --- !u!114 &1930513223
501 | MonoBehaviour:
502 | m_ObjectHideFlags: 0
503 | m_CorrespondingSourceObject: {fileID: 0}
504 | m_PrefabInstance: {fileID: 0}
505 | m_PrefabAsset: {fileID: 0}
506 | m_GameObject: {fileID: 1930513222}
507 | m_Enabled: 1
508 | m_EditorHideFlags: 0
509 | m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3}
510 | m_Name:
511 | m_EditorClassIdentifier:
512 | m_Material: {fileID: 0}
513 | m_Color: {r: 1, g: 1, b: 1, a: 1}
514 | m_RaycastTarget: 1
515 | m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
516 | m_Maskable: 1
517 | m_OnCullStateChanged:
518 | m_PersistentCalls:
519 | m_Calls: []
520 | m_Texture: {fileID: 0}
521 | m_UVRect:
522 | serializedVersion: 2
523 | x: 0
524 | y: 0
525 | width: 1
526 | height: 1
527 | --- !u!222 &1930513224
528 | CanvasRenderer:
529 | m_ObjectHideFlags: 0
530 | m_CorrespondingSourceObject: {fileID: 0}
531 | m_PrefabInstance: {fileID: 0}
532 | m_PrefabAsset: {fileID: 0}
533 | m_GameObject: {fileID: 1930513222}
534 | m_CullTransparentMesh: 1
535 | --- !u!224 &1930513225
536 | RectTransform:
537 | m_ObjectHideFlags: 0
538 | m_CorrespondingSourceObject: {fileID: 0}
539 | m_PrefabInstance: {fileID: 0}
540 | m_PrefabAsset: {fileID: 0}
541 | m_GameObject: {fileID: 1930513222}
542 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
543 | m_LocalPosition: {x: 0, y: 0, z: 0}
544 | m_LocalScale: {x: 1, y: 1, z: 1}
545 | m_Children: []
546 | m_Father: {fileID: 1020445008}
547 | m_RootOrder: 0
548 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
549 | m_AnchorMin: {x: 0, y: 0}
550 | m_AnchorMax: {x: 1, y: 1}
551 | m_AnchoredPosition: {x: 0, y: -0.0000038146973}
552 | m_SizeDelta: {x: 0, y: -0.0000076293945}
553 | m_Pivot: {x: 0.5, y: 0.5}
554 |
--------------------------------------------------------------------------------
/Assets/Scenes/SampleScene.unity.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 9fc0d4010bbf28b4594072e72b8655ab
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Scripts.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 8666e9db86e3d154e8b7e6ec15a938bd
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Scripts/AddressableAssetLoader.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.IO;
3 | using System.Text;
4 | using UnityEngine;
5 | using UnityEngine.Networking;
6 | using UnityEngine.ResourceManagement.ResourceLocations;
7 | using UnityEngine.ResourceManagement.ResourceProviders;
8 |
9 | ///
10 | /// 暗号化されたAssetBundleからアセットを読み込むProvider
11 | ///
12 | public class CustomAssetBundleResource : IAssetBundleResource
13 | {
14 | private AssetBundle assetBundle;
15 | private DownloadHandlerAssetBundle downloadHandler;
16 | private AsyncOperation requestOperation;
17 | private ProvideHandle provideHandle;
18 | private AssetBundleRequestOptions options;
19 | private FileStream fileStream;
20 | const string password = "password";
21 |
22 | ///
23 | /// 初期化する
24 | ///
25 | public void Setup(ProvideHandle handle)
26 | {
27 | assetBundle = null;
28 | downloadHandler = null;
29 | provideHandle = handle;
30 | options = provideHandle.Location.Data as AssetBundleRequestOptions;
31 | requestOperation = null;
32 | provideHandle.SetProgressCallback(GetProgress);
33 | }
34 |
35 | ///
36 | /// ロード・ダウンロードする
37 | ///
38 | public void Fetch()
39 | {
40 | var path = provideHandle.ResourceManager.TransformInternalId(provideHandle.Location);
41 | if (File.Exists(path))
42 | {
43 | // 暗号化したAssetBundleを取得
44 | DecryptAndLoadAssetBundle();
45 | return;
46 | }
47 |
48 | // ローカルに無い場合にサーバから取ってくる
49 | // 暗号化されたAssetBundleを適当なサーバに置いて、普通に取ってくる
50 | var uwp = new UnityWebRequest("各々のURL");
51 | var handler = new DownloadHandlerFile(path);
52 | handler.removeFileOnAbort = true;
53 | uwp.downloadHandler = handler;
54 | var req = uwp.SendWebRequest();
55 | req.completed += _ =>
56 | {
57 | if (!File.Exists(path)) { return; }
58 |
59 | // 暗号化したAssetBundleを取得
60 | DecryptAndLoadAssetBundle();
61 | };
62 |
63 |
64 | // ストレージにあったときも、サーバから落としてきた時も通る処理
65 | // 復号して、AssetBundleのメタ情報を返す
66 | void DecryptAndLoadAssetBundle()
67 | {
68 | fileStream = new FileStream(path, FileMode.Open, FileAccess.Read);
69 | var bundleName = Path.GetFileNameWithoutExtension(path);
70 | var uniqueSalt = Encoding.UTF8.GetBytes(bundleName); // AssetBundle名でsaltを生成
71 | // Streamで暗号化を解除しつつAssetBundleをロードする
72 | var decryptStream = new SeekableAesStream(fileStream, password, uniqueSalt);
73 | requestOperation = AssetBundle.LoadFromStreamAsync(decryptStream);
74 | requestOperation.completed += op =>
75 | {
76 | assetBundle = (op as AssetBundleCreateRequest).assetBundle;
77 | provideHandle.Complete(this, true, null);
78 | };
79 | }
80 | }
81 |
82 | ///
83 | /// アンロードする
84 | ///
85 | public void Unload()
86 | {
87 | if (assetBundle != null)
88 | {
89 | assetBundle.Unload(true);
90 | assetBundle = null;
91 | }
92 | if (downloadHandler != null)
93 | {
94 | downloadHandler.Dispose();
95 | downloadHandler = null;
96 | }
97 | requestOperation = null;
98 | }
99 |
100 | ///
101 | /// ロード・ダウンロードされたAssetBundleを取得する
102 | ///
103 | public AssetBundle GetAssetBundle()
104 | {
105 | if (assetBundle == null && downloadHandler != null)
106 | {
107 | assetBundle = downloadHandler.assetBundle;
108 | downloadHandler.Dispose();
109 | downloadHandler = null;
110 | }
111 | return assetBundle;
112 | }
113 |
114 | ///
115 | /// ロード・ダウンロード進捗を取得する
116 | ///
117 | private float GetProgress() => requestOperation?.progress ?? 0.0f;
118 | }
119 |
120 | [System.ComponentModel.DisplayName("Custom AssetBundle Provider")]
121 | public class CustomAssetBundleProvider : ResourceProviderBase
122 | {
123 | ///
124 | /// ProvideHandleに入っている情報が示すAssetBundleを読み込む処理
125 | ///
126 | public override void Provide(ProvideHandle providerInterface)
127 | {
128 | var res = new CustomAssetBundleResource();
129 | res.Setup(providerInterface);
130 | res.Fetch();
131 | }
132 |
133 | ///
134 | /// 読み込み結果としてAssetロード用のProviderに渡すための型を返却
135 | /// Assets from Bundles Providerを使う場合にはIAssetBundleResourceを指定
136 | ///
137 | public override Type GetDefaultType(IResourceLocation location) => typeof(IAssetBundleResource);
138 |
139 | ///
140 | /// 解放処理
141 | ///
142 | public override void Release(IResourceLocation location, object asset)
143 | {
144 | if (location == null) { throw new ArgumentNullException(nameof(location)); }
145 |
146 | if (asset == null)
147 | {
148 | Debug.LogWarningFormat("Releasing null asset bundle from location {0}. This is an indication that the bundle failed to load.", location);
149 | return;
150 | }
151 | if (asset is CustomAssetBundleResource bundle) { bundle.Unload(); }
152 | }
153 | }
154 |
--------------------------------------------------------------------------------
/Assets/Scripts/AddressableAssetLoader.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: c410a31257e771d43b105bd551b8ba7a
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Scripts/Editor.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 9297a3966c8cd914986fa66d523da6b8
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Scripts/Editor/BuildScriptOnDemandEncryptMode.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Diagnostics;
4 | using System.IO;
5 | using System.Linq;
6 | using System.Text;
7 | using UnityEditor.AddressableAssets.Build.BuildPipelineTasks;
8 | using UnityEditor.AddressableAssets.Settings;
9 | using UnityEditor.AddressableAssets.Settings.GroupSchemas;
10 | using UnityEditor.Build.Pipeline;
11 | using UnityEditor.Build.Pipeline.Interfaces;
12 | using UnityEditor.Build.Pipeline.Tasks;
13 | using UnityEditor.Build.Pipeline.Utilities;
14 | using UnityEngine;
15 | using UnityEngine.AddressableAssets;
16 | using UnityEngine.AddressableAssets.Initialization;
17 | using UnityEngine.AddressableAssets.ResourceLocators;
18 | using UnityEngine.AddressableAssets.ResourceProviders;
19 | using UnityEngine.Build.Pipeline;
20 | using UnityEngine.ResourceManagement.ResourceProviders;
21 | using UnityEngine.ResourceManagement.Util;
22 | using static UnityEditor.AddressableAssets.Build.ContentUpdateScript;
23 |
24 | namespace UnityEditor.AddressableAssets.Build.DataBuilders
25 | {
26 | using Debug = UnityEngine.Debug;
27 |
28 | ///
29 | /// Build scripts used for player builds and running with bundles in the editor.
30 | ///
31 | [CreateAssetMenu(fileName = "BuildScriptOnDemandEncrypt.asset", menuName = "Addressables/Content Builders/OnDemand Encrypt Build Script")]
32 | public class BuildScriptOnDemandEncryptMode : BuildScriptBase
33 | {
34 | ///
35 | public override string Name
36 | {
37 | get
38 | {
39 | return "OnDemand Encrypt Build Script";
40 | }
41 | }
42 |
43 | internal List m_ResourceProviderData;
44 | List m_AllBundleInputDefs;
45 | List m_OutputAssetBundleNames;
46 | HashSet m_CreatedProviderIds;
47 | UnityEditor.Build.Pipeline.Utilities.LinkXmlGenerator m_Linker;
48 | Dictionary m_BundleToInternalId = new Dictionary();
49 | private string m_CatalogBuildPath;
50 |
51 | internal List ResourceProviderData => m_ResourceProviderData.ToList();
52 |
53 | ///
54 | public override bool CanBuildData()
55 | {
56 | return typeof(T).IsAssignableFrom(typeof(AddressablesPlayerBuildResult));
57 | }
58 |
59 | ///
60 | protected override TResult BuildDataImplementation(AddressablesDataBuilderInput builderInput)
61 | {
62 | TResult result = default(TResult);
63 |
64 | var timer = new Stopwatch();
65 | timer.Start();
66 | InitializeBuildContext(builderInput, out AddressableAssetsBuildContext aaContext);
67 |
68 | using (Log.ScopedStep(LogLevel.Info, "ProcessAllGroups"))
69 | {
70 | var errorString = ProcessAllGroups(aaContext);
71 | if (!string.IsNullOrEmpty(errorString))
72 | result = AddressableAssetBuildResult.CreateResult(null, 0, errorString);
73 | }
74 |
75 | if (result == null)
76 | {
77 | result = DoBuild(builderInput, aaContext);
78 | }
79 |
80 | if (result != null)
81 | result.Duration = timer.Elapsed.TotalSeconds;
82 |
83 | return result;
84 | }
85 |
86 | internal void InitializeBuildContext(AddressablesDataBuilderInput builderInput, out AddressableAssetsBuildContext aaContext)
87 | {
88 | var aaSettings = builderInput.AddressableSettings;
89 |
90 | m_AllBundleInputDefs = new List();
91 | m_OutputAssetBundleNames = new List();
92 | var bundleToAssetGroup = new Dictionary();
93 | var runtimeData = new ResourceManagerRuntimeData
94 | {
95 | CertificateHandlerType = aaSettings.CertificateHandlerType,
96 | BuildTarget = builderInput.Target.ToString(),
97 | ProfileEvents = builderInput.ProfilerEventsEnabled,
98 | LogResourceManagerExceptions = aaSettings.buildSettings.LogResourceManagerExceptions,
99 | DisableCatalogUpdateOnStartup = aaSettings.DisableCatalogUpdateOnStartup,
100 | IsLocalCatalogInBundle = aaSettings.BundleLocalCatalog,
101 | #if UNITY_2019_3_OR_NEWER
102 | AddressablesVersion = PackageManager.PackageInfo.FindForAssembly(typeof(Addressables).Assembly)?.version,
103 | #endif
104 | MaxConcurrentWebRequests = aaSettings.MaxConcurrentWebRequests,
105 | CatalogRequestsTimeout = aaSettings.CatalogRequestsTimeout
106 | };
107 | m_Linker = UnityEditor.Build.Pipeline.Utilities.LinkXmlGenerator.CreateDefault();
108 | m_Linker.AddAssemblies(new[] { typeof(Addressables).Assembly, typeof(UnityEngine.ResourceManagement.ResourceManager).Assembly });
109 | m_Linker.AddTypes(runtimeData.CertificateHandlerType);
110 |
111 | m_ResourceProviderData = new List();
112 | aaContext = new AddressableAssetsBuildContext
113 | {
114 | Settings = aaSettings,
115 | runtimeData = runtimeData,
116 | bundleToAssetGroup = bundleToAssetGroup,
117 | locations = new List(),
118 | providerTypes = new HashSet(),
119 | assetEntries = new List()
120 | };
121 |
122 | m_CreatedProviderIds = new HashSet();
123 | }
124 |
125 | struct SBPSettingsOverwriterScope : IDisposable
126 | {
127 | bool m_PrevSlimResults;
128 | public SBPSettingsOverwriterScope(bool forceFullWriteResults)
129 | {
130 | m_PrevSlimResults = ScriptableBuildPipeline.slimWriteResults;
131 | if (forceFullWriteResults)
132 | ScriptableBuildPipeline.slimWriteResults = false;
133 | }
134 |
135 | public void Dispose()
136 | {
137 | ScriptableBuildPipeline.slimWriteResults = m_PrevSlimResults;
138 | }
139 | }
140 |
141 | internal static string GetBuiltInShaderBundleNamePrefix(AddressableAssetsBuildContext aaContext)
142 | {
143 | return GetBuiltInShaderBundleNamePrefix(aaContext.Settings);
144 | }
145 |
146 | internal static string GetBuiltInShaderBundleNamePrefix(AddressableAssetSettings settings)
147 | {
148 | string value = "";
149 | switch (settings.ShaderBundleNaming)
150 | {
151 | case ShaderBundleNaming.DefaultGroupGuid:
152 | value = settings.DefaultGroup.Guid;
153 | break;
154 | case ShaderBundleNaming.ProjectName:
155 | value = Hash128.Compute(GetProjectName()).ToString();
156 | break;
157 | case ShaderBundleNaming.Custom:
158 | value = settings.ShaderBundleCustomNaming;
159 | break;
160 | }
161 |
162 | return value;
163 | }
164 |
165 | void AddBundleProvider(BundledAssetGroupSchema schema)
166 | {
167 | var bundleProviderId = schema.GetBundleCachedProviderId();
168 |
169 | if (!m_CreatedProviderIds.Contains(bundleProviderId))
170 | {
171 | m_CreatedProviderIds.Add(bundleProviderId);
172 | var bundleProviderType = schema.AssetBundleProviderType.Value;
173 | var bundleProviderData = ObjectInitializationData.CreateSerializedInitializationData(bundleProviderType, bundleProviderId);
174 | m_ResourceProviderData.Add(bundleProviderData);
175 | }
176 | }
177 |
178 | internal static string GetMonoScriptBundleNamePrefix(AddressableAssetsBuildContext aaContext)
179 | {
180 | return GetMonoScriptBundleNamePrefix(aaContext.Settings);
181 | }
182 |
183 | internal static string GetMonoScriptBundleNamePrefix(AddressableAssetSettings settings)
184 | {
185 | string value = null;
186 | switch (settings.MonoScriptBundleNaming)
187 | {
188 | case MonoScriptBundleNaming.ProjectName:
189 | value = Hash128.Compute(GetProjectName()).ToString();
190 | break;
191 | case MonoScriptBundleNaming.DefaultGroupGuid:
192 | value = settings.DefaultGroup.Guid;
193 | break;
194 | case MonoScriptBundleNaming.Custom:
195 | value = settings.MonoScriptBundleCustomNaming;
196 | break;
197 | }
198 |
199 | return value;
200 | }
201 |
202 | ///
203 | /// The method that does the actual building after all the groups have been processed.
204 | ///
205 | /// The generic builderInput of the
206 | ///
207 | ///
208 | ///
209 | protected virtual TResult DoBuild(AddressablesDataBuilderInput builderInput, AddressableAssetsBuildContext aaContext) where TResult : IDataBuilderResult
210 | {
211 | ExtractDataTask extractData = new ExtractDataTask();
212 | List carryOverCachedState = new List();
213 | var tempPath = Path.GetDirectoryName(Application.dataPath) + "/" + Addressables.LibraryPath + PlatformMappingService.GetPlatformPathSubFolder() + "/addressables_content_state.bin";
214 |
215 | var playerBuildVersion = builderInput.PlayerVersion;
216 | if (m_AllBundleInputDefs.Count > 0)
217 | {
218 | if (!BuildUtility.CheckModifiedScenesAndAskToSave())
219 | return AddressableAssetBuildResult.CreateResult(null, 0, "Unsaved scenes");
220 |
221 | var buildTarget = builderInput.Target;
222 | var buildTargetGroup = builderInput.TargetGroup;
223 |
224 | var buildParams = new AddressableAssetsBundleBuildParameters(
225 | aaContext.Settings,
226 | aaContext.bundleToAssetGroup,
227 | buildTarget,
228 | buildTargetGroup,
229 | aaContext.Settings.buildSettings.bundleBuildPath);
230 |
231 | var builtinShaderBundleName = GetBuiltInShaderBundleNamePrefix(aaContext) + "_unitybuiltinshaders.bundle";
232 |
233 | var schema = aaContext.Settings.DefaultGroup.GetSchema();
234 | AddBundleProvider(schema);
235 |
236 | string monoScriptBundleName = GetMonoScriptBundleNamePrefix(aaContext);
237 | if (!string.IsNullOrEmpty(monoScriptBundleName))
238 | monoScriptBundleName += "_monoscripts.bundle";
239 | var buildTasks = RuntimeDataBuildTasks(builtinShaderBundleName, monoScriptBundleName);
240 | buildTasks.Add(extractData);
241 |
242 | IBundleBuildResults results;
243 | using (Log.ScopedStep(LogLevel.Info, "ContentPipeline.BuildAssetBundles"))
244 | using (new SBPSettingsOverwriterScope(ProjectConfigData.GenerateBuildLayout)) // build layout generation requires full SBP write results
245 | {
246 | var exitCode = ContentPipeline.BuildAssetBundles(buildParams, new BundleBuildContent(m_AllBundleInputDefs), out results, buildTasks, aaContext, Log);
247 |
248 | if (exitCode < ReturnCode.Success)
249 | return AddressableAssetBuildResult.CreateResult(null, 0, "SBP Error" + exitCode);
250 | }
251 |
252 | var groups = aaContext.Settings.groups.Where(g => g != null);
253 |
254 | var bundleRenameMap = new Dictionary();
255 | var postCatalogUpdateCallbacks = new List();
256 | using (Log.ScopedStep(LogLevel.Info, "PostProcessBundles"))
257 | using (var progressTracker = new UnityEditor.Build.Pipeline.Utilities.ProgressTracker())
258 | {
259 | progressTracker.UpdateTask("Post Processing AssetBundles");
260 |
261 | Dictionary primaryKeyToCatalogEntry = new Dictionary();
262 | foreach (var loc in aaContext.locations)
263 | if (loc != null && loc.Keys[0] != null && loc.Keys[0] is string && !primaryKeyToCatalogEntry.ContainsKey((string)loc.Keys[0]))
264 | primaryKeyToCatalogEntry[(string)loc.Keys[0]] = loc;
265 |
266 | foreach (var assetGroup in groups)
267 | {
268 | if (aaContext.assetGroupToBundles.TryGetValue(assetGroup, out List buildBundles))
269 | {
270 | List outputBundles = new List();
271 | for (int i = 0; i < buildBundles.Count; ++i)
272 | {
273 | var b = m_AllBundleInputDefs.FindIndex(inputDef =>
274 | buildBundles[i].StartsWith(inputDef.assetBundleName));
275 | outputBundles.Add(b >= 0 ? m_OutputAssetBundleNames[b] : buildBundles[i]);
276 | }
277 |
278 | PostProcessBundles(assetGroup, buildBundles, outputBundles, results, aaContext.runtimeData, aaContext.locations, builderInput.Registry, primaryKeyToCatalogEntry, bundleRenameMap, postCatalogUpdateCallbacks);
279 | }
280 | }
281 | }
282 |
283 | ProcessCatalogEntriesForBuild(aaContext, Log, groups, builderInput, extractData.WriteData, carryOverCachedState, m_BundleToInternalId);
284 | foreach (var postUpdateCatalogCallback in postCatalogUpdateCallbacks)
285 | postUpdateCatalogCallback.Invoke();
286 |
287 | foreach (var r in results.WriteResults)
288 | {
289 | var resultValue = r.Value;
290 | m_Linker.AddTypes(resultValue.includedTypes);
291 | #if UNITY_2021_1_OR_NEWER
292 | m_Linker.AddSerializedClass(resultValue.includedSerializeReferenceFQN);
293 | #else
294 | if (resultValue.GetType().GetProperty("includedSerializeReferenceFQN") != null)
295 | m_Linker.AddSerializedClass(resultValue.GetType().GetProperty("includedSerializeReferenceFQN").GetValue(resultValue) as System.Collections.Generic.IEnumerable);
296 | #endif
297 | }
298 |
299 |
300 | if (ProjectConfigData.GenerateBuildLayout)
301 | {
302 | using (var progressTracker = new UnityEditor.Build.Pipeline.Utilities.ProgressTracker())
303 | {
304 | progressTracker.UpdateTask("Generating Build Layout");
305 | List tasks = new List();
306 | var buildLayoutTask = new BuildLayoutGenerationTask();
307 | buildLayoutTask.BundleNameRemap = bundleRenameMap;
308 | tasks.Add(buildLayoutTask);
309 | BuildTasksRunner.Run(tasks, extractData.BuildContext);
310 | }
311 | }
312 | }
313 |
314 | var contentCatalog = new ContentCatalogData(ResourceManagerRuntimeData.kCatalogAddress);
315 | contentCatalog.SetData(aaContext.locations.OrderBy(f => f.InternalId).ToList(), aaContext.Settings.OptimizeCatalogSize);
316 |
317 | contentCatalog.ResourceProviderData.AddRange(m_ResourceProviderData);
318 | foreach (var t in aaContext.providerTypes)
319 | contentCatalog.ResourceProviderData.Add(ObjectInitializationData.CreateSerializedInitializationData(t));
320 |
321 | contentCatalog.InstanceProviderData = ObjectInitializationData.CreateSerializedInitializationData(instanceProviderType.Value);
322 | contentCatalog.SceneProviderData = ObjectInitializationData.CreateSerializedInitializationData(sceneProviderType.Value);
323 |
324 | //save catalog
325 | var jsonText = JsonUtility.ToJson(contentCatalog);
326 | CreateCatalogFiles(jsonText, builderInput, aaContext);
327 |
328 | foreach (var pd in contentCatalog.ResourceProviderData)
329 | {
330 | m_Linker.AddTypes(pd.ObjectType.Value);
331 | m_Linker.AddTypes(pd.GetRuntimeTypes());
332 | }
333 | m_Linker.AddTypes(contentCatalog.InstanceProviderData.ObjectType.Value);
334 | m_Linker.AddTypes(contentCatalog.InstanceProviderData.GetRuntimeTypes());
335 | m_Linker.AddTypes(contentCatalog.SceneProviderData.ObjectType.Value);
336 | m_Linker.AddTypes(contentCatalog.SceneProviderData.GetRuntimeTypes());
337 |
338 | foreach (var io in aaContext.Settings.InitializationObjects)
339 | {
340 | var provider = io as IObjectInitializationDataProvider;
341 | if (provider != null)
342 | {
343 | var id = provider.CreateObjectInitializationData();
344 | aaContext.runtimeData.InitializationObjects.Add(id);
345 | m_Linker.AddTypes(id.ObjectType.Value);
346 | m_Linker.AddTypes(id.GetRuntimeTypes());
347 | }
348 | }
349 |
350 | m_Linker.AddTypes(typeof(Addressables));
351 | Directory.CreateDirectory(Addressables.BuildPath + "/AddressablesLink/");
352 | m_Linker.Save(Addressables.BuildPath + "/AddressablesLink/link.xml");
353 | var settingsPath = Addressables.BuildPath + "/" + builderInput.RuntimeSettingsFilename;
354 | WriteFile(settingsPath, JsonUtility.ToJson(aaContext.runtimeData), builderInput.Registry);
355 |
356 | var opResult = AddressableAssetBuildResult.CreateResult(settingsPath, aaContext.locations.Count);
357 | if (extractData.BuildCache != null && builderInput.PreviousContentState == null)
358 | {
359 | var allEntries = new List();
360 | aaContext.Settings.GetAllAssets(allEntries, false, GroupFilter);
361 | var remoteCatalogLoadPath = aaContext.Settings.BuildRemoteCatalog ? aaContext.Settings.RemoteCatalogLoadPath.GetValue(aaContext.Settings) : string.Empty;
362 | if (ContentUpdateScript.SaveContentState(aaContext.locations, tempPath, allEntries, extractData.DependencyData, playerBuildVersion, remoteCatalogLoadPath, carryOverCachedState))
363 | {
364 | string contentStatePath = ContentUpdateScript.GetContentStateDataPath(false);
365 | try
366 | {
367 | File.Copy(tempPath, contentStatePath, true);
368 | builderInput.Registry.AddFile(contentStatePath);
369 | }
370 | catch (Exception e)
371 | {
372 | Debug.LogException(e);
373 | }
374 | }
375 | }
376 |
377 | return opResult;
378 | }
379 |
380 | private static void ProcessCatalogEntriesForBuild(AddressableAssetsBuildContext aaContext, IBuildLogger log,
381 | IEnumerable validGroups, AddressablesDataBuilderInput builderInput, IBundleWriteData writeData,
382 | List carryOverCachedState, Dictionary bundleToInternalId)
383 | {
384 | using (log.ScopedStep(LogLevel.Info, "Catalog Entries."))
385 | using (var progressTracker = new UnityEditor.Build.Pipeline.Utilities.ProgressTracker())
386 | {
387 | progressTracker.UpdateTask("Post Processing Catalog Entries");
388 | Dictionary locationIdToCatalogEntryMap = BuildLocationIdToCatalogEntryMap(aaContext.locations);
389 | if (builderInput.PreviousContentState != null)
390 | {
391 | ContentUpdateContext contentUpdateContext = new ContentUpdateContext()
392 | {
393 | BundleToInternalBundleIdMap = bundleToInternalId,
394 | GuidToPreviousAssetStateMap = BuildGuidToCachedAssetStateMap(builderInput.PreviousContentState, aaContext.Settings),
395 | IdToCatalogDataEntryMap = locationIdToCatalogEntryMap,
396 | WriteData = writeData,
397 | ContentState = builderInput.PreviousContentState,
398 | Registry = builderInput.Registry,
399 | PreviousAssetStateCarryOver = carryOverCachedState
400 | };
401 |
402 | RevertUnchangedAssetsToPreviousAssetState.Run(aaContext, contentUpdateContext);
403 | }
404 | else
405 | {
406 | foreach (var assetGroup in validGroups)
407 | SetAssetEntriesBundleFileIdToCatalogEntryBundleFileId(assetGroup.entries, bundleToInternalId, writeData, locationIdToCatalogEntryMap);
408 | }
409 | }
410 |
411 | bundleToInternalId.Clear();
412 | }
413 |
414 | private static Dictionary BuildLocationIdToCatalogEntryMap(List locations)
415 | {
416 | Dictionary locationIdToCatalogEntryMap = new Dictionary();
417 | foreach (var location in locations)
418 | locationIdToCatalogEntryMap[location.InternalId] = location;
419 |
420 | return locationIdToCatalogEntryMap;
421 | }
422 |
423 | private static Dictionary BuildGuidToCachedAssetStateMap(AddressablesContentState contentState, AddressableAssetSettings settings)
424 | {
425 | Dictionary addressableEntryToCachedStateMap = new Dictionary();
426 | foreach (var cachedInfo in contentState.cachedInfos)
427 | addressableEntryToCachedStateMap[cachedInfo.asset.guid.ToString()] = cachedInfo;
428 |
429 | return addressableEntryToCachedStateMap;
430 | }
431 |
432 | internal bool CreateCatalogFiles(string jsonText, AddressablesDataBuilderInput builderInput, AddressableAssetsBuildContext aaContext)
433 | {
434 | if (string.IsNullOrEmpty(jsonText) || builderInput == null || aaContext == null)
435 | {
436 | Addressables.LogError("Unable to create content catalog (Null arguments).");
437 | return false;
438 | }
439 |
440 | // Path needs to be resolved at runtime.
441 | string localLoadPath = "{UnityEngine.AddressableAssets.Addressables.RuntimePath}/" + builderInput.RuntimeCatalogFilename;
442 | m_CatalogBuildPath = Path.Combine(Addressables.BuildPath, builderInput.RuntimeCatalogFilename);
443 |
444 | if (aaContext.Settings.BundleLocalCatalog)
445 | {
446 | localLoadPath = localLoadPath.Replace(".json", ".bundle");
447 | m_CatalogBuildPath = m_CatalogBuildPath.Replace(".json", ".bundle");
448 | var returnCode = CreateCatalogBundle(m_CatalogBuildPath, jsonText, builderInput);
449 | if (returnCode != ReturnCode.Success || !File.Exists(m_CatalogBuildPath))
450 | {
451 | Addressables.LogError($"An error occured during the creation of the content catalog bundle (return code {returnCode}).");
452 | return false;
453 | }
454 | }
455 | else
456 | {
457 | WriteFile(m_CatalogBuildPath, jsonText, builderInput.Registry);
458 | }
459 |
460 | string[] dependencyHashes = null;
461 | if (aaContext.Settings.BuildRemoteCatalog)
462 | {
463 | dependencyHashes = CreateRemoteCatalog(jsonText, aaContext.runtimeData.CatalogLocations, aaContext.Settings, builderInput, new ProviderLoadRequestOptions() {IgnoreFailures = true});
464 | }
465 |
466 | aaContext.runtimeData.CatalogLocations.Add(new ResourceLocationData(
467 | new[] { ResourceManagerRuntimeData.kCatalogAddress },
468 | localLoadPath,
469 | typeof(ContentCatalogProvider),
470 | typeof(ContentCatalogData),
471 | dependencyHashes));
472 |
473 | return true;
474 | }
475 |
476 | internal static string GetProjectName()
477 | {
478 | return new DirectoryInfo(Path.GetDirectoryName(Application.dataPath)).Name;
479 | }
480 |
481 | internal ReturnCode CreateCatalogBundle(string filepath, string jsonText, AddressablesDataBuilderInput builderInput)
482 | {
483 | if (string.IsNullOrEmpty(filepath) || string.IsNullOrEmpty(jsonText) || builderInput == null)
484 | {
485 | throw new ArgumentException("Unable to create catalog bundle (null arguments).");
486 | }
487 |
488 | // A bundle requires an actual asset
489 | var tempFolderName = "TempCatalogFolder";
490 |
491 | var configFolder = AddressableAssetSettingsDefaultObject.kDefaultConfigFolder;
492 | if (builderInput.AddressableSettings != null && builderInput.AddressableSettings.IsPersisted)
493 | configFolder = builderInput.AddressableSettings.ConfigFolder;
494 |
495 | var tempFolderPath = Path.Combine(configFolder, tempFolderName);
496 | var tempFilePath = Path.Combine(tempFolderPath, Path.GetFileName(filepath).Replace(".bundle", ".json"));
497 | if (!WriteFile(tempFilePath, jsonText, builderInput.Registry))
498 | {
499 | throw new Exception("An error occured during the creation of temporary files needed to bundle the content catalog.");
500 | }
501 |
502 | AssetDatabase.Refresh();
503 |
504 | var bundleBuildContent = new BundleBuildContent(new[]
505 | {
506 | new AssetBundleBuild()
507 | {
508 | assetBundleName = Path.GetFileName(filepath),
509 | assetNames = new[] {tempFilePath},
510 | addressableNames = new string[0]
511 | }
512 | });
513 |
514 | var buildTasks = new List
515 | {
516 | new CalculateAssetDependencyData(),
517 | new GenerateBundlePacking(),
518 | new GenerateBundleCommands(),
519 | new WriteSerializedFiles(),
520 | new ArchiveAndCompressBundles()
521 | };
522 |
523 | var buildParams = new BundleBuildParameters(builderInput.Target, builderInput.TargetGroup, Path.GetDirectoryName(filepath));
524 | if (builderInput.Target == BuildTarget.WebGL)
525 | buildParams.BundleCompression = BuildCompression.LZ4Runtime;
526 | var retCode = ContentPipeline.BuildAssetBundles(buildParams, bundleBuildContent, out IBundleBuildResults result, buildTasks, Log);
527 |
528 | if (Directory.Exists(tempFolderPath))
529 | {
530 | Directory.Delete(tempFolderPath, true);
531 | builderInput.Registry.RemoveFile(tempFilePath);
532 | }
533 |
534 | var tempFolderMetaFile = tempFolderPath + ".meta";
535 | if (File.Exists(tempFolderMetaFile))
536 | {
537 | File.Delete(tempFolderMetaFile);
538 | builderInput.Registry.RemoveFile(tempFolderMetaFile);
539 | }
540 |
541 | if (File.Exists(filepath))
542 | {
543 | builderInput.Registry.AddFile(filepath);
544 | }
545 |
546 | return retCode;
547 | }
548 |
549 | internal static void SetAssetEntriesBundleFileIdToCatalogEntryBundleFileId(ICollection assetEntries, Dictionary bundleNameToInternalBundleIdMap,
550 | IBundleWriteData writeData, Dictionary locationIdToCatalogEntryMap)
551 | {
552 | foreach (var loc in assetEntries)
553 | {
554 | AddressableAssetEntry processedEntry = loc;
555 | if (loc.IsFolder && loc.SubAssets.Count > 0)
556 | processedEntry = loc.SubAssets[0];
557 | GUID guid = new GUID(processedEntry.guid);
558 | //For every entry in the write data we need to ensure the BundleFileId is set so we can save it correctly in the cached state
559 | if (writeData.AssetToFiles.TryGetValue(guid, out List files))
560 | {
561 | string file = files[0];
562 | string fullBundleName = writeData.FileToBundle[file];
563 | string convertedLocation = bundleNameToInternalBundleIdMap[fullBundleName];
564 |
565 | if (locationIdToCatalogEntryMap.TryGetValue(convertedLocation,
566 | out ContentCatalogDataEntry catalogEntry))
567 | {
568 | loc.BundleFileId = catalogEntry.InternalId;
569 |
570 | //This is where we strip out the temporary hash added to the bundle name for Content Update for the AssetEntry
571 | if (loc.parentGroup?.GetSchema()?.BundleNaming ==
572 | BundledAssetGroupSchema.BundleNamingStyle.NoHash)
573 | {
574 | loc.BundleFileId = StripHashFromBundleLocation(loc.BundleFileId);
575 | }
576 | }
577 | }
578 | }
579 | }
580 |
581 | static string StripHashFromBundleLocation(string hashedBundleLocation)
582 | {
583 | return hashedBundleLocation.Remove(hashedBundleLocation.LastIndexOf("_")) + ".bundle";
584 | }
585 |
586 | ///
587 | protected override string ProcessGroup(AddressableAssetGroup assetGroup, AddressableAssetsBuildContext aaContext)
588 | {
589 | if (assetGroup == null)
590 | return string.Empty;
591 |
592 | if (assetGroup.Schemas.Count == 0)
593 | {
594 | Addressables.LogWarning($"{assetGroup.Name} does not have any associated AddressableAssetGroupSchemas. " +
595 | $"Data from this group will not be included in the build. " +
596 | $"If this is unexpected the AddressableGroup may have become corrupted.");
597 | return string.Empty;
598 | }
599 |
600 | foreach (var schema in assetGroup.Schemas)
601 | {
602 | var errorString = ProcessGroupSchema(schema, assetGroup, aaContext);
603 | if (!string.IsNullOrEmpty(errorString))
604 | return errorString;
605 | }
606 |
607 | return string.Empty;
608 | }
609 |
610 | ///
611 | /// Called per group per schema to evaluate that schema. This can be an easy entry point for implementing the
612 | /// build aspects surrounding a custom schema. Note, you should not rely on schemas getting called in a specific
613 | /// order.
614 | ///
615 | /// The schema to process
616 | /// The group this schema was pulled from
617 | /// The general Addressables build builderInput
618 | ///
619 | protected virtual string ProcessGroupSchema(AddressableAssetGroupSchema schema, AddressableAssetGroup assetGroup, AddressableAssetsBuildContext aaContext)
620 | {
621 | var playerDataSchema = schema as PlayerDataGroupSchema;
622 | if (playerDataSchema != null)
623 | return ProcessPlayerDataSchema(playerDataSchema, assetGroup, aaContext);
624 | var bundledAssetSchema = schema as BundledAssetGroupSchema;
625 | if (bundledAssetSchema != null)
626 | return ProcessBundledAssetSchema(bundledAssetSchema, assetGroup, aaContext);
627 | return string.Empty;
628 | }
629 |
630 | internal string ProcessPlayerDataSchema(
631 | PlayerDataGroupSchema schema,
632 | AddressableAssetGroup assetGroup,
633 | AddressableAssetsBuildContext aaContext)
634 | {
635 | if (CreateLocationsForPlayerData(schema, assetGroup, aaContext.locations, aaContext.providerTypes))
636 | {
637 | if (!m_CreatedProviderIds.Contains(typeof(LegacyResourcesProvider).Name))
638 | {
639 | m_CreatedProviderIds.Add(typeof(LegacyResourcesProvider).Name);
640 | m_ResourceProviderData.Add(ObjectInitializationData.CreateSerializedInitializationData(typeof(LegacyResourcesProvider)));
641 | }
642 | }
643 |
644 | return string.Empty;
645 | }
646 |
647 | ///
648 | /// The processing of the bundled asset schema. This is where the bundle(s) for a given group are actually setup.
649 | ///
650 | /// The BundledAssetGroupSchema to process
651 | /// The group this schema was pulled from
652 | /// The general Addressables build builderInput
653 | /// The error string, if any.
654 | protected virtual string ProcessBundledAssetSchema(
655 | BundledAssetGroupSchema schema,
656 | AddressableAssetGroup assetGroup,
657 | AddressableAssetsBuildContext aaContext)
658 | {
659 | if (schema == null || !schema.IncludeInBuild || !assetGroup.entries.Any())
660 | return string.Empty;
661 |
662 | var errorStr = ErrorCheckBundleSettings(schema, assetGroup, aaContext.Settings);
663 | if (!string.IsNullOrEmpty(errorStr))
664 | return errorStr;
665 |
666 | AddBundleProvider(schema);
667 |
668 | var assetProviderId = schema.GetAssetCachedProviderId();
669 | if (!m_CreatedProviderIds.Contains(assetProviderId))
670 | {
671 | m_CreatedProviderIds.Add(assetProviderId);
672 | var assetProviderType = schema.BundledAssetProviderType.Value;
673 | var assetProviderData = ObjectInitializationData.CreateSerializedInitializationData(assetProviderType, assetProviderId);
674 | m_ResourceProviderData.Add(assetProviderData);
675 | }
676 |
677 | #if UNITY_2022_1_OR_NEWER
678 | string loadPath = schema.LoadPath.GetValue(aaContext.Settings);
679 | if (loadPath.StartsWith("http://") && PlayerSettings.insecureHttpOption == InsecureHttpOption.NotAllowed)
680 | Addressables.LogWarning($"Addressable group {assetGroup.Name} uses insecure http for its load path. To allow http connections for UnityWebRequests, change your settings in Edit > Project Settings > Player > Other Settings > Configuration > Allow downloads over HTTP.");
681 | #endif
682 | if (schema.Compression == BundledAssetGroupSchema.BundleCompressionMode.LZMA && aaContext.runtimeData.BuildTarget == BuildTarget.WebGL.ToString())
683 | Addressables.LogWarning($"Addressable group {assetGroup.Name} uses LZMA compression, which cannot be decompressed on WebGL. Use LZ4 compression instead.");
684 |
685 | var bundleInputDefs = new List();
686 | var list = PrepGroupBundlePacking(assetGroup, bundleInputDefs, schema);
687 | aaContext.assetEntries.AddRange(list);
688 | List uniqueNames = HandleDuplicateBundleNames(bundleInputDefs, aaContext.bundleToAssetGroup, assetGroup.Guid);
689 | m_OutputAssetBundleNames.AddRange(uniqueNames);
690 | m_AllBundleInputDefs.AddRange(bundleInputDefs);
691 | return string.Empty;
692 | }
693 |
694 | internal static List HandleDuplicateBundleNames(List bundleInputDefs, Dictionary bundleToAssetGroup = null, string assetGroupGuid = null)
695 | {
696 | var generatedUniqueNames = new List();
697 | var handledNames = new HashSet();
698 |
699 | for (int i = 0; i < bundleInputDefs.Count; i++)
700 | {
701 | AssetBundleBuild bundleBuild = bundleInputDefs[i];
702 | string assetBundleName = bundleBuild.assetBundleName;
703 | if (handledNames.Contains(assetBundleName))
704 | {
705 | int count = 1;
706 | var newName = assetBundleName;
707 | while (handledNames.Contains(newName) && count < 1000)
708 | newName = assetBundleName.Replace(".bundle", string.Format("{0}.bundle", count++));
709 | assetBundleName = newName;
710 | }
711 |
712 | string hashedAssetBundleName = HashingMethods.Calculate(assetBundleName) + ".bundle";
713 | generatedUniqueNames.Add(assetBundleName);
714 | handledNames.Add(assetBundleName);
715 |
716 | bundleBuild.assetBundleName = hashedAssetBundleName;
717 | bundleInputDefs[i] = bundleBuild;
718 |
719 | if (bundleToAssetGroup != null)
720 | bundleToAssetGroup.Add(hashedAssetBundleName, assetGroupGuid);
721 | }
722 | return generatedUniqueNames;
723 | }
724 |
725 | internal static string ErrorCheckBundleSettings(BundledAssetGroupSchema schema, AddressableAssetGroup assetGroup, AddressableAssetSettings settings)
726 | {
727 | var message = string.Empty;
728 |
729 | string buildPath = settings.profileSettings.GetValueById(settings.activeProfileId, schema.BuildPath.Id);
730 | string loadPath = settings.profileSettings.GetValueById(settings.activeProfileId, schema.LoadPath.Id);
731 |
732 | bool buildLocal = buildPath.Contains("[UnityEngine.AddressableAssets.Addressables.BuildPath]");
733 | bool loadLocal = loadPath.Contains("{UnityEngine.AddressableAssets.Addressables.RuntimePath}");
734 |
735 | if (buildLocal && !loadLocal)
736 | {
737 | message = "BuildPath for group '" + assetGroup.Name + "' is set to the dynamic-lookup version of StreamingAssets, but LoadPath is not. \n";
738 | }
739 | else if (!buildLocal && loadLocal)
740 | {
741 | message = "LoadPath for group " + assetGroup.Name + " is set to the dynamic-lookup version of StreamingAssets, but BuildPath is not. These paths must both use the dynamic-lookup, or both not use it. \n";
742 | }
743 |
744 | if (!string.IsNullOrEmpty(message))
745 | {
746 | message += "BuildPath: '" + buildPath + "'\n";
747 | message += "LoadPath: '" + loadPath + "'";
748 | }
749 | if (schema.Compression == BundledAssetGroupSchema.BundleCompressionMode.LZMA && (buildLocal || loadLocal))
750 | {
751 | Debug.LogWarningFormat("Bundle compression is set to LZMA, but group {0} uses local content.", assetGroup.Name);
752 | }
753 | return message;
754 | }
755 |
756 | internal static string CalculateGroupHash(BundledAssetGroupSchema.BundleInternalIdMode mode, AddressableAssetGroup assetGroup, IEnumerable entries)
757 | {
758 | switch (mode)
759 | {
760 | case BundledAssetGroupSchema.BundleInternalIdMode.GroupGuid: return assetGroup.Guid;
761 | case BundledAssetGroupSchema.BundleInternalIdMode.GroupGuidProjectIdHash: return HashingMethods.Calculate(assetGroup.Guid, Application.cloudProjectId).ToString();
762 | case BundledAssetGroupSchema.BundleInternalIdMode.GroupGuidProjectIdEntriesHash: return HashingMethods.Calculate(assetGroup.Guid, Application.cloudProjectId, new HashSet(entries.Select(e => e.guid))).ToString();
763 | }
764 | throw new Exception("Invalid naming mode.");
765 | }
766 |
767 | ///
768 | /// Processes an AddressableAssetGroup and generates AssetBundle input definitions based on the BundlePackingMode.
769 | ///
770 | /// The AddressableAssetGroup to be processed.
771 | /// The list of bundle definitions fed into the build pipeline AssetBundleBuild
772 | /// The BundledAssetGroupSchema of used to process the assetGroup.
773 | /// A filter to remove AddressableAssetEntries from being processed in the build.
774 | /// The total list of AddressableAssetEntries that were processed.
775 | public static List PrepGroupBundlePacking(AddressableAssetGroup assetGroup, List bundleInputDefs, BundledAssetGroupSchema schema, Func entryFilter = null)
776 | {
777 | var combinedEntries = new List();
778 | var packingMode = schema.BundleMode;
779 | var namingMode = schema.InternalBundleIdMode;
780 | bool ignoreUnsupportedFilesInBuild = assetGroup.Settings.IgnoreUnsupportedFilesInBuild;
781 |
782 | switch (packingMode)
783 | {
784 | case BundledAssetGroupSchema.BundlePackingMode.PackTogether:
785 | {
786 | var allEntries = new List();
787 | foreach (AddressableAssetEntry a in assetGroup.entries)
788 | {
789 | if (entryFilter != null && !entryFilter(a))
790 | continue;
791 | a.GatherAllAssets(allEntries, true, true, false, entryFilter);
792 | }
793 | combinedEntries.AddRange(allEntries);
794 | GenerateBuildInputDefinitions(allEntries, bundleInputDefs, CalculateGroupHash(namingMode, assetGroup, allEntries), "all", ignoreUnsupportedFilesInBuild);
795 | } break;
796 | case BundledAssetGroupSchema.BundlePackingMode.PackSeparately:
797 | {
798 | foreach (AddressableAssetEntry a in assetGroup.entries)
799 | {
800 | if (entryFilter != null && !entryFilter(a))
801 | continue;
802 | var allEntries = new List();
803 | a.GatherAllAssets(allEntries, true, true, false, entryFilter);
804 | combinedEntries.AddRange(allEntries);
805 | GenerateBuildInputDefinitions(allEntries, bundleInputDefs, CalculateGroupHash(namingMode, assetGroup, allEntries), a.address, ignoreUnsupportedFilesInBuild);
806 | }
807 | } break;
808 | case BundledAssetGroupSchema.BundlePackingMode.PackTogetherByLabel:
809 | {
810 | var labelTable = new Dictionary>();
811 | foreach (AddressableAssetEntry a in assetGroup.entries)
812 | {
813 | if (entryFilter != null && !entryFilter(a))
814 | continue;
815 | var sb = new StringBuilder();
816 | foreach (var l in a.labels)
817 | sb.Append(l);
818 | var key = sb.ToString();
819 | List entries;
820 | if (!labelTable.TryGetValue(key, out entries))
821 | labelTable.Add(key, entries = new List());
822 | entries.Add(a);
823 | }
824 |
825 | foreach (var entryGroup in labelTable)
826 | {
827 | var allEntries = new List();
828 | foreach (var a in entryGroup.Value)
829 | {
830 | if (entryFilter != null && !entryFilter(a))
831 | continue;
832 | a.GatherAllAssets(allEntries, true, true, false, entryFilter);
833 | }
834 | combinedEntries.AddRange(allEntries);
835 | GenerateBuildInputDefinitions(allEntries, bundleInputDefs, CalculateGroupHash(namingMode, assetGroup, allEntries), entryGroup.Key, ignoreUnsupportedFilesInBuild);
836 | }
837 | } break;
838 | default:
839 | throw new Exception("Unknown Packing Mode");
840 | }
841 | return combinedEntries;
842 | }
843 |
844 | internal static void GenerateBuildInputDefinitions(List allEntries, List buildInputDefs, string groupGuid, string address, bool ignoreUnsupportedFilesInBuild)
845 | {
846 | var scenes = new List();
847 | var assets = new List();
848 | foreach (var e in allEntries)
849 | {
850 | ThrowExceptionIfInvalidFiletypeOrAddress(e, ignoreUnsupportedFilesInBuild);
851 | if (string.IsNullOrEmpty(e.AssetPath))
852 | continue;
853 | if (e.IsScene)
854 | scenes.Add(e);
855 | else
856 | assets.Add(e);
857 | }
858 | if (assets.Count > 0)
859 | buildInputDefs.Add(GenerateBuildInputDefinition(assets, groupGuid + "_assets_" + address + ".bundle"));
860 | if (scenes.Count > 0)
861 | buildInputDefs.Add(GenerateBuildInputDefinition(scenes, groupGuid + "_scenes_" + address + ".bundle"));
862 | }
863 |
864 | private static void ThrowExceptionIfInvalidFiletypeOrAddress(AddressableAssetEntry entry, bool ignoreUnsupportedFilesInBuild)
865 | {
866 | if (entry.guid.Length > 0 && entry.address.Contains("[") && entry.address.Contains("]"))
867 | throw new Exception($"Address '{entry.address}' cannot contain '[ ]'.");
868 | if (entry.MainAssetType == typeof(DefaultAsset) && !AssetDatabase.IsValidFolder(entry.AssetPath))
869 | {
870 | if (ignoreUnsupportedFilesInBuild)
871 | Debug.LogWarning($"Cannot recognize file type for entry located at '{entry.AssetPath}'. Asset location will be ignored.");
872 | else
873 | throw new Exception($"Cannot recognize file type for entry located at '{entry.AssetPath}'. Asset import failed for using an unsupported file type.");
874 | }
875 | }
876 |
877 | internal static AssetBundleBuild GenerateBuildInputDefinition(List assets, string name)
878 | {
879 | var assetInternalIds = new HashSet();
880 | var assetsInputDef = new AssetBundleBuild();
881 | assetsInputDef.assetBundleName = name.ToLower().Replace(" ", "").Replace('\\', '/').Replace("//", "/");
882 | assetsInputDef.assetNames = assets.Select(s => s.AssetPath).ToArray();
883 | assetsInputDef.addressableNames = assets.Select(s => s.GetAssetLoadPath(true, assetInternalIds)).ToArray();
884 | return assetsInputDef;
885 | }
886 |
887 | static string[] CreateRemoteCatalog(string jsonText, List locations, AddressableAssetSettings aaSettings, AddressablesDataBuilderInput builderInput, ProviderLoadRequestOptions catalogLoadOptions)
888 | {
889 | string[] dependencyHashes = null;
890 |
891 | var contentHash = HashingMethods.Calculate(jsonText).ToString();
892 |
893 | var versionedFileName = aaSettings.profileSettings.EvaluateString(aaSettings.activeProfileId, "/catalog_" + builderInput.PlayerVersion);
894 | var remoteBuildFolder = aaSettings.RemoteCatalogBuildPath.GetValue(aaSettings);
895 | var remoteLoadFolder = aaSettings.RemoteCatalogLoadPath.GetValue(aaSettings);
896 |
897 | if (string.IsNullOrEmpty(remoteBuildFolder) ||
898 | string.IsNullOrEmpty(remoteLoadFolder) ||
899 | remoteBuildFolder == AddressableAssetProfileSettings.undefinedEntryValue ||
900 | remoteLoadFolder == AddressableAssetProfileSettings.undefinedEntryValue)
901 | {
902 | Addressables.LogWarning("Remote Build and/or Load paths are not set on the main AddressableAssetSettings asset, but 'Build Remote Catalog' is true. Cannot create remote catalog. In the inspector for any group, double click the 'Addressable Asset Settings' object to begin inspecting it. '" + remoteBuildFolder + "', '" + remoteLoadFolder + "'");
903 | }
904 | else
905 | {
906 | var remoteJsonBuildPath = remoteBuildFolder + versionedFileName + ".json";
907 | var remoteHashBuildPath = remoteBuildFolder + versionedFileName + ".hash";
908 |
909 | WriteFile(remoteJsonBuildPath, jsonText, builderInput.Registry);
910 | WriteFile(remoteHashBuildPath, contentHash, builderInput.Registry);
911 |
912 | dependencyHashes = new string[((int)ContentCatalogProvider.DependencyHashIndex.Count)];
913 | dependencyHashes[(int)ContentCatalogProvider.DependencyHashIndex.Remote] = ResourceManagerRuntimeData.kCatalogAddress + "RemoteHash";
914 | dependencyHashes[(int)ContentCatalogProvider.DependencyHashIndex.Cache] = ResourceManagerRuntimeData.kCatalogAddress + "CacheHash";
915 |
916 | var remoteHashLoadPath = remoteLoadFolder + versionedFileName + ".hash";
917 | var remoteHashLoadLocation = new ResourceLocationData(
918 | new[] {dependencyHashes[(int)ContentCatalogProvider.DependencyHashIndex.Remote]},
919 | remoteHashLoadPath,
920 | typeof(TextDataProvider), typeof(string));
921 | remoteHashLoadLocation.Data = catalogLoadOptions.Copy();
922 | locations.Add(remoteHashLoadLocation);
923 |
924 | var cacheLoadPath = "{UnityEngine.Application.persistentDataPath}/com.unity.addressables" + versionedFileName + ".hash";
925 | var cacheLoadLocation = new ResourceLocationData(
926 | new[] {dependencyHashes[(int)ContentCatalogProvider.DependencyHashIndex.Cache]},
927 | cacheLoadPath,
928 | typeof(TextDataProvider), typeof(string));
929 | cacheLoadLocation.Data = catalogLoadOptions.Copy();
930 | locations.Add(cacheLoadLocation);
931 | }
932 |
933 | return dependencyHashes;
934 | }
935 |
936 | // Tests can set this flag to prevent player script compilation. This is the most expensive part of small builds
937 | // and isn't needed for most tests.
938 | internal static bool s_SkipCompilePlayerScripts = false;
939 |
940 | static IList RuntimeDataBuildTasks(string builtinShaderBundleName, string monoScriptBundleName)
941 | {
942 | var buildTasks = new List();
943 |
944 | // Setup
945 | buildTasks.Add(new SwitchToBuildPlatform());
946 | buildTasks.Add(new RebuildSpriteAtlasCache());
947 |
948 | // Player Scripts
949 | if (!s_SkipCompilePlayerScripts)
950 | buildTasks.Add(new BuildPlayerScripts());
951 | buildTasks.Add(new PostScriptsCallback());
952 |
953 | // Dependency
954 | buildTasks.Add(new CalculateSceneDependencyData());
955 | buildTasks.Add(new CalculateAssetDependencyData());
956 | buildTasks.Add(new AddHashToBundleNameTask());
957 | buildTasks.Add(new StripUnusedSpriteSources());
958 | buildTasks.Add(new CreateBuiltInShadersBundle(builtinShaderBundleName));
959 | if (!string.IsNullOrEmpty(monoScriptBundleName))
960 | buildTasks.Add(new CreateMonoScriptBundle(monoScriptBundleName));
961 | buildTasks.Add(new PostDependencyCallback());
962 |
963 | // Packing
964 | buildTasks.Add(new GenerateBundlePacking());
965 | buildTasks.Add(new UpdateBundleObjectLayout());
966 | buildTasks.Add(new GenerateBundleCommands());
967 | buildTasks.Add(new GenerateSubAssetPathMaps());
968 | buildTasks.Add(new GenerateBundleMaps());
969 | buildTasks.Add(new PostPackingCallback());
970 |
971 | // Writing
972 | buildTasks.Add(new WriteSerializedFiles());
973 | buildTasks.Add(new ArchiveAndCompressBundles());
974 | buildTasks.Add(new GenerateLocationListsTask());
975 | buildTasks.Add(new PostWritingCallback());
976 |
977 | return buildTasks;
978 | }
979 |
980 | static void MoveFileToDestinationWithTimestampIfDifferent(string srcPath, string destPath, IBuildLogger log)
981 | {
982 | if (srcPath == destPath)
983 | return;
984 |
985 | DateTime time = File.GetLastWriteTime(srcPath);
986 | DateTime destTime = File.Exists(destPath) ? File.GetLastWriteTime(destPath) : new DateTime();
987 |
988 | if (destTime == time)
989 | return;
990 |
991 | using (log.ScopedStep(LogLevel.Verbose, "Move File", $"{srcPath} -> {destPath}"))
992 | {
993 | var directory = Path.GetDirectoryName(destPath);
994 | if (!string.IsNullOrEmpty(directory) && !Directory.Exists(directory))
995 | Directory.CreateDirectory(directory);
996 | else if (File.Exists(destPath))
997 | File.Delete(destPath);
998 | File.Move(srcPath, destPath);
999 | }
1000 | }
1001 |
1002 | void PostProcessBundles(AddressableAssetGroup assetGroup, List buildBundles, List outputBundles, IBundleBuildResults buildResult, ResourceManagerRuntimeData runtimeData, List locations, FileRegistry registry, Dictionary primaryKeyToCatalogEntry, Dictionary bundleRenameMap, List postCatalogUpdateCallbacks)
1003 | {
1004 | var schema = assetGroup.GetSchema();
1005 | if (schema == null)
1006 | return;
1007 |
1008 | var path = schema.BuildPath.GetValue(assetGroup.Settings);
1009 | if (string.IsNullOrEmpty(path))
1010 | return;
1011 |
1012 | for (int i = 0; i < buildBundles.Count; ++i)
1013 | {
1014 | if (primaryKeyToCatalogEntry.TryGetValue(buildBundles[i], out ContentCatalogDataEntry dataEntry))
1015 | {
1016 | var info = buildResult.BundleInfos[buildBundles[i]];
1017 | var requestOptions = new AssetBundleRequestOptions
1018 | {
1019 | Crc = schema.UseAssetBundleCrc ? info.Crc : 0,
1020 | UseCrcForCachedBundle = schema.UseAssetBundleCrcForCachedBundles,
1021 | UseUnityWebRequestForLocalBundles = schema.UseUnityWebRequestForLocalBundles,
1022 | Hash = schema.UseAssetBundleCache ? info.Hash.ToString() : "",
1023 | ChunkedTransfer = schema.ChunkedTransfer,
1024 | RedirectLimit = schema.RedirectLimit,
1025 | RetryCount = schema.RetryCount,
1026 | Timeout = schema.Timeout,
1027 | BundleName = Path.GetFileNameWithoutExtension(info.FileName),
1028 | AssetLoadMode = schema.AssetLoadMode,
1029 | BundleSize = GetFileSize(info.FileName),
1030 | ClearOtherCachedVersionsWhenLoaded = schema.AssetBundledCacheClearBehavior == BundledAssetGroupSchema.CacheClearBehavior.ClearWhenWhenNewVersionLoaded
1031 | };
1032 | dataEntry.Data = requestOptions;
1033 |
1034 | if (assetGroup == assetGroup.Settings.DefaultGroup && info.Dependencies.Length == 0 && !string.IsNullOrEmpty(info.FileName) && (info.FileName.EndsWith("_unitybuiltinshaders.bundle") || info.FileName.EndsWith("_monoscripts.bundle")))
1035 | {
1036 | outputBundles[i] = ConstructAssetBundleName(null, schema, info, outputBundles[i]);
1037 | }
1038 | else
1039 | {
1040 | int extensionLength = Path.GetExtension(outputBundles[i]).Length;
1041 | string[] deconstructedBundleName = outputBundles[i].Substring(0, outputBundles[i].Length - extensionLength).Split('_');
1042 | string reconstructedBundleName = string.Join("_", deconstructedBundleName, 1, deconstructedBundleName.Length - 1) + ".bundle";
1043 | outputBundles[i] = ConstructAssetBundleName(assetGroup, schema, info, reconstructedBundleName);
1044 | }
1045 |
1046 | dataEntry.InternalId = dataEntry.InternalId.Remove(dataEntry.InternalId.Length - buildBundles[i].Length) + outputBundles[i];
1047 | dataEntry.Keys[0] = outputBundles[i];
1048 | ReplaceDependencyKeys(buildBundles[i], outputBundles[i], locations);
1049 |
1050 | if (!m_BundleToInternalId.ContainsKey(buildBundles[i]))
1051 | m_BundleToInternalId.Add(buildBundles[i], dataEntry.InternalId);
1052 |
1053 | if (dataEntry.InternalId.StartsWith("http:\\"))
1054 | dataEntry.InternalId = dataEntry.InternalId.Replace("http:\\", "http://").Replace("\\", "/");
1055 | if (dataEntry.InternalId.StartsWith("https:\\"))
1056 | dataEntry.InternalId = dataEntry.InternalId.Replace("https:\\", "https://").Replace("\\", "/");
1057 | }
1058 | else
1059 | {
1060 | Debug.LogWarningFormat("Unable to find ContentCatalogDataEntry for bundle {0}.", outputBundles[i]);
1061 | }
1062 |
1063 | var targetPath = Path.Combine(path, outputBundles[i]);
1064 | var srcPath = Path.Combine(assetGroup.Settings.buildSettings.bundleBuildPath, buildBundles[i]);
1065 |
1066 | if (assetGroup.GetSchema()?.BundleNaming == BundledAssetGroupSchema.BundleNamingStyle.NoHash)
1067 | outputBundles[i] = StripHashFromBundleLocation(outputBundles[i]);
1068 |
1069 | bundleRenameMap.Add(buildBundles[i], outputBundles[i]);
1070 | MoveFileToDestinationWithTimestampIfDifferent(srcPath, targetPath, Log);
1071 | AddPostCatalogUpdatesInternal(assetGroup, postCatalogUpdateCallbacks, dataEntry, targetPath, registry);
1072 |
1073 | //========================================================================================
1074 | // 追記箇所
1075 | // グループのスキーマに、復号しつつ読み込みするカスタムProviderが設定されているなら暗号化を施す
1076 | if (assetGroup.GetSchema()?.AssetBundleProviderType.ClassName ==
1077 | nameof(CustomAssetBundleProvider))
1078 | {
1079 | EncryptUsingAesStream(targetPath);
1080 | }
1081 | // 追記ここまで
1082 | //========================================================================================
1083 |
1084 | registry.AddFile(targetPath);
1085 | }
1086 | }
1087 |
1088 | internal void AddPostCatalogUpdatesInternal(AddressableAssetGroup assetGroup, List postCatalogUpdates, ContentCatalogDataEntry dataEntry, string targetBundlePath, FileRegistry registry)
1089 | {
1090 | if (assetGroup.GetSchema()?.BundleNaming ==
1091 | BundledAssetGroupSchema.BundleNamingStyle.NoHash)
1092 | {
1093 | postCatalogUpdates.Add(() =>
1094 | {
1095 | //This is where we strip out the temporary hash for the final bundle location and filename
1096 | string bundlePathWithoutHash = StripHashFromBundleLocation(targetBundlePath);
1097 | if (File.Exists(targetBundlePath))
1098 | {
1099 | if (File.Exists(bundlePathWithoutHash))
1100 | File.Delete(bundlePathWithoutHash);
1101 | string destFolder = Path.GetDirectoryName(bundlePathWithoutHash);
1102 | if (!string.IsNullOrEmpty(destFolder) && !Directory.Exists(destFolder))
1103 | Directory.CreateDirectory(destFolder);
1104 |
1105 | File.Move(targetBundlePath, bundlePathWithoutHash);
1106 | }
1107 | if (registry != null)
1108 | {
1109 | if (!registry.ReplaceBundleEntry(targetBundlePath, bundlePathWithoutHash))
1110 | Debug.LogErrorFormat("Unable to find registered file for bundle {0}.", targetBundlePath);
1111 | }
1112 |
1113 | if (dataEntry != null)
1114 | if (DataEntryDiffersFromBundleFilename(dataEntry, bundlePathWithoutHash))
1115 | dataEntry.InternalId = StripHashFromBundleLocation(dataEntry.InternalId);
1116 | });
1117 | }
1118 | }
1119 |
1120 | // if false, there is no need to remove the hash from dataEntry.InternalId
1121 | bool DataEntryDiffersFromBundleFilename(ContentCatalogDataEntry dataEntry, string bundlePathWithoutHash)
1122 | {
1123 | string dataEntryId = dataEntry.InternalId;
1124 | string dataEntryFilename = Path.GetFileName(dataEntryId);
1125 | string bundleFileName = Path.GetFileName(bundlePathWithoutHash);
1126 |
1127 | return dataEntryFilename != bundleFileName;
1128 | }
1129 |
1130 | ///
1131 | /// Creates a name for an asset bundle using the provided information.
1132 | ///
1133 | /// The asset group.
1134 | /// The schema of the group.
1135 | /// The bundle information.
1136 | /// The base name of the asset bundle.
1137 | /// Returns the asset bundle name with the provided information.
1138 | protected virtual string ConstructAssetBundleName(AddressableAssetGroup assetGroup, BundledAssetGroupSchema schema, BundleDetails info, string assetBundleName)
1139 | {
1140 | if (assetGroup != null)
1141 | {
1142 | string groupName = assetGroup.Name.Replace(" ", "").Replace('\\', '/').Replace("//", "/").ToLower();
1143 | assetBundleName = groupName + "_" + assetBundleName;
1144 | }
1145 |
1146 | string bundleNameWithHashing = BuildUtility.GetNameWithHashNaming(schema.BundleNaming, info.Hash.ToString(), assetBundleName);
1147 | //For no hash, we need the hash temporarily for content update purposes. This will be stripped later on.
1148 | if (schema.BundleNaming == BundledAssetGroupSchema.BundleNamingStyle.NoHash)
1149 | {
1150 | bundleNameWithHashing = bundleNameWithHashing.Replace(".bundle", "_" + info.Hash.ToString() + ".bundle");
1151 | }
1152 |
1153 | return bundleNameWithHashing;
1154 | }
1155 |
1156 | static void ReplaceDependencyKeys(string from, string to, List locations)
1157 | {
1158 | foreach (ContentCatalogDataEntry location in locations)
1159 | {
1160 | for (int i = 0; i < location.Dependencies.Count; ++i)
1161 | {
1162 | string s = location.Dependencies[i] as string;
1163 | if (string.IsNullOrEmpty(s))
1164 | continue;
1165 | if (s == from)
1166 | location.Dependencies[i] = to;
1167 | }
1168 | }
1169 | }
1170 |
1171 | private static long GetFileSize(string fileName)
1172 | {
1173 | try
1174 | {
1175 | return new FileInfo(fileName).Length;
1176 | }
1177 | catch (Exception e)
1178 | {
1179 | Debug.LogException(e);
1180 | return 0;
1181 | }
1182 | }
1183 |
1184 | ///
1185 | public override void ClearCachedData()
1186 | {
1187 | if (Directory.Exists(Addressables.BuildPath))
1188 | {
1189 | try
1190 | {
1191 | var catalogPath = Addressables.BuildPath + "/catalog.json";
1192 | var settingsPath = Addressables.BuildPath + "/settings.json";
1193 | DeleteFile(catalogPath);
1194 | DeleteFile(settingsPath);
1195 | Directory.Delete(Addressables.BuildPath, true);
1196 | }
1197 | catch (Exception e)
1198 | {
1199 | Debug.LogException(e);
1200 | }
1201 | }
1202 | }
1203 |
1204 | ///
1205 | public override bool IsDataBuilt()
1206 | {
1207 | var settingsPath = Addressables.BuildPath + "/settings.json";
1208 | return !String.IsNullOrEmpty(m_CatalogBuildPath) &&
1209 | File.Exists(m_CatalogBuildPath) &&
1210 | File.Exists(settingsPath);
1211 | }
1212 |
1213 | ///
1214 | /// 追記:
1215 | /// BuildScriptPackedModeではinternalなメソッドを参照していたので、同じものを記述して使用している
1216 | ///
1217 | static bool GroupFilter(AddressableAssetGroup g)
1218 | {
1219 | if (g == null)
1220 | return false;
1221 | if (!g.HasSchema() || !g.GetSchema().StaticContent)
1222 | return false;
1223 | if (!g.HasSchema() || !g.GetSchema().IncludeInBuild)
1224 | return false;
1225 | return true;
1226 | }
1227 |
1228 | ///
1229 | /// AESStreamを使ってAssetBundleを暗号化する
1230 | ///
1231 | /// 暗号化のソルトにファイル名を使用する
1232 | static void EncryptUsingAesStream(string bundlePath)
1233 | {
1234 | var bundleName = Path.GetFileNameWithoutExtension(bundlePath);
1235 | // uniqueSaltはStream毎にユニークにする必要がある
1236 | // 今回はAssetBundle名を設定
1237 | var uniqueSalt = Encoding.UTF8.GetBytes(bundleName);
1238 |
1239 | // 暗号化してファイルに上書きする
1240 | var data = File.ReadAllBytes(bundlePath);
1241 | using var baseStream = new FileStream(bundlePath, FileMode.OpenOrCreate);
1242 | var cryptor = new SeekableAesStream(baseStream, "password", uniqueSalt);
1243 | cryptor.Write(data, 0, data.Length);
1244 | }
1245 | }
1246 | }
1247 |
--------------------------------------------------------------------------------
/Assets/Scripts/Editor/BuildScriptOnDemandEncryptMode.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: eb41ca12e7f3d0542aa69e57e5e9f77b
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Scripts/LoadStarter.cs:
--------------------------------------------------------------------------------
1 | using UnityEngine;
2 | using UnityEngine.AddressableAssets;
3 | using UnityEngine.UI;
4 |
5 | public class LoadStarter : MonoBehaviour
6 | {
7 | [SerializeField] private RawImage _rawImage;
8 |
9 | private void Update()
10 | {
11 | if (Input.GetKeyDown(KeyCode.L))
12 | {
13 | LoadImage();
14 | _rawImage.color = Color.cyan;
15 | }
16 | }
17 |
18 | private void LoadImage()
19 | {
20 | // UniTask入れてawaitできるようにしような
21 | var asset = Addressables.LoadAssetAsync("Assets/EncryptedTexts/1 1.jpg");
22 | asset.Completed += op =>
23 | {
24 | _rawImage.texture = op.Result;
25 | };
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/Assets/Scripts/LoadStarter.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 54dd8d99ff0a4f644b364f2d38ea9f74
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Scripts/SeekableAesStreamcs.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.IO;
3 | using System.Security.Cryptography;
4 |
5 | ///
6 | /// 暗号化/復号するStream
7 | ///
8 | public class SeekableAesStream : Stream
9 | {
10 | private readonly Stream baseStream;
11 | private readonly AesManaged aes;
12 | private readonly ICryptoTransform encryptor;
13 |
14 | ///
15 | /// コンストラクタ
16 | ///
17 | ///
18 | ///
19 | /// セキュリティのため、各Streamで異なるソルトを使う
20 | public SeekableAesStream(Stream baseStream, string password, byte[] salt)
21 | {
22 | this.baseStream = baseStream;
23 | using (var key = new PasswordDeriveBytes(password, salt))
24 | {
25 | aes = new AesManaged();
26 | aes.KeySize = 128;
27 | aes.Mode = CipherMode.ECB;
28 | aes.Padding = PaddingMode.None;
29 | aes.Key = key.GetBytes(aes.KeySize / 8);
30 | aes.IV = new byte[16]; //zero buffer is adequate since we have to use new salt for each stream
31 | encryptor = aes.CreateEncryptor(aes.Key, aes.IV);
32 | }
33 | }
34 |
35 | ///
36 | /// 暗号化/復号
37 | ///
38 | ///
39 | ///
40 | ///
41 | ///
42 | private void Cipher(byte[] buffer, int offset, int count, long streamPos)
43 | {
44 | //find block number
45 | var blockSizeInByte = aes.BlockSize / 8;
46 | var blockNumber = (streamPos / blockSizeInByte) + 1;
47 | var keyPos = streamPos % blockSizeInByte;
48 |
49 | //buffer
50 | var outBuffer = new byte[blockSizeInByte];
51 | var nonce = new byte[blockSizeInByte];
52 |
53 | var init = false;
54 |
55 | for (int i = offset; i < count; i++)
56 | {
57 | //encrypt the nonce to form next xor buffer (unique key)
58 | if (!init || (keyPos % blockSizeInByte) == 0)
59 | {
60 | BitConverter.GetBytes(blockNumber).CopyTo(nonce, 0);
61 | encryptor.TransformBlock(nonce, 0, nonce.Length, outBuffer, 0);
62 | if (init) keyPos = 0;
63 | init = true;
64 | blockNumber++;
65 | }
66 |
67 | buffer[i] ^= outBuffer[keyPos]; //simple XOR with generated unique key
68 | keyPos++;
69 | }
70 | }
71 |
72 | public override bool CanRead => baseStream.CanRead;
73 | public override bool CanSeek => baseStream.CanSeek;
74 | public override bool CanWrite => baseStream.CanWrite;
75 | public override long Length => baseStream.Length;
76 |
77 | public override long Position
78 | {
79 | get => baseStream.Position;
80 | set => baseStream.Position = value;
81 | }
82 |
83 | public override void Flush() => baseStream.Flush();
84 | public override void SetLength(long value) => baseStream.SetLength(value);
85 | public override long Seek(long offset, SeekOrigin origin) => baseStream.Seek(offset, origin);
86 |
87 | public override int Read(byte[] buffer, int offset, int count)
88 | {
89 | var streamPos = Position;
90 | var ret = baseStream.Read(buffer, offset, count);
91 | Cipher(buffer, offset, count, streamPos);
92 | return ret;
93 | }
94 |
95 | public override void Write(byte[] buffer, int offset, int count)
96 | {
97 | Cipher(buffer, offset, count, Position);
98 | baseStream.Write(buffer, offset, count);
99 | }
100 |
101 | protected override void Dispose(bool disposing)
102 | {
103 | if (disposing)
104 | {
105 | encryptor?.Dispose();
106 | aes?.Dispose();
107 | baseStream?.Dispose();
108 | }
109 |
110 | base.Dispose(disposing);
111 | }
112 | }
113 |
--------------------------------------------------------------------------------
/Assets/Scripts/SeekableAesStreamcs.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 197800daeda99ef4b8a37f3c3a539e27
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 umekan
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/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "dependencies": {
3 | "com.unity.addressables": "1.19.13",
4 | "com.unity.collab-proxy": "1.7.1",
5 | "com.unity.ide.rider": "2.0.7",
6 | "com.unity.ide.visualstudio": "2.0.11",
7 | "com.unity.ide.vscode": "1.2.3",
8 | "com.unity.test-framework": "1.1.27",
9 | "com.unity.textmeshpro": "3.0.6",
10 | "com.unity.timeline": "1.4.8",
11 | "com.unity.ugui": "1.0.0",
12 | "com.unity.modules.ai": "1.0.0",
13 | "com.unity.modules.androidjni": "1.0.0",
14 | "com.unity.modules.animation": "1.0.0",
15 | "com.unity.modules.assetbundle": "1.0.0",
16 | "com.unity.modules.audio": "1.0.0",
17 | "com.unity.modules.cloth": "1.0.0",
18 | "com.unity.modules.director": "1.0.0",
19 | "com.unity.modules.imageconversion": "1.0.0",
20 | "com.unity.modules.imgui": "1.0.0",
21 | "com.unity.modules.jsonserialize": "1.0.0",
22 | "com.unity.modules.particlesystem": "1.0.0",
23 | "com.unity.modules.physics": "1.0.0",
24 | "com.unity.modules.physics2d": "1.0.0",
25 | "com.unity.modules.screencapture": "1.0.0",
26 | "com.unity.modules.terrain": "1.0.0",
27 | "com.unity.modules.terrainphysics": "1.0.0",
28 | "com.unity.modules.tilemap": "1.0.0",
29 | "com.unity.modules.ui": "1.0.0",
30 | "com.unity.modules.uielements": "1.0.0",
31 | "com.unity.modules.umbra": "1.0.0",
32 | "com.unity.modules.unityanalytics": "1.0.0",
33 | "com.unity.modules.unitywebrequest": "1.0.0",
34 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0",
35 | "com.unity.modules.unitywebrequestaudio": "1.0.0",
36 | "com.unity.modules.unitywebrequesttexture": "1.0.0",
37 | "com.unity.modules.unitywebrequestwww": "1.0.0",
38 | "com.unity.modules.vehicles": "1.0.0",
39 | "com.unity.modules.video": "1.0.0",
40 | "com.unity.modules.vr": "1.0.0",
41 | "com.unity.modules.wind": "1.0.0",
42 | "com.unity.modules.xr": "1.0.0"
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/Packages/packages-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "dependencies": {
3 | "com.unity.addressables": {
4 | "version": "1.19.13",
5 | "depth": 0,
6 | "source": "registry",
7 | "dependencies": {
8 | "com.unity.scriptablebuildpipeline": "1.19.4",
9 | "com.unity.modules.assetbundle": "1.0.0",
10 | "com.unity.modules.imageconversion": "1.0.0",
11 | "com.unity.modules.jsonserialize": "1.0.0",
12 | "com.unity.modules.unitywebrequest": "1.0.0",
13 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0"
14 | },
15 | "url": "https://packages.unity.com"
16 | },
17 | "com.unity.collab-proxy": {
18 | "version": "1.7.1",
19 | "depth": 0,
20 | "source": "registry",
21 | "dependencies": {
22 | "com.unity.nuget.newtonsoft-json": "2.0.0"
23 | },
24 | "url": "https://packages.unity.com"
25 | },
26 | "com.unity.ext.nunit": {
27 | "version": "1.0.6",
28 | "depth": 1,
29 | "source": "registry",
30 | "dependencies": {},
31 | "url": "https://packages.unity.com"
32 | },
33 | "com.unity.ide.rider": {
34 | "version": "2.0.7",
35 | "depth": 0,
36 | "source": "registry",
37 | "dependencies": {
38 | "com.unity.test-framework": "1.1.1"
39 | },
40 | "url": "https://packages.unity.com"
41 | },
42 | "com.unity.ide.visualstudio": {
43 | "version": "2.0.11",
44 | "depth": 0,
45 | "source": "registry",
46 | "dependencies": {
47 | "com.unity.test-framework": "1.1.9"
48 | },
49 | "url": "https://packages.unity.com"
50 | },
51 | "com.unity.ide.vscode": {
52 | "version": "1.2.3",
53 | "depth": 0,
54 | "source": "registry",
55 | "dependencies": {},
56 | "url": "https://packages.unity.com"
57 | },
58 | "com.unity.nuget.newtonsoft-json": {
59 | "version": "2.0.0",
60 | "depth": 1,
61 | "source": "registry",
62 | "dependencies": {},
63 | "url": "https://packages.unity.com"
64 | },
65 | "com.unity.scriptablebuildpipeline": {
66 | "version": "1.19.4",
67 | "depth": 1,
68 | "source": "registry",
69 | "dependencies": {},
70 | "url": "https://packages.unity.com"
71 | },
72 | "com.unity.test-framework": {
73 | "version": "1.1.27",
74 | "depth": 0,
75 | "source": "registry",
76 | "dependencies": {
77 | "com.unity.ext.nunit": "1.0.6",
78 | "com.unity.modules.imgui": "1.0.0",
79 | "com.unity.modules.jsonserialize": "1.0.0"
80 | },
81 | "url": "https://packages.unity.com"
82 | },
83 | "com.unity.textmeshpro": {
84 | "version": "3.0.6",
85 | "depth": 0,
86 | "source": "registry",
87 | "dependencies": {
88 | "com.unity.ugui": "1.0.0"
89 | },
90 | "url": "https://packages.unity.com"
91 | },
92 | "com.unity.timeline": {
93 | "version": "1.4.8",
94 | "depth": 0,
95 | "source": "registry",
96 | "dependencies": {
97 | "com.unity.modules.director": "1.0.0",
98 | "com.unity.modules.animation": "1.0.0",
99 | "com.unity.modules.audio": "1.0.0",
100 | "com.unity.modules.particlesystem": "1.0.0"
101 | },
102 | "url": "https://packages.unity.com"
103 | },
104 | "com.unity.ugui": {
105 | "version": "1.0.0",
106 | "depth": 0,
107 | "source": "builtin",
108 | "dependencies": {
109 | "com.unity.modules.ui": "1.0.0",
110 | "com.unity.modules.imgui": "1.0.0"
111 | }
112 | },
113 | "com.unity.modules.ai": {
114 | "version": "1.0.0",
115 | "depth": 0,
116 | "source": "builtin",
117 | "dependencies": {}
118 | },
119 | "com.unity.modules.androidjni": {
120 | "version": "1.0.0",
121 | "depth": 0,
122 | "source": "builtin",
123 | "dependencies": {}
124 | },
125 | "com.unity.modules.animation": {
126 | "version": "1.0.0",
127 | "depth": 0,
128 | "source": "builtin",
129 | "dependencies": {}
130 | },
131 | "com.unity.modules.assetbundle": {
132 | "version": "1.0.0",
133 | "depth": 0,
134 | "source": "builtin",
135 | "dependencies": {}
136 | },
137 | "com.unity.modules.audio": {
138 | "version": "1.0.0",
139 | "depth": 0,
140 | "source": "builtin",
141 | "dependencies": {}
142 | },
143 | "com.unity.modules.cloth": {
144 | "version": "1.0.0",
145 | "depth": 0,
146 | "source": "builtin",
147 | "dependencies": {
148 | "com.unity.modules.physics": "1.0.0"
149 | }
150 | },
151 | "com.unity.modules.director": {
152 | "version": "1.0.0",
153 | "depth": 0,
154 | "source": "builtin",
155 | "dependencies": {
156 | "com.unity.modules.audio": "1.0.0",
157 | "com.unity.modules.animation": "1.0.0"
158 | }
159 | },
160 | "com.unity.modules.imageconversion": {
161 | "version": "1.0.0",
162 | "depth": 0,
163 | "source": "builtin",
164 | "dependencies": {}
165 | },
166 | "com.unity.modules.imgui": {
167 | "version": "1.0.0",
168 | "depth": 0,
169 | "source": "builtin",
170 | "dependencies": {}
171 | },
172 | "com.unity.modules.jsonserialize": {
173 | "version": "1.0.0",
174 | "depth": 0,
175 | "source": "builtin",
176 | "dependencies": {}
177 | },
178 | "com.unity.modules.particlesystem": {
179 | "version": "1.0.0",
180 | "depth": 0,
181 | "source": "builtin",
182 | "dependencies": {}
183 | },
184 | "com.unity.modules.physics": {
185 | "version": "1.0.0",
186 | "depth": 0,
187 | "source": "builtin",
188 | "dependencies": {}
189 | },
190 | "com.unity.modules.physics2d": {
191 | "version": "1.0.0",
192 | "depth": 0,
193 | "source": "builtin",
194 | "dependencies": {}
195 | },
196 | "com.unity.modules.screencapture": {
197 | "version": "1.0.0",
198 | "depth": 0,
199 | "source": "builtin",
200 | "dependencies": {
201 | "com.unity.modules.imageconversion": "1.0.0"
202 | }
203 | },
204 | "com.unity.modules.subsystems": {
205 | "version": "1.0.0",
206 | "depth": 1,
207 | "source": "builtin",
208 | "dependencies": {
209 | "com.unity.modules.jsonserialize": "1.0.0"
210 | }
211 | },
212 | "com.unity.modules.terrain": {
213 | "version": "1.0.0",
214 | "depth": 0,
215 | "source": "builtin",
216 | "dependencies": {}
217 | },
218 | "com.unity.modules.terrainphysics": {
219 | "version": "1.0.0",
220 | "depth": 0,
221 | "source": "builtin",
222 | "dependencies": {
223 | "com.unity.modules.physics": "1.0.0",
224 | "com.unity.modules.terrain": "1.0.0"
225 | }
226 | },
227 | "com.unity.modules.tilemap": {
228 | "version": "1.0.0",
229 | "depth": 0,
230 | "source": "builtin",
231 | "dependencies": {
232 | "com.unity.modules.physics2d": "1.0.0"
233 | }
234 | },
235 | "com.unity.modules.ui": {
236 | "version": "1.0.0",
237 | "depth": 0,
238 | "source": "builtin",
239 | "dependencies": {}
240 | },
241 | "com.unity.modules.uielements": {
242 | "version": "1.0.0",
243 | "depth": 0,
244 | "source": "builtin",
245 | "dependencies": {
246 | "com.unity.modules.ui": "1.0.0",
247 | "com.unity.modules.imgui": "1.0.0",
248 | "com.unity.modules.jsonserialize": "1.0.0",
249 | "com.unity.modules.uielementsnative": "1.0.0"
250 | }
251 | },
252 | "com.unity.modules.uielementsnative": {
253 | "version": "1.0.0",
254 | "depth": 1,
255 | "source": "builtin",
256 | "dependencies": {
257 | "com.unity.modules.ui": "1.0.0",
258 | "com.unity.modules.imgui": "1.0.0",
259 | "com.unity.modules.jsonserialize": "1.0.0"
260 | }
261 | },
262 | "com.unity.modules.umbra": {
263 | "version": "1.0.0",
264 | "depth": 0,
265 | "source": "builtin",
266 | "dependencies": {}
267 | },
268 | "com.unity.modules.unityanalytics": {
269 | "version": "1.0.0",
270 | "depth": 0,
271 | "source": "builtin",
272 | "dependencies": {
273 | "com.unity.modules.unitywebrequest": "1.0.0",
274 | "com.unity.modules.jsonserialize": "1.0.0"
275 | }
276 | },
277 | "com.unity.modules.unitywebrequest": {
278 | "version": "1.0.0",
279 | "depth": 0,
280 | "source": "builtin",
281 | "dependencies": {}
282 | },
283 | "com.unity.modules.unitywebrequestassetbundle": {
284 | "version": "1.0.0",
285 | "depth": 0,
286 | "source": "builtin",
287 | "dependencies": {
288 | "com.unity.modules.assetbundle": "1.0.0",
289 | "com.unity.modules.unitywebrequest": "1.0.0"
290 | }
291 | },
292 | "com.unity.modules.unitywebrequestaudio": {
293 | "version": "1.0.0",
294 | "depth": 0,
295 | "source": "builtin",
296 | "dependencies": {
297 | "com.unity.modules.unitywebrequest": "1.0.0",
298 | "com.unity.modules.audio": "1.0.0"
299 | }
300 | },
301 | "com.unity.modules.unitywebrequesttexture": {
302 | "version": "1.0.0",
303 | "depth": 0,
304 | "source": "builtin",
305 | "dependencies": {
306 | "com.unity.modules.unitywebrequest": "1.0.0",
307 | "com.unity.modules.imageconversion": "1.0.0"
308 | }
309 | },
310 | "com.unity.modules.unitywebrequestwww": {
311 | "version": "1.0.0",
312 | "depth": 0,
313 | "source": "builtin",
314 | "dependencies": {
315 | "com.unity.modules.unitywebrequest": "1.0.0",
316 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0",
317 | "com.unity.modules.unitywebrequestaudio": "1.0.0",
318 | "com.unity.modules.audio": "1.0.0",
319 | "com.unity.modules.assetbundle": "1.0.0",
320 | "com.unity.modules.imageconversion": "1.0.0"
321 | }
322 | },
323 | "com.unity.modules.vehicles": {
324 | "version": "1.0.0",
325 | "depth": 0,
326 | "source": "builtin",
327 | "dependencies": {
328 | "com.unity.modules.physics": "1.0.0"
329 | }
330 | },
331 | "com.unity.modules.video": {
332 | "version": "1.0.0",
333 | "depth": 0,
334 | "source": "builtin",
335 | "dependencies": {
336 | "com.unity.modules.audio": "1.0.0",
337 | "com.unity.modules.ui": "1.0.0",
338 | "com.unity.modules.unitywebrequest": "1.0.0"
339 | }
340 | },
341 | "com.unity.modules.vr": {
342 | "version": "1.0.0",
343 | "depth": 0,
344 | "source": "builtin",
345 | "dependencies": {
346 | "com.unity.modules.jsonserialize": "1.0.0",
347 | "com.unity.modules.physics": "1.0.0",
348 | "com.unity.modules.xr": "1.0.0"
349 | }
350 | },
351 | "com.unity.modules.wind": {
352 | "version": "1.0.0",
353 | "depth": 0,
354 | "source": "builtin",
355 | "dependencies": {}
356 | },
357 | "com.unity.modules.xr": {
358 | "version": "1.0.0",
359 | "depth": 0,
360 | "source": "builtin",
361 | "dependencies": {
362 | "com.unity.modules.physics": "1.0.0",
363 | "com.unity.modules.jsonserialize": "1.0.0",
364 | "com.unity.modules.subsystems": "1.0.0"
365 | }
366 | }
367 | }
368 | }
369 |
--------------------------------------------------------------------------------