├── .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 | --------------------------------------------------------------------------------