From 9fa1c93e27154b8f025635ec8d084b0c303b185e Mon Sep 17 00:00:00 2001 From: Le Duc Anh Date: Wed, 22 Oct 2025 16:34:56 +0700 Subject: [PATCH 1/2] addressable intial commit --- .cursor/rules/cpp-basic-covert-rules.mdc | 14 ++ Assets/AddressableAssetsData.meta | 8 + .../AddressableAssetGroupSortSettings.asset | 17 ++ ...dressableAssetGroupSortSettings.asset.meta | 8 + .../AddressableAssetSettings.asset | 117 ++++++++++ .../AddressableAssetSettings.asset.meta | 8 + Assets/AddressableAssetsData/Android.meta | 8 + .../AssetGroupTemplates.meta | 8 + .../AssetGroupTemplates/Packed Assets.asset | 79 +++++++ .../Packed Assets.asset.meta | 8 + Assets/AddressableAssetsData/AssetGroups.meta | 8 + .../AssetGroups/Default Local Group.asset | 23 ++ .../Default Local Group.asset.meta | 8 + .../AssetGroups/Schemas.meta | 8 + ... Local Group_BundledAssetGroupSchema.asset | 48 ++++ ...l Group_BundledAssetGroupSchema.asset.meta | 8 + ...Local Group_ContentUpdateGroupSchema.asset | 16 ++ ... Group_ContentUpdateGroupSchema.asset.meta | 8 + .../models_BundledAssetGroupSchema.asset | 48 ++++ .../models_BundledAssetGroupSchema.asset.meta | 8 + .../models_ContentUpdateGroupSchema.asset | 16 ++ ...models_ContentUpdateGroupSchema.asset.meta | 8 + .../AssetGroups/models.asset | 215 +++++++++++++++++ .../AssetGroups/models.asset.meta | 8 + .../AddressableAssetsData/DataBuilders.meta | 8 + .../DataBuilders/BuildScriptFastMode.asset | 20 ++ .../BuildScriptFastMode.asset.meta | 8 + .../DataBuilders/BuildScriptPackedMode.asset | 20 ++ .../BuildScriptPackedMode.asset.meta | 8 + .../BuildScriptPackedPlayMode.asset | 20 ++ .../BuildScriptPackedPlayMode.asset.meta | 8 + .../AddressableAssetsData/DefaultObject.asset | 15 ++ .../DefaultObject.asset.meta | 8 + .../ProfileDataSourceSettings.asset | 28 +++ .../ProfileDataSourceSettings.asset.meta | 8 + Assets/PerfectWorld/Scene/LoginScene.unity | 51 +++++ Assets/PerfectWorld/Scripts/Addressable.meta | 8 + .../Scripts/Addressable/AddressableConfig.cs | 29 +++ .../Addressable/AddressableConfig.cs.meta | 2 + .../Scripts/Addressable/AddressableEvents.cs | 80 +++++++ .../Addressable/AddressableEvents.cs.meta | 2 + .../Scripts/Addressable/AddressableManager.cs | 63 +++++ .../Addressable/AddressableManager.cs.meta | 2 + .../Scripts/Common/CinemachineTouchOrbit.cs | 42 ++-- Assets/PerfectWorld/Scripts/NPC/CECModel.cs | 7 - Assets/PerfectWorld/Scripts/NPC/NPCBuilder.cs | 27 ++- .../Network/CSNetwork/CSNetwork.csproj.meta | 7 + .../Scripts/Utils/Editor/AddressableTools.cs | 216 ++++++++++++++++++ .../Utils/Editor/AddressableTools.cs.meta | 2 + ProjectSettings/GraphicsSettings.asset | 2 + ProjectSettings/ScriptableBuildPipeline.json | 14 ++ 51 files changed, 1368 insertions(+), 42 deletions(-) create mode 100644 .cursor/rules/cpp-basic-covert-rules.mdc create mode 100644 Assets/AddressableAssetsData.meta create mode 100644 Assets/AddressableAssetsData/AddressableAssetGroupSortSettings.asset create mode 100644 Assets/AddressableAssetsData/AddressableAssetGroupSortSettings.asset.meta create mode 100644 Assets/AddressableAssetsData/AddressableAssetSettings.asset create mode 100644 Assets/AddressableAssetsData/AddressableAssetSettings.asset.meta create mode 100644 Assets/AddressableAssetsData/Android.meta create mode 100644 Assets/AddressableAssetsData/AssetGroupTemplates.meta create mode 100644 Assets/AddressableAssetsData/AssetGroupTemplates/Packed Assets.asset create mode 100644 Assets/AddressableAssetsData/AssetGroupTemplates/Packed Assets.asset.meta create mode 100644 Assets/AddressableAssetsData/AssetGroups.meta create mode 100644 Assets/AddressableAssetsData/AssetGroups/Default Local Group.asset create mode 100644 Assets/AddressableAssetsData/AssetGroups/Default Local Group.asset.meta create mode 100644 Assets/AddressableAssetsData/AssetGroups/Schemas.meta create mode 100644 Assets/AddressableAssetsData/AssetGroups/Schemas/Default Local Group_BundledAssetGroupSchema.asset create mode 100644 Assets/AddressableAssetsData/AssetGroups/Schemas/Default Local Group_BundledAssetGroupSchema.asset.meta create mode 100644 Assets/AddressableAssetsData/AssetGroups/Schemas/Default Local Group_ContentUpdateGroupSchema.asset create mode 100644 Assets/AddressableAssetsData/AssetGroups/Schemas/Default Local Group_ContentUpdateGroupSchema.asset.meta create mode 100644 Assets/AddressableAssetsData/AssetGroups/Schemas/models_BundledAssetGroupSchema.asset create mode 100644 Assets/AddressableAssetsData/AssetGroups/Schemas/models_BundledAssetGroupSchema.asset.meta create mode 100644 Assets/AddressableAssetsData/AssetGroups/Schemas/models_ContentUpdateGroupSchema.asset create mode 100644 Assets/AddressableAssetsData/AssetGroups/Schemas/models_ContentUpdateGroupSchema.asset.meta create mode 100644 Assets/AddressableAssetsData/AssetGroups/models.asset create mode 100644 Assets/AddressableAssetsData/AssetGroups/models.asset.meta create mode 100644 Assets/AddressableAssetsData/DataBuilders.meta create mode 100644 Assets/AddressableAssetsData/DataBuilders/BuildScriptFastMode.asset create mode 100644 Assets/AddressableAssetsData/DataBuilders/BuildScriptFastMode.asset.meta create mode 100644 Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedMode.asset create mode 100644 Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedMode.asset.meta create mode 100644 Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedPlayMode.asset create mode 100644 Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedPlayMode.asset.meta create mode 100644 Assets/AddressableAssetsData/DefaultObject.asset create mode 100644 Assets/AddressableAssetsData/DefaultObject.asset.meta create mode 100644 Assets/AddressableAssetsData/ProfileDataSourceSettings.asset create mode 100644 Assets/AddressableAssetsData/ProfileDataSourceSettings.asset.meta create mode 100644 Assets/PerfectWorld/Scripts/Addressable.meta create mode 100644 Assets/PerfectWorld/Scripts/Addressable/AddressableConfig.cs create mode 100644 Assets/PerfectWorld/Scripts/Addressable/AddressableConfig.cs.meta create mode 100644 Assets/PerfectWorld/Scripts/Addressable/AddressableEvents.cs create mode 100644 Assets/PerfectWorld/Scripts/Addressable/AddressableEvents.cs.meta create mode 100644 Assets/PerfectWorld/Scripts/Addressable/AddressableManager.cs create mode 100644 Assets/PerfectWorld/Scripts/Addressable/AddressableManager.cs.meta create mode 100644 Assets/PerfectWorld/Scripts/Network/CSNetwork/CSNetwork.csproj.meta create mode 100644 Assets/PerfectWorld/Scripts/Utils/Editor/AddressableTools.cs create mode 100644 Assets/PerfectWorld/Scripts/Utils/Editor/AddressableTools.cs.meta create mode 100644 ProjectSettings/ScriptableBuildPipeline.json diff --git a/.cursor/rules/cpp-basic-covert-rules.mdc b/.cursor/rules/cpp-basic-covert-rules.mdc new file mode 100644 index 0000000000..80e9ce0601 --- /dev/null +++ b/.cursor/rules/cpp-basic-covert-rules.mdc @@ -0,0 +1,14 @@ +--- +alwaysApply: true +--- +When convert cpp to c# +- unsigned long convert to uint +- unsigned char to byte +- task_char to ushort +- Keeps all the naming +- keeps all the original chinese comments. But add a translated English version side by side +- struct has to be public +- struct has to be use [StructLayout(LayoutKind.Sequential, Pack = 1)] +- all field in struct has to be public +- array has to be use [MarshalAs(UnmanagedType.ByValArray, SizeConst = )] to fix the array size + diff --git a/Assets/AddressableAssetsData.meta b/Assets/AddressableAssetsData.meta new file mode 100644 index 0000000000..c121d793d6 --- /dev/null +++ b/Assets/AddressableAssetsData.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7d7e684e812854b7393956bf4c8f0486 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/AddressableAssetGroupSortSettings.asset b/Assets/AddressableAssetsData/AddressableAssetGroupSortSettings.asset new file mode 100644 index 0000000000..ca554a6d27 --- /dev/null +++ b/Assets/AddressableAssetsData/AddressableAssetGroupSortSettings.asset @@ -0,0 +1,17 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dea69d41f90c6ea4fa55c27c1d60c145, type: 3} + m_Name: AddressableAssetGroupSortSettings + m_EditorClassIdentifier: + sortOrder: + - af2f31e34f6644749bdd552abb39cb07 + - 712e3991f28e549e7a56ee582a977810 diff --git a/Assets/AddressableAssetsData/AddressableAssetGroupSortSettings.asset.meta b/Assets/AddressableAssetsData/AddressableAssetGroupSortSettings.asset.meta new file mode 100644 index 0000000000..15f0f109cc --- /dev/null +++ b/Assets/AddressableAssetsData/AddressableAssetGroupSortSettings.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 68f618775716f498d8a54cfd1754d53a +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/AddressableAssetSettings.asset b/Assets/AddressableAssetsData/AddressableAssetSettings.asset new file mode 100644 index 0000000000..12c2637f11 --- /dev/null +++ b/Assets/AddressableAssetsData/AddressableAssetSettings.asset @@ -0,0 +1,117 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 468a46d0ae32c3544b7d98094e6448a9, type: 3} + m_Name: AddressableAssetSettings + m_EditorClassIdentifier: + m_DefaultGroup: 712e3991f28e549e7a56ee582a977810 + m_currentHash: + serializedVersion: 2 + Hash: 00000000000000000000000000000000 + m_OptimizeCatalogSize: 0 + m_BuildRemoteCatalog: 0 + m_CatalogRequestsTimeout: 0 + m_DisableCatalogUpdateOnStart: 0 + m_InternalIdNamingMode: 0 + m_InternalBundleIdMode: 1 + m_AssetLoadMode: 0 + m_BundledAssetProviderType: + m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.BundledAssetProvider + m_AssetBundleProviderType: + m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider + m_IgnoreUnsupportedFilesInBuild: 0 + m_UniqueBundleIds: 0 + m_EnableJsonCatalog: 0 + m_NonRecursiveBuilding: 1 + m_AllowNestedBundleFolders: 0 + m_CCDEnabled: 0 + m_maxConcurrentWebRequests: 3 + m_UseUWRForLocalBundles: 0 + m_BundleTimeout: 0 + m_BundleRetryCount: 0 + m_BundleRedirectLimit: -1 + m_SharedBundleSettings: 0 + m_SharedBundleSettingsCustomGroupIndex: 0 + m_ContiguousBundles: 1 + m_StripUnityVersionFromBundleBuild: 0 + m_DisableVisibleSubAssetRepresentations: 0 + m_BuiltInBundleNaming: 0 + mBuiltInBundleCustomNaming: + m_MonoScriptBundleNaming: 0 + m_CheckForContentUpdateRestrictionsOption: 0 + m_MonoScriptBundleCustomNaming: + m_RemoteCatalogBuildPath: + m_Id: + m_RemoteCatalogLoadPath: + m_Id: + m_ContentStateBuildPathProfileVariableName: + m_CustomContentStateBuildPath: + m_ContentStateBuildPath: + m_BuildAddressablesWithPlayerBuild: 0 + m_overridePlayerVersion: '[UnityEditor.PlayerSettings.bundleVersion]' + m_GroupAssets: + - {fileID: 11400000, guid: 86ad1216662b54841a182d663f54030d, type: 2} + - {fileID: 11400000, guid: 5c7374bc56a9447e88024b8d10f93d58, type: 2} + m_BuildSettings: + m_LogResourceManagerExceptions: 1 + m_BundleBuildPath: Temp/com.unity.addressables/AssetBundles + m_ProfileSettings: + m_Profiles: + - m_InheritedParent: + m_Id: 617cd374f19c94126a94e1084a222d2e + m_ProfileName: Default + m_Values: + - m_Id: 34adf6382ec474539b4e701c0e724177 + m_Value: '[UnityEditor.EditorUserBuildSettings.activeBuildTarget]' + - m_Id: 506465302ec864e8eb6eb8e0d2ee7b2c + m_Value: '[UnityEngine.AddressableAssets.Addressables.BuildPath]/[BuildTarget]' + - m_Id: 582fe8bc0f8094a09bdaed41f1c12713 + m_Value: + - m_Id: 71015b41342024feebebb329061472f1 + m_Value: '{UnityEngine.AddressableAssets.Addressables.RuntimePath}/[BuildTarget]' + - m_Id: d6597e59c6cc746899e8cdbac61cceec + m_Value: 'ServerData/[BuildTarget]' + m_ProfileEntryNames: + - m_Id: 34adf6382ec474539b4e701c0e724177 + m_Name: BuildTarget + m_InlineUsage: 0 + - m_Id: 506465302ec864e8eb6eb8e0d2ee7b2c + m_Name: Local.BuildPath + m_InlineUsage: 0 + - m_Id: 582fe8bc0f8094a09bdaed41f1c12713 + m_Name: Remote.LoadPath + m_InlineUsage: 0 + - m_Id: 71015b41342024feebebb329061472f1 + m_Name: Local.LoadPath + m_InlineUsage: 0 + - m_Id: d6597e59c6cc746899e8cdbac61cceec + m_Name: Remote.BuildPath + m_InlineUsage: 0 + m_ProfileVersion: 1 + m_LabelTable: + m_LabelNames: + - default + - models + m_SchemaTemplates: [] + m_GroupTemplateObjects: + - {fileID: 11400000, guid: 857a3a7598ede4ebd853a58e581a28d3, type: 2} + m_InitializationObjects: [] + m_CertificateHandlerType: + m_AssemblyName: + m_ClassName: + m_ActivePlayerDataBuilderIndex: 2 + m_DataBuilders: + - {fileID: 11400000, guid: 3857336a397c241e4ae6fe78eff7f4e9, type: 2} + - {fileID: 11400000, guid: 86992f834ece14f909047c1936d0da6d, type: 2} + - {fileID: 11400000, guid: 02d83f2622013403d98d08fb94f2dd2d, type: 2} + m_ActiveProfileId: 617cd374f19c94126a94e1084a222d2e diff --git a/Assets/AddressableAssetsData/AddressableAssetSettings.asset.meta b/Assets/AddressableAssetsData/AddressableAssetSettings.asset.meta new file mode 100644 index 0000000000..a27ab57d1c --- /dev/null +++ b/Assets/AddressableAssetsData/AddressableAssetSettings.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 070edb522e6e54c14a99055900003890 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/Android.meta b/Assets/AddressableAssetsData/Android.meta new file mode 100644 index 0000000000..0e0d3cbb2d --- /dev/null +++ b/Assets/AddressableAssetsData/Android.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 97c6762c3a2e4484b93375df5dc4581c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/AssetGroupTemplates.meta b/Assets/AddressableAssetsData/AssetGroupTemplates.meta new file mode 100644 index 0000000000..0567640d50 --- /dev/null +++ b/Assets/AddressableAssetsData/AssetGroupTemplates.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9b784dd232f6c4e24b95ab83512c4835 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/AssetGroupTemplates/Packed Assets.asset b/Assets/AddressableAssetsData/AssetGroupTemplates/Packed Assets.asset new file mode 100644 index 0000000000..eb799a754c --- /dev/null +++ b/Assets/AddressableAssetsData/AssetGroupTemplates/Packed Assets.asset @@ -0,0 +1,79 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-7550729973563355561 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e5d17a21594effb4e9591490b009e7aa, type: 3} + m_Name: BundledAssetGroupSchema + m_EditorClassIdentifier: + m_Group: {fileID: 0} + m_InternalBundleIdMode: 1 + m_Compression: 1 + m_IncludeAddressInCatalog: 1 + m_IncludeGUIDInCatalog: 1 + m_IncludeLabelsInCatalog: 1 + m_InternalIdNamingMode: 0 + m_CacheClearBehavior: 0 + m_IncludeInBuild: 1 + m_BundledAssetProviderType: + m_AssemblyName: + m_ClassName: + m_StripDownloadOptions: 0 + m_ForceUniqueProvider: 0 + m_UseAssetBundleCache: 1 + m_UseAssetBundleCrc: 1 + m_UseAssetBundleCrcForCachedBundles: 1 + m_UseUWRForLocalBundles: 0 + m_Timeout: 0 + m_ChunkedTransfer: 0 + m_RedirectLimit: -1 + m_RetryCount: 0 + m_BuildPath: + m_Id: + m_LoadPath: + m_Id: + m_BundleMode: 0 + m_AssetBundleProviderType: + m_AssemblyName: + m_ClassName: + m_UseDefaultSchemaSettings: 0 + m_SelectedPathPairIndex: 0 + m_BundleNaming: 0 + m_AssetLoadMode: 0 +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1a3c5d64ac83548c09dd1678b9f6f1cd, type: 3} + m_Name: Packed Assets + m_EditorClassIdentifier: + m_SchemaObjects: + - {fileID: -7550729973563355561} + - {fileID: 6521969340658721883} + m_Description: Pack assets into asset bundles. + m_Settings: {fileID: 11400000, guid: 070edb522e6e54c14a99055900003890, type: 2} +--- !u!114 &6521969340658721883 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5834b5087d578d24c926ce20cd31e6d6, type: 3} + m_Name: ContentUpdateGroupSchema + m_EditorClassIdentifier: + m_Group: {fileID: 0} + m_StaticContent: 0 diff --git a/Assets/AddressableAssetsData/AssetGroupTemplates/Packed Assets.asset.meta b/Assets/AddressableAssetsData/AssetGroupTemplates/Packed Assets.asset.meta new file mode 100644 index 0000000000..9c3d28abb0 --- /dev/null +++ b/Assets/AddressableAssetsData/AssetGroupTemplates/Packed Assets.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 857a3a7598ede4ebd853a58e581a28d3 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/AssetGroups.meta b/Assets/AddressableAssetsData/AssetGroups.meta new file mode 100644 index 0000000000..a7466fe4ed --- /dev/null +++ b/Assets/AddressableAssetsData/AssetGroups.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 72a2c792220e448e598aa11687da3196 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/AssetGroups/Default Local Group.asset b/Assets/AddressableAssetsData/AssetGroups/Default Local Group.asset new file mode 100644 index 0000000000..d195c224ee --- /dev/null +++ b/Assets/AddressableAssetsData/AssetGroups/Default Local Group.asset @@ -0,0 +1,23 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bbb281ee3bf0b054c82ac2347e9e782c, type: 3} + m_Name: Default Local Group + m_EditorClassIdentifier: + m_GroupName: Default Local Group + m_GUID: 712e3991f28e549e7a56ee582a977810 + m_SerializeEntries: [] + m_ReadOnly: 0 + m_Settings: {fileID: 11400000, guid: 070edb522e6e54c14a99055900003890, type: 2} + m_SchemaSet: + m_Schemas: + - {fileID: 11400000, guid: c5a05fc34950a4b54b235cdf64d5d3f4, type: 2} + - {fileID: 11400000, guid: fe6fda0c6cb5846abb15159ba5f2c3fb, type: 2} diff --git a/Assets/AddressableAssetsData/AssetGroups/Default Local Group.asset.meta b/Assets/AddressableAssetsData/AssetGroups/Default Local Group.asset.meta new file mode 100644 index 0000000000..5092d00a11 --- /dev/null +++ b/Assets/AddressableAssetsData/AssetGroups/Default Local Group.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 86ad1216662b54841a182d663f54030d +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/AssetGroups/Schemas.meta b/Assets/AddressableAssetsData/AssetGroups/Schemas.meta new file mode 100644 index 0000000000..f9bd338e34 --- /dev/null +++ b/Assets/AddressableAssetsData/AssetGroups/Schemas.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c71543d672ce64e2d8a93c17f87f28ff +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/AssetGroups/Schemas/Default Local Group_BundledAssetGroupSchema.asset b/Assets/AddressableAssetsData/AssetGroups/Schemas/Default Local Group_BundledAssetGroupSchema.asset new file mode 100644 index 0000000000..948fb17ee8 --- /dev/null +++ b/Assets/AddressableAssetsData/AssetGroups/Schemas/Default Local Group_BundledAssetGroupSchema.asset @@ -0,0 +1,48 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e5d17a21594effb4e9591490b009e7aa, type: 3} + m_Name: Default Local Group_BundledAssetGroupSchema + m_EditorClassIdentifier: + m_Group: {fileID: 11400000, guid: 86ad1216662b54841a182d663f54030d, type: 2} + m_InternalBundleIdMode: 1 + m_Compression: 1 + m_IncludeAddressInCatalog: 1 + m_IncludeGUIDInCatalog: 1 + m_IncludeLabelsInCatalog: 1 + m_InternalIdNamingMode: 0 + m_CacheClearBehavior: 0 + m_IncludeInBuild: 1 + m_BundledAssetProviderType: + m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.BundledAssetProvider + m_StripDownloadOptions: 0 + m_ForceUniqueProvider: 0 + m_UseAssetBundleCache: 1 + m_UseAssetBundleCrc: 1 + m_UseAssetBundleCrcForCachedBundles: 1 + m_UseUWRForLocalBundles: 0 + m_Timeout: 0 + m_ChunkedTransfer: 0 + m_RedirectLimit: -1 + m_RetryCount: 0 + m_BuildPath: + m_Id: 506465302ec864e8eb6eb8e0d2ee7b2c + m_LoadPath: + m_Id: 71015b41342024feebebb329061472f1 + m_BundleMode: 0 + m_AssetBundleProviderType: + m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider + m_UseDefaultSchemaSettings: 0 + m_SelectedPathPairIndex: 0 + m_BundleNaming: 0 + m_AssetLoadMode: 0 diff --git a/Assets/AddressableAssetsData/AssetGroups/Schemas/Default Local Group_BundledAssetGroupSchema.asset.meta b/Assets/AddressableAssetsData/AssetGroups/Schemas/Default Local Group_BundledAssetGroupSchema.asset.meta new file mode 100644 index 0000000000..6c4d9160d3 --- /dev/null +++ b/Assets/AddressableAssetsData/AssetGroups/Schemas/Default Local Group_BundledAssetGroupSchema.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c5a05fc34950a4b54b235cdf64d5d3f4 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/AssetGroups/Schemas/Default Local Group_ContentUpdateGroupSchema.asset b/Assets/AddressableAssetsData/AssetGroups/Schemas/Default Local Group_ContentUpdateGroupSchema.asset new file mode 100644 index 0000000000..68e8ed6288 --- /dev/null +++ b/Assets/AddressableAssetsData/AssetGroups/Schemas/Default Local Group_ContentUpdateGroupSchema.asset @@ -0,0 +1,16 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5834b5087d578d24c926ce20cd31e6d6, type: 3} + m_Name: Default Local Group_ContentUpdateGroupSchema + m_EditorClassIdentifier: + m_Group: {fileID: 11400000, guid: 86ad1216662b54841a182d663f54030d, type: 2} + m_StaticContent: 0 diff --git a/Assets/AddressableAssetsData/AssetGroups/Schemas/Default Local Group_ContentUpdateGroupSchema.asset.meta b/Assets/AddressableAssetsData/AssetGroups/Schemas/Default Local Group_ContentUpdateGroupSchema.asset.meta new file mode 100644 index 0000000000..bd83a194fe --- /dev/null +++ b/Assets/AddressableAssetsData/AssetGroups/Schemas/Default Local Group_ContentUpdateGroupSchema.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fe6fda0c6cb5846abb15159ba5f2c3fb +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/AssetGroups/Schemas/models_BundledAssetGroupSchema.asset b/Assets/AddressableAssetsData/AssetGroups/Schemas/models_BundledAssetGroupSchema.asset new file mode 100644 index 0000000000..66f685b421 --- /dev/null +++ b/Assets/AddressableAssetsData/AssetGroups/Schemas/models_BundledAssetGroupSchema.asset @@ -0,0 +1,48 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e5d17a21594effb4e9591490b009e7aa, type: 3} + m_Name: Packed Assets_BundledAssetGroupSchema + m_EditorClassIdentifier: + m_Group: {fileID: 11400000, guid: 5c7374bc56a9447e88024b8d10f93d58, type: 2} + m_InternalBundleIdMode: 1 + m_Compression: 1 + m_IncludeAddressInCatalog: 1 + m_IncludeGUIDInCatalog: 1 + m_IncludeLabelsInCatalog: 1 + m_InternalIdNamingMode: 0 + m_CacheClearBehavior: 0 + m_IncludeInBuild: 1 + m_BundledAssetProviderType: + m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.BundledAssetProvider + m_StripDownloadOptions: 0 + m_ForceUniqueProvider: 0 + m_UseAssetBundleCache: 1 + m_UseAssetBundleCrc: 1 + m_UseAssetBundleCrcForCachedBundles: 1 + m_UseUWRForLocalBundles: 0 + m_Timeout: 0 + m_ChunkedTransfer: 0 + m_RedirectLimit: -1 + m_RetryCount: 0 + m_BuildPath: + m_Id: 506465302ec864e8eb6eb8e0d2ee7b2c + m_LoadPath: + m_Id: 71015b41342024feebebb329061472f1 + m_BundleMode: 1 + m_AssetBundleProviderType: + m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider + m_UseDefaultSchemaSettings: 1 + m_SelectedPathPairIndex: 0 + m_BundleNaming: 0 + m_AssetLoadMode: 0 diff --git a/Assets/AddressableAssetsData/AssetGroups/Schemas/models_BundledAssetGroupSchema.asset.meta b/Assets/AddressableAssetsData/AssetGroups/Schemas/models_BundledAssetGroupSchema.asset.meta new file mode 100644 index 0000000000..94ee91e73a --- /dev/null +++ b/Assets/AddressableAssetsData/AssetGroups/Schemas/models_BundledAssetGroupSchema.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dbf8c3b629de4458fa5ba751e1a7d2ca +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/AssetGroups/Schemas/models_ContentUpdateGroupSchema.asset b/Assets/AddressableAssetsData/AssetGroups/Schemas/models_ContentUpdateGroupSchema.asset new file mode 100644 index 0000000000..91982bde33 --- /dev/null +++ b/Assets/AddressableAssetsData/AssetGroups/Schemas/models_ContentUpdateGroupSchema.asset @@ -0,0 +1,16 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5834b5087d578d24c926ce20cd31e6d6, type: 3} + m_Name: models_ContentUpdateGroupSchema + m_EditorClassIdentifier: + m_Group: {fileID: 11400000, guid: 5c7374bc56a9447e88024b8d10f93d58, type: 2} + m_StaticContent: 0 diff --git a/Assets/AddressableAssetsData/AssetGroups/Schemas/models_ContentUpdateGroupSchema.asset.meta b/Assets/AddressableAssetsData/AssetGroups/Schemas/models_ContentUpdateGroupSchema.asset.meta new file mode 100644 index 0000000000..03d1de39af --- /dev/null +++ b/Assets/AddressableAssetsData/AssetGroups/Schemas/models_ContentUpdateGroupSchema.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2e4a904b2f4b94f368b560a39c88a27e +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/AssetGroups/models.asset b/Assets/AddressableAssetsData/AssetGroups/models.asset new file mode 100644 index 0000000000..4dbcfab019 --- /dev/null +++ b/Assets/AddressableAssetsData/AssetGroups/models.asset @@ -0,0 +1,215 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bbb281ee3bf0b054c82ac2347e9e782c, type: 3} + m_Name: models + m_EditorClassIdentifier: + m_GroupName: models + m_GUID: af2f31e34f6644749bdd552abb39cb07 + m_SerializeEntries: + - m_GUID: 03e5dab5f51374e55904db72229b775e + m_Address: "models/npcs/npc/2014\u65B0\u79CD\u65CF\u9886\u8896/2014\u65B0\u79CD\u65CF\u9886\u8896/2014\u65B0\u79CD\u65CF\u9886\u8896.prefab" + m_ReadOnly: 0 + m_SerializedLabels: + - models + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: 04e8f383637dd42a58a6a23c48c64eb5 + m_Address: "models/npcs/npc/2014\u65B0\u624B\u6751\u8D27\u90CE/2014\u65B0\u624B\u6751\u8D27\u90CE/2014\u65B0\u624B\u6751\u8D27\u90CE.prefab" + m_ReadOnly: 0 + m_SerializedLabels: + - models + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: 09a50785f77bc43369476f9ab93a9b3a + m_Address: "models/npcs/npc/2014\u65B0\u624B\u6751\u88C1\u7F1D/2014\u65B0\u624B\u6751\u88C1\u7F1D/2014\u65B0\u624B\u6751\u88C1\u7F1D.prefab" + m_ReadOnly: 0 + m_SerializedLabels: + - models + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: 0fb08f2ce83384471ac95b41dc602ace + m_Address: "models/npcs/\u602A\u7269/2014/\u5251\u80CC\u72FC/\u5251\u80CC\u72FC/\u5251\u80CC\u72FC.prefab" + m_ReadOnly: 0 + m_SerializedLabels: + - models + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: 12e232ba9bff147e3bc0cc208f8b78a0 + m_Address: "models/npcs/\u602A\u7269/38\u9972\u517B\u517D/\u5154\u5E7C\u5E74/\u5154\u5E7C\u5E74/\u5154\u5E7C\u5E74.prefab" + m_ReadOnly: 0 + m_SerializedLabels: + - models + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: 19ef711ad91474765a847a631f5da9ca + m_Address: "models/npcs/npc/2014\u65B0\u79CD\u65CF\u5DE7\u5320/2014\u65B0\u79CD\u65CF\u5DE7\u5320/2014\u65B0\u79CD\u65CF\u5DE7\u5320.prefab" + m_ReadOnly: 0 + m_SerializedLabels: + - models + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: 28a9794edd04941a6ba1ab1a6e87bbd4 + m_Address: "models/npcs/npc/2011\u5723\u7075\u4F7F\u8005/\u5723\u7075\u4F7F\u8005/\u5723\u7075\u4F7F\u8005.prefab" + m_ReadOnly: 0 + m_SerializedLabels: + - models + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: 39e34e0b093c74c65a24bcfa1a655c51 + m_Address: "models/npcs/npc/2014\u65B0\u624B\u6751\u5546\u57CE\u7BA1\u7406\u5458\u84DD\u8272/2014\u65B0\u624B\u6751\u5546\u57CE\u7BA1\u7406\u5458\u84DD\u8272/2014\u65B0\u624B\u6751\u5546\u57CE\u7BA1\u7406\u5458\u84DD\u8272.prefab" + m_ReadOnly: 0 + m_SerializedLabels: + - models + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: 3e3944509a65042eb8a31cfb74a0edf5 + m_Address: "models/\u573A\u666F\u6D3B\u7269/2017\u79FB\u52A8\u6807\u9776\u8725\u8734/2017\u79FB\u52A8\u6807\u9776\u8725\u8734/2017\u79FB\u52A8\u6807\u9776\u8725\u8734.prefab" + m_ReadOnly: 0 + m_SerializedLabels: + - models + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: 46453b542df6540ae817c89b1dfff21e + m_Address: "models/npcs/npc/\u7075\u65CF\u5973\u738B/\u7075\u65CF\u5973\u738B/\u7075\u65CF\u5973\u738B.prefab" + m_ReadOnly: 0 + m_SerializedLabels: + - models + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: 47002ca46d55c4938b9315f763d1d66c + m_Address: "models/npcs/npc/npc\u4ED9\u5973/npc\u4ED9\u5973/npc\u7FBD\u7075.prefab" + m_ReadOnly: 0 + m_SerializedLabels: + - models + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: 4dcc3634bebc24bebb88a7ba3e23753c + m_Address: "models/npcs/npc/2014\u62FF\u6247\u5B50\u7684\u4EBA/2014\u62FF\u6247\u5B50\u7684\u4EBA/2014\u62FF\u6247\u5B50\u7684\u4EBA.prefab" + m_ReadOnly: 0 + m_SerializedLabels: + - models + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: 576e84b3fd877477eb7f0a424f30d5df + m_Address: "models/\u573A\u666F\u6D3B\u7269/\u51E4\u7FBD\u9E7F/\u96C4\u6027\u51E4\u7FBD\u9E7F/\u96CC\u6027\u51E4\u7FBD\u9E7F.prefab" + m_ReadOnly: 0 + m_SerializedLabels: + - models + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: 5e76cb69b081a4673a5816fd9da89533 + m_Address: "models/\u573A\u666F\u6D3B\u7269/\u4E09\u4E2A\u8774\u8776/\u4E09\u4E2A\u8774\u8776/\u4E09\u4E2A\u8774\u8776.prefab" + m_ReadOnly: 0 + m_SerializedLabels: + - models + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: 62555210fd2944f329f43aa25b44d2c4 + m_Address: "models/npcs/npc/2014\u94B1\u5E84\u8001\u677F/2014\u94B1\u5E84\u8001\u677F/2014\u94B1\u5E84\u8001\u677F.prefab" + m_ReadOnly: 0 + m_SerializedLabels: + - models + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: 64b5a0083181a4d30911efb9c3059678 + m_Address: "models/npcs/npc/2011\u725B\u9996\u5996\u738B/\u725B\u9996\u5996\u738B/\u725B\u9996\u5996\u738B.prefab" + m_ReadOnly: 0 + m_SerializedLabels: + - models + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: 6858c050d424a416a9a6aed20d93a150 + m_Address: "models/npcs/\u602A\u7269/18\u72FC/\u7CBE\u7075\u72FC/a\u8EAB\u9AD8/\u7CBE\u7075\u72FC/\u8352\u539F\u7CBE\u7075\u72FC.prefab" + m_ReadOnly: 0 + m_SerializedLabels: + - models + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: 6be116f35d3d446c7b8d3d61ca617690 + m_Address: "models/npcs/npc/2014npc\u94C1\u5320/2014npc\u94C1\u5320/2014npc\u94C1\u5320.prefab" + m_ReadOnly: 0 + m_SerializedLabels: + - models + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: 70f8fa699f9ed4f88b1c335f2ccbb198 + m_Address: "models/npcs/npc/2011\u6C34\u884C\u8005/\u6C34\u884C\u8005/\u6C34\u884C\u8005.prefab" + m_ReadOnly: 0 + m_SerializedLabels: + - models + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: 7cc56a2fa301a46db92681b17c10d6b0 + m_Address: "models/npcs/npc/2014\u5439\u7B1B\u5B50\u7684\u4EBA\u7EA2\u8272/2014\u5439\u7B1B\u5B50\u7684\u4EBA\u7EA2\u8272/\u5439\u7B1B\u5B50\u7684\u4EBA\u7EA2\u8272\u8774\u8776.prefab" + m_ReadOnly: 0 + m_SerializedLabels: + - models + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: 7daa10b47beb04798927c05cc7148951 + m_Address: "models/\u573A\u666F\u6D3B\u7269/\u677E\u9F20/\u7EA2\u8272\u677E\u9F20/\u7EFF\u8272\u677E\u9F20.prefab" + m_ReadOnly: 0 + m_SerializedLabels: + - models + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: 91928ba4c1a3643b98bfadeb477ec8af + m_Address: "models/\u573A\u666F\u52A8\u753B\u6A21\u578B/\u65B0\u624B\u6751\u80E7\u65CF\u5EFA\u7B51/\u65B0\u624B\u6751\u80E7\u65CF\u5EFA\u7B51.prefab" + m_ReadOnly: 0 + m_SerializedLabels: + - models + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: a32fc20843e62442ab1494d8a8e48794 + m_Address: "models/npcs/npc/2014\u65B0\u624B\u6751\u4F20\u9001\u5E08/2014\u65B0\u624B\u6751\u4F20\u9001\u5E08/2014\u65B0\u624B\u6751\u4F20\u9001\u5E08.prefab" + m_ReadOnly: 0 + m_SerializedLabels: + - models + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: a5922b6b6f63f46e7b047300c07948fa + m_Address: "models/npcs/\u602A\u7269/2014/\u5C0F\u661F\u661F/\u5C0F\u661F\u661F/\u5C0F\u661F\u661F.prefab" + m_ReadOnly: 0 + m_SerializedLabels: + - models + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: b058f8968d5aa4a8f9285fa891b7b9ba + m_Address: "models/npcs/npc/\u5973npc14/\u5973npc14/\u5973npc14.prefab" + m_ReadOnly: 0 + m_SerializedLabels: + - models + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: b2aa264cdbd9d4fb18f8df100175f4c3 + m_Address: "models/npcs/npc/\u7537npc21/\u7537npc21/\u7537npc21.prefab" + m_ReadOnly: 0 + m_SerializedLabels: + - models + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: bc0279413de8f43fb899a8761a22f4f3 + m_Address: "models/npcs/npc/2014\u6559\u4E66\u5148\u751F/2014\u6559\u4E66\u5148\u751F/2014\u6559\u4E66\u5148\u751F.prefab" + m_ReadOnly: 0 + m_SerializedLabels: + - models + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: c9c25f71f361f43f1aa0510d4f96312d + m_Address: "models/\u573A\u666F\u6D3B\u7269/\u957F\u7FCE\u8D64\u7FBD\u9E1F/\u957F\u7FCE\u8D64\u7FBD\u9E1F/\u957F\u7FCE\u8D64\u7FBD\u9E1F.prefab" + m_ReadOnly: 0 + m_SerializedLabels: + - models + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: d14e87db729e843a4b31c7b1065ab677 + m_Address: "models/npcs/npc/2014\u90AE\u7BB1/2014\u90AE\u7BB1/2014\u90AE\u7BB1.prefab" + m_ReadOnly: 0 + m_SerializedLabels: + - models + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: d865ad4bc902a4a299da74aaba68e9eb + m_Address: "models/npcs/npc/2014\u836F\u5E08/2014\u836F\u5E08/2014\u836F\u5E08.prefab" + m_ReadOnly: 0 + m_SerializedLabels: + - models + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: ed84be8c5044746ca895fb75aca9bc66 + m_Address: "models/npcs/npc/2014\u65B0\u624B\u6751\u5BFB\u5B9D\u4E13\u5458/2014\u65B0\u624B\u6751\u5BFB\u5B9D\u4E13\u5458/2014\u65B0\u624B\u6751\u5BFB\u5B9D\u4E13\u5458.prefab" + m_ReadOnly: 0 + m_SerializedLabels: + - models + FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: fd4b330a3588f40a18d44e22798e3ddc + m_Address: "models/npcs/npc/\u9B45\u7075\u9996\u9886/\u9B45\u7075\u9996\u9886/\u9B45\u7075\u9996\u9886.prefab" + m_ReadOnly: 0 + m_SerializedLabels: + - models + FlaggedDuringContentUpdateRestriction: 0 + m_ReadOnly: 0 + m_Settings: {fileID: 11400000, guid: 070edb522e6e54c14a99055900003890, type: 2} + m_SchemaSet: + m_Schemas: + - {fileID: 11400000, guid: dbf8c3b629de4458fa5ba751e1a7d2ca, type: 2} + - {fileID: 11400000, guid: 2e4a904b2f4b94f368b560a39c88a27e, type: 2} diff --git a/Assets/AddressableAssetsData/AssetGroups/models.asset.meta b/Assets/AddressableAssetsData/AssetGroups/models.asset.meta new file mode 100644 index 0000000000..c30ff326fc --- /dev/null +++ b/Assets/AddressableAssetsData/AssetGroups/models.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5c7374bc56a9447e88024b8d10f93d58 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/DataBuilders.meta b/Assets/AddressableAssetsData/DataBuilders.meta new file mode 100644 index 0000000000..b72f28bc19 --- /dev/null +++ b/Assets/AddressableAssetsData/DataBuilders.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 104537991a353416c95bab1fac15da61 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/DataBuilders/BuildScriptFastMode.asset b/Assets/AddressableAssetsData/DataBuilders/BuildScriptFastMode.asset new file mode 100644 index 0000000000..50d30dc58e --- /dev/null +++ b/Assets/AddressableAssetsData/DataBuilders/BuildScriptFastMode.asset @@ -0,0 +1,20 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 88d21199f5d473f4db36845f2318f180, type: 3} + m_Name: BuildScriptFastMode + m_EditorClassIdentifier: + instanceProviderType: + m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.InstanceProvider + sceneProviderType: + m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.SceneProvider diff --git a/Assets/AddressableAssetsData/DataBuilders/BuildScriptFastMode.asset.meta b/Assets/AddressableAssetsData/DataBuilders/BuildScriptFastMode.asset.meta new file mode 100644 index 0000000000..f901b05488 --- /dev/null +++ b/Assets/AddressableAssetsData/DataBuilders/BuildScriptFastMode.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3857336a397c241e4ae6fe78eff7f4e9 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedMode.asset b/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedMode.asset new file mode 100644 index 0000000000..ec875f9435 --- /dev/null +++ b/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedMode.asset @@ -0,0 +1,20 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3e2e0ffa088c91d41a086d0b8cb16bdc, type: 3} + m_Name: BuildScriptPackedMode + m_EditorClassIdentifier: + instanceProviderType: + m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.InstanceProvider + sceneProviderType: + m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.SceneProvider diff --git a/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedMode.asset.meta b/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedMode.asset.meta new file mode 100644 index 0000000000..66a250875e --- /dev/null +++ b/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedMode.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 02d83f2622013403d98d08fb94f2dd2d +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedPlayMode.asset b/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedPlayMode.asset new file mode 100644 index 0000000000..762884519c --- /dev/null +++ b/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedPlayMode.asset @@ -0,0 +1,20 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ad8c280d42ee0ed41a27db23b43dd2bf, type: 3} + m_Name: BuildScriptPackedPlayMode + m_EditorClassIdentifier: + instanceProviderType: + m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.InstanceProvider + sceneProviderType: + m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.SceneProvider diff --git a/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedPlayMode.asset.meta b/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedPlayMode.asset.meta new file mode 100644 index 0000000000..2c06233429 --- /dev/null +++ b/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedPlayMode.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 86992f834ece14f909047c1936d0da6d +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/DefaultObject.asset b/Assets/AddressableAssetsData/DefaultObject.asset new file mode 100644 index 0000000000..5cfa2efa33 --- /dev/null +++ b/Assets/AddressableAssetsData/DefaultObject.asset @@ -0,0 +1,15 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3a189bb168d8d90478a09ea08c2f3d72, type: 3} + m_Name: DefaultObject + m_EditorClassIdentifier: + m_AddressableAssetSettingsGuid: 070edb522e6e54c14a99055900003890 diff --git a/Assets/AddressableAssetsData/DefaultObject.asset.meta b/Assets/AddressableAssetsData/DefaultObject.asset.meta new file mode 100644 index 0000000000..544b0b5c0f --- /dev/null +++ b/Assets/AddressableAssetsData/DefaultObject.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 224e456928aaa4603b0c4a9ec48ee013 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AddressableAssetsData/ProfileDataSourceSettings.asset b/Assets/AddressableAssetsData/ProfileDataSourceSettings.asset new file mode 100644 index 0000000000..77e68a21d1 --- /dev/null +++ b/Assets/AddressableAssetsData/ProfileDataSourceSettings.asset @@ -0,0 +1,28 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7e3976da977cb49238499ea3b4c237ae, type: 3} + m_Name: ProfileDataSourceSettings + m_EditorClassIdentifier: + profileGroupTypes: + - m_GroupTypePrefix: Built-In + m_Variables: + - m_Suffix: BuildPath + m_Value: '[UnityEngine.AddressableAssets.Addressables.BuildPath]/[BuildTarget]' + - m_Suffix: LoadPath + m_Value: '{UnityEngine.AddressableAssets.Addressables.RuntimePath}/[BuildTarget]' + environments: [] + currentEnvironment: + id: + projectId: + projectGenesisId: + name: + isDefault: 0 diff --git a/Assets/AddressableAssetsData/ProfileDataSourceSettings.asset.meta b/Assets/AddressableAssetsData/ProfileDataSourceSettings.asset.meta new file mode 100644 index 0000000000..8235711583 --- /dev/null +++ b/Assets/AddressableAssetsData/ProfileDataSourceSettings.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b2c8c6768dfb44ab1b084ce5f7d23bc6 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/PerfectWorld/Scene/LoginScene.unity b/Assets/PerfectWorld/Scene/LoginScene.unity index 647987575f..3684b88461 100644 --- a/Assets/PerfectWorld/Scene/LoginScene.unity +++ b/Assets/PerfectWorld/Scene/LoginScene.unity @@ -543,6 +543,56 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &764685605 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 764685607} + - component: {fileID: 764685606} + m_Layer: 0 + m_Name: Addressable + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &764685606 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 764685605} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e855af6acaff54a44988808bf9cfdeb0, type: 3} + m_Name: + m_EditorClassIdentifier: + assetLabelReference: + m_AssetGUID: 03e5dab5f51374e55904db72229b775e + m_SubObjectName: + m_SubObjectType: + m_SubObjectGUID: + m_EditorAssetChanged: 0 +--- !u!4 &764685607 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 764685605} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &778320213 GameObject: m_ObjectHideFlags: 0 @@ -1993,3 +2043,4 @@ SceneRoots: m_Roots: - {fileID: 1873075676} - {fileID: 678266405} + - {fileID: 764685607} diff --git a/Assets/PerfectWorld/Scripts/Addressable.meta b/Assets/PerfectWorld/Scripts/Addressable.meta new file mode 100644 index 0000000000..4998c98cf8 --- /dev/null +++ b/Assets/PerfectWorld/Scripts/Addressable.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c8ed4910a09a841858ab5f2ceefa9b18 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/PerfectWorld/Scripts/Addressable/AddressableConfig.cs b/Assets/PerfectWorld/Scripts/Addressable/AddressableConfig.cs new file mode 100644 index 0000000000..9c435b2c5d --- /dev/null +++ b/Assets/PerfectWorld/Scripts/Addressable/AddressableConfig.cs @@ -0,0 +1,29 @@ +using UnityEngine; + +namespace PerfectWorld.Addressable +{ + /// + /// Configuration for the Addressable system + /// + public static class AddressableConfig + { + // CDN base URL for downloading bundles + public const string CDN_BASE_URL = "https://your-cdn.com/bundles/"; + + // Maximum retry attempts for failed downloads + public const int MAX_RETRIES = 3; + + // Delay between retry attempts in seconds + public const float RETRY_DELAY = 2f; + + // Download timeout in seconds + public const int DOWNLOAD_TIMEOUT = 30; + + // Cache location for downloaded bundles + public static string CachePath => Application.persistentDataPath + "/AddressableBundles"; + + // Catalog file name + public const string CATALOG_FILENAME = "catalog.json"; + } +} + diff --git a/Assets/PerfectWorld/Scripts/Addressable/AddressableConfig.cs.meta b/Assets/PerfectWorld/Scripts/Addressable/AddressableConfig.cs.meta new file mode 100644 index 0000000000..e5ea0dee57 --- /dev/null +++ b/Assets/PerfectWorld/Scripts/Addressable/AddressableConfig.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 16c9f694f557b4df8ac49b611b67c6a2 \ No newline at end of file diff --git a/Assets/PerfectWorld/Scripts/Addressable/AddressableEvents.cs b/Assets/PerfectWorld/Scripts/Addressable/AddressableEvents.cs new file mode 100644 index 0000000000..0098c22a9c --- /dev/null +++ b/Assets/PerfectWorld/Scripts/Addressable/AddressableEvents.cs @@ -0,0 +1,80 @@ +using System; + +namespace PerfectWorld.Addressable +{ + /// + /// Download progress information + /// + public struct DownloadProgress + { + // Bytes downloaded so far + public long BytesDownloaded; + + // Total bytes to download + public long TotalBytes; + + // Download percentage (0-100) + public float Percentage; + + // Currently downloading file + public string CurrentFile; + + // Current state description + public string Status; + } + + /// + /// Events for addressable system + /// + public static class AddressableEvents + { + // Fired when download starts + public static event Action OnDownloadStarted; + + // Fired when download progresses + public static event Action OnDownloadProgress; + + // Fired when download completes successfully + public static event Action OnDownloadCompleted; + + // Fired when download fails + public static event Action OnDownloadFailed; + + // Fired when an asset is loaded successfully + public static event Action OnAssetLoaded; + + // Fired when an asset fails to load + public static event Action OnAssetLoadFailed; + + internal static void InvokeDownloadStarted() + { + OnDownloadStarted?.Invoke(); + } + + internal static void InvokeDownloadProgress(DownloadProgress progress) + { + OnDownloadProgress?.Invoke(progress); + } + + internal static void InvokeDownloadCompleted() + { + OnDownloadCompleted?.Invoke(); + } + + internal static void InvokeDownloadFailed(string error) + { + OnDownloadFailed?.Invoke(error); + } + + internal static void InvokeAssetLoaded(string address) + { + OnAssetLoaded?.Invoke(address); + } + + internal static void InvokeAssetLoadFailed(string address, string error) + { + OnAssetLoadFailed?.Invoke(address, error); + } + } +} + diff --git a/Assets/PerfectWorld/Scripts/Addressable/AddressableEvents.cs.meta b/Assets/PerfectWorld/Scripts/Addressable/AddressableEvents.cs.meta new file mode 100644 index 0000000000..79baf1f9c0 --- /dev/null +++ b/Assets/PerfectWorld/Scripts/Addressable/AddressableEvents.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: c9412e3f036904470beb52510bbd7f20 \ No newline at end of file diff --git a/Assets/PerfectWorld/Scripts/Addressable/AddressableManager.cs b/Assets/PerfectWorld/Scripts/Addressable/AddressableManager.cs new file mode 100644 index 0000000000..6670ab8fe9 --- /dev/null +++ b/Assets/PerfectWorld/Scripts/Addressable/AddressableManager.cs @@ -0,0 +1,63 @@ +using System.Collections.Generic; +using System.Threading.Tasks; +using UnityEngine; +using UnityEngine.AddressableAssets; +using UnityEngine.AddressableAssets.ResourceLocators; +using UnityEngine.ResourceManagement.AsyncOperations; +using UnityEngine.ResourceManagement.ResourceLocations; + +namespace BrewMonster.Scripts +{ + public class AddressableManager : MonoSingleton + { + private bool _isInitialized = false; + + private Dictionary> _loadedAssets = new(); + + protected override void Initialize() + { + base.Initialize(); + _isInitialized = false; + Addressables.InitializeAsync().Completed += OnInitializeComplete; + } + + void OnInitializeComplete(AsyncOperationHandle handle) + { + if (handle.Status == AsyncOperationStatus.Succeeded) + { + _isInitialized = true; + } + else + { + // print out the error + BMLogger.LogError($"AddressableManager: Failed to initialize: {handle.OperationException?.Message} {handle.OperationException?.StackTrace}"); + } + } + + /// + /// Load an asset asynchronously. The address should look like this: "models/npcs/npc/魅灵首领/魅灵首领/魅灵首领.prefab" + /// + /// + public async Task LoadPrefabAsync(string assetPath) + { + if (_loadedAssets.ContainsKey(assetPath)) + { + return _loadedAssets[assetPath].Result; + } + + var handle = Addressables.LoadAssetAsync(assetPath); + await handle.Task; + _loadedAssets[assetPath] = handle; + return handle.Result; + } + + /// + /// When the asset is no longer needed, call this method to unload it. + /// + /// + public void UnloadAsset(string assetPath) + { + Addressables.Release(assetPath); + } + } +} diff --git a/Assets/PerfectWorld/Scripts/Addressable/AddressableManager.cs.meta b/Assets/PerfectWorld/Scripts/Addressable/AddressableManager.cs.meta new file mode 100644 index 0000000000..3b5df5f0d4 --- /dev/null +++ b/Assets/PerfectWorld/Scripts/Addressable/AddressableManager.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: e855af6acaff54a44988808bf9cfdeb0 \ No newline at end of file diff --git a/Assets/PerfectWorld/Scripts/Common/CinemachineTouchOrbit.cs b/Assets/PerfectWorld/Scripts/Common/CinemachineTouchOrbit.cs index 22f8dd93c2..cefa305c80 100644 --- a/Assets/PerfectWorld/Scripts/Common/CinemachineTouchOrbit.cs +++ b/Assets/PerfectWorld/Scripts/Common/CinemachineTouchOrbit.cs @@ -68,27 +68,27 @@ public class CinemachineTouchOrbit : MonoSingleton return Vector2.zero; #else // Mobile: xử lý touch tương tự code bạn đã có - foreach (Touch t in Input.touches) - { - if (t.phase == TouchPhase.Began) - { - lastPointerPos = t.position; - isDragging = true; - } - else if (t.phase == TouchPhase.Moved && isDragging) - { - Vector2 cur = t.position; - Vector2 delta = cur - lastPointerPos; - lastPointerPos = cur; - if (RectTransformUtility.RectangleContainsScreenPoint(joystickArea, cur)) - return Vector2.zero; - return delta; - } - else if (t.phase == TouchPhase.Ended || t.phase == TouchPhase.Canceled) - { - isDragging = false; - } - } + // foreach (Touch t in Input.touches) + // { + // if (t.phase == TouchPhase.Began) + // { + // lastPointerPos = t.position; + // isDragging = true; + // } + // else if (t.phase == TouchPhase.Moved && isDragging) + // { + // Vector2 cur = t.position; + // Vector2 delta = cur - lastPointerPos; + // lastPointerPos = cur; + // if (RectTransformUtility.RectangleContainsScreenPoint(joystickArea, cur)) + // return Vector2.zero; + // return delta; + // } + // else if (t.phase == TouchPhase.Ended || t.phase == TouchPhase.Canceled) + // { + // isDragging = false; + // } + // } return Vector2.zero; #endif } diff --git a/Assets/PerfectWorld/Scripts/NPC/CECModel.cs b/Assets/PerfectWorld/Scripts/NPC/CECModel.cs index 44df0379b1..2e569b69d3 100644 --- a/Assets/PerfectWorld/Scripts/NPC/CECModel.cs +++ b/Assets/PerfectWorld/Scripts/NPC/CECModel.cs @@ -1,10 +1,3 @@ -using System; -using Unity.VisualScripting; -using UnityEditor.ShaderGraph.Internal; -using UnityEngine; -using UnityEngine.UIElements; -using static CECNPC; - public class CECModel { private const uint COMACT_FLAG_MODE_NONE = 0; diff --git a/Assets/PerfectWorld/Scripts/NPC/NPCBuilder.cs b/Assets/PerfectWorld/Scripts/NPC/NPCBuilder.cs index 06cc844897..787ece1912 100644 --- a/Assets/PerfectWorld/Scripts/NPC/NPCBuilder.cs +++ b/Assets/PerfectWorld/Scripts/NPC/NPCBuilder.cs @@ -1,25 +1,24 @@ using System.Collections.Generic; -using System.IO; using System.Linq; using UnityEngine; #if UNITY_EDITOR using UnityEditor; +#endif using BrewMonster; -#endif #if UNITY_EDITOR -using Animancer; // Bảo đảm bạn có Animancer package +using Animancer; // B�?o đ�?m b�?n có Animancer package #endif public class NPCBuilder : MonoSingleton { - [Header("📦 Danh sách prefab NPC được quét tự động")] + [Header("📦 Danh sách prefab NPC đư�?c quét t�? động")] [SerializeField] private List modelNPCList = new List(); #if UNITY_EDITOR - [Header("📁 Kéo thư mục chứa Prefab NPC vào đây")] + [Header("📁 Kéo thư m�?c chứa Prefab NPC vào đây")] [SerializeField] private DefaultAsset npcFolder; #endif @@ -29,7 +28,7 @@ public class NPCBuilder : MonoSingleton { if (modelNPCList == null || modelNPCList.Count == 0) { - Debug.LogError("[NPCBuilder] modelNPCList rỗng – hãy quét lại prefab! " + transform.gameObject.name); + Debug.LogError("[NPCBuilder] modelNPCList rỗng �? hãy quét l�?i prefab! " + transform.gameObject.name); } modelNPCDic = modelNPCList @@ -48,21 +47,21 @@ public class NPCBuilder : MonoSingleton // -------------------------- // 📌 ContextMenu 1: Quét Prefab // -------------------------- - [ContextMenu("🔄 Quét Prefab trong thư mục")] + [ContextMenu("🔄 Quét Prefab trong thư m�?c")] private void ScanPrefabsInFolder() { modelNPCList.Clear(); if (npcFolder == null) { - Debug.LogWarning("[NPCBuilder] Vui lòng kéo thư mục Prefab NPC vào trường npcFolder."); + Debug.LogWarning("[NPCBuilder] Vui lòng kéo thư m�?c Prefab NPC vào trường npcFolder."); return; } string folderPath = AssetDatabase.GetAssetPath(npcFolder); if (!AssetDatabase.IsValidFolder(folderPath)) { - Debug.LogWarning("[NPCBuilder] Thư mục không hợp lệ."); + Debug.LogWarning("[NPCBuilder] Thư m�?c không h�?p l�?."); return; } @@ -84,13 +83,13 @@ public class NPCBuilder : MonoSingleton EditorUtility.SetDirty(this); AssetDatabase.SaveAssets(); - Debug.Log($"[NPCBuilder] ✅ Đã quét {modelNPCList.Count} prefab từ {folderPath}"); + Debug.Log($"[NPCBuilder] �? Đã quét {modelNPCList.Count} prefab t�? {folderPath}"); } // -------------------------- // 📌 ContextMenu 2: Thêm NamedAnimancerComponent & Animation Clip // -------------------------- - [ContextMenu("🎬 Đảm bảo Prefab có NamedAnimancerComponent và Add Animations")] + [ContextMenu("🎬 Đ�?m b�?o Prefab có NamedAnimancerComponent và Add Animations")] private void EnsureNamedAnimancerAndAddAnimations() { int processed = 0; @@ -113,7 +112,7 @@ public class NPCBuilder : MonoSingleton addedComponent++; } - // 🔹 Clear list hiện tại (tránh duplicate) + // 🔹 Clear list hiện t�?i (tránh duplicate) if (animancer.Animations != null) animancer.Animations = null; @@ -135,14 +134,14 @@ public class NPCBuilder : MonoSingleton Debug.LogWarning($"[NPCBuilder] ⚠️ Prefab {prefab.name} không có Animator hoặc Controller!"); } - // Ghi đè lại prefab + // Ghi đè l�?i prefab PrefabUtility.SaveAsPrefabAsset(prefabRoot, path); PrefabUtility.UnloadPrefabContents(prefabRoot); processed++; } AssetDatabase.SaveAssets(); - Debug.Log($"[NPCBuilder] ✅ Đã xử lý {processed} prefab. Thêm mới {addedComponent} component, tổng {totalClips} clip animation được ghi lại."); + Debug.Log($"[NPCBuilder] �? Đã x�? lý {processed} prefab. Thêm mới {addedComponent} component, tổng {totalClips} clip animation đư�?c ghi l�?i."); } #endif } diff --git a/Assets/PerfectWorld/Scripts/Network/CSNetwork/CSNetwork.csproj.meta b/Assets/PerfectWorld/Scripts/Network/CSNetwork/CSNetwork.csproj.meta new file mode 100644 index 0000000000..333a9b1482 --- /dev/null +++ b/Assets/PerfectWorld/Scripts/Network/CSNetwork/CSNetwork.csproj.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d0c06c588e2a6442488a3542551fb243 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/PerfectWorld/Scripts/Utils/Editor/AddressableTools.cs b/Assets/PerfectWorld/Scripts/Utils/Editor/AddressableTools.cs new file mode 100644 index 0000000000..d33da61689 --- /dev/null +++ b/Assets/PerfectWorld/Scripts/Utils/Editor/AddressableTools.cs @@ -0,0 +1,216 @@ +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEditor; +using UnityEditor.AddressableAssets; +using UnityEditor.AddressableAssets.Settings; +using UnityEngine; + +namespace BrewMonster +{ + public static class AddressableTools + { + private static string _modelPathPrefixToRemove = "Assets/ModelRenderer/Art/Models"; + + [MenuItem("Tools/Addressable/Get All Asset Name")] + public static void GetAllAssetName() + { + AddressableAssetSettings settings = AddressableAssetSettingsDefaultObject.Settings; + if (settings == null) + { + Debug.LogWarning("Addressable settings not found."); + return; + } + + var groupNameToEntries = new Dictionary>(); + foreach (var group in settings.groups) + { + if (group == null) continue; + var entries = group.entries; // available in most Addressables versions + if (entries == null) continue; + string groupName = group.Name; + if (!groupNameToEntries.TryGetValue(groupName, out var list)) + { + list = new List(); + groupNameToEntries[groupName] = list; + } + foreach (var entry in entries) + { + if (entry == null) continue; + list.Add(entry); + } + } + + var sb = new StringBuilder(); + int totalCount = 0; + foreach (var kvp in groupNameToEntries.OrderBy(k => k.Key)) + { + sb.AppendLine($"[Group] {kvp.Key} ({kvp.Value.Count})"); + foreach (var e in kvp.Value.OrderBy(e => e.address)) + { + sb.AppendLine($"- {e.address}"); + } + sb.AppendLine(); + totalCount += kvp.Value.Count; + } + + if (totalCount == 0) + { + sb.Append("No addressable assets found."); + } + + Debug.Log(sb.ToString()); + EditorUtility.DisplayDialog("Get All Asset Name", $"Printed {totalCount} addressable assets to Console.", "OK"); + } + + [MenuItem("Tools/Addressable/Remove Prefix")] + public static void RemovePrefixFromAddresses() + { + AddressableAssetSettings settings = AddressableAssetSettingsDefaultObject.Settings; + if (settings == null) + { + Debug.LogWarning("Addressable settings not found."); + return; + } + + int updatedCount = 0; + foreach (var group in settings.groups) + { + if (group == null) continue; + var entries = group.entries; + if (entries == null) continue; + foreach (var entry in entries) + { + if (entry == null) continue; + var address = entry.address; + if (string.IsNullOrEmpty(address)) continue; + if (address.StartsWith(_modelPathPrefixToRemove)) + { + string newAddress = address.Substring(_modelPathPrefixToRemove.Length); + if (newAddress.StartsWith("/")) newAddress = newAddress.Substring(1); + if (newAddress != address) + { + entry.SetAddress(newAddress); + updatedCount++; + } + } + } + } + + if (updatedCount > 0) + { + EditorUtility.SetDirty(settings); + AssetDatabase.SaveAssets(); + } + + Debug.Log($"Remove Prefix: Updated {updatedCount} entries."); + EditorUtility.DisplayDialog("Remove Prefix", $"Updated {updatedCount} entries.", "OK"); + } + + /// + /// Sets the address of all addressable assets to match their asset path (relative to Assets folder) + /// This allows you to load assets using their file path as the key + /// + [MenuItem("Tools/Addressable/Set Address To Asset Path")] + public static void SetAddressToAssetPath() + { + AddressableAssetSettings settings = AddressableAssetSettingsDefaultObject.Settings; + if (settings == null) + { + Debug.LogWarning("Addressable settings not found."); + return; + } + + int updatedCount = 0; + var sb = new StringBuilder(); + sb.AppendLine("Setting addresses to asset paths:"); + sb.AppendLine(); + + foreach (var group in settings.groups) + { + if (group == null) continue; + var entries = group.entries; + if (entries == null) continue; + + foreach (var entry in entries) + { + if (entry == null) continue; + + // Get the asset path (e.g., "Assets/ModelRenderer/Art/Models/...") + string assetPath = entry.AssetPath; + if (string.IsNullOrEmpty(assetPath)) continue; + + // Remove "Assets/" prefix to get a cleaner path + string newAddress = assetPath; + if (newAddress.StartsWith("Assets/")) + { + newAddress = newAddress.Substring("Assets/".Length); + } + + // Only update if the address is different + if (newAddress != entry.address) + { + string oldAddress = entry.address; + entry.SetAddress(newAddress); + sb.AppendLine($"[{group.Name}] {oldAddress} {newAddress}"); + updatedCount++; + } + } + } + + if (updatedCount > 0) + { + settings.SetDirty(AddressableAssetSettings.ModificationEvent.EntryModified, null, true); + AssetDatabase.SaveAssets(); + } + + sb.AppendLine(); + sb.AppendLine($"Updated {updatedCount} entries."); + Debug.Log(sb.ToString()); + EditorUtility.DisplayDialog("Set Address To Asset Path", $"Updated {updatedCount} entries to use their asset paths.", "OK"); + } + + /// + /// Prints the address and GUID for all addressable assets - useful for debugging + /// + [MenuItem("Tools/Addressable/Print Address and GUID")] + public static void PrintAddressAndGUID() + { + AddressableAssetSettings settings = AddressableAssetSettingsDefaultObject.Settings; + if (settings == null) + { + Debug.LogWarning("Addressable settings not found."); + return; + } + + var sb = new StringBuilder(); + sb.AppendLine("Addressable Assets (Address GUID Path):"); + sb.AppendLine(); + + int totalCount = 0; + foreach (var group in settings.groups) + { + if (group == null) continue; + var entries = group.entries; + if (entries == null) continue; + + sb.AppendLine($"[Group: {group.Name}]"); + foreach (var entry in entries) + { + if (entry == null) continue; + sb.AppendLine($" Address: {entry.address}"); + sb.AppendLine($" GUID: {entry.guid}"); + sb.AppendLine($" Path: {entry.AssetPath}"); + sb.AppendLine(); + totalCount++; + } + } + + sb.AppendLine($"Total: {totalCount} addressable assets"); + Debug.Log(sb.ToString()); + EditorUtility.DisplayDialog("Print Address and GUID", $"Printed {totalCount} addressable assets to Console.", "OK"); + } +} +} + + diff --git a/Assets/PerfectWorld/Scripts/Utils/Editor/AddressableTools.cs.meta b/Assets/PerfectWorld/Scripts/Utils/Editor/AddressableTools.cs.meta new file mode 100644 index 0000000000..09fb2b05fe --- /dev/null +++ b/Assets/PerfectWorld/Scripts/Utils/Editor/AddressableTools.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 1921e950306294fb687b2d389794b235 \ No newline at end of file diff --git a/ProjectSettings/GraphicsSettings.asset b/ProjectSettings/GraphicsSettings.asset index 3bb036aaa3..1e8166b799 100644 --- a/ProjectSettings/GraphicsSettings.asset +++ b/ProjectSettings/GraphicsSettings.asset @@ -34,6 +34,8 @@ GraphicsSettings: - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} - {fileID: 10783, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + - {fileID: 4800000, guid: 650dd9526735d5b46b79224bc6e94025, type: 3} m_PreloadedShaders: [] m_PreloadShadersBatchTimeLimit: -1 m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} diff --git a/ProjectSettings/ScriptableBuildPipeline.json b/ProjectSettings/ScriptableBuildPipeline.json new file mode 100644 index 0000000000..dfa4f083cf --- /dev/null +++ b/ProjectSettings/ScriptableBuildPipeline.json @@ -0,0 +1,14 @@ +{ + "useBuildCacheServer": false, + "cacheServerHost": "", + "cacheServerPort": 8126, + "threadedArchiving": true, + "logCacheMiss": false, + "logAssetWarnings": true, + "slimWriteResults": true, + "maximumCacheSize": 20, + "useDetailedBuildLog": false, + "useV2Hasher": true, + "fileIDHashSeed": 0, + "prefabPackedHeaderSize": 2 +} \ No newline at end of file From 220b2220132d367092883c4eb9335245eced7463 Mon Sep 17 00:00:00 2001 From: Le Duc Anh Date: Wed, 22 Oct 2025 16:43:10 +0700 Subject: [PATCH 2/2] update subfix of addressable also --- .../AssetGroups/models.asset | 64 ++++++++-------- .../Scripts/Addressable/AddressableManager.cs | 1 + .../Scripts/Utils/Editor/AddressableTools.cs | 75 +++++++++++-------- ProjectSettings/GraphicsSettings.asset | 3 +- 4 files changed, 78 insertions(+), 65 deletions(-) diff --git a/Assets/AddressableAssetsData/AssetGroups/models.asset b/Assets/AddressableAssetsData/AssetGroups/models.asset index 4dbcfab019..f7bb3cfaf0 100644 --- a/Assets/AddressableAssetsData/AssetGroups/models.asset +++ b/Assets/AddressableAssetsData/AssetGroups/models.asset @@ -16,193 +16,193 @@ MonoBehaviour: m_GUID: af2f31e34f6644749bdd552abb39cb07 m_SerializeEntries: - m_GUID: 03e5dab5f51374e55904db72229b775e - m_Address: "models/npcs/npc/2014\u65B0\u79CD\u65CF\u9886\u8896/2014\u65B0\u79CD\u65CF\u9886\u8896/2014\u65B0\u79CD\u65CF\u9886\u8896.prefab" + m_Address: "models/npcs/npc/2014\u65B0\u79CD\u65CF\u9886\u8896/2014\u65B0\u79CD\u65CF\u9886\u8896/2014\u65B0\u79CD\u65CF\u9886\u8896.ecm" m_ReadOnly: 0 m_SerializedLabels: - models FlaggedDuringContentUpdateRestriction: 0 - m_GUID: 04e8f383637dd42a58a6a23c48c64eb5 - m_Address: "models/npcs/npc/2014\u65B0\u624B\u6751\u8D27\u90CE/2014\u65B0\u624B\u6751\u8D27\u90CE/2014\u65B0\u624B\u6751\u8D27\u90CE.prefab" + m_Address: "models/npcs/npc/2014\u65B0\u624B\u6751\u8D27\u90CE/2014\u65B0\u624B\u6751\u8D27\u90CE/2014\u65B0\u624B\u6751\u8D27\u90CE.ecm" m_ReadOnly: 0 m_SerializedLabels: - models FlaggedDuringContentUpdateRestriction: 0 - m_GUID: 09a50785f77bc43369476f9ab93a9b3a - m_Address: "models/npcs/npc/2014\u65B0\u624B\u6751\u88C1\u7F1D/2014\u65B0\u624B\u6751\u88C1\u7F1D/2014\u65B0\u624B\u6751\u88C1\u7F1D.prefab" + m_Address: "models/npcs/npc/2014\u65B0\u624B\u6751\u88C1\u7F1D/2014\u65B0\u624B\u6751\u88C1\u7F1D/2014\u65B0\u624B\u6751\u88C1\u7F1D.ecm" m_ReadOnly: 0 m_SerializedLabels: - models FlaggedDuringContentUpdateRestriction: 0 - m_GUID: 0fb08f2ce83384471ac95b41dc602ace - m_Address: "models/npcs/\u602A\u7269/2014/\u5251\u80CC\u72FC/\u5251\u80CC\u72FC/\u5251\u80CC\u72FC.prefab" + m_Address: "models/npcs/\u602A\u7269/2014/\u5251\u80CC\u72FC/\u5251\u80CC\u72FC/\u5251\u80CC\u72FC.ecm" m_ReadOnly: 0 m_SerializedLabels: - models FlaggedDuringContentUpdateRestriction: 0 - m_GUID: 12e232ba9bff147e3bc0cc208f8b78a0 - m_Address: "models/npcs/\u602A\u7269/38\u9972\u517B\u517D/\u5154\u5E7C\u5E74/\u5154\u5E7C\u5E74/\u5154\u5E7C\u5E74.prefab" + m_Address: "models/npcs/\u602A\u7269/38\u9972\u517B\u517D/\u5154\u5E7C\u5E74/\u5154\u5E7C\u5E74/\u5154\u5E7C\u5E74.ecm" m_ReadOnly: 0 m_SerializedLabels: - models FlaggedDuringContentUpdateRestriction: 0 - m_GUID: 19ef711ad91474765a847a631f5da9ca - m_Address: "models/npcs/npc/2014\u65B0\u79CD\u65CF\u5DE7\u5320/2014\u65B0\u79CD\u65CF\u5DE7\u5320/2014\u65B0\u79CD\u65CF\u5DE7\u5320.prefab" + m_Address: "models/npcs/npc/2014\u65B0\u79CD\u65CF\u5DE7\u5320/2014\u65B0\u79CD\u65CF\u5DE7\u5320/2014\u65B0\u79CD\u65CF\u5DE7\u5320.ecm" m_ReadOnly: 0 m_SerializedLabels: - models FlaggedDuringContentUpdateRestriction: 0 - m_GUID: 28a9794edd04941a6ba1ab1a6e87bbd4 - m_Address: "models/npcs/npc/2011\u5723\u7075\u4F7F\u8005/\u5723\u7075\u4F7F\u8005/\u5723\u7075\u4F7F\u8005.prefab" + m_Address: "models/npcs/npc/2011\u5723\u7075\u4F7F\u8005/\u5723\u7075\u4F7F\u8005/\u5723\u7075\u4F7F\u8005.ecm" m_ReadOnly: 0 m_SerializedLabels: - models FlaggedDuringContentUpdateRestriction: 0 - m_GUID: 39e34e0b093c74c65a24bcfa1a655c51 - m_Address: "models/npcs/npc/2014\u65B0\u624B\u6751\u5546\u57CE\u7BA1\u7406\u5458\u84DD\u8272/2014\u65B0\u624B\u6751\u5546\u57CE\u7BA1\u7406\u5458\u84DD\u8272/2014\u65B0\u624B\u6751\u5546\u57CE\u7BA1\u7406\u5458\u84DD\u8272.prefab" + m_Address: "models/npcs/npc/2014\u65B0\u624B\u6751\u5546\u57CE\u7BA1\u7406\u5458\u84DD\u8272/2014\u65B0\u624B\u6751\u5546\u57CE\u7BA1\u7406\u5458\u84DD\u8272/2014\u65B0\u624B\u6751\u5546\u57CE\u7BA1\u7406\u5458\u84DD\u8272.ecm" m_ReadOnly: 0 m_SerializedLabels: - models FlaggedDuringContentUpdateRestriction: 0 - m_GUID: 3e3944509a65042eb8a31cfb74a0edf5 - m_Address: "models/\u573A\u666F\u6D3B\u7269/2017\u79FB\u52A8\u6807\u9776\u8725\u8734/2017\u79FB\u52A8\u6807\u9776\u8725\u8734/2017\u79FB\u52A8\u6807\u9776\u8725\u8734.prefab" + m_Address: "models/\u573A\u666F\u6D3B\u7269/2017\u79FB\u52A8\u6807\u9776\u8725\u8734/2017\u79FB\u52A8\u6807\u9776\u8725\u8734/2017\u79FB\u52A8\u6807\u9776\u8725\u8734.ecm" m_ReadOnly: 0 m_SerializedLabels: - models FlaggedDuringContentUpdateRestriction: 0 - m_GUID: 46453b542df6540ae817c89b1dfff21e - m_Address: "models/npcs/npc/\u7075\u65CF\u5973\u738B/\u7075\u65CF\u5973\u738B/\u7075\u65CF\u5973\u738B.prefab" + m_Address: "models/npcs/npc/\u7075\u65CF\u5973\u738B/\u7075\u65CF\u5973\u738B/\u7075\u65CF\u5973\u738B.ecm" m_ReadOnly: 0 m_SerializedLabels: - models FlaggedDuringContentUpdateRestriction: 0 - m_GUID: 47002ca46d55c4938b9315f763d1d66c - m_Address: "models/npcs/npc/npc\u4ED9\u5973/npc\u4ED9\u5973/npc\u7FBD\u7075.prefab" + m_Address: "models/npcs/npc/npc\u4ED9\u5973/npc\u4ED9\u5973/npc\u7FBD\u7075.ecm" m_ReadOnly: 0 m_SerializedLabels: - models FlaggedDuringContentUpdateRestriction: 0 - m_GUID: 4dcc3634bebc24bebb88a7ba3e23753c - m_Address: "models/npcs/npc/2014\u62FF\u6247\u5B50\u7684\u4EBA/2014\u62FF\u6247\u5B50\u7684\u4EBA/2014\u62FF\u6247\u5B50\u7684\u4EBA.prefab" + m_Address: "models/npcs/npc/2014\u62FF\u6247\u5B50\u7684\u4EBA/2014\u62FF\u6247\u5B50\u7684\u4EBA/2014\u62FF\u6247\u5B50\u7684\u4EBA.ecm" m_ReadOnly: 0 m_SerializedLabels: - models FlaggedDuringContentUpdateRestriction: 0 - m_GUID: 576e84b3fd877477eb7f0a424f30d5df - m_Address: "models/\u573A\u666F\u6D3B\u7269/\u51E4\u7FBD\u9E7F/\u96C4\u6027\u51E4\u7FBD\u9E7F/\u96CC\u6027\u51E4\u7FBD\u9E7F.prefab" + m_Address: "models/\u573A\u666F\u6D3B\u7269/\u51E4\u7FBD\u9E7F/\u96C4\u6027\u51E4\u7FBD\u9E7F/\u96CC\u6027\u51E4\u7FBD\u9E7F.ecm" m_ReadOnly: 0 m_SerializedLabels: - models FlaggedDuringContentUpdateRestriction: 0 - m_GUID: 5e76cb69b081a4673a5816fd9da89533 - m_Address: "models/\u573A\u666F\u6D3B\u7269/\u4E09\u4E2A\u8774\u8776/\u4E09\u4E2A\u8774\u8776/\u4E09\u4E2A\u8774\u8776.prefab" + m_Address: "models/\u573A\u666F\u6D3B\u7269/\u4E09\u4E2A\u8774\u8776/\u4E09\u4E2A\u8774\u8776/\u4E09\u4E2A\u8774\u8776.ecm" m_ReadOnly: 0 m_SerializedLabels: - models FlaggedDuringContentUpdateRestriction: 0 - m_GUID: 62555210fd2944f329f43aa25b44d2c4 - m_Address: "models/npcs/npc/2014\u94B1\u5E84\u8001\u677F/2014\u94B1\u5E84\u8001\u677F/2014\u94B1\u5E84\u8001\u677F.prefab" + m_Address: "models/npcs/npc/2014\u94B1\u5E84\u8001\u677F/2014\u94B1\u5E84\u8001\u677F/2014\u94B1\u5E84\u8001\u677F.ecm" m_ReadOnly: 0 m_SerializedLabels: - models FlaggedDuringContentUpdateRestriction: 0 - m_GUID: 64b5a0083181a4d30911efb9c3059678 - m_Address: "models/npcs/npc/2011\u725B\u9996\u5996\u738B/\u725B\u9996\u5996\u738B/\u725B\u9996\u5996\u738B.prefab" + m_Address: "models/npcs/npc/2011\u725B\u9996\u5996\u738B/\u725B\u9996\u5996\u738B/\u725B\u9996\u5996\u738B.ecm" m_ReadOnly: 0 m_SerializedLabels: - models FlaggedDuringContentUpdateRestriction: 0 - m_GUID: 6858c050d424a416a9a6aed20d93a150 - m_Address: "models/npcs/\u602A\u7269/18\u72FC/\u7CBE\u7075\u72FC/a\u8EAB\u9AD8/\u7CBE\u7075\u72FC/\u8352\u539F\u7CBE\u7075\u72FC.prefab" + m_Address: "models/npcs/\u602A\u7269/18\u72FC/\u7CBE\u7075\u72FC/a\u8EAB\u9AD8/\u7CBE\u7075\u72FC/\u8352\u539F\u7CBE\u7075\u72FC.ecm" m_ReadOnly: 0 m_SerializedLabels: - models FlaggedDuringContentUpdateRestriction: 0 - m_GUID: 6be116f35d3d446c7b8d3d61ca617690 - m_Address: "models/npcs/npc/2014npc\u94C1\u5320/2014npc\u94C1\u5320/2014npc\u94C1\u5320.prefab" + m_Address: "models/npcs/npc/2014npc\u94C1\u5320/2014npc\u94C1\u5320/2014npc\u94C1\u5320.ecm" m_ReadOnly: 0 m_SerializedLabels: - models FlaggedDuringContentUpdateRestriction: 0 - m_GUID: 70f8fa699f9ed4f88b1c335f2ccbb198 - m_Address: "models/npcs/npc/2011\u6C34\u884C\u8005/\u6C34\u884C\u8005/\u6C34\u884C\u8005.prefab" + m_Address: "models/npcs/npc/2011\u6C34\u884C\u8005/\u6C34\u884C\u8005/\u6C34\u884C\u8005.ecm" m_ReadOnly: 0 m_SerializedLabels: - models FlaggedDuringContentUpdateRestriction: 0 - m_GUID: 7cc56a2fa301a46db92681b17c10d6b0 - m_Address: "models/npcs/npc/2014\u5439\u7B1B\u5B50\u7684\u4EBA\u7EA2\u8272/2014\u5439\u7B1B\u5B50\u7684\u4EBA\u7EA2\u8272/\u5439\u7B1B\u5B50\u7684\u4EBA\u7EA2\u8272\u8774\u8776.prefab" + m_Address: "models/npcs/npc/2014\u5439\u7B1B\u5B50\u7684\u4EBA\u7EA2\u8272/2014\u5439\u7B1B\u5B50\u7684\u4EBA\u7EA2\u8272/\u5439\u7B1B\u5B50\u7684\u4EBA\u7EA2\u8272\u8774\u8776.ecm" m_ReadOnly: 0 m_SerializedLabels: - models FlaggedDuringContentUpdateRestriction: 0 - m_GUID: 7daa10b47beb04798927c05cc7148951 - m_Address: "models/\u573A\u666F\u6D3B\u7269/\u677E\u9F20/\u7EA2\u8272\u677E\u9F20/\u7EFF\u8272\u677E\u9F20.prefab" + m_Address: "models/\u573A\u666F\u6D3B\u7269/\u677E\u9F20/\u7EA2\u8272\u677E\u9F20/\u7EFF\u8272\u677E\u9F20.ecm" m_ReadOnly: 0 m_SerializedLabels: - models FlaggedDuringContentUpdateRestriction: 0 - m_GUID: 91928ba4c1a3643b98bfadeb477ec8af - m_Address: "models/\u573A\u666F\u52A8\u753B\u6A21\u578B/\u65B0\u624B\u6751\u80E7\u65CF\u5EFA\u7B51/\u65B0\u624B\u6751\u80E7\u65CF\u5EFA\u7B51.prefab" + m_Address: "models/\u573A\u666F\u52A8\u753B\u6A21\u578B/\u65B0\u624B\u6751\u80E7\u65CF\u5EFA\u7B51/\u65B0\u624B\u6751\u80E7\u65CF\u5EFA\u7B51.ecm" m_ReadOnly: 0 m_SerializedLabels: - models FlaggedDuringContentUpdateRestriction: 0 - m_GUID: a32fc20843e62442ab1494d8a8e48794 - m_Address: "models/npcs/npc/2014\u65B0\u624B\u6751\u4F20\u9001\u5E08/2014\u65B0\u624B\u6751\u4F20\u9001\u5E08/2014\u65B0\u624B\u6751\u4F20\u9001\u5E08.prefab" + m_Address: "models/npcs/npc/2014\u65B0\u624B\u6751\u4F20\u9001\u5E08/2014\u65B0\u624B\u6751\u4F20\u9001\u5E08/2014\u65B0\u624B\u6751\u4F20\u9001\u5E08.ecm" m_ReadOnly: 0 m_SerializedLabels: - models FlaggedDuringContentUpdateRestriction: 0 - m_GUID: a5922b6b6f63f46e7b047300c07948fa - m_Address: "models/npcs/\u602A\u7269/2014/\u5C0F\u661F\u661F/\u5C0F\u661F\u661F/\u5C0F\u661F\u661F.prefab" + m_Address: "models/npcs/\u602A\u7269/2014/\u5C0F\u661F\u661F/\u5C0F\u661F\u661F/\u5C0F\u661F\u661F.ecm" m_ReadOnly: 0 m_SerializedLabels: - models FlaggedDuringContentUpdateRestriction: 0 - m_GUID: b058f8968d5aa4a8f9285fa891b7b9ba - m_Address: "models/npcs/npc/\u5973npc14/\u5973npc14/\u5973npc14.prefab" + m_Address: "models/npcs/npc/\u5973npc14/\u5973npc14/\u5973npc14.ecm" m_ReadOnly: 0 m_SerializedLabels: - models FlaggedDuringContentUpdateRestriction: 0 - m_GUID: b2aa264cdbd9d4fb18f8df100175f4c3 - m_Address: "models/npcs/npc/\u7537npc21/\u7537npc21/\u7537npc21.prefab" + m_Address: "models/npcs/npc/\u7537npc21/\u7537npc21/\u7537npc21.ecm" m_ReadOnly: 0 m_SerializedLabels: - models FlaggedDuringContentUpdateRestriction: 0 - m_GUID: bc0279413de8f43fb899a8761a22f4f3 - m_Address: "models/npcs/npc/2014\u6559\u4E66\u5148\u751F/2014\u6559\u4E66\u5148\u751F/2014\u6559\u4E66\u5148\u751F.prefab" + m_Address: "models/npcs/npc/2014\u6559\u4E66\u5148\u751F/2014\u6559\u4E66\u5148\u751F/2014\u6559\u4E66\u5148\u751F.ecm" m_ReadOnly: 0 m_SerializedLabels: - models FlaggedDuringContentUpdateRestriction: 0 - m_GUID: c9c25f71f361f43f1aa0510d4f96312d - m_Address: "models/\u573A\u666F\u6D3B\u7269/\u957F\u7FCE\u8D64\u7FBD\u9E1F/\u957F\u7FCE\u8D64\u7FBD\u9E1F/\u957F\u7FCE\u8D64\u7FBD\u9E1F.prefab" + m_Address: "models/\u573A\u666F\u6D3B\u7269/\u957F\u7FCE\u8D64\u7FBD\u9E1F/\u957F\u7FCE\u8D64\u7FBD\u9E1F/\u957F\u7FCE\u8D64\u7FBD\u9E1F.ecm" m_ReadOnly: 0 m_SerializedLabels: - models FlaggedDuringContentUpdateRestriction: 0 - m_GUID: d14e87db729e843a4b31c7b1065ab677 - m_Address: "models/npcs/npc/2014\u90AE\u7BB1/2014\u90AE\u7BB1/2014\u90AE\u7BB1.prefab" + m_Address: "models/npcs/npc/2014\u90AE\u7BB1/2014\u90AE\u7BB1/2014\u90AE\u7BB1.ecm" m_ReadOnly: 0 m_SerializedLabels: - models FlaggedDuringContentUpdateRestriction: 0 - m_GUID: d865ad4bc902a4a299da74aaba68e9eb - m_Address: "models/npcs/npc/2014\u836F\u5E08/2014\u836F\u5E08/2014\u836F\u5E08.prefab" + m_Address: "models/npcs/npc/2014\u836F\u5E08/2014\u836F\u5E08/2014\u836F\u5E08.ecm" m_ReadOnly: 0 m_SerializedLabels: - models FlaggedDuringContentUpdateRestriction: 0 - m_GUID: ed84be8c5044746ca895fb75aca9bc66 - m_Address: "models/npcs/npc/2014\u65B0\u624B\u6751\u5BFB\u5B9D\u4E13\u5458/2014\u65B0\u624B\u6751\u5BFB\u5B9D\u4E13\u5458/2014\u65B0\u624B\u6751\u5BFB\u5B9D\u4E13\u5458.prefab" + m_Address: "models/npcs/npc/2014\u65B0\u624B\u6751\u5BFB\u5B9D\u4E13\u5458/2014\u65B0\u624B\u6751\u5BFB\u5B9D\u4E13\u5458/2014\u65B0\u624B\u6751\u5BFB\u5B9D\u4E13\u5458.ecm" m_ReadOnly: 0 m_SerializedLabels: - models FlaggedDuringContentUpdateRestriction: 0 - m_GUID: fd4b330a3588f40a18d44e22798e3ddc - m_Address: "models/npcs/npc/\u9B45\u7075\u9996\u9886/\u9B45\u7075\u9996\u9886/\u9B45\u7075\u9996\u9886.prefab" + m_Address: "models/npcs/npc/\u9B45\u7075\u9996\u9886/\u9B45\u7075\u9996\u9886/\u9B45\u7075\u9996\u9886.ecm" m_ReadOnly: 0 m_SerializedLabels: - models diff --git a/Assets/PerfectWorld/Scripts/Addressable/AddressableManager.cs b/Assets/PerfectWorld/Scripts/Addressable/AddressableManager.cs index 6670ab8fe9..64372d9cd9 100644 --- a/Assets/PerfectWorld/Scripts/Addressable/AddressableManager.cs +++ b/Assets/PerfectWorld/Scripts/Addressable/AddressableManager.cs @@ -26,6 +26,7 @@ namespace BrewMonster.Scripts if (handle.Status == AsyncOperationStatus.Succeeded) { _isInitialized = true; + BMLogger.Log($"AddressableManager: Initialized"); } else { diff --git a/Assets/PerfectWorld/Scripts/Utils/Editor/AddressableTools.cs b/Assets/PerfectWorld/Scripts/Utils/Editor/AddressableTools.cs index d33da61689..c672d489d5 100644 --- a/Assets/PerfectWorld/Scripts/Utils/Editor/AddressableTools.cs +++ b/Assets/PerfectWorld/Scripts/Utils/Editor/AddressableTools.cs @@ -63,45 +63,56 @@ namespace BrewMonster EditorUtility.DisplayDialog("Get All Asset Name", $"Printed {totalCount} addressable assets to Console.", "OK"); } - [MenuItem("Tools/Addressable/Remove Prefix")] - public static void RemovePrefixFromAddresses() + [MenuItem("Tools/Addressable/Remove Prefix")] + public static void RemovePrefixFromAddresses() + { + AddressableAssetSettings settings = AddressableAssetSettingsDefaultObject.Settings; + if (settings == null) { - AddressableAssetSettings settings = AddressableAssetSettingsDefaultObject.Settings; - if (settings == null) - { - Debug.LogWarning("Addressable settings not found."); - return; - } + Debug.LogWarning("Addressable settings not found."); + return; + } - int updatedCount = 0; - foreach (var group in settings.groups) + int updatedCount = 0; + foreach (var group in settings.groups) + { + if (group == null) continue; + var entries = group.entries; + if (entries == null) continue; + foreach (var entry in entries) { - if (group == null) continue; - var entries = group.entries; - if (entries == null) continue; - foreach (var entry in entries) + if (entry == null) continue; + var address = entry.address; + if (string.IsNullOrEmpty(address)) continue; + + string newAddress = address; + + // Remove prefix if present + if (newAddress.StartsWith(_modelPathPrefixToRemove)) { - if (entry == null) continue; - var address = entry.address; - if (string.IsNullOrEmpty(address)) continue; - if (address.StartsWith(_modelPathPrefixToRemove)) - { - string newAddress = address.Substring(_modelPathPrefixToRemove.Length); - if (newAddress.StartsWith("/")) newAddress = newAddress.Substring(1); - if (newAddress != address) - { - entry.SetAddress(newAddress); - updatedCount++; - } - } + newAddress = newAddress.Substring(_modelPathPrefixToRemove.Length); + if (newAddress.StartsWith("/")) newAddress = newAddress.Substring(1); + } + + // Change suffix from .prefab to .ecm if applicable + if (newAddress.EndsWith(".prefab")) + { + newAddress = newAddress.Substring(0, newAddress.Length - ".prefab".Length) + ".ecm"; + } + + if (newAddress != address) + { + entry.SetAddress(newAddress); + updatedCount++; } } + } - if (updatedCount > 0) - { - EditorUtility.SetDirty(settings); - AssetDatabase.SaveAssets(); - } + if (updatedCount > 0) + { + EditorUtility.SetDirty(settings); + AssetDatabase.SaveAssets(); + } Debug.Log($"Remove Prefix: Updated {updatedCount} entries."); EditorUtility.DisplayDialog("Remove Prefix", $"Updated {updatedCount} entries.", "OK"); diff --git a/ProjectSettings/GraphicsSettings.asset b/ProjectSettings/GraphicsSettings.asset index 1e8166b799..e14e8ecba1 100644 --- a/ProjectSettings/GraphicsSettings.asset +++ b/ProjectSettings/GraphicsSettings.asset @@ -36,7 +36,8 @@ GraphicsSettings: - {fileID: 10783, guid: 0000000000000000f000000000000000, type: 0} - {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} - {fileID: 4800000, guid: 650dd9526735d5b46b79224bc6e94025, type: 3} - m_PreloadedShaders: [] + m_PreloadedShaders: + - {fileID: 0} m_PreloadShadersBatchTimeLimit: -1 m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} m_CustomRenderPipeline: {fileID: 11400000, guid: 4b83569d67af61e458304325a23e5dfd, type: 2}