├── .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 │ │ ├── Localization-Assets-Shared.asset │ │ ├── Localization-Assets-Shared.asset.meta │ │ ├── Localization-Locales.asset │ │ ├── Localization-Locales.asset.meta │ │ ├── Localization-String-Tables-Chinese (Simplified) (zh-Hans).asset │ │ ├── Localization-String-Tables-Chinese (Simplified) (zh-Hans).asset.meta │ │ ├── Localization-String-Tables-English (en).asset │ │ ├── Localization-String-Tables-English (en).asset.meta │ │ ├── Localization-String-Tables-French (fr).asset │ │ ├── Localization-String-Tables-French (fr).asset.meta │ │ ├── Localization-String-Tables-Japanese (ja).asset │ │ ├── Localization-String-Tables-Japanese (ja).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 │ │ │ ├── Localization-Assets-Shared_BundledAssetGroupSchema.asset │ │ │ ├── Localization-Assets-Shared_BundledAssetGroupSchema.asset.meta │ │ │ ├── Localization-Assets-Shared_ContentUpdateGroupSchema.asset │ │ │ ├── Localization-Assets-Shared_ContentUpdateGroupSchema.asset.meta │ │ │ ├── Localization-Locales_BundledAssetGroupSchema.asset │ │ │ ├── Localization-Locales_BundledAssetGroupSchema.asset.meta │ │ │ ├── Localization-Locales_ContentUpdateGroupSchema.asset │ │ │ ├── Localization-Locales_ContentUpdateGroupSchema.asset.meta │ │ │ ├── Localization-String-Tables-Chinese (Simplified) (zh-Hans)_BundledAssetGroupSchema.asset │ │ │ ├── Localization-String-Tables-Chinese (Simplified) (zh-Hans)_BundledAssetGroupSchema.asset.meta │ │ │ ├── Localization-String-Tables-Chinese (Simplified) (zh-Hans)_ContentUpdateGroupSchema.asset │ │ │ ├── Localization-String-Tables-Chinese (Simplified) (zh-Hans)_ContentUpdateGroupSchema.asset.meta │ │ │ ├── Localization-String-Tables-English (en)_BundledAssetGroupSchema.asset │ │ │ ├── Localization-String-Tables-English (en)_BundledAssetGroupSchema.asset.meta │ │ │ ├── Localization-String-Tables-English (en)_ContentUpdateGroupSchema.asset │ │ │ ├── Localization-String-Tables-English (en)_ContentUpdateGroupSchema.asset.meta │ │ │ ├── Localization-String-Tables-French (fr)_BundledAssetGroupSchema.asset │ │ │ ├── Localization-String-Tables-French (fr)_BundledAssetGroupSchema.asset.meta │ │ │ ├── Localization-String-Tables-French (fr)_ContentUpdateGroupSchema.asset │ │ │ ├── Localization-String-Tables-French (fr)_ContentUpdateGroupSchema.asset.meta │ │ │ ├── Localization-String-Tables-Japanese (ja)_BundledAssetGroupSchema.asset │ │ │ ├── Localization-String-Tables-Japanese (ja)_BundledAssetGroupSchema.asset.meta │ │ │ ├── Localization-String-Tables-Japanese (ja)_ContentUpdateGroupSchema.asset │ │ │ └── Localization-String-Tables-Japanese (ja)_ContentUpdateGroupSchema.asset.meta │ ├── DataBuilders.meta │ ├── DataBuilders │ │ ├── BuildScriptFastMode.asset │ │ ├── BuildScriptFastMode.asset.meta │ │ ├── BuildScriptPackedMode.asset │ │ ├── BuildScriptPackedMode.asset.meta │ │ ├── BuildScriptPackedPlayMode.asset │ │ ├── BuildScriptPackedPlayMode.asset.meta │ │ ├── BuildScriptVirtualMode.asset │ │ └── BuildScriptVirtualMode.asset.meta │ ├── DefaultObject.asset │ └── DefaultObject.asset.meta ├── GptLocalization.meta ├── GptLocalization │ ├── Editor.meta │ ├── Editor │ │ ├── GptLocalization.asmdef │ │ ├── GptLocalization.asmdef.meta │ │ ├── LocalizeGptWindow.meta │ │ ├── LocalizeGptWindow │ │ │ ├── LocalizeGptWindow.GUI.cs │ │ │ ├── LocalizeGptWindow.GUI.cs.meta │ │ │ ├── LocalizeGptWindow.Progress.cs │ │ │ ├── LocalizeGptWindow.Progress.cs.meta │ │ │ ├── LocalizeGptWindow.Record.cs │ │ │ ├── LocalizeGptWindow.Record.cs.meta │ │ │ ├── LocalizeGptWindow.StringTable.cs │ │ │ ├── LocalizeGptWindow.StringTable.cs.meta │ │ │ ├── LocalizeGptWindow.Translate.cs │ │ │ ├── LocalizeGptWindow.Translate.cs.meta │ │ │ ├── LocalizeGptWindow.cs │ │ │ └── LocalizeGptWindow.cs.meta │ │ ├── OpenAI-Unity.meta │ │ ├── OpenAI-Unity │ │ │ ├── Configuration.cs │ │ │ ├── Configuration.cs.meta │ │ │ ├── DataTypes.cs │ │ │ ├── DataTypes.cs.meta │ │ │ ├── Interfaces.meta │ │ │ ├── Interfaces │ │ │ │ ├── IResponse.cs │ │ │ │ └── IResponse.cs.meta │ │ │ ├── OpenAIApi.cs │ │ │ ├── OpenAIApi.cs.meta │ │ │ ├── Utils.meta │ │ │ └── Utils │ │ │ │ ├── CustomNamingStrategy.cs │ │ │ │ ├── CustomNamingStrategy.cs.meta │ │ │ │ ├── ExtensionMethods.cs │ │ │ │ └── ExtensionMethods.cs.meta │ │ ├── Utils.meta │ │ └── Utils │ │ │ ├── SimpleEditorTableView.cs │ │ │ └── SimpleEditorTableView.cs.meta │ ├── Intro.gif │ ├── Intro.gif.meta │ ├── LICENSE.md │ ├── LICENSE.md.meta │ ├── Metadata.jpg │ ├── Metadata.jpg.meta │ ├── README.md │ ├── README.md.meta │ ├── README_CN.md │ ├── README_CN.md.meta │ ├── Screenshot.png │ ├── Screenshot.png.meta │ ├── package.json │ └── package.json.meta ├── Scenes.meta ├── Scenes │ ├── SampleScene.unity │ └── SampleScene.unity.meta ├── Settings.meta └── Settings │ ├── Chinese (Simplified) (zh-Hans).asset │ ├── Chinese (Simplified) (zh-Hans).asset.meta │ ├── English (en).asset │ ├── English (en).asset.meta │ ├── French (fr).asset │ ├── French (fr).asset.meta │ ├── GameStrings Shared Data.asset │ ├── GameStrings Shared Data.asset.meta │ ├── GameStrings_en.asset │ ├── GameStrings_en.asset.meta │ ├── GameStrings_fr.asset │ ├── GameStrings_fr.asset.meta │ ├── GameStrings_ja.asset │ ├── GameStrings_ja.asset.meta │ ├── GameStrings_zh-Hans.asset │ ├── GameStrings_zh-Hans.asset.meta │ ├── Japanese (ja).asset │ ├── Japanese (ja).asset.meta │ ├── Localization Settings.asset │ ├── Localization Settings.asset.meta │ ├── TestStringCollection Shared Data.asset │ ├── TestStringCollection Shared Data.asset.meta │ ├── TestStringCollection.asset │ ├── TestStringCollection.asset.meta │ ├── TestStringCollection_en.asset │ ├── TestStringCollection_en.asset.meta │ ├── TestStringCollection_fr.asset │ ├── TestStringCollection_fr.asset.meta │ ├── TestStringCollection_ja.asset │ ├── TestStringCollection_ja.asset.meta │ ├── TestStringCollection_zh-Hans.asset │ └── TestStringCollection_zh-Hans.asset.meta ├── Images └── Intro.gif ├── Intro.gif ├── Metadata.jpg ├── Packages ├── manifest.json └── packages-lock.json ├── ProjectSettings ├── AudioManager.asset ├── ClusterInputManager.asset ├── DynamicsManager.asset ├── EditorBuildSettings.asset ├── EditorSettings.asset ├── GraphicsSettings.asset ├── InputManager.asset ├── MemorySettings.asset ├── NavMeshAreas.asset ├── PackageManagerSettings.asset ├── Packages │ └── com.unity.testtools.codecoverage │ │ └── Settings.json ├── Physics2DSettings.asset ├── PresetManager.asset ├── ProjectSettings.asset ├── ProjectVersion.txt ├── QualitySettings.asset ├── TagManager.asset ├── TimeManager.asset ├── UnityConnectSettings.asset ├── VFXManager.asset ├── VersionControlSettings.asset └── XRSettings.asset ├── README.md ├── README_CN.md └── Screenshot.png /.gitignore: -------------------------------------------------------------------------------- 1 | /[Ll]ibrary/ 2 | /[Tt]emp/ 3 | /[Oo]bj/ 4 | /[Bb]uild/ 5 | /[Bb]uilds/ 6 | /Assets/AssetStoreTools* 7 | 8 | # Visual Studio 2015 cache directory 9 | /.vs/ 10 | 11 | # Autogenerated VS/MD/Consulo solution and project files 12 | ExportedObj/ 13 | .consulo/ 14 | *.csproj 15 | *.unityproj 16 | *.sln 17 | *.suo 18 | *.tmp 19 | *.user 20 | *.userprefs 21 | *.pidb 22 | *.booproj 23 | *.svd 24 | *.pdb 25 | 26 | # Unity3D generated meta files 27 | *.pidb.meta 28 | 29 | # Unity3D Generated File On Crash Reports 30 | sysinfo.txt 31 | 32 | # Builds 33 | *.apk 34 | *.unitypackage 35 | .idea 36 | *.symbols.zip 37 | -------------------------------------------------------------------------------- /Assets/AddressableAssetsData.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5a385b28a350340a9901b5e6f2bc9124 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: 77de438736d5842cab275f08a65a1112 16 | m_currentHash: 17 | serializedVersion: 2 18 | Hash: 00000000000000000000000000000000 19 | m_OptimizeCatalogSize: 0 20 | m_BuildRemoteCatalog: 0 21 | m_BundleLocalCatalog: 0 22 | m_CatalogRequestsTimeout: 0 23 | m_DisableCatalogUpdateOnStart: 0 24 | m_IgnoreUnsupportedFilesInBuild: 0 25 | m_UniqueBundleIds: 0 26 | m_NonRecursiveBuilding: 1 27 | m_CCDEnabled: 0 28 | m_maxConcurrentWebRequests: 3 29 | m_ContiguousBundles: 1 30 | m_StripUnityVersionFromBundleBuild: 0 31 | m_DisableVisibleSubAssetRepresentations: 0 32 | m_ShaderBundleNaming: 0 33 | m_ShaderBundleCustomNaming: 34 | m_MonoScriptBundleNaming: 0 35 | m_CheckForContentUpdateRestrictionsOption: 0 36 | m_MonoScriptBundleCustomNaming: 37 | m_RemoteCatalogBuildPath: 38 | m_Id: 39 | m_RemoteCatalogLoadPath: 40 | m_Id: 41 | m_ContentStateBuildPathProfileVariableName: 42 | m_CustomContentStateBuildPath: 43 | m_ContentStateBuildPath: 44 | m_BuildAddressablesWithPlayerBuild: 0 45 | m_overridePlayerVersion: '[UnityEditor.PlayerSettings.bundleVersion]' 46 | m_GroupAssets: 47 | - {fileID: 11400000, guid: 2ad0a24f6cbd04737bbac462da290026, type: 2} 48 | - {fileID: 11400000, guid: b256ea61cc77c4e9599393293218682f, type: 2} 49 | - {fileID: 11400000, guid: b5edb62e48ca74340bb7ec35bc42ac43, type: 2} 50 | - {fileID: 11400000, guid: c2a46f4a6becc4f3d8edab8ee47d5961, type: 2} 51 | - {fileID: 11400000, guid: ec094127a9f374bd6a8bffb88622fea1, type: 2} 52 | - {fileID: 11400000, guid: dcdc9ceda6302450c9c9fca4e29b6135, type: 2} 53 | - {fileID: 11400000, guid: 3a6a9029b0ba2423bb1f8be4a8a09b6c, type: 2} 54 | - {fileID: 11400000, guid: 001edb5f650784be799c3f1628cd1d04, type: 2} 55 | m_BuildSettings: 56 | m_CompileScriptsInVirtualMode: 0 57 | m_CleanupStreamingAssetsAfterBuilds: 1 58 | m_LogResourceManagerExceptions: 1 59 | m_BundleBuildPath: Temp/com.unity.addressables/AssetBundles 60 | m_ProfileSettings: 61 | m_Profiles: 62 | - m_InheritedParent: 63 | m_Id: da5c59a20bb5840f4b96da641bedd213 64 | m_ProfileName: Default 65 | m_Values: 66 | - m_Id: 35e6cb95e1afd4aeb942d1ee939515fa 67 | m_Value: '[UnityEditor.EditorUserBuildSettings.activeBuildTarget]' 68 | - m_Id: f649cec108a144e87abb961b50f0f318 69 | m_Value: '[UnityEngine.AddressableAssets.Addressables.BuildPath]/[BuildTarget]' 70 | - m_Id: 1e116fa28fb6248feb9a4ff0aef36d39 71 | m_Value: '{UnityEngine.AddressableAssets.Addressables.RuntimePath}/[BuildTarget]' 72 | - m_Id: 061f250cfadb9441791121d3e604e2f4 73 | m_Value: ServerData/[BuildTarget] 74 | - m_Id: 0cfd3fbc40aa543a4aaad0ef62e0989c 75 | m_Value: http://[PrivateIpAddress]:[HostingServicePort] 76 | m_ProfileEntryNames: 77 | - m_Id: 35e6cb95e1afd4aeb942d1ee939515fa 78 | m_Name: BuildTarget 79 | m_InlineUsage: 0 80 | - m_Id: f649cec108a144e87abb961b50f0f318 81 | m_Name: Local.BuildPath 82 | m_InlineUsage: 0 83 | - m_Id: 1e116fa28fb6248feb9a4ff0aef36d39 84 | m_Name: Local.LoadPath 85 | m_InlineUsage: 0 86 | - m_Id: 061f250cfadb9441791121d3e604e2f4 87 | m_Name: Remote.BuildPath 88 | m_InlineUsage: 0 89 | - m_Id: 0cfd3fbc40aa543a4aaad0ef62e0989c 90 | m_Name: Remote.LoadPath 91 | m_InlineUsage: 0 92 | m_ProfileVersion: 1 93 | m_LabelTable: 94 | m_LabelNames: 95 | - default 96 | - Locale 97 | - Locale-zh-Hans 98 | - Locale-en 99 | - Locale-fr 100 | - Locale-ja 101 | m_SchemaTemplates: [] 102 | m_GroupTemplateObjects: 103 | - {fileID: 11400000, guid: bd60c94b86ac6460884b98de153b608c, type: 2} 104 | m_InitializationObjects: [] 105 | m_CertificateHandlerType: 106 | m_AssemblyName: 107 | m_ClassName: 108 | m_ActivePlayerDataBuilderIndex: 3 109 | m_DataBuilders: 110 | - {fileID: 11400000, guid: 5226cd5de7df54a26939e4f660baea5d, type: 2} 111 | - {fileID: 11400000, guid: f5869d5dd9dfe4a298efa4ec15893ff0, type: 2} 112 | - {fileID: 11400000, guid: 62afaf1eaa47049b4a4b27bb62eb12e2, type: 2} 113 | - {fileID: 11400000, guid: 931f4ee03d3ed4f59957382e89acf444, type: 2} 114 | m_ActiveProfileId: da5c59a20bb5840f4b96da641bedd213 115 | m_HostingServicesManager: 116 | m_HostingServiceInfos: [] 117 | m_Settings: {fileID: 11400000} 118 | m_NextInstanceId: 0 119 | m_RegisteredServiceTypeRefs: [] 120 | m_PingTimeoutInMilliseconds: 5000 121 | -------------------------------------------------------------------------------- /Assets/AddressableAssetsData/AddressableAssetSettings.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b28cc5faf5bd644dd9374d7d8d1fcdf9 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/AddressableAssetsData/AssetGroupTemplates.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 999670f85e156450d9a7be856742ef9d 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 &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: 1a3c5d64ac83548c09dd1678b9f6f1cd, type: 3} 13 | m_Name: Packed Assets 14 | m_EditorClassIdentifier: 15 | m_SchemaObjects: 16 | - {fileID: 5874006550429839771} 17 | - {fileID: 7028131715371519183} 18 | m_Description: Pack assets into asset bundles. 19 | m_Settings: {fileID: 11400000, guid: b28cc5faf5bd644dd9374d7d8d1fcdf9, type: 2} 20 | --- !u!114 &5874006550429839771 21 | MonoBehaviour: 22 | m_ObjectHideFlags: 1 23 | m_CorrespondingSourceObject: {fileID: 0} 24 | m_PrefabInstance: {fileID: 0} 25 | m_PrefabAsset: {fileID: 0} 26 | m_GameObject: {fileID: 0} 27 | m_Enabled: 1 28 | m_EditorHideFlags: 0 29 | m_Script: {fileID: 11500000, guid: e5d17a21594effb4e9591490b009e7aa, type: 3} 30 | m_Name: BundledAssetGroupSchema 31 | m_EditorClassIdentifier: 32 | m_Group: {fileID: 0} 33 | m_InternalBundleIdMode: 1 34 | m_Compression: 1 35 | m_IncludeAddressInCatalog: 1 36 | m_IncludeGUIDInCatalog: 1 37 | m_IncludeLabelsInCatalog: 1 38 | m_InternalIdNamingMode: 0 39 | m_CacheClearBehavior: 0 40 | m_IncludeInBuild: 1 41 | m_BundledAssetProviderType: 42 | m_AssemblyName: 43 | m_ClassName: 44 | m_ForceUniqueProvider: 0 45 | m_UseAssetBundleCache: 1 46 | m_UseAssetBundleCrc: 1 47 | m_UseAssetBundleCrcForCachedBundles: 1 48 | m_UseUWRForLocalBundles: 0 49 | m_Timeout: 0 50 | m_ChunkedTransfer: 0 51 | m_RedirectLimit: -1 52 | m_RetryCount: 0 53 | m_BuildPath: 54 | m_Id: 55 | m_LoadPath: 56 | m_Id: 57 | m_BundleMode: 0 58 | m_AssetBundleProviderType: 59 | m_AssemblyName: 60 | m_ClassName: 61 | m_BundleNaming: 0 62 | m_AssetLoadMode: 0 63 | --- !u!114 &7028131715371519183 64 | MonoBehaviour: 65 | m_ObjectHideFlags: 1 66 | m_CorrespondingSourceObject: {fileID: 0} 67 | m_PrefabInstance: {fileID: 0} 68 | m_PrefabAsset: {fileID: 0} 69 | m_GameObject: {fileID: 0} 70 | m_Enabled: 1 71 | m_EditorHideFlags: 0 72 | m_Script: {fileID: 11500000, guid: 5834b5087d578d24c926ce20cd31e6d6, type: 3} 73 | m_Name: ContentUpdateGroupSchema 74 | m_EditorClassIdentifier: 75 | m_Group: {fileID: 0} 76 | m_StaticContent: 0 77 | -------------------------------------------------------------------------------- /Assets/AddressableAssetsData/AssetGroupTemplates/Packed Assets.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bd60c94b86ac6460884b98de153b608c 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/AddressableAssetsData/AssetGroups.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8c256a3224b654d889c70720fbddc5fa 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: bfed343341f4446398a17a4318e6e590 19 | m_SerializeEntries: 20 | - m_GUID: Resources 21 | m_Address: Resources 22 | m_ReadOnly: 1 23 | m_SerializedLabels: [] 24 | FlaggedDuringContentUpdateRestriction: 0 25 | - m_GUID: EditorSceneList 26 | m_Address: EditorSceneList 27 | m_ReadOnly: 1 28 | m_SerializedLabels: [] 29 | FlaggedDuringContentUpdateRestriction: 0 30 | m_ReadOnly: 1 31 | m_Settings: {fileID: 11400000, guid: b28cc5faf5bd644dd9374d7d8d1fcdf9, type: 2} 32 | m_SchemaSet: 33 | m_Schemas: 34 | - {fileID: 11400000, guid: ef2a5e4ec818d43788540674441e3285, type: 2} 35 | -------------------------------------------------------------------------------- /Assets/AddressableAssetsData/AssetGroups/Built In Data.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2ad0a24f6cbd04737bbac462da290026 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: 77de438736d5842cab275f08a65a1112 19 | m_SerializeEntries: [] 20 | m_ReadOnly: 0 21 | m_Settings: {fileID: 11400000, guid: b28cc5faf5bd644dd9374d7d8d1fcdf9, type: 2} 22 | m_SchemaSet: 23 | m_Schemas: 24 | - {fileID: 11400000, guid: 81b4723b11b574d8aa801e433b0ebbf8, type: 2} 25 | - {fileID: 11400000, guid: a6ea04c624ca443519f31e4df65cb550, type: 2} 26 | -------------------------------------------------------------------------------- /Assets/AddressableAssetsData/AssetGroups/Default Local Group.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b256ea61cc77c4e9599393293218682f 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/AddressableAssetsData/AssetGroups/Localization-Assets-Shared.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: Localization-Assets-Shared 14 | m_EditorClassIdentifier: 15 | m_GroupName: Localization-Assets-Shared 16 | m_Data: 17 | m_SerializedData: [] 18 | m_GUID: a7cf6f829426e410886401dab4a16726 19 | m_SerializeEntries: 20 | - m_GUID: aaf7fd18648d14b7f94e6e12ae56cf30 21 | m_Address: Assets/Settings/GameStrings Shared Data.asset 22 | m_ReadOnly: 1 23 | m_SerializedLabels: [] 24 | FlaggedDuringContentUpdateRestriction: 0 25 | - m_GUID: 88630988c8f454fdab8f154122f4ee1f 26 | m_Address: Assets/Settings/TestStringCollection Shared Data.asset 27 | m_ReadOnly: 1 28 | m_SerializedLabels: [] 29 | FlaggedDuringContentUpdateRestriction: 0 30 | m_ReadOnly: 1 31 | m_Settings: {fileID: 11400000, guid: b28cc5faf5bd644dd9374d7d8d1fcdf9, type: 2} 32 | m_SchemaSet: 33 | m_Schemas: 34 | - {fileID: 11400000, guid: 7fa16150f5c44445e9878f61186d3fa7, type: 2} 35 | - {fileID: 11400000, guid: 58e4d44db103f4a478f3ee24f6de98ab, type: 2} 36 | -------------------------------------------------------------------------------- /Assets/AddressableAssetsData/AssetGroups/Localization-Assets-Shared.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c2a46f4a6becc4f3d8edab8ee47d5961 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/AddressableAssetsData/AssetGroups/Localization-Locales.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: Localization-Locales 14 | m_EditorClassIdentifier: 15 | m_GroupName: Localization-Locales 16 | m_Data: 17 | m_SerializedData: [] 18 | m_GUID: 1330a0d253e9a44a5a2a5c9e8f55f682 19 | m_SerializeEntries: 20 | - m_GUID: 276dffb04886c4675901a07f46225ee2 21 | m_Address: Chinese (Simplified) (zh-Hans) 22 | m_ReadOnly: 1 23 | m_SerializedLabels: 24 | - Locale 25 | FlaggedDuringContentUpdateRestriction: 0 26 | - m_GUID: e54bfe145472e4607b54173d7614a6d6 27 | m_Address: English (en) 28 | m_ReadOnly: 1 29 | m_SerializedLabels: 30 | - Locale 31 | FlaggedDuringContentUpdateRestriction: 0 32 | - m_GUID: 79e09439b5a7e4d269b832f4a307e26e 33 | m_Address: French (fr) 34 | m_ReadOnly: 1 35 | m_SerializedLabels: 36 | - Locale 37 | FlaggedDuringContentUpdateRestriction: 0 38 | - m_GUID: 7916ee1cd9f5b47fd933870fb190896b 39 | m_Address: Japanese (ja) 40 | m_ReadOnly: 1 41 | m_SerializedLabels: 42 | - Locale 43 | FlaggedDuringContentUpdateRestriction: 0 44 | m_ReadOnly: 1 45 | m_Settings: {fileID: 11400000, guid: b28cc5faf5bd644dd9374d7d8d1fcdf9, type: 2} 46 | m_SchemaSet: 47 | m_Schemas: 48 | - {fileID: 11400000, guid: de1c8845778a542bd96921ce80024b5e, type: 2} 49 | - {fileID: 11400000, guid: 1ce3e00a0886f494fa121ff839567efc, type: 2} 50 | -------------------------------------------------------------------------------- /Assets/AddressableAssetsData/AssetGroups/Localization-Locales.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b5edb62e48ca74340bb7ec35bc42ac43 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/AddressableAssetsData/AssetGroups/Localization-String-Tables-Chinese (Simplified) (zh-Hans).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: Localization-String-Tables-Chinese (Simplified) (zh-Hans) 14 | m_EditorClassIdentifier: 15 | m_GroupName: Localization-String-Tables-Chinese (Simplified) (zh-Hans) 16 | m_Data: 17 | m_SerializedData: [] 18 | m_GUID: e913efb72b2294d49b48c167cd9eafe7 19 | m_SerializeEntries: 20 | - m_GUID: 26f60b979c3e34887b13930fc1b0ee4d 21 | m_Address: TestStringCollection_zh-Hans 22 | m_ReadOnly: 1 23 | m_SerializedLabels: 24 | - Locale-zh-Hans 25 | FlaggedDuringContentUpdateRestriction: 0 26 | m_ReadOnly: 1 27 | m_Settings: {fileID: 11400000, guid: b28cc5faf5bd644dd9374d7d8d1fcdf9, type: 2} 28 | m_SchemaSet: 29 | m_Schemas: 30 | - {fileID: 11400000, guid: 97e951de1653a4f7e950086bc0500530, type: 2} 31 | - {fileID: 11400000, guid: d9cf55f9e67254779b44e278714eceda, type: 2} 32 | -------------------------------------------------------------------------------- /Assets/AddressableAssetsData/AssetGroups/Localization-String-Tables-Chinese (Simplified) (zh-Hans).asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ec094127a9f374bd6a8bffb88622fea1 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/AddressableAssetsData/AssetGroups/Localization-String-Tables-English (en).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: Localization-String-Tables-English (en) 14 | m_EditorClassIdentifier: 15 | m_GroupName: Localization-String-Tables-English (en) 16 | m_Data: 17 | m_SerializedData: [] 18 | m_GUID: 3d405effb2f0448c5b1207b47602db31 19 | m_SerializeEntries: 20 | - m_GUID: b67ccf21dd2624310a079ccce8d99d4d 21 | m_Address: TestStringCollection_en 22 | m_ReadOnly: 1 23 | m_SerializedLabels: 24 | - Locale-en 25 | FlaggedDuringContentUpdateRestriction: 0 26 | m_ReadOnly: 1 27 | m_Settings: {fileID: 11400000, guid: b28cc5faf5bd644dd9374d7d8d1fcdf9, type: 2} 28 | m_SchemaSet: 29 | m_Schemas: 30 | - {fileID: 11400000, guid: f9966108dd3b94f719bd7094bc867595, type: 2} 31 | - {fileID: 11400000, guid: 177cf17869ce34048b958cfca18e54cd, type: 2} 32 | -------------------------------------------------------------------------------- /Assets/AddressableAssetsData/AssetGroups/Localization-String-Tables-English (en).asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dcdc9ceda6302450c9c9fca4e29b6135 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/AddressableAssetsData/AssetGroups/Localization-String-Tables-French (fr).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: Localization-String-Tables-French (fr) 14 | m_EditorClassIdentifier: 15 | m_GroupName: Localization-String-Tables-French (fr) 16 | m_Data: 17 | m_SerializedData: [] 18 | m_GUID: 597113726381f48e888f15d9b9792401 19 | m_SerializeEntries: 20 | - m_GUID: e106fd76cb186437a8d036be83e424bb 21 | m_Address: TestStringCollection_fr 22 | m_ReadOnly: 1 23 | m_SerializedLabels: 24 | - Locale-fr 25 | FlaggedDuringContentUpdateRestriction: 0 26 | m_ReadOnly: 1 27 | m_Settings: {fileID: 11400000, guid: b28cc5faf5bd644dd9374d7d8d1fcdf9, type: 2} 28 | m_SchemaSet: 29 | m_Schemas: 30 | - {fileID: 11400000, guid: 036cd2f1058af434597fc4aea084bd35, type: 2} 31 | - {fileID: 11400000, guid: 0bb30f023bcf54f6db16bc0a0ececebe, type: 2} 32 | -------------------------------------------------------------------------------- /Assets/AddressableAssetsData/AssetGroups/Localization-String-Tables-French (fr).asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3a6a9029b0ba2423bb1f8be4a8a09b6c 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/AddressableAssetsData/AssetGroups/Localization-String-Tables-Japanese (ja).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: Localization-String-Tables-Japanese (ja) 14 | m_EditorClassIdentifier: 15 | m_GroupName: Localization-String-Tables-Japanese (ja) 16 | m_Data: 17 | m_SerializedData: [] 18 | m_GUID: 77c40ba446dee444d873afc9a0206350 19 | m_SerializeEntries: 20 | - m_GUID: 589e02935f86c4cf0a8d01504c94b145 21 | m_Address: TestStringCollection_ja 22 | m_ReadOnly: 1 23 | m_SerializedLabels: 24 | - Locale-ja 25 | FlaggedDuringContentUpdateRestriction: 0 26 | m_ReadOnly: 1 27 | m_Settings: {fileID: 11400000, guid: b28cc5faf5bd644dd9374d7d8d1fcdf9, type: 2} 28 | m_SchemaSet: 29 | m_Schemas: 30 | - {fileID: 11400000, guid: a3fd1f9e0b83f4de88fe1a244eb0ad74, type: 2} 31 | - {fileID: 11400000, guid: 5b6e771361bfb4205ab77e5fb1f9714f, type: 2} 32 | -------------------------------------------------------------------------------- /Assets/AddressableAssetsData/AssetGroups/Localization-String-Tables-Japanese (ja).asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 001edb5f650784be799c3f1628cd1d04 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/AddressableAssetsData/AssetGroups/Schemas.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 187b7d58fc2084a6989efd0f97181b69 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: 2ad0a24f6cbd04737bbac462da290026, 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: ef2a5e4ec818d43788540674441e3285 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: b256ea61cc77c4e9599393293218682f, 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: f649cec108a144e87abb961b50f0f318 38 | m_LoadPath: 39 | m_Id: 1e116fa28fb6248feb9a4ff0aef36d39 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/Default Local Group_BundledAssetGroupSchema.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a6ea04c624ca443519f31e4df65cb550 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: b256ea61cc77c4e9599393293218682f, type: 2} 16 | m_StaticContent: 0 17 | -------------------------------------------------------------------------------- /Assets/AddressableAssetsData/AssetGroups/Schemas/Default Local Group_ContentUpdateGroupSchema.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 81b4723b11b574d8aa801e433b0ebbf8 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/AddressableAssetsData/AssetGroups/Schemas/Localization-Assets-Shared_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: Localization-Assets-Shared_BundledAssetGroupSchema 14 | m_EditorClassIdentifier: 15 | m_Group: {fileID: 11400000, guid: c2a46f4a6becc4f3d8edab8ee47d5961, 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: f649cec108a144e87abb961b50f0f318 38 | m_LoadPath: 39 | m_Id: 1e116fa28fb6248feb9a4ff0aef36d39 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: 1 45 | m_AssetLoadMode: 0 46 | -------------------------------------------------------------------------------- /Assets/AddressableAssetsData/AssetGroups/Schemas/Localization-Assets-Shared_BundledAssetGroupSchema.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7fa16150f5c44445e9878f61186d3fa7 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/AddressableAssetsData/AssetGroups/Schemas/Localization-Assets-Shared_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: Localization-Assets-Shared_ContentUpdateGroupSchema 14 | m_EditorClassIdentifier: 15 | m_Group: {fileID: 11400000, guid: c2a46f4a6becc4f3d8edab8ee47d5961, type: 2} 16 | m_StaticContent: 0 17 | -------------------------------------------------------------------------------- /Assets/AddressableAssetsData/AssetGroups/Schemas/Localization-Assets-Shared_ContentUpdateGroupSchema.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 58e4d44db103f4a478f3ee24f6de98ab 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/AddressableAssetsData/AssetGroups/Schemas/Localization-Locales_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: Localization-Locales_BundledAssetGroupSchema 14 | m_EditorClassIdentifier: 15 | m_Group: {fileID: 11400000, guid: b5edb62e48ca74340bb7ec35bc42ac43, 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: f649cec108a144e87abb961b50f0f318 38 | m_LoadPath: 39 | m_Id: 1e116fa28fb6248feb9a4ff0aef36d39 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: 1 45 | m_AssetLoadMode: 0 46 | -------------------------------------------------------------------------------- /Assets/AddressableAssetsData/AssetGroups/Schemas/Localization-Locales_BundledAssetGroupSchema.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: de1c8845778a542bd96921ce80024b5e 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/AddressableAssetsData/AssetGroups/Schemas/Localization-Locales_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: Localization-Locales_ContentUpdateGroupSchema 14 | m_EditorClassIdentifier: 15 | m_Group: {fileID: 11400000, guid: b5edb62e48ca74340bb7ec35bc42ac43, type: 2} 16 | m_StaticContent: 0 17 | -------------------------------------------------------------------------------- /Assets/AddressableAssetsData/AssetGroups/Schemas/Localization-Locales_ContentUpdateGroupSchema.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1ce3e00a0886f494fa121ff839567efc 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/AddressableAssetsData/AssetGroups/Schemas/Localization-String-Tables-Chinese (Simplified) (zh-Hans)_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: Localization-String-Tables-Chinese (Simplified) (zh-Hans)_BundledAssetGroupSchema 14 | m_EditorClassIdentifier: 15 | m_Group: {fileID: 11400000, guid: ec094127a9f374bd6a8bffb88622fea1, 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: f649cec108a144e87abb961b50f0f318 38 | m_LoadPath: 39 | m_Id: 1e116fa28fb6248feb9a4ff0aef36d39 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: 1 45 | m_AssetLoadMode: 0 46 | -------------------------------------------------------------------------------- /Assets/AddressableAssetsData/AssetGroups/Schemas/Localization-String-Tables-Chinese (Simplified) (zh-Hans)_BundledAssetGroupSchema.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 97e951de1653a4f7e950086bc0500530 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/AddressableAssetsData/AssetGroups/Schemas/Localization-String-Tables-Chinese (Simplified) (zh-Hans)_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: Localization-String-Tables-Chinese (Simplified) (zh-Hans)_ContentUpdateGroupSchema 14 | m_EditorClassIdentifier: 15 | m_Group: {fileID: 11400000, guid: ec094127a9f374bd6a8bffb88622fea1, type: 2} 16 | m_StaticContent: 0 17 | -------------------------------------------------------------------------------- /Assets/AddressableAssetsData/AssetGroups/Schemas/Localization-String-Tables-Chinese (Simplified) (zh-Hans)_ContentUpdateGroupSchema.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d9cf55f9e67254779b44e278714eceda 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/AddressableAssetsData/AssetGroups/Schemas/Localization-String-Tables-English (en)_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: Localization-String-Tables-English (en)_BundledAssetGroupSchema 14 | m_EditorClassIdentifier: 15 | m_Group: {fileID: 11400000, guid: dcdc9ceda6302450c9c9fca4e29b6135, 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: f649cec108a144e87abb961b50f0f318 38 | m_LoadPath: 39 | m_Id: 1e116fa28fb6248feb9a4ff0aef36d39 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: 1 45 | m_AssetLoadMode: 0 46 | -------------------------------------------------------------------------------- /Assets/AddressableAssetsData/AssetGroups/Schemas/Localization-String-Tables-English (en)_BundledAssetGroupSchema.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f9966108dd3b94f719bd7094bc867595 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/AddressableAssetsData/AssetGroups/Schemas/Localization-String-Tables-English (en)_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: Localization-String-Tables-English (en)_ContentUpdateGroupSchema 14 | m_EditorClassIdentifier: 15 | m_Group: {fileID: 11400000, guid: dcdc9ceda6302450c9c9fca4e29b6135, type: 2} 16 | m_StaticContent: 0 17 | -------------------------------------------------------------------------------- /Assets/AddressableAssetsData/AssetGroups/Schemas/Localization-String-Tables-English (en)_ContentUpdateGroupSchema.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 177cf17869ce34048b958cfca18e54cd 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/AddressableAssetsData/AssetGroups/Schemas/Localization-String-Tables-French (fr)_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: Localization-String-Tables-French (fr)_BundledAssetGroupSchema 14 | m_EditorClassIdentifier: 15 | m_Group: {fileID: 11400000, guid: 3a6a9029b0ba2423bb1f8be4a8a09b6c, 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: f649cec108a144e87abb961b50f0f318 38 | m_LoadPath: 39 | m_Id: 1e116fa28fb6248feb9a4ff0aef36d39 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: 1 45 | m_AssetLoadMode: 0 46 | -------------------------------------------------------------------------------- /Assets/AddressableAssetsData/AssetGroups/Schemas/Localization-String-Tables-French (fr)_BundledAssetGroupSchema.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 036cd2f1058af434597fc4aea084bd35 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/AddressableAssetsData/AssetGroups/Schemas/Localization-String-Tables-French (fr)_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: Localization-String-Tables-French (fr)_ContentUpdateGroupSchema 14 | m_EditorClassIdentifier: 15 | m_Group: {fileID: 11400000, guid: 3a6a9029b0ba2423bb1f8be4a8a09b6c, type: 2} 16 | m_StaticContent: 0 17 | -------------------------------------------------------------------------------- /Assets/AddressableAssetsData/AssetGroups/Schemas/Localization-String-Tables-French (fr)_ContentUpdateGroupSchema.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0bb30f023bcf54f6db16bc0a0ececebe 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/AddressableAssetsData/AssetGroups/Schemas/Localization-String-Tables-Japanese (ja)_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: Localization-String-Tables-Japanese (ja)_BundledAssetGroupSchema 14 | m_EditorClassIdentifier: 15 | m_Group: {fileID: 11400000, guid: 001edb5f650784be799c3f1628cd1d04, 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: f649cec108a144e87abb961b50f0f318 38 | m_LoadPath: 39 | m_Id: 1e116fa28fb6248feb9a4ff0aef36d39 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: 1 45 | m_AssetLoadMode: 0 46 | -------------------------------------------------------------------------------- /Assets/AddressableAssetsData/AssetGroups/Schemas/Localization-String-Tables-Japanese (ja)_BundledAssetGroupSchema.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a3fd1f9e0b83f4de88fe1a244eb0ad74 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/AddressableAssetsData/AssetGroups/Schemas/Localization-String-Tables-Japanese (ja)_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: Localization-String-Tables-Japanese (ja)_ContentUpdateGroupSchema 14 | m_EditorClassIdentifier: 15 | m_Group: {fileID: 11400000, guid: 001edb5f650784be799c3f1628cd1d04, type: 2} 16 | m_StaticContent: 0 17 | -------------------------------------------------------------------------------- /Assets/AddressableAssetsData/AssetGroups/Schemas/Localization-String-Tables-Japanese (ja)_ContentUpdateGroupSchema.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5b6e771361bfb4205ab77e5fb1f9714f 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/AddressableAssetsData/DataBuilders.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 55b3390de7f7643cf804e4b61949cad1 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: 5226cd5de7df54a26939e4f660baea5d 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: 931f4ee03d3ed4f59957382e89acf444 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: 62afaf1eaa47049b4a4b27bb62eb12e2 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: f5869d5dd9dfe4a298efa4ec15893ff0 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: b28cc5faf5bd644dd9374d7d8d1fcdf9 16 | -------------------------------------------------------------------------------- /Assets/AddressableAssetsData/DefaultObject.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d5275bb03305343499acffeef7c45e06 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/GptLocalization.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1e5a3332fba2141a5a0f3b8cbcdad563 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/GptLocalization/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 81cc623dd179e4e699c718fd7f3f6e68 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/GptLocalization/Editor/GptLocalization.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "GptLocalization", 3 | "rootNamespace": "", 4 | "references": [ 5 | "Unity.Localization", 6 | "Unity.Localization.Editor" 7 | ], 8 | "includePlatforms": [ 9 | "Editor" 10 | ], 11 | "excludePlatforms": [], 12 | "allowUnsafeCode": false, 13 | "overrideReferences": false, 14 | "precompiledReferences": [], 15 | "autoReferenced": true, 16 | "defineConstraints": [], 17 | "versionDefines": [], 18 | "noEngineReferences": false 19 | } -------------------------------------------------------------------------------- /Assets/GptLocalization/Editor/GptLocalization.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 67175f829d999413589faec43acbcd56 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/GptLocalization/Editor/LocalizeGptWindow.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6ca6ba5b0a2b94694b2162eaf52027aa 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/GptLocalization/Editor/LocalizeGptWindow/LocalizeGptWindow.GUI.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6b44b5306c77427d92dfe6e5f521e1f4 3 | timeCreated: 1709433510 -------------------------------------------------------------------------------- /Assets/GptLocalization/Editor/LocalizeGptWindow/LocalizeGptWindow.Progress.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using System.Threading.Tasks; 3 | using RedGame.OpenAI; 4 | using UnityEngine; 5 | 6 | namespace RedGame.Framework.EditorTools 7 | { 8 | public partial class LocalizeGptWindow 9 | { 10 | private float _taskStartTime; 11 | private float _taskDuration = 3; 12 | private Task _task; 13 | private TranslateRec[] _pendingRecs; 14 | private int _currentPendingRecIndex; 15 | 16 | private void TranslateSingleRec(TranslateRec rec) 17 | { 18 | InitOpenAi(); 19 | RefreshRecord(rec.key); 20 | _pendingRecs = new[] {rec}; 21 | _currentPendingRecIndex = 0; 22 | AskGpt(rec); 23 | _taskStartTime = Time.realtimeSinceStartup; 24 | } 25 | 26 | private void TranslateSelectedRecs() 27 | { 28 | InitOpenAi(); 29 | var recs = _recs.Where((rec) => rec.selected).ToArray(); 30 | if (recs.Length == 0) 31 | return; 32 | 33 | _pendingRecs = recs; 34 | foreach (var rec in recs) 35 | { 36 | RefreshRecord(rec.key); 37 | } 38 | 39 | _currentPendingRecIndex = 0; 40 | AskGpt(_pendingRecs[0]); 41 | _taskStartTime = Time.realtimeSinceStartup; 42 | } 43 | 44 | private void CancelTask() 45 | { 46 | _task = null; 47 | _pendingRecs = null; 48 | _currentPendingRecIndex = 0; 49 | } 50 | 51 | private void UpdateTaskProgress() 52 | { 53 | if (_task == null) 54 | return; 55 | 56 | if (!_task.IsCompleted) 57 | return; 58 | 59 | if (_pendingRecs != null && _currentPendingRecIndex < _pendingRecs.Length) 60 | { 61 | var rec = _pendingRecs[_currentPendingRecIndex]; 62 | if (!OnTaskCompleted(_task, rec)) 63 | { 64 | CancelTask(); 65 | return; 66 | } 67 | _taskDuration = Time.realtimeSinceStartup - _taskStartTime; 68 | 69 | if (_currentPendingRecIndex < _pendingRecs.Length - 1) 70 | { 71 | _currentPendingRecIndex++; 72 | AskGpt(_pendingRecs[_currentPendingRecIndex]); 73 | _taskStartTime = Time.realtimeSinceStartup; 74 | } else 75 | { 76 | Output("Translation completed:\n" + 77 | string.Join("\n", _pendingRecs.Select((rec) => rec.key)), OutputType.Info); 78 | _task = null; 79 | _pendingRecs = null; 80 | RefreshRecords(); 81 | 82 | } 83 | } 84 | } 85 | 86 | private float GetProgress() 87 | { 88 | if (_task == null) 89 | return 0; 90 | 91 | float curTaskProgress = Mathf.Clamp01((Time.realtimeSinceStartup - _taskStartTime) / _taskDuration); 92 | return (_currentPendingRecIndex + curTaskProgress) / _pendingRecs.Length; 93 | } 94 | } 95 | } -------------------------------------------------------------------------------- /Assets/GptLocalization/Editor/LocalizeGptWindow/LocalizeGptWindow.Progress.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 87d00eadc0d34bcf80f86a98e53b2877 3 | timeCreated: 1709472802 -------------------------------------------------------------------------------- /Assets/GptLocalization/Editor/LocalizeGptWindow/LocalizeGptWindow.Record.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using UnityEngine.Localization.Tables; 4 | 5 | namespace RedGame.Framework.EditorTools 6 | { 7 | public partial class LocalizeGptWindow 8 | { 9 | private class TranslateRec 10 | { 11 | public bool selected; 12 | public string key; 13 | public List srcTables; 14 | public List dstTables; 15 | public string srcLangNames; 16 | public string dstLangNames; 17 | public string prompt; 18 | public string systemPrompt; 19 | } 20 | 21 | private TranslateRec[] _recs; 22 | 23 | private void RefreshRecord(string key) 24 | { 25 | int index = Array.FindIndex(_recs, rec => rec.key == key); 26 | if (index >= 0) 27 | { 28 | _recs[index] = GeneratePrompt(_curCollection, key); 29 | } 30 | } 31 | 32 | private void RefreshRecords() 33 | { 34 | if (!_curCollection) 35 | { 36 | if (_recs == null || _recs.Length > 0) 37 | _recs = Array.Empty(); 38 | return; 39 | } 40 | 41 | Dictionary selectedKeys = new Dictionary(); 42 | if (_recs != null) 43 | { 44 | foreach (var rec in _recs) 45 | { 46 | selectedKeys[rec.key] = rec.selected; 47 | } 48 | } 49 | 50 | List recs = new List(); 51 | foreach (var entry in _curCollection.SharedData.Entries) 52 | { 53 | var rec = GeneratePrompt(_curCollection, entry.Key); 54 | if (rec == null) 55 | continue; 56 | if (selectedKeys.TryGetValue(entry.Key, out bool selected)) 57 | { 58 | rec.selected = selected; 59 | } else 60 | { 61 | rec.selected = true; 62 | } 63 | 64 | recs.Add(rec); 65 | } 66 | 67 | _recs = recs.ToArray(); 68 | } 69 | } 70 | } -------------------------------------------------------------------------------- /Assets/GptLocalization/Editor/LocalizeGptWindow/LocalizeGptWindow.Record.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4fe0a8c81de44bcfb99e616e730b09da 3 | timeCreated: 1709433861 -------------------------------------------------------------------------------- /Assets/GptLocalization/Editor/LocalizeGptWindow/LocalizeGptWindow.StringTable.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Reflection; 3 | using UnityEditor; 4 | using UnityEditor.Localization; 5 | using UnityEngine; 6 | 7 | namespace RedGame.Framework.EditorTools 8 | { 9 | public partial class LocalizeGptWindow 10 | { 11 | private StringTableCollection _curCollection; 12 | private StringTableCollection[] _collections; 13 | private string[] _collectionNames; 14 | 15 | private void RefreshStringTableCollection() 16 | { 17 | _curCollection = null; 18 | CancelTask(); 19 | 20 | string[] guids = AssetDatabase.FindAssets("t:StringTableCollection"); 21 | _collections = new StringTableCollection[guids.Length]; 22 | _collectionNames = new string[guids.Length]; 23 | for (int i = 0; i < guids.Length; i++) 24 | { 25 | var path = AssetDatabase.GUIDToAssetPath(guids[i]); 26 | _collections[i] = AssetDatabase.LoadAssetAtPath(path); 27 | _collectionNames[i] = _collections[i].name; 28 | } 29 | 30 | if (_collections.Length > 0) 31 | { 32 | _curCollection = _collections[0]; 33 | } else 34 | { 35 | _curCollection = null; 36 | } 37 | 38 | _recs = null; 39 | } 40 | 41 | // Notify Localization Table Editor to refresh by calling 42 | // internal method LocalizationEditorSettings.EditorEvents.RaiseCollectionModified 43 | private void NotifyStringTableEditorRefresh() 44 | { 45 | Type classType = typeof(LocalizationEditorEvents); 46 | MethodInfo methodInfo = classType.GetMethod("RaiseCollectionModified", 47 | BindingFlags.Instance | BindingFlags.NonPublic); 48 | 49 | if (methodInfo != null) 50 | { 51 | try 52 | { 53 | methodInfo.Invoke(LocalizationEditorSettings.EditorEvents, new object[] { this, _curCollection }); 54 | } 55 | catch (Exception e) 56 | { 57 | Debug.LogException(e); 58 | } 59 | } 60 | } 61 | } 62 | } -------------------------------------------------------------------------------- /Assets/GptLocalization/Editor/LocalizeGptWindow/LocalizeGptWindow.StringTable.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7260781d6a8e48bcba6537bd58d51d62 3 | timeCreated: 1709433734 -------------------------------------------------------------------------------- /Assets/GptLocalization/Editor/LocalizeGptWindow/LocalizeGptWindow.Translate.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using Newtonsoft.Json.Linq; 7 | using RedGame.OpenAI; 8 | using UnityEditor; 9 | using UnityEditor.Localization; 10 | using UnityEngine; 11 | using UnityEngine.Localization.Metadata; 12 | using UnityEngine.Localization.Tables; 13 | 14 | namespace RedGame.Framework.EditorTools 15 | { 16 | public partial class LocalizeGptWindow 17 | { 18 | private OpenAIApi _openAi; 19 | 20 | private const string SYSTEM_PROMPT = 21 | "You are a multilingual translation AI. " + 22 | "Your response should be in JSON format, " + 23 | "with each language name as a key and the translated text as the corresponding value.\n\n"; 24 | 25 | private void InitOpenAi() 26 | { 27 | _openAi = new OpenAIApi( 28 | apiKey:_apiKey, 29 | baseUrl:_baseUrl); 30 | } 31 | 32 | private TranslateRec GeneratePrompt(StringTableCollection collection, string key) 33 | { 34 | StringBuilder sb = new StringBuilder(); 35 | TranslateRec rec = new TranslateRec 36 | { 37 | key = key, selected = true 38 | }; 39 | 40 | var tables = collection.StringTables; 41 | rec.srcTables = new List(); 42 | rec.dstTables = new List(); 43 | foreach (var table in tables) 44 | { 45 | StringTableEntry entry = table.GetEntry(key); 46 | 47 | if (entry == null || string.IsNullOrWhiteSpace(entry.Value)) 48 | { 49 | rec.dstTables.Add(table); 50 | continue; 51 | } 52 | 53 | rec.srcTables.Add(table); 54 | if (rec.srcTables.Count <= 1) 55 | { 56 | sb.Append("Translate from "); 57 | sb.Append(table.LocaleIdentifier.CultureInfo.EnglishName); 58 | sb.Append(":\n"); 59 | sb.Append(entry.Value); 60 | sb.Append("\n"); 61 | } 62 | } 63 | 64 | sb.Append("\n"); 65 | 66 | if (rec.dstTables.Count == 0 || rec.srcTables.Count == 0) 67 | { 68 | return null; 69 | } 70 | 71 | rec.srcLangNames = string.Join(",", rec.srcTables.Select(t => t.LocaleIdentifier.CultureInfo.EnglishName)); 72 | rec.dstLangNames = string.Join(",", rec.dstTables.Select(t => t.LocaleIdentifier.CultureInfo.EnglishName)); 73 | 74 | sb.Append("\n# Translate to: \n"); 75 | sb.Append(rec.dstLangNames); 76 | sb.Append("\n\n"); 77 | 78 | StringBuilder requirements = new StringBuilder(); 79 | Comment comment = collection.SharedData.GetEntry(key).Metadata.GetMetadata(); 80 | 81 | if (comment != null && !string.IsNullOrWhiteSpace(comment.CommentText)) 82 | { 83 | requirements.Append("* "); 84 | requirements.Append(comment.CommentText); 85 | requirements.Append("\n"); 86 | } 87 | 88 | foreach (var table in rec.dstTables) 89 | { 90 | var entry = table.GetEntry(key); 91 | if (entry == null) 92 | continue; 93 | var langComment = entry.GetMetadata(); 94 | if (langComment != null && !string.IsNullOrWhiteSpace(langComment.CommentText)) 95 | { 96 | string langName = table.LocaleIdentifier.CultureInfo.EnglishName; 97 | requirements.Append("* Specifically for " + langName + ": " + 98 | langComment.CommentText); 99 | requirements.Append("\n"); 100 | } 101 | } 102 | 103 | if (requirements.Length > 0) 104 | { 105 | rec.systemPrompt = SYSTEM_PROMPT + 106 | "# Translation Instructions:\n" + 107 | requirements; 108 | } else 109 | { 110 | rec.systemPrompt = SYSTEM_PROMPT; 111 | } 112 | 113 | rec.prompt = sb.ToString(); 114 | 115 | return rec; 116 | } 117 | 118 | private void AskGpt(TranslateRec rec) 119 | { 120 | _task = _openAi.CreateChatCompletion(new CreateChatCompletionRequest() 121 | { 122 | Model = _model, 123 | Messages = new List() 124 | { 125 | new() { Role = "system", Content = rec.systemPrompt }, 126 | new() { Role = "user", Content = rec.prompt } 127 | }, 128 | Temperature = _temperature, 129 | ResponseFormat = ResponseFormat.JsonObject 130 | }); 131 | } 132 | 133 | private bool OnTaskCompleted(Task task, TranslateRec rec) 134 | { 135 | if (task.IsFaulted) 136 | { 137 | if (task.Exception != null) 138 | { 139 | Output(task.Exception.Message, OutputType.Error); 140 | Debug.LogError(task.Exception); 141 | } else 142 | { 143 | Output("Task Unknown Error", OutputType.Error); 144 | } 145 | return false; 146 | } 147 | 148 | var response = task.Result; 149 | if (response.Error != null) 150 | { 151 | Output(response.Error.Message, OutputType.Error); 152 | return false; 153 | } 154 | 155 | string answer = response.Choices[0].Message.Content; 156 | 157 | JToken jToken = JToken.Parse(answer); 158 | Dictionary dict = TryParseJson(jToken); 159 | 160 | if (dict != null) 161 | { 162 | ApplyTranslation(rec, dict); 163 | } else 164 | { 165 | Output("Failed to parse response as json object:\n" + answer, OutputType.Error); 166 | return false; 167 | } 168 | 169 | //Output(answer, OutputType.Info); 170 | 171 | return true; 172 | } 173 | 174 | private string TryParseText(JToken json) 175 | { 176 | if (json.Type == JTokenType.String) 177 | { 178 | return json.ToString(); 179 | } 180 | 181 | if (json.Type == JTokenType.Object) 182 | { 183 | JObject jObject = (JObject)json; 184 | if (jObject.ContainsKey("text")) 185 | return jObject["text"].ToString(); 186 | if (jObject.ContainsKey("result")) 187 | return jObject["result"].ToString(); 188 | } 189 | 190 | return string.Empty; 191 | } 192 | 193 | private string TryParseKey(JObject jObject) 194 | { 195 | if (jObject.ContainsKey("name")) 196 | return jObject["name"].ToString(); 197 | 198 | if (jObject.ContainsKey("translation")) 199 | return jObject["translation"].ToString(); 200 | 201 | return null; 202 | } 203 | 204 | private Dictionary TryParseJson(JToken json) 205 | { 206 | // 三种可能: 207 | // 1. 一个json对象 language: translation 208 | // 2. 一个json数组,每个元素是一个json对象 209 | // 3. 有一个根节点的,根节点为"translations",下层才是 210 | 211 | if (json.Type == JTokenType.Object) 212 | { 213 | JObject jObject = (JObject)json; 214 | 215 | JProperty rootProp = jObject.Properties().FirstOrDefault(p => 216 | { 217 | return p.Name.Equals("translations", StringComparison.OrdinalIgnoreCase) || 218 | p.Name.Equals("translation", StringComparison.OrdinalIgnoreCase); 219 | }); 220 | 221 | if (rootProp != null) 222 | { 223 | return TryParseJson(rootProp.Value); 224 | } 225 | 226 | return jObject.Properties() 227 | .ToDictionary( 228 | p => p.Name, 229 | p => TryParseText(p.Value)); 230 | } 231 | 232 | if (json.Type == JTokenType.Array) 233 | { 234 | JArray jArray = (JArray)json; 235 | 236 | Dictionary dict = new Dictionary(); 237 | foreach (var item in jArray) 238 | { 239 | if (item.Type == JTokenType.Object) 240 | { 241 | JObject jObject = (JObject)item; 242 | string key = TryParseKey(jObject); 243 | if (key != null) 244 | { 245 | dict[key] = TryParseText(jObject); 246 | } 247 | } 248 | } 249 | 250 | return dict; 251 | } 252 | 253 | return null; 254 | } 255 | 256 | private void ApplyTranslation(TranslateRec rec, Dictionary result) 257 | { 258 | foreach (var table in rec.dstTables) 259 | { 260 | string langName = table.LocaleIdentifier.CultureInfo.EnglishName; 261 | if (result.ContainsKey(langName)) 262 | { 263 | string translated = result[langName]; 264 | table.AddEntry(rec.key, translated); 265 | } 266 | EditorUtility.SetDirty(table); 267 | } 268 | 269 | NotifyStringTableEditorRefresh(); 270 | } 271 | } 272 | } -------------------------------------------------------------------------------- /Assets/GptLocalization/Editor/LocalizeGptWindow/LocalizeGptWindow.Translate.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0877a0ed5a644c8a85eb01a048091d5a 3 | timeCreated: 1709433631 -------------------------------------------------------------------------------- /Assets/GptLocalization/Editor/LocalizeGptWindow/LocalizeGptWindow.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using UnityEditor; 5 | using UnityEngine; 6 | 7 | namespace RedGame.Framework.EditorTools 8 | { 9 | public partial class LocalizeGptWindow : EditorWindow 10 | { 11 | private string _model = "gpt-3.5-turbo"; 12 | private static string[] s_validModels = 13 | { 14 | "gpt-3.5-turbo", 15 | "gpt-4-turbo-preview", 16 | "gpt-4-0125-preview", 17 | "gpt-4-1106-preview", 18 | "gpt-3.5-turbo-0125", 19 | "gpt-3.5-turbo-1106", 20 | "gpt-4o", 21 | "deepseek-chat", 22 | "deepseek-reasoner", 23 | }; 24 | 25 | private float _temperature; 26 | private string _apiKey; 27 | private const string DEFAULT_BASE_URL = "https://api.openai.com/v1"; 28 | private string _baseUrl = DEFAULT_BASE_URL; 29 | 30 | public static void AddModel(string modelName) 31 | { 32 | if (s_validModels.Contains(modelName)) 33 | return; 34 | 35 | s_validModels = s_validModels.Append(modelName).ToArray(); 36 | } 37 | 38 | [MenuItem("Tools/GPT Localization")] 39 | private static void ShowWindow() 40 | { 41 | var window = GetWindow(); 42 | window.titleContent = new GUIContent("GPT Localization"); 43 | window.Show(); 44 | } 45 | 46 | private void OnEnable() 47 | { 48 | LoadSettings(); 49 | EditorApplication.update += UpdateFrame; 50 | CancelTask(); 51 | } 52 | 53 | private void OnDisable() 54 | { 55 | EditorApplication.update -= UpdateFrame; 56 | CancelTask(); 57 | } 58 | 59 | private void OnFocus() 60 | { 61 | if (!_curCollection) 62 | { 63 | RefreshStringTableCollection(); 64 | } 65 | if (!IsBusy()) 66 | { 67 | RefreshRecords(); 68 | } 69 | } 70 | 71 | private void Output(string str, OutputType type) 72 | { 73 | _outputStr = str; 74 | _outputType = type; 75 | if (type == OutputType.Error) 76 | Debug.LogError(str); 77 | } 78 | 79 | private void UpdateFrame() 80 | { 81 | if (IsBusy()) 82 | { 83 | UpdateTaskProgress(); 84 | Repaint(); 85 | } 86 | } 87 | 88 | private bool IsBusy() => _task != null; 89 | 90 | private void LoadSettings() 91 | { 92 | _model = EditorPrefs.GetString("LocalizeGptWindow.Model", _model); 93 | _temperature = EditorPrefs.GetFloat("LocalizeGptWindow.Temperature", _temperature); 94 | _baseUrl = EditorPrefs.GetString("LocalizeGptWindow.BaseUrl", _baseUrl); 95 | _apiKey = EditorPrefs.GetString("LocalizeGptWindow.ApiKey", _apiKey); 96 | } 97 | 98 | private void SaveSettings() 99 | { 100 | EditorPrefs.SetString("LocalizeGptWindow.Model", _model); 101 | EditorPrefs.SetFloat("LocalizeGptWindow.Temperature", _temperature); 102 | EditorPrefs.SetString("LocalizeGptWindow.BaseUrl", _baseUrl); 103 | EditorPrefs.SetString("LocalizeGptWindow.ApiKey", _apiKey); 104 | } 105 | } 106 | } -------------------------------------------------------------------------------- /Assets/GptLocalization/Editor/LocalizeGptWindow/LocalizeGptWindow.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e55a8c9dd58f450db0a091ce816391a3 3 | timeCreated: 1709208374 -------------------------------------------------------------------------------- /Assets/GptLocalization/Editor/OpenAI-Unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 915014c54e0340edb746cf5e6aff31b2 3 | timeCreated: 1709556403 -------------------------------------------------------------------------------- /Assets/GptLocalization/Editor/OpenAI-Unity/Configuration.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using UnityEngine; 4 | using Newtonsoft.Json; 5 | using Newtonsoft.Json.Serialization; 6 | 7 | namespace RedGame.OpenAI 8 | { 9 | public class Configuration 10 | { 11 | public Auth Auth { get; } 12 | 13 | /// Used for serializing and deserializing PascalCase request object fields into snake_case format for JSON. Ignores null fields when creating JSON strings. 14 | private readonly JsonSerializerSettings jsonSerializerSettings = new JsonSerializerSettings() 15 | { 16 | NullValueHandling = NullValueHandling.Ignore, 17 | ContractResolver = new DefaultContractResolver() 18 | { 19 | NamingStrategy = new CustomNamingStrategy() 20 | } 21 | }; 22 | 23 | public Configuration(string apiKey = null, string organization = null) 24 | { 25 | if (apiKey == null) 26 | { 27 | var userPath = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile); 28 | var authPath = $"{userPath}/.openai/auth.json"; 29 | 30 | if (File.Exists(authPath)) 31 | { 32 | var json = File.ReadAllText(authPath); 33 | Auth = JsonConvert.DeserializeObject(json, jsonSerializerSettings); 34 | } 35 | else 36 | { 37 | Debug.LogError("API Key is null and auth.json does not exist. Please check https://github.com/srcnalt/OpenAI-Unity#saving-your-credentials"); 38 | } 39 | } 40 | else 41 | { 42 | Auth = new Auth() 43 | { 44 | ApiKey = apiKey, 45 | Organization = organization 46 | }; 47 | } 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /Assets/GptLocalization/Editor/OpenAI-Unity/Configuration.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8740e1fbd17f6444ea542aadc60b2c1f 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/GptLocalization/Editor/OpenAI-Unity/DataTypes.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e435220a42c5c6342b3e084524a64024 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/GptLocalization/Editor/OpenAI-Unity/Interfaces.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ea72b8184a896df428adb943bf478aea 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/GptLocalization/Editor/OpenAI-Unity/Interfaces/IResponse.cs: -------------------------------------------------------------------------------- 1 | namespace RedGame.OpenAI 2 | { 3 | public interface IResponse 4 | { 5 | ApiError Error { get; set; } 6 | public string Warning { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /Assets/GptLocalization/Editor/OpenAI-Unity/Interfaces/IResponse.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c3985268b4cc61e43ba87332f281fb2d 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/GptLocalization/Editor/OpenAI-Unity/OpenAIApi.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5fff9490e0c13184fa95c338c139d45d 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/GptLocalization/Editor/OpenAI-Unity/Utils.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8e81eb4397231344f80ac5fc542979c1 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/GptLocalization/Editor/OpenAI-Unity/Utils/CustomNamingStrategy.cs: -------------------------------------------------------------------------------- 1 | using System.Text.RegularExpressions; 2 | using Newtonsoft.Json.Serialization; 3 | 4 | namespace RedGame.OpenAI 5 | { 6 | public class CustomNamingStrategy : NamingStrategy 7 | { 8 | protected override string ResolvePropertyName(string name) 9 | { 10 | var result = Regex.Replace(name, "([A-Z])", m => (m.Index > 0 ? "_" : "") + m.Value[0].ToString().ToLowerInvariant()); 11 | return result; 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Assets/GptLocalization/Editor/OpenAI-Unity/Utils/CustomNamingStrategy.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 25db7a33aa10bdf4a85f66fb47f74b89 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/GptLocalization/Editor/OpenAI-Unity/Utils/ExtensionMethods.cs: -------------------------------------------------------------------------------- 1 | using System.IO; 2 | using UnityEngine.Networking; 3 | using System.Collections.Generic; 4 | 5 | namespace RedGame.OpenAI 6 | { 7 | public static class ExtensionMethods 8 | { 9 | /// 10 | /// Read a file and add it to this form. 11 | /// 12 | /// List of multipart form sections. 13 | /// Path of the file to read. 14 | /// Name of the form field. 15 | /// Content type of the file. 16 | public static void AddFile(this List form, string path, string name, string contentType) 17 | { 18 | if (path != null) 19 | { 20 | var data = File.ReadAllBytes(path); 21 | var fileName = Path.GetFileName(path); 22 | form.Add(new MultipartFormFileSection(name, data, fileName, contentType)); 23 | } 24 | } 25 | 26 | /// 27 | /// Read a file and add it to this form. 28 | /// 29 | /// List of multipart form sections. 30 | /// Byte array data of the file to attach. 31 | /// Name of the form field. 32 | /// Content type of the file. 33 | public static void AddData(this List form, FileData data, string name, string contentType) 34 | { 35 | if (data.Data != null) 36 | { 37 | var fileName = Path.GetFileName(data.Name); 38 | form.Add(new MultipartFormFileSection(name, data.Data, fileName, contentType)); 39 | } 40 | } 41 | 42 | /// 43 | /// Add a primitive value to the form. 44 | /// 45 | /// List of multipart form sections. 46 | /// Value of the form field. 47 | /// Name of the form field. 48 | public static void AddValue(this List form, object value, string name) 49 | { 50 | if (value != null) 51 | { 52 | form.Add(new MultipartFormDataSection(name, value.ToString())); 53 | } 54 | } 55 | 56 | /// 57 | /// Set headers of the HTTP request with user credentials. 58 | /// 59 | /// this UnityWebRequest 60 | /// Configuration file that contains user credentials. 61 | /// The value of the Accept header for an HTTP request. 62 | public static void SetHeaders(this UnityWebRequest request, Configuration configuration, string type = null) 63 | { 64 | if (configuration.Auth.Organization != null) 65 | { 66 | request.SetRequestHeader("OpenAI-Organization", configuration.Auth.Organization); 67 | } 68 | if (type != null) 69 | { 70 | request.SetRequestHeader("Content-Type", type); 71 | } 72 | request.SetRequestHeader("Authorization", "Bearer " + configuration.Auth.ApiKey); 73 | } 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /Assets/GptLocalization/Editor/OpenAI-Unity/Utils/ExtensionMethods.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a08c27193387de640b389d816ef35cfc 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/GptLocalization/Editor/Utils.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: baec6a9eb314448739ff9ccb674a61ad 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/GptLocalization/Editor/Utils/SimpleEditorTableView.cs: -------------------------------------------------------------------------------- 1 | // ================================================== 2 | // Copyright (c) Red Games. All rights reserved. 3 | // @Author: Yao Chunhui 4 | // @Description: 方便创建TableView GUI 5 | // ================================================== 6 | 7 | using System; 8 | using System.Collections.Generic; 9 | using System.Linq; 10 | using UnityEditor; 11 | using UnityEditor.IMGUI.Controls; 12 | using UnityEngine; 13 | 14 | namespace RedGame.Framework.EditorTools 15 | { 16 | public class SimpleEditorTableView 17 | { 18 | private MultiColumnHeaderState _multiColumnHeaderState; 19 | private MultiColumnHeader _multiColumnHeader; 20 | private MultiColumnHeaderState.Column[] _columns; 21 | private readonly Color _lighterColor = Color.white * 0.3f; 22 | private readonly Color _darkerColor = Color.white * 0.1f; 23 | 24 | private Vector2 _scrollPosition; 25 | private bool _columnResized; 26 | private bool _sortingDirty; 27 | 28 | public delegate void DrawItem(Rect rect, TData item); 29 | 30 | public class ColumnDef 31 | { 32 | internal MultiColumnHeaderState.Column column; 33 | internal DrawItem onDraw; 34 | internal Comparison onSort; 35 | 36 | public ColumnDef SetMaxWidth(float maxWidth) 37 | { 38 | column.maxWidth = maxWidth; 39 | return this; 40 | } 41 | 42 | public ColumnDef SetTooltip(string tooltip) 43 | { 44 | column.headerContent.tooltip = tooltip; 45 | return this; 46 | } 47 | 48 | public ColumnDef SetAutoResize(bool autoResize) 49 | { 50 | column.autoResize = autoResize; 51 | return this; 52 | } 53 | 54 | public ColumnDef SetAllowToggleVisibility(bool allow) 55 | { 56 | column.allowToggleVisibility = allow; 57 | return this; 58 | } 59 | 60 | public ColumnDef SetSorting(Comparison onSort) 61 | { 62 | this.onSort = onSort; 63 | column.canSort = true; 64 | return this; 65 | } 66 | } 67 | 68 | private readonly List _columnDefs = new List(); 69 | 70 | public void ClearColumns() 71 | { 72 | _columnDefs.Clear(); 73 | _columnResized = true; 74 | } 75 | 76 | public ColumnDef AddColumn(string title, int minWidth, DrawItem onDrawItem) 77 | { 78 | ColumnDef columnDef = new ColumnDef() 79 | { 80 | column = new MultiColumnHeaderState.Column() 81 | { 82 | allowToggleVisibility = false, 83 | autoResize = true, 84 | minWidth = minWidth, 85 | canSort = false, 86 | sortingArrowAlignment = TextAlignment.Right, 87 | headerContent = new GUIContent(title), 88 | headerTextAlignment = TextAlignment.Left, 89 | }, 90 | onDraw = onDrawItem 91 | }; 92 | 93 | _columnDefs.Add(columnDef); 94 | _columnResized = true; 95 | return columnDef; 96 | } 97 | 98 | private void ReBuild() 99 | { 100 | _columns = _columnDefs.Select((def) => def.column).ToArray(); 101 | _multiColumnHeaderState = new MultiColumnHeaderState(_columns); 102 | _multiColumnHeader = new MultiColumnHeader(_multiColumnHeaderState); 103 | _multiColumnHeader.visibleColumnsChanged += (multiColumnHeader) => multiColumnHeader.ResizeToFit(); 104 | _multiColumnHeader.sortingChanged += (multiColumnHeader) => _sortingDirty = true; 105 | _multiColumnHeader.ResizeToFit(); 106 | _columnResized = false; 107 | } 108 | 109 | public void DrawTableGUI(TData[] data, float maxHeight = float.MaxValue, float rowHeight = -1) 110 | { 111 | if (_multiColumnHeader == null || _columnResized) 112 | ReBuild(); 113 | 114 | float rowWidth = _multiColumnHeaderState.widthOfAllVisibleColumns; 115 | if (rowHeight < 0) 116 | rowHeight = EditorGUIUtility.singleLineHeight; 117 | 118 | Rect headerRect = GUILayoutUtility.GetRect(rowWidth, rowHeight); 119 | _multiColumnHeader!.OnGUI(headerRect, xScroll: 0.0f); 120 | 121 | float sumWidth = rowWidth; 122 | float sumHeight = rowHeight * data.Length + GUI.skin.horizontalScrollbar.fixedHeight; 123 | 124 | UpdateSorting(data); 125 | 126 | Rect scrollViewPos = GUILayoutUtility.GetRect(0, sumWidth, 0, maxHeight); 127 | Rect viewRect = new Rect(0, 0, sumWidth, sumHeight); 128 | 129 | _scrollPosition = GUI.BeginScrollView( 130 | position: scrollViewPos, 131 | scrollPosition: _scrollPosition, 132 | viewRect: viewRect, 133 | alwaysShowHorizontal: false, 134 | alwaysShowVertical: false 135 | ); 136 | 137 | EditorGUILayout.BeginVertical(); 138 | 139 | for (int row = 0; row < data.Length; row++) 140 | { 141 | Rect rowRect = new Rect(0, rowHeight * row, rowWidth, rowHeight); 142 | 143 | EditorGUI.DrawRect(rect: rowRect, color: row % 2 == 0 ? _darkerColor : _lighterColor); 144 | 145 | for (int col = 0; col < _columns.Length; col++) 146 | { 147 | if (_multiColumnHeader.IsColumnVisible(col)) 148 | { 149 | int visibleColumnIndex = _multiColumnHeader.GetVisibleColumnIndex(col); 150 | Rect cellRect = _multiColumnHeader.GetCellRect(visibleColumnIndex, rowRect); 151 | _columnDefs[col].onDraw(cellRect, data[row]); 152 | } 153 | } 154 | } 155 | 156 | EditorGUILayout.EndVertical(); 157 | GUI.EndScrollView(handleScrollWheel: true); 158 | } 159 | 160 | private void UpdateSorting(TData[] data) 161 | { 162 | if (_sortingDirty) 163 | { 164 | int sortIndex = _multiColumnHeader.sortedColumnIndex; 165 | if (sortIndex >= 0) 166 | { 167 | var sortCompare = _columnDefs[sortIndex].onSort; 168 | bool ascending = _multiColumnHeader.IsSortedAscending(sortIndex); 169 | 170 | Array.Sort(data, ((a, b) => 171 | { 172 | int r = sortCompare(a, b); 173 | return ascending ? r : -r; 174 | })); 175 | } 176 | 177 | _sortingDirty = false; 178 | } 179 | } 180 | } 181 | } -------------------------------------------------------------------------------- /Assets/GptLocalization/Editor/Utils/SimpleEditorTableView.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 153b3a8d1bec849b0b43f88b7554284e 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/GptLocalization/Intro.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redclock/UnityGPTLocalization/312d2e66b7dfd50b1aa5ed9b193bd9cb7562b145/Assets/GptLocalization/Intro.gif -------------------------------------------------------------------------------- /Assets/GptLocalization/Intro.gif.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0ec0f000914074d6aaea3879db65041f 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 0 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMipmapLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 1 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 0 41 | wrapV: 0 42 | wrapW: 0 43 | nPOTScale: 1 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 0 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 0 56 | spriteTessellationDetail: -1 57 | textureType: 0 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 0 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 1 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | ignorePlatformSupport: 0 81 | androidETC2FallbackOverride: 0 82 | forceMaximumCompressionQuality_BC6H_BC7: 0 83 | - serializedVersion: 3 84 | buildTarget: Standalone 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | ignorePlatformSupport: 0 94 | androidETC2FallbackOverride: 0 95 | forceMaximumCompressionQuality_BC6H_BC7: 0 96 | - serializedVersion: 3 97 | buildTarget: iPhone 98 | maxTextureSize: 2048 99 | resizeAlgorithm: 0 100 | textureFormat: -1 101 | textureCompression: 1 102 | compressionQuality: 50 103 | crunchedCompression: 0 104 | allowsAlphaSplitting: 0 105 | overridden: 0 106 | ignorePlatformSupport: 0 107 | androidETC2FallbackOverride: 0 108 | forceMaximumCompressionQuality_BC6H_BC7: 0 109 | - serializedVersion: 3 110 | buildTarget: Android 111 | maxTextureSize: 2048 112 | resizeAlgorithm: 0 113 | textureFormat: -1 114 | textureCompression: 1 115 | compressionQuality: 50 116 | crunchedCompression: 0 117 | allowsAlphaSplitting: 0 118 | overridden: 0 119 | ignorePlatformSupport: 0 120 | androidETC2FallbackOverride: 0 121 | forceMaximumCompressionQuality_BC6H_BC7: 0 122 | - serializedVersion: 3 123 | buildTarget: Server 124 | maxTextureSize: 2048 125 | resizeAlgorithm: 0 126 | textureFormat: -1 127 | textureCompression: 1 128 | compressionQuality: 50 129 | crunchedCompression: 0 130 | allowsAlphaSplitting: 0 131 | overridden: 0 132 | ignorePlatformSupport: 0 133 | androidETC2FallbackOverride: 0 134 | forceMaximumCompressionQuality_BC6H_BC7: 0 135 | spriteSheet: 136 | serializedVersion: 2 137 | sprites: [] 138 | outline: [] 139 | physicsShape: [] 140 | bones: [] 141 | spriteID: 142 | internalID: 0 143 | vertices: [] 144 | indices: 145 | edges: [] 146 | weights: [] 147 | secondaryTextures: [] 148 | nameFileIdTable: {} 149 | mipmapLimitGroupName: 150 | pSDRemoveMatte: 0 151 | userData: 152 | assetBundleName: 153 | assetBundleVariant: 154 | -------------------------------------------------------------------------------- /Assets/GptLocalization/LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Yao Chunhui 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 | -------------------------------------------------------------------------------- /Assets/GptLocalization/LICENSE.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8d53b78d428f048678c0cb2e7ab21fbf 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/GptLocalization/Metadata.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redclock/UnityGPTLocalization/312d2e66b7dfd50b1aa5ed9b193bd9cb7562b145/Assets/GptLocalization/Metadata.jpg -------------------------------------------------------------------------------- /Assets/GptLocalization/Metadata.jpg.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 11f84857fe33c478ab1607572ce97bb3 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 0 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMipmapLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 1 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 0 41 | wrapV: 0 42 | wrapW: 0 43 | nPOTScale: 1 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 0 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 0 56 | spriteTessellationDetail: -1 57 | textureType: 0 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 0 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 1 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | ignorePlatformSupport: 0 81 | androidETC2FallbackOverride: 0 82 | forceMaximumCompressionQuality_BC6H_BC7: 0 83 | - serializedVersion: 3 84 | buildTarget: Standalone 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | ignorePlatformSupport: 0 94 | androidETC2FallbackOverride: 0 95 | forceMaximumCompressionQuality_BC6H_BC7: 0 96 | - serializedVersion: 3 97 | buildTarget: iPhone 98 | maxTextureSize: 2048 99 | resizeAlgorithm: 0 100 | textureFormat: -1 101 | textureCompression: 1 102 | compressionQuality: 50 103 | crunchedCompression: 0 104 | allowsAlphaSplitting: 0 105 | overridden: 0 106 | ignorePlatformSupport: 0 107 | androidETC2FallbackOverride: 0 108 | forceMaximumCompressionQuality_BC6H_BC7: 0 109 | - serializedVersion: 3 110 | buildTarget: Android 111 | maxTextureSize: 2048 112 | resizeAlgorithm: 0 113 | textureFormat: -1 114 | textureCompression: 1 115 | compressionQuality: 50 116 | crunchedCompression: 0 117 | allowsAlphaSplitting: 0 118 | overridden: 0 119 | ignorePlatformSupport: 0 120 | androidETC2FallbackOverride: 0 121 | forceMaximumCompressionQuality_BC6H_BC7: 0 122 | - serializedVersion: 3 123 | buildTarget: Server 124 | maxTextureSize: 2048 125 | resizeAlgorithm: 0 126 | textureFormat: -1 127 | textureCompression: 1 128 | compressionQuality: 50 129 | crunchedCompression: 0 130 | allowsAlphaSplitting: 0 131 | overridden: 0 132 | ignorePlatformSupport: 0 133 | androidETC2FallbackOverride: 0 134 | forceMaximumCompressionQuality_BC6H_BC7: 0 135 | spriteSheet: 136 | serializedVersion: 2 137 | sprites: [] 138 | outline: [] 139 | physicsShape: [] 140 | bones: [] 141 | spriteID: 142 | internalID: 0 143 | vertices: [] 144 | indices: 145 | edges: [] 146 | weights: [] 147 | secondaryTextures: [] 148 | nameFileIdTable: {} 149 | mipmapLimitGroupName: 150 | pSDRemoveMatte: 0 151 | userData: 152 | assetBundleName: 153 | assetBundleVariant: 154 | -------------------------------------------------------------------------------- /Assets/GptLocalization/README.md: -------------------------------------------------------------------------------- 1 | # Unity GPT Localization 2 | 3 | English | [简体中文](README_CN.md) 4 | 5 | ## Introduction 6 | 7 | This is a multilingual translation automation tool based on the 8 | [Unity Localization plugin](https://docs.unity3d.com/Packages/com.unity.localization@1.0/manual/index.html) 9 | and the [OpenAI API](https://openai.com/blog/openai-api). 10 | This tool can automatically translate missing string entries in Unity Localization using OpenAI GPT or DeepSeek, 11 | making multilingual support both simple and efficient. 12 | 13 | ![preview](Intro.gif) 14 | 15 | ### Features 16 | 1. **Integration with Unity Localization**: Automatically find untranslated items in the String Table Collection and sync the results back to the String Table. 17 | 2. **Customize translation requirements**: Use the Comment in the String Table Metadata to provide additional translation requirements for GPT, controlling translation result preferences. 18 | 3. **Iterate on translation results**: You can delete and retranslate unsatisfactory translation results at any time. You can also specify translation for a single item. 19 | 20 | ### Using DeepSeek API 21 | Now this plugin supports DeepSeek API. 22 | You can choose OpenAI or DeepSeek as the translation service provider. 23 | For DeepSeek, set the base URL to `https://api.deepseek.com` and select model to `deepseek-chat` or `deepseek-reasoner`. 24 | 25 | ## Usage 26 | 27 | ### Installing the Plugin 28 | 29 | * In the Unity menu, go to `Window > Package Manager`. 30 | * Click `+` and select `Add package from git URL`. 31 | * Enter the following URL: 32 | ``` 33 | https://github.com/redclock/UnityGPTLocalization.git#release 34 | ``` 35 | * Click `Add` to install. 36 | * If your project does not use the Unity Localization plugin, the Unity Localization plugin will also be automatically installed. 37 | 38 | ### Configuring the OpenAI API Key 39 | * Go to https://platform.openai.com/api-keys to get your API Key. 40 | 41 | ### Or Configuring the DeepSeek API Key 42 | * Go to https://platform.deepseek.com/api_keys to get your API Key. 43 | 44 | ## How to Use 45 | Open the `Tools > GPT Localization` menu in Unity to open the GPT Localization window. 46 | 47 | ![Screenshot](Screenshot.png) 48 | 49 | ### 1. Fill in the GPT Model Parameters 50 | | Parameter | Description | 51 | |--------------|---------------------------------------------------------------------------------------------------------------------| 52 | | Base Url | Default is https://api.openai.com/v1, can also use other proxy URLs. | 53 | | API Key | Your OpenAI API Key. | 54 | | Model | Choose a GPT model, such as `gpt-3.5-turbo`, `gpt-4-turbo-preview`. | 55 | | Temperature | Controls the diversity of translation results, 0.0 for most accurate translation, 1.0 for most diverse translation. | 56 | 57 | ### 2. Select the String Table Collection 58 | * If no String Table Collection exists, the window will prompt you to create one. 59 | * If there is one, select a String Table Collection from the dropdown menu. 60 | * For testing, you can create some incomplete entries in the String Table. 61 | - Incomplete means that at least one language has a translation and at least one language does not have a translation for an entry. 62 | 63 | ### 3. Translate Entries 64 | * The window will automatically list all entries with incomplete translations. 65 | * Click `Translate Selected` to translate all selected entries. 66 | * You can also click the `Translate` button for each entry to translate individually. 67 | * After translation, check the String Table Editor to see that the results have been automatically filled in. 68 | * If you are not satisfied with a result, you can delete it in the String Table Editor and then retranslate. 69 | 70 | ### 4. Customize Translation Requirements 71 | * Click `Open Table Editor` to open the String Table Editor. 72 | * In the String Table Editor, adding a Comment can control translation result preferences. 73 | * Click Edit Metadata for an entry. 74 | 75 | ![Edit Metadata](Metadata.jpg) 76 | 77 | * Adding a Comment in the Shared Entry Metadata can control the translation results for all target languages of this entry. 78 | * Adding a Comment in the language-specific Metadata can control the translation result for this entry in a specific language. 79 | * You can control translation results with natural language, such as: 80 | * The translation result should be more formal. 81 | * Use short words, no more than 3 words. 82 | * Japanese should avoid using Katakana as much as possible. 83 | * The word "Native" should be kept in English in the target language. 84 | * And so on. 85 | * If you don't know how to write a Comment, you can use this [GPT bot](https://chat.openai.com/g/g-NnmjK7bix-multilingual-prompt-generator) I made to help you write Comments. 86 | 87 | ## Limitations 88 | * OpenAI API calls require payment. 89 | * Translation results are not guaranteed to be accurate and require manual review. 90 | 91 | ## References 92 | This project is based on [srcnalt/OpenAI-Unity](https://github.com/srcnalt/OpenAI-Unity): A Unity plugin that supports OpenAI API calls. -------------------------------------------------------------------------------- /Assets/GptLocalization/README.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3c4072be5d32140089cd9ae48301708b 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/GptLocalization/README_CN.md: -------------------------------------------------------------------------------- 1 | # Unity GPT Localization 2 | [English](README.md) | 简体中文 3 | 4 | ## 简介 5 | 6 | 这是一个基于[Unity Localization插件](https://docs.unity3d.com/Packages/com.unity.localization@1.0/manual/index.html) 7 | 和 [OpenAI API](https://openai.com/blog/openai-api) 的多语言翻译自动化工具。 8 | 此工具可以基于OpenAI GPT自动为翻译 Unity Localization 缺失的字符串条目,让多语言支持变得既简单又高效。 9 | 10 | ![preview](Intro.gif) 11 | 12 | ### 特性 13 | 1. __关联Unity Localization__:自动查找 String Table Collection 中的未完成翻译项,并将结果自动同步回 String Table。 14 | 2. __自定义翻译需求__:通过 String Table Metadata 的 Comment 为 GPT 额外提供翻译需求,控制翻译结果偏好。 15 | 3. __迭代翻译结果__:对不满意的翻译结果可以随时删除,重新翻译。也可以单独指定翻译某一项。 16 | 17 | ### 使用 DeepSeek API 18 | 现在这个插件支持 DeepSeek API。 19 | 你可以选择 OpenAI 或 DeepSeek 作为翻译服务提供商。 20 | 对于 DeepSeek,将 base URL 设置为 `https://api.deepseek.com` 并选择模型 `deepseek-chat` 或 `deepseek-reasoner`。 21 | 22 | ## 使用 23 | 24 | ### 安装插件 25 | 26 | * 在 Unity 菜单 `Window > Package Manager` 27 | * 点击 `+` 选择 `Add package from git URL` 28 | * 输入以下地址 29 | ``` 30 | https://github.com/redclock/UnityGPTLocalization.git#release 31 | ``` 32 | * 点击 `Add` 安装 33 | * 如果你的项目中没有使用 Unity Localization 插件,Unity Localization 插件也会被自动安装。 34 | 35 | ### 配置 OpenAI API Key 36 | * 到 https://platform.openai.com/api-keys 获取你的 API Key 37 | 38 | ### 或者:配置 DeepSeek API Key 39 | * 到 https://platform.deepseek.com/api_keys 获取你的 API Key。 40 | 41 | ## 使用方法 42 | 在 Unity 打开菜单 `Tools > GPT Localization`, 打开 GPT Localization 窗口。 43 | 44 | ![Screenshot](Screenshot.png) 45 | 46 | ### 1.填入 GPT Model Parameters 47 | | 参数 | 描述 | 48 | |----------|-----------------------------------------------------| 49 | | Base Url | 默认为 https://api.openai.com/v1, 也可以使用其他的代理地址 | 50 | | API Key | 你的 OpenAI API Key | 51 | | Model | 选择一个 GPT 模型,如 `gpt-3.5-turbo`,`gpt-4-turbo-preview` | 52 | | Temperature | 控制翻译结果的多样性,0.0 为最准确的翻译,1.0 为最多样的翻译 | 53 | 54 | ### 2. 选择 String Table Collection 55 | * 如果没有建立 String Table Collection,窗口会提示你创建一个。 56 | * 如果存在,在下拉菜单中选择一个 String Table Collection. 57 | * 为了测试,可以在String Table中建立一些未完成的 Entry 58 | - 未完成指至少一项语言已有翻译,且至少一个语言没有翻译的Entry。 59 | 60 | ### 3. 翻译条目 61 | * 窗口中会自动列出所有未完成翻译的条目。 62 | * 点击 `Translate Selected` 翻译所有选中的条目。 63 | * 也可以点击每个条目的 `Translate` 按钮单独翻译。 64 | * 翻译结束查看 String Table Editor,会看到结果已经自动填入。 65 | * 如果对某个结果不满意,可以在String Table Editor 中删除结果,然后就可以重新翻译。 66 | 67 | ### 4. 自定义翻译需求 68 | * 点击 `Open Table Editor` 打开 String Table Editor。 69 | * 在 String Table Editor 中添加 Comment,可以控制翻译结果偏好。 70 | * 点击某一个条目的 Edit Metadata 71 | 72 | ![Edit Metadata](Metadata.jpg) 73 | 74 | * 在Shared Entry Metadata中添加 Comment,可以控制这个条目所有目标语言的翻译结果。 75 | * 在语言指定的Metadata中添加 Comment,可以控制这个条目某个语言的翻译结果。 76 | * 可以通过自然语言控制翻译结果,如: 77 | * 翻译结果要正式一些 78 | * 要用简短的词语,最多 3 个词 79 | * 日语尽量不要用片假名 80 | * Native这个词要在目标语言中保持为英文 81 | * 等等 82 | * 如果不知道如何写 Comment,可以用我做的这个 83 | [GPT bot](https://chat.openai.com/g/g-NnmjK7bix-multilingual-prompt-generator) 84 | 来帮你写 Comment。 85 | 86 | ## 限制 87 | * 由于 OpenAI API 调用需要付费。 88 | * 翻译结果不保证准确,需要人工审核。 89 | 90 | ## 引用 91 | 本项目基于 [srcnalt/OpenAI-Unity](https://github.com/srcnalt/OpenAI-Unity): 支持 OpenAI API 调用的 Unity 插件。 92 | 93 | 94 | -------------------------------------------------------------------------------- /Assets/GptLocalization/README_CN.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9f57241f892745829b55955a4b02a38c 3 | timeCreated: 1709909191 -------------------------------------------------------------------------------- /Assets/GptLocalization/Screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redclock/UnityGPTLocalization/312d2e66b7dfd50b1aa5ed9b193bd9cb7562b145/Assets/GptLocalization/Screenshot.png -------------------------------------------------------------------------------- /Assets/GptLocalization/Screenshot.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 64e17c25d0b4e4b58b957375f6cd97ca 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 0 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMipmapLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 1 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 0 41 | wrapV: 0 42 | wrapW: 0 43 | nPOTScale: 1 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 0 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 0 56 | spriteTessellationDetail: -1 57 | textureType: 0 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 0 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 1 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | ignorePlatformSupport: 0 81 | androidETC2FallbackOverride: 0 82 | forceMaximumCompressionQuality_BC6H_BC7: 0 83 | - serializedVersion: 3 84 | buildTarget: Standalone 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | ignorePlatformSupport: 0 94 | androidETC2FallbackOverride: 0 95 | forceMaximumCompressionQuality_BC6H_BC7: 0 96 | - serializedVersion: 3 97 | buildTarget: iPhone 98 | maxTextureSize: 2048 99 | resizeAlgorithm: 0 100 | textureFormat: -1 101 | textureCompression: 1 102 | compressionQuality: 50 103 | crunchedCompression: 0 104 | allowsAlphaSplitting: 0 105 | overridden: 0 106 | ignorePlatformSupport: 0 107 | androidETC2FallbackOverride: 0 108 | forceMaximumCompressionQuality_BC6H_BC7: 0 109 | - serializedVersion: 3 110 | buildTarget: Android 111 | maxTextureSize: 2048 112 | resizeAlgorithm: 0 113 | textureFormat: -1 114 | textureCompression: 1 115 | compressionQuality: 50 116 | crunchedCompression: 0 117 | allowsAlphaSplitting: 0 118 | overridden: 0 119 | ignorePlatformSupport: 0 120 | androidETC2FallbackOverride: 0 121 | forceMaximumCompressionQuality_BC6H_BC7: 0 122 | - serializedVersion: 3 123 | buildTarget: Server 124 | maxTextureSize: 2048 125 | resizeAlgorithm: 0 126 | textureFormat: -1 127 | textureCompression: 1 128 | compressionQuality: 50 129 | crunchedCompression: 0 130 | allowsAlphaSplitting: 0 131 | overridden: 0 132 | ignorePlatformSupport: 0 133 | androidETC2FallbackOverride: 0 134 | forceMaximumCompressionQuality_BC6H_BC7: 0 135 | spriteSheet: 136 | serializedVersion: 2 137 | sprites: [] 138 | outline: [] 139 | physicsShape: [] 140 | bones: [] 141 | spriteID: 142 | internalID: 0 143 | vertices: [] 144 | indices: 145 | edges: [] 146 | weights: [] 147 | secondaryTextures: [] 148 | nameFileIdTable: {} 149 | mipmapLimitGroupName: 150 | pSDRemoveMatte: 0 151 | userData: 152 | assetBundleName: 153 | assetBundleVariant: 154 | -------------------------------------------------------------------------------- /Assets/GptLocalization/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "com.redgame.gpt-localization", 3 | "version": "1.0.2", 4 | "displayName": "GPT Localization", 5 | "description": "A Unity tool combining Localization and ChatGPT for easy multilingual translation using OpenAI API. Control translation quality with Localization comments.", 6 | "unity": "2020.3", 7 | "unityRelease": "0f1", 8 | "dependencies": { 9 | "com.unity.nuget.newtonsoft-json": "3.2.1", 10 | "com.unity.localization": "1.4.5" 11 | }, 12 | "keywords": [ 13 | "openai", 14 | "chatgpt", 15 | "localization", 16 | "ai", 17 | "translate" 18 | ], 19 | "author": { 20 | "name": "redclock", 21 | "url": "https://github.com/redclock" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Assets/GptLocalization/package.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 518f87b17f93043589a7fa6c7747da26 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Scenes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 86a8734037c90434fae3c880e8218e40 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, g: 0, b: 0, 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 | debug: 122 | m_Flags: 0 123 | m_NavMeshData: {fileID: 0} 124 | --- !u!1 &705507993 125 | GameObject: 126 | m_ObjectHideFlags: 0 127 | m_CorrespondingSourceObject: {fileID: 0} 128 | m_PrefabInternal: {fileID: 0} 129 | serializedVersion: 6 130 | m_Component: 131 | - component: {fileID: 705507995} 132 | - component: {fileID: 705507994} 133 | m_Layer: 0 134 | m_Name: Directional Light 135 | m_TagString: Untagged 136 | m_Icon: {fileID: 0} 137 | m_NavMeshLayer: 0 138 | m_StaticEditorFlags: 0 139 | m_IsActive: 1 140 | --- !u!108 &705507994 141 | Light: 142 | m_ObjectHideFlags: 0 143 | m_CorrespondingSourceObject: {fileID: 0} 144 | m_PrefabInternal: {fileID: 0} 145 | m_GameObject: {fileID: 705507993} 146 | m_Enabled: 1 147 | serializedVersion: 8 148 | m_Type: 1 149 | m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} 150 | m_Intensity: 1 151 | m_Range: 10 152 | m_SpotAngle: 30 153 | m_CookieSize: 10 154 | m_Shadows: 155 | m_Type: 2 156 | m_Resolution: -1 157 | m_CustomResolution: -1 158 | m_Strength: 1 159 | m_Bias: 0.05 160 | m_NormalBias: 0.4 161 | m_NearPlane: 0.2 162 | m_Cookie: {fileID: 0} 163 | m_DrawHalo: 0 164 | m_Flare: {fileID: 0} 165 | m_RenderMode: 0 166 | m_CullingMask: 167 | serializedVersion: 2 168 | m_Bits: 4294967295 169 | m_Lightmapping: 1 170 | m_LightShadowCasterMode: 0 171 | m_AreaSize: {x: 1, y: 1} 172 | m_BounceIntensity: 1 173 | m_ColorTemperature: 6570 174 | m_UseColorTemperature: 0 175 | m_ShadowRadius: 0 176 | m_ShadowAngle: 0 177 | --- !u!4 &705507995 178 | Transform: 179 | m_ObjectHideFlags: 0 180 | m_CorrespondingSourceObject: {fileID: 0} 181 | m_PrefabInternal: {fileID: 0} 182 | m_GameObject: {fileID: 705507993} 183 | m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} 184 | m_LocalPosition: {x: 0, y: 3, z: 0} 185 | m_LocalScale: {x: 1, y: 1, z: 1} 186 | m_Children: [] 187 | m_Father: {fileID: 0} 188 | m_RootOrder: 1 189 | m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} 190 | --- !u!1 &963194225 191 | GameObject: 192 | m_ObjectHideFlags: 0 193 | m_CorrespondingSourceObject: {fileID: 0} 194 | m_PrefabInternal: {fileID: 0} 195 | serializedVersion: 6 196 | m_Component: 197 | - component: {fileID: 963194228} 198 | - component: {fileID: 963194227} 199 | - component: {fileID: 963194226} 200 | m_Layer: 0 201 | m_Name: Main Camera 202 | m_TagString: MainCamera 203 | m_Icon: {fileID: 0} 204 | m_NavMeshLayer: 0 205 | m_StaticEditorFlags: 0 206 | m_IsActive: 1 207 | --- !u!81 &963194226 208 | AudioListener: 209 | m_ObjectHideFlags: 0 210 | m_CorrespondingSourceObject: {fileID: 0} 211 | m_PrefabInternal: {fileID: 0} 212 | m_GameObject: {fileID: 963194225} 213 | m_Enabled: 1 214 | --- !u!20 &963194227 215 | Camera: 216 | m_ObjectHideFlags: 0 217 | m_CorrespondingSourceObject: {fileID: 0} 218 | m_PrefabInternal: {fileID: 0} 219 | m_GameObject: {fileID: 963194225} 220 | m_Enabled: 1 221 | serializedVersion: 2 222 | m_ClearFlags: 1 223 | m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} 224 | m_projectionMatrixMode: 1 225 | m_SensorSize: {x: 36, y: 24} 226 | m_LensShift: {x: 0, y: 0} 227 | m_GateFitMode: 2 228 | m_FocalLength: 50 229 | m_NormalizedViewPortRect: 230 | serializedVersion: 2 231 | x: 0 232 | y: 0 233 | width: 1 234 | height: 1 235 | near clip plane: 0.3 236 | far clip plane: 1000 237 | field of view: 60 238 | orthographic: 0 239 | orthographic size: 5 240 | m_Depth: -1 241 | m_CullingMask: 242 | serializedVersion: 2 243 | m_Bits: 4294967295 244 | m_RenderingPath: -1 245 | m_TargetTexture: {fileID: 0} 246 | m_TargetDisplay: 0 247 | m_TargetEye: 3 248 | m_HDR: 1 249 | m_AllowMSAA: 1 250 | m_AllowDynamicResolution: 0 251 | m_ForceIntoRT: 0 252 | m_OcclusionCulling: 1 253 | m_StereoConvergence: 10 254 | m_StereoSeparation: 0.022 255 | --- !u!4 &963194228 256 | Transform: 257 | m_ObjectHideFlags: 0 258 | m_CorrespondingSourceObject: {fileID: 0} 259 | m_PrefabInternal: {fileID: 0} 260 | m_GameObject: {fileID: 963194225} 261 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 262 | m_LocalPosition: {x: 0, y: 1, z: -10} 263 | m_LocalScale: {x: 1, y: 1, z: 1} 264 | m_Children: [] 265 | m_Father: {fileID: 0} 266 | m_RootOrder: 0 267 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 268 | -------------------------------------------------------------------------------- /Assets/Scenes/SampleScene.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9fc0d4010bbf28b4594072e72b8655ab 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Settings.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a9cda53369b3e44c6be134f99a2f8a34 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Settings/Chinese (Simplified) (zh-Hans).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: 1bb1838fe8befb0429646b938e757ff3, type: 3} 13 | m_Name: Chinese (Simplified) (zh-Hans) 14 | m_EditorClassIdentifier: 15 | m_Identifier: 16 | m_Code: zh-Hans 17 | m_Metadata: 18 | m_Items: [] 19 | m_LocaleName: Chinese (Simplified) (zh-Hans) 20 | m_CustomFormatCultureCode: 21 | m_UseCustomFormatter: 0 22 | m_SortOrder: 10000 23 | references: 24 | version: 2 25 | RefIds: [] 26 | -------------------------------------------------------------------------------- /Assets/Settings/Chinese (Simplified) (zh-Hans).asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 276dffb04886c4675901a07f46225ee2 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Settings/English (en).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: 1bb1838fe8befb0429646b938e757ff3, type: 3} 13 | m_Name: English (en) 14 | m_EditorClassIdentifier: 15 | m_Identifier: 16 | m_Code: en 17 | m_Metadata: 18 | m_Items: [] 19 | m_LocaleName: English (en) 20 | m_CustomFormatCultureCode: 21 | m_UseCustomFormatter: 0 22 | m_SortOrder: 10000 23 | references: 24 | version: 2 25 | RefIds: [] 26 | -------------------------------------------------------------------------------- /Assets/Settings/English (en).asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e54bfe145472e4607b54173d7614a6d6 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Settings/French (fr).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: 1bb1838fe8befb0429646b938e757ff3, type: 3} 13 | m_Name: French (fr) 14 | m_EditorClassIdentifier: 15 | m_Identifier: 16 | m_Code: fr 17 | m_Metadata: 18 | m_Items: [] 19 | m_LocaleName: French (fr) 20 | m_CustomFormatCultureCode: 21 | m_UseCustomFormatter: 0 22 | m_SortOrder: 10000 23 | references: 24 | version: 2 25 | RefIds: [] 26 | -------------------------------------------------------------------------------- /Assets/Settings/French (fr).asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 79e09439b5a7e4d269b832f4a307e26e 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Settings/GameStrings Shared 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: 5b11a58205ec3474ca216360e9fa74a8, type: 3} 13 | m_Name: GameStrings Shared Data 14 | m_EditorClassIdentifier: 15 | m_TableCollectionName: GameStrings 16 | m_TableCollectionNameGuidString: aaf7fd18648d14b7f94e6e12ae56cf30 17 | m_Entries: [] 18 | m_Metadata: 19 | m_Items: [] 20 | m_KeyGenerator: 21 | rid: 8165320892143370264 22 | references: 23 | version: 2 24 | RefIds: 25 | - rid: 8165320892143370264 26 | type: {class: DistributedUIDGenerator, ns: UnityEngine.Localization.Tables, asm: Unity.Localization} 27 | data: 28 | m_CustomEpoch: 1709541057995 29 | -------------------------------------------------------------------------------- /Assets/Settings/GameStrings Shared Data.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: aaf7fd18648d14b7f94e6e12ae56cf30 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Settings/GameStrings_en.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: e9620f8c34305754d8cc9a7e49e852d9, type: 3} 13 | m_Name: GameStrings_en 14 | m_EditorClassIdentifier: 15 | m_LocaleId: 16 | m_Code: en 17 | m_SharedData: {fileID: 11400000, guid: aaf7fd18648d14b7f94e6e12ae56cf30, type: 2} 18 | m_Metadata: 19 | m_Items: [] 20 | m_TableData: [] 21 | references: 22 | version: 2 23 | RefIds: [] 24 | -------------------------------------------------------------------------------- /Assets/Settings/GameStrings_en.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 87f8648d9eb7f4ea4b3f43edbdf2c5f5 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Settings/GameStrings_fr.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: e9620f8c34305754d8cc9a7e49e852d9, type: 3} 13 | m_Name: GameStrings_fr 14 | m_EditorClassIdentifier: 15 | m_LocaleId: 16 | m_Code: fr 17 | m_SharedData: {fileID: 11400000, guid: aaf7fd18648d14b7f94e6e12ae56cf30, type: 2} 18 | m_Metadata: 19 | m_Items: [] 20 | m_TableData: [] 21 | references: 22 | version: 2 23 | RefIds: [] 24 | -------------------------------------------------------------------------------- /Assets/Settings/GameStrings_fr.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6bb70f9700d2040209a4fc7c40cefb5e 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Settings/GameStrings_ja.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: e9620f8c34305754d8cc9a7e49e852d9, type: 3} 13 | m_Name: GameStrings_ja 14 | m_EditorClassIdentifier: 15 | m_LocaleId: 16 | m_Code: ja 17 | m_SharedData: {fileID: 11400000, guid: aaf7fd18648d14b7f94e6e12ae56cf30, type: 2} 18 | m_Metadata: 19 | m_Items: [] 20 | m_TableData: [] 21 | references: 22 | version: 2 23 | RefIds: [] 24 | -------------------------------------------------------------------------------- /Assets/Settings/GameStrings_ja.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 22a8c0c0456604d18aa2562a971f7098 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Settings/GameStrings_zh-Hans.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: e9620f8c34305754d8cc9a7e49e852d9, type: 3} 13 | m_Name: GameStrings_zh-Hans 14 | m_EditorClassIdentifier: 15 | m_LocaleId: 16 | m_Code: zh-Hans 17 | m_SharedData: {fileID: 11400000, guid: aaf7fd18648d14b7f94e6e12ae56cf30, type: 2} 18 | m_Metadata: 19 | m_Items: [] 20 | m_TableData: [] 21 | references: 22 | version: 2 23 | RefIds: [] 24 | -------------------------------------------------------------------------------- /Assets/Settings/GameStrings_zh-Hans.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 63e90952ca5354b5684428bc915cc50a 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Settings/Japanese (ja).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: 1bb1838fe8befb0429646b938e757ff3, type: 3} 13 | m_Name: Japanese (ja) 14 | m_EditorClassIdentifier: 15 | m_Identifier: 16 | m_Code: ja 17 | m_Metadata: 18 | m_Items: [] 19 | m_LocaleName: Japanese (ja) 20 | m_CustomFormatCultureCode: 21 | m_UseCustomFormatter: 0 22 | m_SortOrder: 10000 23 | references: 24 | version: 2 25 | RefIds: [] 26 | -------------------------------------------------------------------------------- /Assets/Settings/Japanese (ja).asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7916ee1cd9f5b47fd933870fb190896b 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Settings/Localization Settings.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: a07b5cd0b1b829245bc8c4b6978793e8, type: 3} 13 | m_Name: Localization Settings 14 | m_EditorClassIdentifier: 15 | m_StartupSelectors: 16 | - rid: 8165320892143370240 17 | - rid: 8165320892143370241 18 | - rid: 8165320892143370242 19 | m_AvailableLocales: 20 | rid: 8165320892143370243 21 | m_AssetDatabase: 22 | rid: 8165320892143370244 23 | m_StringDatabase: 24 | rid: 8165320892143370245 25 | m_Metadata: 26 | m_Items: [] 27 | m_ProjectLocaleIdentifier: 28 | m_Code: en 29 | m_PreloadBehavior: 1 30 | m_InitializeSynchronously: 0 31 | references: 32 | version: 2 33 | RefIds: 34 | - rid: -2 35 | type: {class: , ns: , asm: } 36 | - rid: 8165320892143370240 37 | type: {class: CommandLineLocaleSelector, ns: UnityEngine.Localization.Settings, asm: Unity.Localization} 38 | data: 39 | m_CommandLineArgument: -language= 40 | - rid: 8165320892143370241 41 | type: {class: SystemLocaleSelector, ns: UnityEngine.Localization.Settings, asm: Unity.Localization} 42 | data: 43 | - rid: 8165320892143370242 44 | type: {class: SpecificLocaleSelector, ns: UnityEngine.Localization.Settings, asm: Unity.Localization} 45 | data: 46 | m_LocaleId: 47 | m_Code: en 48 | - rid: 8165320892143370243 49 | type: {class: LocalesProvider, ns: UnityEngine.Localization.Settings, asm: Unity.Localization} 50 | data: 51 | - rid: 8165320892143370244 52 | type: {class: LocalizedAssetDatabase, ns: UnityEngine.Localization.Settings, asm: Unity.Localization} 53 | data: 54 | m_DefaultTableReference: 55 | m_TableCollectionName: 56 | m_CustomTableProvider: 57 | rid: -2 58 | m_CustomTablePostprocessor: 59 | rid: -2 60 | m_UseFallback: 0 61 | - rid: 8165320892143370245 62 | type: {class: LocalizedStringDatabase, ns: UnityEngine.Localization.Settings, asm: Unity.Localization} 63 | data: 64 | m_DefaultTableReference: 65 | m_TableCollectionName: 66 | m_CustomTableProvider: 67 | rid: -2 68 | m_CustomTablePostprocessor: 69 | rid: -2 70 | m_UseFallback: 0 71 | m_MissingTranslationState: 1 72 | m_NoTranslationFoundMessage: No translation found for '{key}' in {table.TableCollectionName} 73 | m_SmartFormat: 74 | rid: 8165320892143370246 75 | - rid: 8165320892143370246 76 | type: {class: SmartFormatter, ns: UnityEngine.Localization.SmartFormat, asm: Unity.Localization} 77 | data: 78 | m_Settings: 79 | rid: 8165320892143370247 80 | m_Parser: 81 | rid: 8165320892143370248 82 | m_Sources: 83 | - rid: 8165320892143370249 84 | - rid: 8165320892143370250 85 | - rid: 8165320892143370251 86 | - rid: 8165320892143370252 87 | - rid: 8165320892143370253 88 | - rid: 8165320892143370254 89 | - rid: 8165320892143370255 90 | m_Formatters: 91 | - rid: 8165320892143370249 92 | - rid: 8165320892143370256 93 | - rid: 8165320892143370257 94 | - rid: 8165320892143370258 95 | - rid: 8165320892143370259 96 | - rid: 8165320892143370260 97 | - rid: 8165320892143370261 98 | - rid: 8165320892143370262 99 | - rid: 8165320892143370263 100 | - rid: 8165320892143370247 101 | type: {class: SmartSettings, ns: UnityEngine.Localization.SmartFormat.Core.Settings, asm: Unity.Localization} 102 | data: 103 | m_FormatErrorAction: 0 104 | m_ParseErrorAction: 0 105 | m_CaseSensitivity: 0 106 | m_ConvertCharacterStringLiterals: 1 107 | - rid: 8165320892143370248 108 | type: {class: Parser, ns: UnityEngine.Localization.SmartFormat.Core.Parsing, asm: Unity.Localization} 109 | data: 110 | m_OpeningBrace: 123 111 | m_ClosingBrace: 125 112 | m_Settings: 113 | rid: 8165320892143370247 114 | m_AlphanumericSelectors: 1 115 | m_AllowedSelectorChars: _- 116 | m_Operators: '[]().,' 117 | m_AlternativeEscaping: 0 118 | m_AlternativeEscapeChar: 92 119 | - rid: 8165320892143370249 120 | type: {class: ListFormatter, ns: UnityEngine.Localization.SmartFormat.Extensions, asm: Unity.Localization} 121 | data: 122 | m_Names: 123 | - list 124 | - l 125 | - 126 | m_SmartSettings: 127 | rid: 8165320892143370247 128 | - rid: 8165320892143370250 129 | type: {class: PersistentVariablesSource, ns: UnityEngine.Localization.SmartFormat.Extensions, asm: Unity.Localization} 130 | data: 131 | m_Groups: [] 132 | - rid: 8165320892143370251 133 | type: {class: DictionarySource, ns: UnityEngine.Localization.SmartFormat.Extensions, asm: Unity.Localization} 134 | data: 135 | - rid: 8165320892143370252 136 | type: {class: ValueTupleSource, ns: UnityEngine.Localization.SmartFormat.Extensions, asm: Unity.Localization} 137 | data: 138 | - rid: 8165320892143370253 139 | type: {class: XmlSource, ns: UnityEngine.Localization.SmartFormat.Extensions, asm: Unity.Localization} 140 | data: 141 | - rid: 8165320892143370254 142 | type: {class: ReflectionSource, ns: UnityEngine.Localization.SmartFormat.Extensions, asm: Unity.Localization} 143 | data: 144 | - rid: 8165320892143370255 145 | type: {class: DefaultSource, ns: UnityEngine.Localization.SmartFormat.Extensions, asm: Unity.Localization} 146 | data: 147 | - rid: 8165320892143370256 148 | type: {class: PluralLocalizationFormatter, ns: UnityEngine.Localization.SmartFormat.Extensions, asm: Unity.Localization} 149 | data: 150 | m_Names: 151 | - plural 152 | - p 153 | - 154 | m_DefaultTwoLetterISOLanguageName: en 155 | - rid: 8165320892143370257 156 | type: {class: ConditionalFormatter, ns: UnityEngine.Localization.SmartFormat.Extensions, asm: Unity.Localization} 157 | data: 158 | m_Names: 159 | - conditional 160 | - cond 161 | - 162 | - rid: 8165320892143370258 163 | type: {class: TimeFormatter, ns: UnityEngine.Localization.SmartFormat.Extensions, asm: Unity.Localization} 164 | data: 165 | m_Names: 166 | - timespan 167 | - time 168 | - t 169 | - 170 | m_DefaultFormatOptions: 4646 171 | - rid: 8165320892143370259 172 | type: {class: XElementFormatter, ns: UnityEngine.Localization.SmartFormat.Extensions, asm: Unity.Localization} 173 | data: 174 | m_Names: 175 | - xelement 176 | - xml 177 | - x 178 | - 179 | - rid: 8165320892143370260 180 | type: {class: ChooseFormatter, ns: UnityEngine.Localization.SmartFormat.Extensions, asm: Unity.Localization} 181 | data: 182 | m_Names: 183 | - choose 184 | - c 185 | m_SplitChar: 124 186 | - rid: 8165320892143370261 187 | type: {class: SubStringFormatter, ns: UnityEngine.Localization.SmartFormat.Extensions, asm: Unity.Localization} 188 | data: 189 | m_Names: 190 | - substr 191 | m_ParameterDelimiter: 44 192 | m_NullDisplayString: (null) 193 | m_OutOfRangeBehavior: 0 194 | - rid: 8165320892143370262 195 | type: {class: IsMatchFormatter, ns: UnityEngine.Localization.SmartFormat.Extensions, asm: Unity.Localization} 196 | data: 197 | m_Names: 198 | - ismatch 199 | - rid: 8165320892143370263 200 | type: {class: DefaultFormatter, ns: UnityEngine.Localization.SmartFormat.Extensions, asm: Unity.Localization} 201 | data: 202 | m_Names: 203 | - default 204 | - d 205 | - 206 | -------------------------------------------------------------------------------- /Assets/Settings/Localization Settings.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c04215c9d5bea427ea1cb41680f8caba 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Settings/TestStringCollection Shared 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: 5b11a58205ec3474ca216360e9fa74a8, type: 3} 13 | m_Name: TestStringCollection Shared Data 14 | m_EditorClassIdentifier: 15 | m_TableCollectionName: TestStringCollection 16 | m_TableCollectionNameGuidString: 88630988c8f454fdab8f154122f4ee1f 17 | m_Entries: 18 | - m_Id: 312839495680 19 | m_Key: Purchase Coin 20 | m_Metadata: 21 | m_Items: [] 22 | - m_Id: 384956358656 23 | m_Key: Comfirm 24 | m_Metadata: 25 | m_Items: 26 | - rid: 8165320892143370274 27 | - m_Id: 426811318272 28 | m_Key: Purchase Coin Message 29 | m_Metadata: 30 | m_Items: [] 31 | - m_Id: 1920776265728 32 | m_Key: Dialog1 33 | m_Metadata: 34 | m_Items: 35 | - rid: 8165320892143370276 36 | - m_Id: 7949354262528 37 | m_Key: Dialog2 38 | m_Metadata: 39 | m_Items: 40 | - rid: 8165320897239187460 41 | - m_Id: 8516319305728 42 | m_Key: SpaceFire 43 | m_Metadata: 44 | m_Items: 45 | - rid: 8165320892143370278 46 | - m_Id: 16990793097216 47 | m_Key: TestNatieBridge 48 | m_Metadata: 49 | m_Items: 50 | - rid: 8165320892143370281 51 | m_Metadata: 52 | m_Items: [] 53 | m_KeyGenerator: 54 | rid: 8165320892143370269 55 | references: 56 | version: 2 57 | RefIds: 58 | - rid: 8165320892143370269 59 | type: {class: DistributedUIDGenerator, ns: UnityEngine.Localization.Tables, asm: Unity.Localization} 60 | data: 61 | m_CustomEpoch: 1709541371502 62 | - rid: 8165320892143370274 63 | type: {class: Comment, ns: UnityEngine.Localization.Metadata, asm: Unity.Localization} 64 | data: 65 | m_CommentText: The text in a button to confirm purchasing, should be short 66 | as possible 67 | - rid: 8165320892143370276 68 | type: {class: Comment, ns: UnityEngine.Localization.Metadata, asm: Unity.Localization} 69 | data: 70 | m_CommentText: Translate into the target language's ancient dialect. 71 | - rid: 8165320892143370278 72 | type: {class: Comment, ns: UnityEngine.Localization.Metadata, asm: Unity.Localization} 73 | data: 74 | m_CommentText: " interpreting \"\u5929\u5BAB\" creatively to fit cultural 75 | or linguistic nuances rather than using transliteration." 76 | - rid: 8165320892143370281 77 | type: {class: Comment, ns: UnityEngine.Localization.Metadata, asm: Unity.Localization} 78 | data: 79 | m_CommentText: do not translate "Native Bridge"; keep this term in its original 80 | English form. 81 | - rid: 8165320897239187460 82 | type: {class: Comment, ns: UnityEngine.Localization.Metadata, asm: Unity.Localization} 83 | data: 84 | m_CommentText: Translate into the target language's ancient dialect. 85 | -------------------------------------------------------------------------------- /Assets/Settings/TestStringCollection Shared Data.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 88630988c8f454fdab8f154122f4ee1f 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Settings/TestStringCollection.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: 5be51871efa6c3e4eae1703925c8f5ac, type: 3} 13 | m_Name: TestStringCollection 14 | m_EditorClassIdentifier: 15 | m_SharedTableData: {fileID: 11400000, guid: 88630988c8f454fdab8f154122f4ee1f, type: 2} 16 | m_Tables: 17 | - {fileID: 11400000, guid: 26f60b979c3e34887b13930fc1b0ee4d, type: 2} 18 | - {fileID: 11400000, guid: b67ccf21dd2624310a079ccce8d99d4d, type: 2} 19 | - {fileID: 11400000, guid: e106fd76cb186437a8d036be83e424bb, type: 2} 20 | - {fileID: 11400000, guid: 589e02935f86c4cf0a8d01504c94b145, type: 2} 21 | m_Extensions: [] 22 | m_Group: String Table 23 | references: 24 | version: 2 25 | RefIds: [] 26 | -------------------------------------------------------------------------------- /Assets/Settings/TestStringCollection.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6396459c0ce2a482ebfac444c8215a81 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Settings/TestStringCollection_en.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: e9620f8c34305754d8cc9a7e49e852d9, type: 3} 13 | m_Name: TestStringCollection_en 14 | m_EditorClassIdentifier: 15 | m_LocaleId: 16 | m_Code: en 17 | m_SharedData: {fileID: 11400000, guid: 88630988c8f454fdab8f154122f4ee1f, type: 2} 18 | m_Metadata: 19 | m_Items: 20 | - rid: 8165320897239187458 21 | m_TableData: 22 | - m_Id: 312839495680 23 | m_Localized: 24 | m_Metadata: 25 | m_Items: [] 26 | - m_Id: 384956358656 27 | m_Localized: 28 | m_Metadata: 29 | m_Items: [] 30 | - m_Id: 426811318272 31 | m_Localized: 32 | m_Metadata: 33 | m_Items: 34 | - rid: 8165320897239187458 35 | - m_Id: 1920776265728 36 | m_Localized: 37 | m_Metadata: 38 | m_Items: [] 39 | - m_Id: 7949354262528 40 | m_Localized: 41 | m_Metadata: 42 | m_Items: [] 43 | - m_Id: 8516319305728 44 | m_Localized: 45 | m_Metadata: 46 | m_Items: [] 47 | - m_Id: 16990793097216 48 | m_Localized: 49 | m_Metadata: 50 | m_Items: [] 51 | references: 52 | version: 2 53 | RefIds: 54 | - rid: 8165320897239187458 55 | type: {class: SmartFormatTag, ns: UnityEngine.Localization.Metadata, asm: Unity.Localization} 56 | data: 57 | m_Entries: 00e0ef5f63000000 58 | -------------------------------------------------------------------------------- /Assets/Settings/TestStringCollection_en.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b67ccf21dd2624310a079ccce8d99d4d 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Settings/TestStringCollection_fr.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: e9620f8c34305754d8cc9a7e49e852d9, type: 3} 13 | m_Name: TestStringCollection_fr 14 | m_EditorClassIdentifier: 15 | m_LocaleId: 16 | m_Code: fr 17 | m_SharedData: {fileID: 11400000, guid: 88630988c8f454fdab8f154122f4ee1f, type: 2} 18 | m_Metadata: 19 | m_Items: 20 | - rid: 8165320897239187469 21 | m_TableData: 22 | - m_Id: 312839495680 23 | m_Localized: 24 | m_Metadata: 25 | m_Items: [] 26 | - m_Id: 384956358656 27 | m_Localized: 28 | m_Metadata: 29 | m_Items: [] 30 | - m_Id: 426811318272 31 | m_Localized: 32 | m_Metadata: 33 | m_Items: 34 | - rid: 8165320897239187469 35 | - m_Id: 1920776265728 36 | m_Localized: 37 | m_Metadata: 38 | m_Items: [] 39 | - m_Id: 7949354262528 40 | m_Localized: 41 | m_Metadata: 42 | m_Items: [] 43 | - m_Id: 8516319305728 44 | m_Localized: 45 | m_Metadata: 46 | m_Items: [] 47 | - m_Id: 16990793097216 48 | m_Localized: 49 | m_Metadata: 50 | m_Items: [] 51 | references: 52 | version: 2 53 | RefIds: 54 | - rid: 8165320897239187469 55 | type: {class: SmartFormatTag, ns: UnityEngine.Localization.Metadata, asm: Unity.Localization} 56 | data: 57 | m_Entries: 00e0ef5f63000000 58 | -------------------------------------------------------------------------------- /Assets/Settings/TestStringCollection_fr.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e106fd76cb186437a8d036be83e424bb 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Settings/TestStringCollection_ja.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: e9620f8c34305754d8cc9a7e49e852d9, type: 3} 13 | m_Name: TestStringCollection_ja 14 | m_EditorClassIdentifier: 15 | m_LocaleId: 16 | m_Code: ja 17 | m_SharedData: {fileID: 11400000, guid: 88630988c8f454fdab8f154122f4ee1f, type: 2} 18 | m_Metadata: 19 | m_Items: 20 | - rid: 8165320897239187470 21 | m_TableData: 22 | - m_Id: 312839495680 23 | m_Localized: 24 | m_Metadata: 25 | m_Items: [] 26 | - m_Id: 384956358656 27 | m_Localized: 28 | m_Metadata: 29 | m_Items: [] 30 | - m_Id: 426811318272 31 | m_Localized: 32 | m_Metadata: 33 | m_Items: 34 | - rid: 8165320897239187470 35 | - m_Id: 1920776265728 36 | m_Localized: 37 | m_Metadata: 38 | m_Items: [] 39 | - m_Id: 7949354262528 40 | m_Localized: 41 | m_Metadata: 42 | m_Items: [] 43 | - m_Id: 8516319305728 44 | m_Localized: 45 | m_Metadata: 46 | m_Items: [] 47 | - m_Id: 16990793097216 48 | m_Localized: 49 | m_Metadata: 50 | m_Items: [] 51 | references: 52 | version: 2 53 | RefIds: 54 | - rid: 8165320897239187470 55 | type: {class: SmartFormatTag, ns: UnityEngine.Localization.Metadata, asm: Unity.Localization} 56 | data: 57 | m_Entries: 00e0ef5f63000000 58 | -------------------------------------------------------------------------------- /Assets/Settings/TestStringCollection_ja.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 589e02935f86c4cf0a8d01504c94b145 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Settings/TestStringCollection_zh-Hans.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: e9620f8c34305754d8cc9a7e49e852d9, type: 3} 13 | m_Name: TestStringCollection_zh-Hans 14 | m_EditorClassIdentifier: 15 | m_LocaleId: 16 | m_Code: zh-Hans 17 | m_SharedData: {fileID: 11400000, guid: 88630988c8f454fdab8f154122f4ee1f, type: 2} 18 | m_Metadata: 19 | m_Items: 20 | - rid: 8165320892143370286 21 | m_TableData: 22 | - m_Id: 312839495680 23 | m_Localized: "\u8D2D\u4E70\u91D1\u5E01" 24 | m_Metadata: 25 | m_Items: [] 26 | - m_Id: 384956358656 27 | m_Localized: "\u786E\u8BA4" 28 | m_Metadata: 29 | m_Items: [] 30 | - m_Id: 426811318272 31 | m_Localized: "\u4F60\u786E\u8BA4\u8D2D\u4E70{count}\u91D1\u5E01\u5417\uFF1F" 32 | m_Metadata: 33 | m_Items: 34 | - rid: 8165320892143370286 35 | - m_Id: 1920776265728 36 | m_Localized: "\u5BF9\u9762\u4F55\u4EBA\uFF1F" 37 | m_Metadata: 38 | m_Items: [] 39 | - m_Id: 7949354262528 40 | m_Localized: "\u6211\u4E43\u5E38\u5C71\u8D75\u5B50\u9F99\u662F\u4E5F" 41 | m_Metadata: 42 | m_Items: [] 43 | - m_Id: 8516319305728 44 | m_Localized: "\u5929\u5BAB\u53F7\u673A\u5668\u4EBA\u53D1\u5C04\uFF013..2..1.." 45 | m_Metadata: 46 | m_Items: [] 47 | - m_Id: 16990793097216 48 | m_Localized: "\u6D4B\u8BD5 Native Bridge" 49 | m_Metadata: 50 | m_Items: [] 51 | references: 52 | version: 2 53 | RefIds: 54 | - rid: 8165320892143370286 55 | type: {class: SmartFormatTag, ns: UnityEngine.Localization.Metadata, asm: Unity.Localization} 56 | data: 57 | m_Entries: 00e0ef5f63000000 58 | -------------------------------------------------------------------------------- /Assets/Settings/TestStringCollection_zh-Hans.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 26f60b979c3e34887b13930fc1b0ee4d 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Images/Intro.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redclock/UnityGPTLocalization/312d2e66b7dfd50b1aa5ed9b193bd9cb7562b145/Images/Intro.gif -------------------------------------------------------------------------------- /Intro.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redclock/UnityGPTLocalization/312d2e66b7dfd50b1aa5ed9b193bd9cb7562b145/Intro.gif -------------------------------------------------------------------------------- /Metadata.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redclock/UnityGPTLocalization/312d2e66b7dfd50b1aa5ed9b193bd9cb7562b145/Metadata.jpg -------------------------------------------------------------------------------- /Packages/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.unity.collab-proxy": "2.2.0", 4 | "com.unity.feature.development": "1.0.1", 5 | "com.unity.localization": "1.4.5", 6 | "com.unity.textmeshpro": "3.0.6", 7 | "com.unity.timeline": "1.7.6", 8 | "com.unity.ugui": "1.0.0", 9 | "com.unity.visualscripting": "1.9.1", 10 | "com.unity.modules.ai": "1.0.0", 11 | "com.unity.modules.androidjni": "1.0.0", 12 | "com.unity.modules.animation": "1.0.0", 13 | "com.unity.modules.assetbundle": "1.0.0", 14 | "com.unity.modules.audio": "1.0.0", 15 | "com.unity.modules.cloth": "1.0.0", 16 | "com.unity.modules.director": "1.0.0", 17 | "com.unity.modules.imageconversion": "1.0.0", 18 | "com.unity.modules.imgui": "1.0.0", 19 | "com.unity.modules.jsonserialize": "1.0.0", 20 | "com.unity.modules.particlesystem": "1.0.0", 21 | "com.unity.modules.physics": "1.0.0", 22 | "com.unity.modules.physics2d": "1.0.0", 23 | "com.unity.modules.screencapture": "1.0.0", 24 | "com.unity.modules.terrain": "1.0.0", 25 | "com.unity.modules.terrainphysics": "1.0.0", 26 | "com.unity.modules.tilemap": "1.0.0", 27 | "com.unity.modules.ui": "1.0.0", 28 | "com.unity.modules.uielements": "1.0.0", 29 | "com.unity.modules.umbra": "1.0.0", 30 | "com.unity.modules.unityanalytics": "1.0.0", 31 | "com.unity.modules.unitywebrequest": "1.0.0", 32 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0", 33 | "com.unity.modules.unitywebrequestaudio": "1.0.0", 34 | "com.unity.modules.unitywebrequesttexture": "1.0.0", 35 | "com.unity.modules.unitywebrequestwww": "1.0.0", 36 | "com.unity.modules.vehicles": "1.0.0", 37 | "com.unity.modules.video": "1.0.0", 38 | "com.unity.modules.vr": "1.0.0", 39 | "com.unity.modules.wind": "1.0.0", 40 | "com.unity.modules.xr": "1.0.0" 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /ProjectSettings/AudioManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!11 &1 4 | AudioManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Volume: 1 8 | Rolloff Scale: 1 9 | Doppler Factor: 1 10 | Default Speaker Mode: 2 11 | m_SampleRate: 0 12 | m_DSPBufferSize: 1024 13 | m_VirtualVoiceCount: 512 14 | m_RealVoiceCount: 32 15 | m_SpatializerPlugin: 16 | m_AmbisonicDecoderPlugin: 17 | m_DisableAudio: 0 18 | m_VirtualizeEffects: 1 19 | m_RequestedDSPBufferSize: 1024 20 | -------------------------------------------------------------------------------- /ProjectSettings/ClusterInputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!236 &1 4 | ClusterInputManager: 5 | m_ObjectHideFlags: 0 6 | m_Inputs: [] 7 | -------------------------------------------------------------------------------- /ProjectSettings/DynamicsManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!55 &1 4 | PhysicsManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 11 7 | m_Gravity: {x: 0, y: -9.81, z: 0} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_BounceThreshold: 2 10 | m_SleepThreshold: 0.005 11 | m_DefaultContactOffset: 0.01 12 | m_DefaultSolverIterations: 6 13 | m_DefaultSolverVelocityIterations: 1 14 | m_QueriesHitBackfaces: 0 15 | m_QueriesHitTriggers: 1 16 | m_EnableAdaptiveForce: 0 17 | m_ClothInterCollisionDistance: 0 18 | m_ClothInterCollisionStiffness: 0 19 | m_ContactsGeneration: 1 20 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 21 | m_AutoSimulation: 1 22 | m_AutoSyncTransforms: 0 23 | m_ReuseCollisionCallbacks: 1 24 | m_ClothInterCollisionSettingsToggle: 0 25 | m_ContactPairsMode: 0 26 | m_BroadphaseType: 0 27 | m_WorldBounds: 28 | m_Center: {x: 0, y: 0, z: 0} 29 | m_Extent: {x: 250, y: 250, z: 250} 30 | m_WorldSubdivisions: 8 31 | m_FrictionType: 0 32 | m_EnableEnhancedDeterminism: 0 33 | m_EnableUnifiedHeightmaps: 1 34 | m_DefaultMaxAngluarSpeed: 7 35 | -------------------------------------------------------------------------------- /ProjectSettings/EditorBuildSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1045 &1 4 | EditorBuildSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Scenes: [] 8 | m_configObjects: 9 | com.unity.addressableassets: {fileID: 11400000, guid: d5275bb03305343499acffeef7c45e06, type: 2} 10 | com.unity.localization.settings: {fileID: 11400000, guid: c04215c9d5bea427ea1cb41680f8caba, type: 2} 11 | -------------------------------------------------------------------------------- /ProjectSettings/EditorSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!159 &1 4 | EditorSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 11 7 | m_ExternalVersionControlSupport: Visible Meta Files 8 | m_SerializationMode: 2 9 | m_LineEndingsForNewScripts: 0 10 | m_DefaultBehaviorMode: 0 11 | m_PrefabRegularEnvironment: {fileID: 0} 12 | m_PrefabUIEnvironment: {fileID: 0} 13 | m_SpritePackerMode: 0 14 | m_SpritePackerPaddingPower: 1 15 | m_EtcTextureCompressorBehavior: 1 16 | m_EtcTextureFastCompressor: 1 17 | m_EtcTextureNormalCompressor: 2 18 | m_EtcTextureBestCompressor: 4 19 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;rsp;asmref 20 | m_ProjectGenerationRootNamespace: 21 | m_CollabEditorSettings: 22 | inProgressEnabled: 1 23 | m_EnableTextureStreamingInEditMode: 1 24 | m_EnableTextureStreamingInPlayMode: 1 25 | m_AsyncShaderCompilation: 1 26 | m_EnterPlayModeOptionsEnabled: 0 27 | m_EnterPlayModeOptions: 3 28 | m_ShowLightmapResolutionOverlay: 1 29 | m_UseLegacyProbeSampleCount: 0 30 | m_SerializeInlineMappingsOnOneLine: 1 31 | -------------------------------------------------------------------------------- /ProjectSettings/GraphicsSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!30 &1 4 | GraphicsSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 13 7 | m_Deferred: 8 | m_Mode: 1 9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} 10 | m_DeferredReflections: 11 | m_Mode: 1 12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} 13 | m_ScreenSpaceShadows: 14 | m_Mode: 1 15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} 16 | m_LegacyDeferred: 17 | m_Mode: 1 18 | m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} 19 | m_DepthNormals: 20 | m_Mode: 1 21 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} 22 | m_MotionVectors: 23 | m_Mode: 1 24 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} 25 | m_LightHalo: 26 | m_Mode: 1 27 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} 28 | m_LensFlare: 29 | m_Mode: 1 30 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} 31 | m_AlwaysIncludedShaders: 32 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} 33 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} 34 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} 35 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} 36 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} 37 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} 38 | m_PreloadedShaders: [] 39 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, 40 | type: 0} 41 | m_CustomRenderPipeline: {fileID: 0} 42 | m_TransparencySortMode: 0 43 | m_TransparencySortAxis: {x: 0, y: 0, z: 1} 44 | m_DefaultRenderingPath: 1 45 | m_DefaultMobileRenderingPath: 1 46 | m_TierSettings: [] 47 | m_LightmapStripping: 0 48 | m_FogStripping: 0 49 | m_InstancingStripping: 0 50 | m_LightmapKeepPlain: 1 51 | m_LightmapKeepDirCombined: 1 52 | m_LightmapKeepDynamicPlain: 1 53 | m_LightmapKeepDynamicDirCombined: 1 54 | m_LightmapKeepShadowMask: 1 55 | m_LightmapKeepSubtractive: 1 56 | m_FogKeepLinear: 1 57 | m_FogKeepExp: 1 58 | m_FogKeepExp2: 1 59 | m_AlbedoSwatchInfos: [] 60 | m_LightsUseLinearIntensity: 0 61 | m_LightsUseColorTemperature: 0 62 | m_LogWhenShaderIsCompiled: 0 63 | m_AllowEnlightenSupportForUpgradedProject: 0 64 | -------------------------------------------------------------------------------- /ProjectSettings/InputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!13 &1 4 | InputManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Axes: 8 | - serializedVersion: 3 9 | m_Name: Horizontal 10 | descriptiveName: 11 | descriptiveNegativeName: 12 | negativeButton: left 13 | positiveButton: right 14 | altNegativeButton: a 15 | altPositiveButton: d 16 | gravity: 3 17 | dead: 0.001 18 | sensitivity: 3 19 | snap: 1 20 | invert: 0 21 | type: 0 22 | axis: 0 23 | joyNum: 0 24 | - serializedVersion: 3 25 | m_Name: Vertical 26 | descriptiveName: 27 | descriptiveNegativeName: 28 | negativeButton: down 29 | positiveButton: up 30 | altNegativeButton: s 31 | altPositiveButton: w 32 | gravity: 3 33 | dead: 0.001 34 | sensitivity: 3 35 | snap: 1 36 | invert: 0 37 | type: 0 38 | axis: 0 39 | joyNum: 0 40 | - serializedVersion: 3 41 | m_Name: Fire1 42 | descriptiveName: 43 | descriptiveNegativeName: 44 | negativeButton: 45 | positiveButton: left ctrl 46 | altNegativeButton: 47 | altPositiveButton: mouse 0 48 | gravity: 1000 49 | dead: 0.001 50 | sensitivity: 1000 51 | snap: 0 52 | invert: 0 53 | type: 0 54 | axis: 0 55 | joyNum: 0 56 | - serializedVersion: 3 57 | m_Name: Fire2 58 | descriptiveName: 59 | descriptiveNegativeName: 60 | negativeButton: 61 | positiveButton: left alt 62 | altNegativeButton: 63 | altPositiveButton: mouse 1 64 | gravity: 1000 65 | dead: 0.001 66 | sensitivity: 1000 67 | snap: 0 68 | invert: 0 69 | type: 0 70 | axis: 0 71 | joyNum: 0 72 | - serializedVersion: 3 73 | m_Name: Fire3 74 | descriptiveName: 75 | descriptiveNegativeName: 76 | negativeButton: 77 | positiveButton: left shift 78 | altNegativeButton: 79 | altPositiveButton: mouse 2 80 | gravity: 1000 81 | dead: 0.001 82 | sensitivity: 1000 83 | snap: 0 84 | invert: 0 85 | type: 0 86 | axis: 0 87 | joyNum: 0 88 | - serializedVersion: 3 89 | m_Name: Jump 90 | descriptiveName: 91 | descriptiveNegativeName: 92 | negativeButton: 93 | positiveButton: space 94 | altNegativeButton: 95 | altPositiveButton: 96 | gravity: 1000 97 | dead: 0.001 98 | sensitivity: 1000 99 | snap: 0 100 | invert: 0 101 | type: 0 102 | axis: 0 103 | joyNum: 0 104 | - serializedVersion: 3 105 | m_Name: Mouse X 106 | descriptiveName: 107 | descriptiveNegativeName: 108 | negativeButton: 109 | positiveButton: 110 | altNegativeButton: 111 | altPositiveButton: 112 | gravity: 0 113 | dead: 0 114 | sensitivity: 0.1 115 | snap: 0 116 | invert: 0 117 | type: 1 118 | axis: 0 119 | joyNum: 0 120 | - serializedVersion: 3 121 | m_Name: Mouse Y 122 | descriptiveName: 123 | descriptiveNegativeName: 124 | negativeButton: 125 | positiveButton: 126 | altNegativeButton: 127 | altPositiveButton: 128 | gravity: 0 129 | dead: 0 130 | sensitivity: 0.1 131 | snap: 0 132 | invert: 0 133 | type: 1 134 | axis: 1 135 | joyNum: 0 136 | - serializedVersion: 3 137 | m_Name: Mouse ScrollWheel 138 | descriptiveName: 139 | descriptiveNegativeName: 140 | negativeButton: 141 | positiveButton: 142 | altNegativeButton: 143 | altPositiveButton: 144 | gravity: 0 145 | dead: 0 146 | sensitivity: 0.1 147 | snap: 0 148 | invert: 0 149 | type: 1 150 | axis: 2 151 | joyNum: 0 152 | - serializedVersion: 3 153 | m_Name: Horizontal 154 | descriptiveName: 155 | descriptiveNegativeName: 156 | negativeButton: 157 | positiveButton: 158 | altNegativeButton: 159 | altPositiveButton: 160 | gravity: 0 161 | dead: 0.19 162 | sensitivity: 1 163 | snap: 0 164 | invert: 0 165 | type: 2 166 | axis: 0 167 | joyNum: 0 168 | - serializedVersion: 3 169 | m_Name: Vertical 170 | descriptiveName: 171 | descriptiveNegativeName: 172 | negativeButton: 173 | positiveButton: 174 | altNegativeButton: 175 | altPositiveButton: 176 | gravity: 0 177 | dead: 0.19 178 | sensitivity: 1 179 | snap: 0 180 | invert: 1 181 | type: 2 182 | axis: 1 183 | joyNum: 0 184 | - serializedVersion: 3 185 | m_Name: Fire1 186 | descriptiveName: 187 | descriptiveNegativeName: 188 | negativeButton: 189 | positiveButton: joystick button 0 190 | altNegativeButton: 191 | altPositiveButton: 192 | gravity: 1000 193 | dead: 0.001 194 | sensitivity: 1000 195 | snap: 0 196 | invert: 0 197 | type: 0 198 | axis: 0 199 | joyNum: 0 200 | - serializedVersion: 3 201 | m_Name: Fire2 202 | descriptiveName: 203 | descriptiveNegativeName: 204 | negativeButton: 205 | positiveButton: joystick button 1 206 | altNegativeButton: 207 | altPositiveButton: 208 | gravity: 1000 209 | dead: 0.001 210 | sensitivity: 1000 211 | snap: 0 212 | invert: 0 213 | type: 0 214 | axis: 0 215 | joyNum: 0 216 | - serializedVersion: 3 217 | m_Name: Fire3 218 | descriptiveName: 219 | descriptiveNegativeName: 220 | negativeButton: 221 | positiveButton: joystick button 2 222 | altNegativeButton: 223 | altPositiveButton: 224 | gravity: 1000 225 | dead: 0.001 226 | sensitivity: 1000 227 | snap: 0 228 | invert: 0 229 | type: 0 230 | axis: 0 231 | joyNum: 0 232 | - serializedVersion: 3 233 | m_Name: Jump 234 | descriptiveName: 235 | descriptiveNegativeName: 236 | negativeButton: 237 | positiveButton: joystick button 3 238 | altNegativeButton: 239 | altPositiveButton: 240 | gravity: 1000 241 | dead: 0.001 242 | sensitivity: 1000 243 | snap: 0 244 | invert: 0 245 | type: 0 246 | axis: 0 247 | joyNum: 0 248 | - serializedVersion: 3 249 | m_Name: Submit 250 | descriptiveName: 251 | descriptiveNegativeName: 252 | negativeButton: 253 | positiveButton: return 254 | altNegativeButton: 255 | altPositiveButton: joystick button 0 256 | gravity: 1000 257 | dead: 0.001 258 | sensitivity: 1000 259 | snap: 0 260 | invert: 0 261 | type: 0 262 | axis: 0 263 | joyNum: 0 264 | - serializedVersion: 3 265 | m_Name: Submit 266 | descriptiveName: 267 | descriptiveNegativeName: 268 | negativeButton: 269 | positiveButton: enter 270 | altNegativeButton: 271 | altPositiveButton: space 272 | gravity: 1000 273 | dead: 0.001 274 | sensitivity: 1000 275 | snap: 0 276 | invert: 0 277 | type: 0 278 | axis: 0 279 | joyNum: 0 280 | - serializedVersion: 3 281 | m_Name: Cancel 282 | descriptiveName: 283 | descriptiveNegativeName: 284 | negativeButton: 285 | positiveButton: escape 286 | altNegativeButton: 287 | altPositiveButton: joystick button 1 288 | gravity: 1000 289 | dead: 0.001 290 | sensitivity: 1000 291 | snap: 0 292 | invert: 0 293 | type: 0 294 | axis: 0 295 | joyNum: 0 296 | -------------------------------------------------------------------------------- /ProjectSettings/MemorySettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!387306366 &1 4 | MemorySettings: 5 | m_ObjectHideFlags: 0 6 | m_EditorMemorySettings: 7 | m_MainAllocatorBlockSize: -1 8 | m_ThreadAllocatorBlockSize: -1 9 | m_MainGfxBlockSize: -1 10 | m_ThreadGfxBlockSize: -1 11 | m_CacheBlockSize: -1 12 | m_TypetreeBlockSize: -1 13 | m_ProfilerBlockSize: -1 14 | m_ProfilerEditorBlockSize: -1 15 | m_BucketAllocatorGranularity: -1 16 | m_BucketAllocatorBucketsCount: -1 17 | m_BucketAllocatorBlockSize: -1 18 | m_BucketAllocatorBlockCount: -1 19 | m_ProfilerBucketAllocatorGranularity: -1 20 | m_ProfilerBucketAllocatorBucketsCount: -1 21 | m_ProfilerBucketAllocatorBlockSize: -1 22 | m_ProfilerBucketAllocatorBlockCount: -1 23 | m_TempAllocatorSizeMain: -1 24 | m_JobTempAllocatorBlockSize: -1 25 | m_BackgroundJobTempAllocatorBlockSize: -1 26 | m_JobTempAllocatorReducedBlockSize: -1 27 | m_TempAllocatorSizeGIBakingWorker: -1 28 | m_TempAllocatorSizeNavMeshWorker: -1 29 | m_TempAllocatorSizeAudioWorker: -1 30 | m_TempAllocatorSizeCloudWorker: -1 31 | m_TempAllocatorSizeGfx: -1 32 | m_TempAllocatorSizeJobWorker: -1 33 | m_TempAllocatorSizeBackgroundWorker: -1 34 | m_TempAllocatorSizePreloadManager: -1 35 | m_PlatformMemorySettings: {} 36 | -------------------------------------------------------------------------------- /ProjectSettings/NavMeshAreas.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!126 &1 4 | NavMeshProjectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | areas: 8 | - name: Walkable 9 | cost: 1 10 | - name: Not Walkable 11 | cost: 1 12 | - name: Jump 13 | cost: 2 14 | - name: 15 | cost: 1 16 | - name: 17 | cost: 1 18 | - name: 19 | cost: 1 20 | - name: 21 | cost: 1 22 | - name: 23 | cost: 1 24 | - name: 25 | cost: 1 26 | - name: 27 | cost: 1 28 | - name: 29 | cost: 1 30 | - name: 31 | cost: 1 32 | - name: 33 | cost: 1 34 | - name: 35 | cost: 1 36 | - name: 37 | cost: 1 38 | - name: 39 | cost: 1 40 | - name: 41 | cost: 1 42 | - name: 43 | cost: 1 44 | - name: 45 | cost: 1 46 | - name: 47 | cost: 1 48 | - name: 49 | cost: 1 50 | - name: 51 | cost: 1 52 | - name: 53 | cost: 1 54 | - name: 55 | cost: 1 56 | - name: 57 | cost: 1 58 | - name: 59 | cost: 1 60 | - name: 61 | cost: 1 62 | - name: 63 | cost: 1 64 | - name: 65 | cost: 1 66 | - name: 67 | cost: 1 68 | - name: 69 | cost: 1 70 | - name: 71 | cost: 1 72 | m_LastAgentTypeID: -887442657 73 | m_Settings: 74 | - serializedVersion: 2 75 | agentTypeID: 0 76 | agentRadius: 0.5 77 | agentHeight: 2 78 | agentSlope: 45 79 | agentClimb: 0.75 80 | ledgeDropHeight: 0 81 | maxJumpAcrossDistance: 0 82 | minRegionArea: 2 83 | manualCellSize: 0 84 | cellSize: 0.16666667 85 | manualTileSize: 0 86 | tileSize: 256 87 | accuratePlacement: 0 88 | debug: 89 | m_Flags: 0 90 | m_SettingNames: 91 | - Humanoid 92 | -------------------------------------------------------------------------------- /ProjectSettings/PackageManagerSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &1 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 61 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | m_EnablePreReleasePackages: 0 16 | m_EnablePackageDependencies: 0 17 | m_AdvancedSettingsExpanded: 1 18 | m_ScopedRegistriesSettingsExpanded: 1 19 | m_SeeAllPackageVersions: 0 20 | oneTimeWarningShown: 0 21 | m_Registries: 22 | - m_Id: main 23 | m_Name: 24 | m_Url: https://packages.unity.com 25 | m_Scopes: [] 26 | m_IsDefault: 1 27 | m_Capabilities: 7 28 | m_UserSelectedRegistryName: 29 | m_UserAddingNewScopedRegistry: 0 30 | m_RegistryInfoDraft: 31 | m_Modified: 0 32 | m_ErrorMessage: 33 | m_UserModificationsInstanceId: -830 34 | m_OriginalInstanceId: -832 35 | m_LoadAssets: 0 36 | -------------------------------------------------------------------------------- /ProjectSettings/Packages/com.unity.testtools.codecoverage/Settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "m_Dictionary": { 3 | "m_DictionaryValues": [] 4 | } 5 | } -------------------------------------------------------------------------------- /ProjectSettings/Physics2DSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!19 &1 4 | Physics2DSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 4 7 | m_Gravity: {x: 0, y: -9.81} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_VelocityIterations: 8 10 | m_PositionIterations: 3 11 | m_VelocityThreshold: 1 12 | m_MaxLinearCorrection: 0.2 13 | m_MaxAngularCorrection: 8 14 | m_MaxTranslationSpeed: 100 15 | m_MaxRotationSpeed: 360 16 | m_BaumgarteScale: 0.2 17 | m_BaumgarteTimeOfImpactScale: 0.75 18 | m_TimeToSleep: 0.5 19 | m_LinearSleepTolerance: 0.01 20 | m_AngularSleepTolerance: 2 21 | m_DefaultContactOffset: 0.01 22 | m_JobOptions: 23 | serializedVersion: 2 24 | useMultithreading: 0 25 | useConsistencySorting: 0 26 | m_InterpolationPosesPerJob: 100 27 | m_NewContactsPerJob: 30 28 | m_CollideContactsPerJob: 100 29 | m_ClearFlagsPerJob: 200 30 | m_ClearBodyForcesPerJob: 200 31 | m_SyncDiscreteFixturesPerJob: 50 32 | m_SyncContinuousFixturesPerJob: 50 33 | m_FindNearestContactsPerJob: 100 34 | m_UpdateTriggerContactsPerJob: 100 35 | m_IslandSolverCostThreshold: 100 36 | m_IslandSolverBodyCostScale: 1 37 | m_IslandSolverContactCostScale: 10 38 | m_IslandSolverJointCostScale: 10 39 | m_IslandSolverBodiesPerJob: 50 40 | m_IslandSolverContactsPerJob: 50 41 | m_AutoSimulation: 1 42 | m_QueriesHitTriggers: 1 43 | m_QueriesStartInColliders: 1 44 | m_CallbacksOnDisable: 1 45 | m_ReuseCollisionCallbacks: 1 46 | m_AutoSyncTransforms: 0 47 | m_AlwaysShowColliders: 0 48 | m_ShowColliderSleep: 1 49 | m_ShowColliderContacts: 0 50 | m_ShowColliderAABB: 0 51 | m_ContactArrowScale: 0.2 52 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} 53 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} 54 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} 55 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} 56 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 57 | -------------------------------------------------------------------------------- /ProjectSettings/PresetManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1386491679 &1 4 | PresetManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_DefaultPresets: {} 8 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 2022.3.19f1 2 | m_EditorVersionWithRevision: 2022.3.19f1 (244b723c30a6) 3 | -------------------------------------------------------------------------------- /ProjectSettings/QualitySettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!47 &1 4 | QualitySettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 5 7 | m_CurrentQuality: 5 8 | m_QualitySettings: 9 | - serializedVersion: 2 10 | name: Very Low 11 | pixelLightCount: 0 12 | shadows: 0 13 | shadowResolution: 0 14 | shadowProjection: 1 15 | shadowCascades: 1 16 | shadowDistance: 15 17 | shadowNearPlaneOffset: 3 18 | shadowCascade2Split: 0.33333334 19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 20 | shadowmaskMode: 0 21 | blendWeights: 1 22 | textureQuality: 1 23 | anisotropicTextures: 0 24 | antiAliasing: 0 25 | softParticles: 0 26 | softVegetation: 0 27 | realtimeReflectionProbes: 0 28 | billboardsFaceCameraPosition: 0 29 | vSyncCount: 0 30 | lodBias: 0.3 31 | maximumLODLevel: 0 32 | streamingMipmapsActive: 0 33 | streamingMipmapsAddAllCameras: 1 34 | streamingMipmapsMemoryBudget: 512 35 | streamingMipmapsRenderersPerFrame: 512 36 | streamingMipmapsMaxLevelReduction: 2 37 | streamingMipmapsMaxFileIORequests: 1024 38 | particleRaycastBudget: 4 39 | asyncUploadTimeSlice: 2 40 | asyncUploadBufferSize: 16 41 | asyncUploadPersistentBuffer: 1 42 | resolutionScalingFixedDPIFactor: 1 43 | excludedTargetPlatforms: [] 44 | - serializedVersion: 2 45 | name: Low 46 | pixelLightCount: 0 47 | shadows: 0 48 | shadowResolution: 0 49 | shadowProjection: 1 50 | shadowCascades: 1 51 | shadowDistance: 20 52 | shadowNearPlaneOffset: 3 53 | shadowCascade2Split: 0.33333334 54 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 55 | shadowmaskMode: 0 56 | blendWeights: 2 57 | textureQuality: 0 58 | anisotropicTextures: 0 59 | antiAliasing: 0 60 | softParticles: 0 61 | softVegetation: 0 62 | realtimeReflectionProbes: 0 63 | billboardsFaceCameraPosition: 0 64 | vSyncCount: 0 65 | lodBias: 0.4 66 | maximumLODLevel: 0 67 | streamingMipmapsActive: 0 68 | streamingMipmapsAddAllCameras: 1 69 | streamingMipmapsMemoryBudget: 512 70 | streamingMipmapsRenderersPerFrame: 512 71 | streamingMipmapsMaxLevelReduction: 2 72 | streamingMipmapsMaxFileIORequests: 1024 73 | particleRaycastBudget: 16 74 | asyncUploadTimeSlice: 2 75 | asyncUploadBufferSize: 16 76 | asyncUploadPersistentBuffer: 1 77 | resolutionScalingFixedDPIFactor: 1 78 | excludedTargetPlatforms: [] 79 | - serializedVersion: 2 80 | name: Medium 81 | pixelLightCount: 1 82 | shadows: 1 83 | shadowResolution: 0 84 | shadowProjection: 1 85 | shadowCascades: 1 86 | shadowDistance: 20 87 | shadowNearPlaneOffset: 3 88 | shadowCascade2Split: 0.33333334 89 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 90 | shadowmaskMode: 0 91 | blendWeights: 2 92 | textureQuality: 0 93 | anisotropicTextures: 1 94 | antiAliasing: 0 95 | softParticles: 0 96 | softVegetation: 0 97 | realtimeReflectionProbes: 0 98 | billboardsFaceCameraPosition: 0 99 | vSyncCount: 1 100 | lodBias: 0.7 101 | maximumLODLevel: 0 102 | streamingMipmapsActive: 0 103 | streamingMipmapsAddAllCameras: 1 104 | streamingMipmapsMemoryBudget: 512 105 | streamingMipmapsRenderersPerFrame: 512 106 | streamingMipmapsMaxLevelReduction: 2 107 | streamingMipmapsMaxFileIORequests: 1024 108 | particleRaycastBudget: 64 109 | asyncUploadTimeSlice: 2 110 | asyncUploadBufferSize: 16 111 | asyncUploadPersistentBuffer: 1 112 | resolutionScalingFixedDPIFactor: 1 113 | excludedTargetPlatforms: [] 114 | - serializedVersion: 2 115 | name: High 116 | pixelLightCount: 2 117 | shadows: 2 118 | shadowResolution: 1 119 | shadowProjection: 1 120 | shadowCascades: 2 121 | shadowDistance: 40 122 | shadowNearPlaneOffset: 3 123 | shadowCascade2Split: 0.33333334 124 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 125 | shadowmaskMode: 1 126 | blendWeights: 2 127 | textureQuality: 0 128 | anisotropicTextures: 1 129 | antiAliasing: 0 130 | softParticles: 0 131 | softVegetation: 1 132 | realtimeReflectionProbes: 1 133 | billboardsFaceCameraPosition: 1 134 | vSyncCount: 1 135 | lodBias: 1 136 | maximumLODLevel: 0 137 | streamingMipmapsActive: 0 138 | streamingMipmapsAddAllCameras: 1 139 | streamingMipmapsMemoryBudget: 512 140 | streamingMipmapsRenderersPerFrame: 512 141 | streamingMipmapsMaxLevelReduction: 2 142 | streamingMipmapsMaxFileIORequests: 1024 143 | particleRaycastBudget: 256 144 | asyncUploadTimeSlice: 2 145 | asyncUploadBufferSize: 16 146 | asyncUploadPersistentBuffer: 1 147 | resolutionScalingFixedDPIFactor: 1 148 | excludedTargetPlatforms: [] 149 | - serializedVersion: 2 150 | name: Very High 151 | pixelLightCount: 3 152 | shadows: 2 153 | shadowResolution: 2 154 | shadowProjection: 1 155 | shadowCascades: 2 156 | shadowDistance: 70 157 | shadowNearPlaneOffset: 3 158 | shadowCascade2Split: 0.33333334 159 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 160 | shadowmaskMode: 1 161 | blendWeights: 4 162 | textureQuality: 0 163 | anisotropicTextures: 2 164 | antiAliasing: 2 165 | softParticles: 1 166 | softVegetation: 1 167 | realtimeReflectionProbes: 1 168 | billboardsFaceCameraPosition: 1 169 | vSyncCount: 1 170 | lodBias: 1.5 171 | maximumLODLevel: 0 172 | streamingMipmapsActive: 0 173 | streamingMipmapsAddAllCameras: 1 174 | streamingMipmapsMemoryBudget: 512 175 | streamingMipmapsRenderersPerFrame: 512 176 | streamingMipmapsMaxLevelReduction: 2 177 | streamingMipmapsMaxFileIORequests: 1024 178 | particleRaycastBudget: 1024 179 | asyncUploadTimeSlice: 2 180 | asyncUploadBufferSize: 16 181 | asyncUploadPersistentBuffer: 1 182 | resolutionScalingFixedDPIFactor: 1 183 | excludedTargetPlatforms: [] 184 | - serializedVersion: 2 185 | name: Ultra 186 | pixelLightCount: 4 187 | shadows: 2 188 | shadowResolution: 2 189 | shadowProjection: 1 190 | shadowCascades: 4 191 | shadowDistance: 150 192 | shadowNearPlaneOffset: 3 193 | shadowCascade2Split: 0.33333334 194 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 195 | shadowmaskMode: 1 196 | blendWeights: 4 197 | textureQuality: 0 198 | anisotropicTextures: 2 199 | antiAliasing: 2 200 | softParticles: 1 201 | softVegetation: 1 202 | realtimeReflectionProbes: 1 203 | billboardsFaceCameraPosition: 1 204 | vSyncCount: 1 205 | lodBias: 2 206 | maximumLODLevel: 0 207 | streamingMipmapsActive: 0 208 | streamingMipmapsAddAllCameras: 1 209 | streamingMipmapsMemoryBudget: 512 210 | streamingMipmapsRenderersPerFrame: 512 211 | streamingMipmapsMaxLevelReduction: 2 212 | streamingMipmapsMaxFileIORequests: 1024 213 | particleRaycastBudget: 4096 214 | asyncUploadTimeSlice: 2 215 | asyncUploadBufferSize: 16 216 | asyncUploadPersistentBuffer: 1 217 | resolutionScalingFixedDPIFactor: 1 218 | excludedTargetPlatforms: [] 219 | m_PerPlatformDefaultQuality: 220 | Android: 2 221 | Lumin: 5 222 | Nintendo 3DS: 5 223 | Nintendo Switch: 5 224 | PS4: 5 225 | PSP2: 2 226 | Stadia: 5 227 | Standalone: 5 228 | WebGL: 3 229 | Windows Store Apps: 5 230 | XboxOne: 5 231 | iPhone: 2 232 | tvOS: 2 233 | -------------------------------------------------------------------------------- /ProjectSettings/TagManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!78 &1 4 | TagManager: 5 | serializedVersion: 2 6 | tags: [] 7 | layers: 8 | - Default 9 | - TransparentFX 10 | - Ignore Raycast 11 | - 12 | - Water 13 | - UI 14 | - 15 | - 16 | - 17 | - 18 | - 19 | - 20 | - 21 | - 22 | - 23 | - 24 | - 25 | - 26 | - 27 | - 28 | - 29 | - 30 | - 31 | - 32 | - 33 | - 34 | - 35 | - 36 | - 37 | - 38 | - 39 | - 40 | m_SortingLayers: 41 | - name: Default 42 | uniqueID: 0 43 | locked: 0 44 | -------------------------------------------------------------------------------- /ProjectSettings/TimeManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!5 &1 4 | TimeManager: 5 | m_ObjectHideFlags: 0 6 | Fixed Timestep: 0.02 7 | Maximum Allowed Timestep: 0.33333334 8 | m_TimeScale: 1 9 | Maximum Particle Timestep: 0.03 10 | -------------------------------------------------------------------------------- /ProjectSettings/UnityConnectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!310 &1 4 | UnityConnectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 1 7 | m_Enabled: 0 8 | m_TestMode: 0 9 | m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events 10 | m_EventUrl: https://cdp.cloud.unity3d.com/v1/events 11 | m_ConfigUrl: https://config.uca.cloud.unity3d.com 12 | m_DashboardUrl: https://dashboard.unity3d.com 13 | m_TestInitMode: 0 14 | CrashReportingSettings: 15 | m_EventUrl: https://perf-events.cloud.unity3d.com 16 | m_Enabled: 0 17 | m_LogBufferSize: 10 18 | m_CaptureEditorExceptions: 1 19 | UnityPurchasingSettings: 20 | m_Enabled: 0 21 | m_TestMode: 0 22 | UnityAnalyticsSettings: 23 | m_Enabled: 0 24 | m_TestMode: 0 25 | m_InitializeOnStartup: 1 26 | m_PackageRequiringCoreStatsPresent: 0 27 | UnityAdsSettings: 28 | m_Enabled: 0 29 | m_InitializeOnStartup: 1 30 | m_TestMode: 0 31 | m_IosGameId: 32 | m_AndroidGameId: 33 | m_GameIds: {} 34 | m_GameId: 35 | PerformanceReportingSettings: 36 | m_Enabled: 0 37 | -------------------------------------------------------------------------------- /ProjectSettings/VFXManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!937362698 &1 4 | VFXManager: 5 | m_ObjectHideFlags: 0 6 | m_IndirectShader: {fileID: 0} 7 | m_CopyBufferShader: {fileID: 0} 8 | m_SortShader: {fileID: 0} 9 | m_StripUpdateShader: {fileID: 0} 10 | m_RenderPipeSettingsPath: 11 | m_FixedTimeStep: 0.016666668 12 | m_MaxDeltaTime: 0.05 13 | -------------------------------------------------------------------------------- /ProjectSettings/VersionControlSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!890905787 &1 4 | VersionControlSettings: 5 | m_ObjectHideFlags: 0 6 | m_Mode: Visible Meta Files 7 | m_CollabEditorSettings: 8 | inProgressEnabled: 1 9 | -------------------------------------------------------------------------------- /ProjectSettings/XRSettings.asset: -------------------------------------------------------------------------------- 1 | { 2 | "m_SettingKeys": [ 3 | "VR Device Disabled", 4 | "VR Device User Alert" 5 | ], 6 | "m_SettingValues": [ 7 | "False", 8 | "False" 9 | ] 10 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Unity GPT Localization 2 | 3 | English | [简体中文](README_CN.md) 4 | 5 | ## Introduction 6 | 7 | This is a multilingual translation automation tool based on the 8 | [Unity Localization plugin](https://docs.unity3d.com/Packages/com.unity.localization@1.0/manual/index.html) 9 | and the [OpenAI API](https://openai.com/blog/openai-api). 10 | This tool can automatically translate missing string entries in Unity Localization using OpenAI GPT or DeepSeek, 11 | making multilingual support both simple and efficient. 12 | 13 | ![preview](Intro.gif) 14 | 15 | ### Features 16 | 1. **Integration with Unity Localization**: Automatically find untranslated items in the String Table Collection and sync the results back to the String Table. 17 | 2. **Customize translation requirements**: Use the Comment in the String Table Metadata to provide additional translation requirements for GPT, controlling translation result preferences. 18 | 3. **Iterate on translation results**: You can delete and retranslate unsatisfactory translation results at any time. You can also specify translation for a single item. 19 | 20 | ### Using DeepSeek API 21 | Now this plugin supports DeepSeek API. 22 | You can choose OpenAI or DeepSeek as the translation service provider. 23 | For DeepSeek, set the base URL to `https://api.deepseek.com` and select model to `deepseek-chat` or `deepseek-reasoner`. 24 | 25 | ## Usage 26 | 27 | ### Installing the Plugin 28 | 29 | * In the Unity menu, go to `Window > Package Manager`. 30 | * Click `+` and select `Add package from git URL`. 31 | * Enter the following URL: 32 | ``` 33 | https://github.com/redclock/UnityGPTLocalization.git#release 34 | ``` 35 | * Click `Add` to install. 36 | * If your project does not use the Unity Localization plugin, the Unity Localization plugin will also be automatically installed. 37 | 38 | ### Configuring the OpenAI API Key 39 | * Go to https://platform.openai.com/api-keys to get your API Key. 40 | 41 | ### Or Configuring the DeepSeek API Key 42 | * Go to https://platform.deepseek.com/api_keys to get your API Key. 43 | 44 | ## How to Use 45 | Open the `Tools > GPT Localization` menu in Unity to open the GPT Localization window. 46 | 47 | ![Screenshot](Screenshot.png) 48 | 49 | ### 1. Fill in the GPT Model Parameters 50 | | Parameter | Description | 51 | |--------------|---------------------------------------------------------------------------------------------------------------------| 52 | | Base Url | Default is https://api.openai.com/v1, can also use other proxy URLs. | 53 | | API Key | Your OpenAI API Key. | 54 | | Model | Choose a GPT model, such as `gpt-3.5-turbo`, `gpt-4-turbo-preview`. | 55 | | Temperature | Controls the diversity of translation results, 0.0 for most accurate translation, 1.0 for most diverse translation. | 56 | 57 | ### 2. Select the String Table Collection 58 | * If no String Table Collection exists, the window will prompt you to create one. 59 | * If there is one, select a String Table Collection from the dropdown menu. 60 | * For testing, you can create some incomplete entries in the String Table. 61 | - Incomplete means that at least one language has a translation and at least one language does not have a translation for an entry. 62 | 63 | ### 3. Translate Entries 64 | * The window will automatically list all entries with incomplete translations. 65 | * Click `Translate Selected` to translate all selected entries. 66 | * You can also click the `Translate` button for each entry to translate individually. 67 | * After translation, check the String Table Editor to see that the results have been automatically filled in. 68 | * If you are not satisfied with a result, you can delete it in the String Table Editor and then retranslate. 69 | 70 | ### 4. Customize Translation Requirements 71 | * Click `Open Table Editor` to open the String Table Editor. 72 | * In the String Table Editor, adding a Comment can control translation result preferences. 73 | * Click Edit Metadata for an entry. 74 | 75 | ![Edit Metadata](Metadata.jpg) 76 | 77 | * Adding a Comment in the Shared Entry Metadata can control the translation results for all target languages of this entry. 78 | * Adding a Comment in the language-specific Metadata can control the translation result for this entry in a specific language. 79 | * You can control translation results with natural language, such as: 80 | * The translation result should be more formal. 81 | * Use short words, no more than 3 words. 82 | * Japanese should avoid using Katakana as much as possible. 83 | * The word "Native" should be kept in English in the target language. 84 | * And so on. 85 | * If you don't know how to write a Comment, you can use this [GPT bot](https://chat.openai.com/g/g-NnmjK7bix-multilingual-prompt-generator) I made to help you write Comments. 86 | 87 | ## Limitations 88 | * OpenAI API calls require payment. 89 | * Translation results are not guaranteed to be accurate and require manual review. 90 | 91 | ## References 92 | This project is based on [srcnalt/OpenAI-Unity](https://github.com/srcnalt/OpenAI-Unity): A Unity plugin that supports OpenAI API calls. -------------------------------------------------------------------------------- /README_CN.md: -------------------------------------------------------------------------------- 1 | # Unity GPT Localization 2 | [English](README.md) | 简体中文 3 | 4 | ## 简介 5 | 6 | 这是一个基于[Unity Localization插件](https://docs.unity3d.com/Packages/com.unity.localization@1.0/manual/index.html) 7 | 和 [OpenAI API](https://openai.com/blog/openai-api) 的多语言翻译自动化工具。 8 | 此工具可以基于OpenAI GPT自动为翻译 Unity Localization 缺失的字符串条目,让多语言支持变得既简单又高效。 9 | 10 | ![preview](Intro.gif) 11 | 12 | ### 特性 13 | 1. __关联Unity Localization__:自动查找 String Table Collection 中的未完成翻译项,并将结果自动同步回 String Table。 14 | 2. __自定义翻译需求__:通过 String Table Metadata 的 Comment 为 GPT 额外提供翻译需求,控制翻译结果偏好。 15 | 3. __迭代翻译结果__:对不满意的翻译结果可以随时删除,重新翻译。也可以单独指定翻译某一项。 16 | 17 | ### 使用 DeepSeek API 18 | 现在这个插件支持 DeepSeek API。 19 | 你可以选择 OpenAI 或 DeepSeek 作为翻译服务提供商。 20 | 对于 DeepSeek,将 base URL 设置为 `https://api.deepseek.com` 并选择模型 `deepseek-chat` 或 `deepseek-reasoner`。 21 | 22 | ## 使用 23 | 24 | ### 安装插件 25 | 26 | * 在 Unity 菜单 `Window > Package Manager` 27 | * 点击 `+` 选择 `Add package from git URL` 28 | * 输入以下地址 29 | ``` 30 | https://github.com/redclock/UnityGPTLocalization.git#release 31 | ``` 32 | * 点击 `Add` 安装 33 | * 如果你的项目中没有使用 Unity Localization 插件,Unity Localization 插件也会被自动安装。 34 | 35 | ### 配置 OpenAI API Key 36 | * 到 https://platform.openai.com/api-keys 获取你的 API Key 37 | 38 | ### 或者:配置 DeepSeek API Key 39 | * 到 https://platform.deepseek.com/api_keys 获取你的 API Key。 40 | 41 | ## 使用方法 42 | 在 Unity 打开菜单 `Tools > GPT Localization`, 打开 GPT Localization 窗口。 43 | 44 | ![Screenshot](Screenshot.png) 45 | 46 | ### 1.填入 GPT Model Parameters 47 | | 参数 | 描述 | 48 | |----------|-----------------------------------------------------| 49 | | Base Url | 默认为 https://api.openai.com/v1, 也可以使用其他的代理地址 | 50 | | API Key | 你的 OpenAI API Key | 51 | | Model | 选择一个 GPT 模型,如 `gpt-3.5-turbo`,`gpt-4-turbo-preview` | 52 | | Temperature | 控制翻译结果的多样性,0.0 为最准确的翻译,1.0 为最多样的翻译 | 53 | 54 | ### 2. 选择 String Table Collection 55 | * 如果没有建立 String Table Collection,窗口会提示你创建一个。 56 | * 如果存在,在下拉菜单中选择一个 String Table Collection. 57 | * 为了测试,可以在String Table中建立一些未完成的 Entry 58 | - 未完成指至少一项语言已有翻译,且至少一个语言没有翻译的Entry。 59 | 60 | ### 3. 翻译条目 61 | * 窗口中会自动列出所有未完成翻译的条目。 62 | * 点击 `Translate Selected` 翻译所有选中的条目。 63 | * 也可以点击每个条目的 `Translate` 按钮单独翻译。 64 | * 翻译结束查看 String Table Editor,会看到结果已经自动填入。 65 | * 如果对某个结果不满意,可以在String Table Editor 中删除结果,然后就可以重新翻译。 66 | 67 | ### 4. 自定义翻译需求 68 | * 点击 `Open Table Editor` 打开 String Table Editor。 69 | * 在 String Table Editor 中添加 Comment,可以控制翻译结果偏好。 70 | * 点击某一个条目的 Edit Metadata 71 | 72 | ![Edit Metadata](Metadata.jpg) 73 | 74 | * 在Shared Entry Metadata中添加 Comment,可以控制这个条目所有目标语言的翻译结果。 75 | * 在语言指定的Metadata中添加 Comment,可以控制这个条目某个语言的翻译结果。 76 | * 可以通过自然语言控制翻译结果,如: 77 | * 翻译结果要正式一些 78 | * 要用简短的词语,最多 3 个词 79 | * 日语尽量不要用片假名 80 | * Native这个词要在目标语言中保持为英文 81 | * 等等 82 | * 如果不知道如何写 Comment,可以用我做的这个 83 | [GPT bot](https://chat.openai.com/g/g-NnmjK7bix-multilingual-prompt-generator) 84 | 来帮你写 Comment。 85 | 86 | ## 限制 87 | * 由于 OpenAI API 调用需要付费。 88 | * 翻译结果不保证准确,需要人工审核。 89 | 90 | ## 引用 91 | 本项目基于 [srcnalt/OpenAI-Unity](https://github.com/srcnalt/OpenAI-Unity): 支持 OpenAI API 调用的 Unity 插件。 92 | 93 | 94 | -------------------------------------------------------------------------------- /Screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redclock/UnityGPTLocalization/312d2e66b7dfd50b1aa5ed9b193bd9cb7562b145/Screenshot.png --------------------------------------------------------------------------------