diff --git a/src/UniTask/Assets/Plugins/UniTask/Runtime/External/Localization.meta b/src/UniTask/Assets/Plugins/UniTask/Runtime/External/Localization.meta new file mode 100644 index 0000000..103b866 --- /dev/null +++ b/src/UniTask/Assets/Plugins/UniTask/Runtime/External/Localization.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d2a30a3e9c8f5c0479d5aa1b92caeb64 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/src/UniTask/Assets/Plugins/UniTask/Runtime/External/Localization/LocalizationAsyncExtensions.cs b/src/UniTask/Assets/Plugins/UniTask/Runtime/External/Localization/LocalizationAsyncExtensions.cs new file mode 100644 index 0000000..d583fe6 --- /dev/null +++ b/src/UniTask/Assets/Plugins/UniTask/Runtime/External/Localization/LocalizationAsyncExtensions.cs @@ -0,0 +1,32 @@ +#if UNITASK_LOCALIZATION_SUPPORT + +using Cysharp.Threading.Tasks.Linq; +using UnityEngine.Localization; + +namespace Cysharp.Threading.Tasks +{ + public static partial class LocalizationAsyncExtensions + { + public static IUniTaskAsyncEnumerable OnValueChangedAsAsyncEnumerable( + this LocalizedString localizedString) + { + return UniTaskAsyncEnumerable.Create(async (writer, cancellationToken) => + { + async void Handler(string newValue) + { + await writer.YieldAsync(newValue); + } + + localizedString.StringChanged += Handler; + cancellationToken.Register(() => localizedString.StringChanged -= Handler); + + while (!cancellationToken.IsCancellationRequested) + { + await UniTask.Yield(); + } + }); + } + } +} + +#endif \ No newline at end of file diff --git a/src/UniTask/Assets/Plugins/UniTask/Runtime/External/Localization/LocalizationAsyncExtensions.cs.meta b/src/UniTask/Assets/Plugins/UniTask/Runtime/External/Localization/LocalizationAsyncExtensions.cs.meta new file mode 100644 index 0000000..6100d31 --- /dev/null +++ b/src/UniTask/Assets/Plugins/UniTask/Runtime/External/Localization/LocalizationAsyncExtensions.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: b2739fb850114ecca748faa678ee0ee1 +timeCreated: 1714073055 \ No newline at end of file diff --git a/src/UniTask/Assets/Plugins/UniTask/Runtime/External/Localization/UniTask.Localization.asmdef b/src/UniTask/Assets/Plugins/UniTask/Runtime/External/Localization/UniTask.Localization.asmdef new file mode 100644 index 0000000..3b6dc54 --- /dev/null +++ b/src/UniTask/Assets/Plugins/UniTask/Runtime/External/Localization/UniTask.Localization.asmdef @@ -0,0 +1,24 @@ +{ + "name": "UniTask.Localization", + "rootNamespace": "", + "references": [ + "GUID:f51ebe6a0ceec4240a699833d6309b23", + "GUID:eec0964c48f6f4e40bc3ec2257ccf8c5", + "GUID:5c01796d064528144a599661eaab93a6" + ], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [ + { + "name": "com.unity.localization", + "expression": "", + "define": "UNITASK_LOCALIZATION_SUPPORT" + } + ], + "noEngineReferences": false +} \ No newline at end of file diff --git a/src/UniTask/Assets/Plugins/UniTask/Runtime/External/Localization/UniTask.Localization.asmdef.meta b/src/UniTask/Assets/Plugins/UniTask/Runtime/External/Localization/UniTask.Localization.asmdef.meta new file mode 100644 index 0000000..fb25d56 --- /dev/null +++ b/src/UniTask/Assets/Plugins/UniTask/Runtime/External/Localization/UniTask.Localization.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 966856f46ac0e9642a80e1d2352ea9fc +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: