From cf92a2445535113b022ea447dba3d63715072684 Mon Sep 17 00:00:00 2001 From: ikuko Date: Wed, 10 Jul 2024 00:57:09 +0900 Subject: [PATCH] fix: serialization results in poor eating habits --- .../Editor/AssetIdArraySerializer.cs | 35 ----------- .../Editor/AssetIdArraySerializerBuilder.cs | 22 +++++++ .../AssetIdArraySerializerBuilder.cs.meta | 11 ++++ .../Editor/AssetIdSerializer.cs | 35 ----------- .../Editor/AssetIdSerializerBuilder.cs | 22 +++++++ .../Editor/AssetIdSerializerBuilder.cs.meta | 11 ++++ .../Editor/GroupIdArraySerializerBuilder.cs | 5 +- .../Editor/GroupIdSerializerBuilder.cs | 5 +- .../VariableIdArraySerializerBuilder.cs | 5 +- .../Editor/VariableIdSerializerBuilder.cs | 5 +- .../Scripts/HoshinoLabs.ULocalization.asmdef | 3 +- .../HoshinoLabs.ULocalization.Udon.asmdef | 3 +- .../Udon/ILocalization.cs | 15 +++-- .../{Scripts => Udon}/TMP_DropdownProxy.cs | 0 .../TMP_DropdownProxy.cs.meta | 0 .../Udon/UdonLocalization.cs | 63 ++++++++++++++++--- .../package.json | 4 +- docs/docs/tutorial-extras/udon-refresh.md | 4 +- docs/docs/tutorial-extras/udon-variables.md | 16 ++--- 19 files changed, 155 insertions(+), 109 deletions(-) create mode 100644 Packages/com.hoshinolabs.ulocalization/Editor/AssetIdArraySerializerBuilder.cs create mode 100644 Packages/com.hoshinolabs.ulocalization/Editor/AssetIdArraySerializerBuilder.cs.meta create mode 100644 Packages/com.hoshinolabs.ulocalization/Editor/AssetIdSerializerBuilder.cs create mode 100644 Packages/com.hoshinolabs.ulocalization/Editor/AssetIdSerializerBuilder.cs.meta rename Packages/com.hoshinolabs.ulocalization/{Scripts => Udon}/TMP_DropdownProxy.cs (100%) rename Packages/com.hoshinolabs.ulocalization/{Scripts => Udon}/TMP_DropdownProxy.cs.meta (100%) diff --git a/Packages/com.hoshinolabs.ulocalization/Editor/AssetIdArraySerializer.cs b/Packages/com.hoshinolabs.ulocalization/Editor/AssetIdArraySerializer.cs index 623449e..721aae1 100644 --- a/Packages/com.hoshinolabs.ulocalization/Editor/AssetIdArraySerializer.cs +++ b/Packages/com.hoshinolabs.ulocalization/Editor/AssetIdArraySerializer.cs @@ -2,13 +2,9 @@ using System; using System.Collections; using System.Collections.Generic; -using System.Reflection; using UdonSharp.Serialization; -using UnityEditor.Build; -using UnityEditor.Build.Reporting; using UnityEngine; using UnityEngine.Localization; -using UnityEngine.SceneManagement; namespace HoshinoLabs.ULocalization { internal sealed class AssetIdArraySerializer : ArraySerializer> where T : LocalizedReference { @@ -34,24 +30,6 @@ protected override bool HandlesTypeSerialization(TypeSerializationMetadata typeM } public override object Serialize(in AssetId sourceObject) { - //switch (sourceObject) { - // case AssetId localizedString: { - // AssetIdExtensions._listString.Add(localizedString);// TODO - // break; - // } - // case AssetId> localizedAsset: { - // AssetIdExtensions._listAsset.Add(new AssetId(localizedAsset.LocalizedReference));// TODO - // break; - // } - // case AssetId> localizedAsset: { - // AssetIdExtensions._listAsset.Add(new AssetId(localizedAsset.LocalizedReference));// TODO - // break; - // } - // case AssetId> localizedAsset: { - // AssetIdExtensions._listAsset.Add(new AssetId(localizedAsset.LocalizedReference));// TODO - // break; - // } - //} return sourceObject.Pack(); } @@ -59,17 +37,4 @@ public override AssetId Deserialize(object sourceObject) { return AssetIdExtensions.UnPack(sourceObject); } } - internal sealed class AssetIdArrayBuilder : IProcessSceneWithReport { - public int callbackOrder => -5001; - - public void OnProcessScene(Scene scene, BuildReport report) { - var _serializer = typeof(Serializer); - var _typeCheckSerializers = _serializer.GetField("_typeCheckSerializers", BindingFlags.Static | BindingFlags.NonPublic); - var typeCheckSerializers = (List)_typeCheckSerializers.GetValue(_serializer); - typeCheckSerializers.RemoveAll(x => x.GetType() == typeof(AssetIdArraySerializer)); - //typeCheckSerializers.RemoveAll(x => x.GetType() == typeof(GroupIdArraySerializer)); - typeCheckSerializers.Insert(0, new AssetIdArraySerializer(null)); - //typeCheckSerializers.Insert(0, new GroupIdArraySerializer(null)); - } - } } diff --git a/Packages/com.hoshinolabs.ulocalization/Editor/AssetIdArraySerializerBuilder.cs b/Packages/com.hoshinolabs.ulocalization/Editor/AssetIdArraySerializerBuilder.cs new file mode 100644 index 0000000..328a769 --- /dev/null +++ b/Packages/com.hoshinolabs.ulocalization/Editor/AssetIdArraySerializerBuilder.cs @@ -0,0 +1,22 @@ +using System.Collections; +using System.Collections.Generic; +using System.Reflection; +using UdonSharp.Serialization; +using UnityEditor.Build; +using UnityEditor.Build.Reporting; +using UnityEngine; +using UnityEngine.Localization; +using UnityEngine.SceneManagement; + +namespace HoshinoLabs.ULocalization { + internal sealed class AssetIdArraySerializerBuilder : IProcessSceneWithReport { + public int callbackOrder => -5001; + + public void OnProcessScene(Scene scene, BuildReport report) { + var typeCheckSerializersField = typeof(Serializer).GetField("_typeCheckSerializers", BindingFlags.Static | BindingFlags.NonPublic); + var typeCheckSerializers = (List)typeCheckSerializersField.GetValue(null); + typeCheckSerializers.RemoveAll(x => x.GetType() == typeof(AssetIdArraySerializer)); + typeCheckSerializers.Insert(0, new AssetIdArraySerializer(null)); + } + } +} diff --git a/Packages/com.hoshinolabs.ulocalization/Editor/AssetIdArraySerializerBuilder.cs.meta b/Packages/com.hoshinolabs.ulocalization/Editor/AssetIdArraySerializerBuilder.cs.meta new file mode 100644 index 0000000..ac90db7 --- /dev/null +++ b/Packages/com.hoshinolabs.ulocalization/Editor/AssetIdArraySerializerBuilder.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5df8794e84db9d04397dea057daeddd8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/com.hoshinolabs.ulocalization/Editor/AssetIdSerializer.cs b/Packages/com.hoshinolabs.ulocalization/Editor/AssetIdSerializer.cs index 26820ec..4c2fdc7 100644 --- a/Packages/com.hoshinolabs.ulocalization/Editor/AssetIdSerializer.cs +++ b/Packages/com.hoshinolabs.ulocalization/Editor/AssetIdSerializer.cs @@ -2,13 +2,9 @@ using System; using System.Collections; using System.Collections.Generic; -using System.Reflection; using UdonSharp.Serialization; -using UnityEditor.Build; -using UnityEditor.Build.Reporting; using UnityEngine; using UnityEngine.Localization; -using UnityEngine.SceneManagement; namespace HoshinoLabs.ULocalization { internal sealed class AssetIdSerializer : Serializer> where T : LocalizedReference { @@ -29,24 +25,6 @@ protected override bool HandlesTypeSerialization(TypeSerializationMetadata typeM } public override object Serialize(in AssetId sourceObject) { - //switch (sourceObject) { - // case AssetId localizedString: { - // AssetIdExtensions._listString.Add(localizedString);// TODO - // break; - // } - // case AssetId> localizedAsset: { - // AssetIdExtensions._listAsset.Add(new AssetId(localizedAsset.LocalizedReference));// TODO - // break; - // } - // case AssetId> localizedAsset: { - // AssetIdExtensions._listAsset.Add(new AssetId(localizedAsset.LocalizedReference));// TODO - // break; - // } - // case AssetId> localizedAsset: { - // AssetIdExtensions._listAsset.Add(new AssetId(localizedAsset.LocalizedReference));// TODO - // break; - // } - //} return sourceObject.Pack(); } @@ -54,17 +32,4 @@ public override AssetId Deserialize(object sourceObject) { return AssetIdExtensions.UnPack(sourceObject); } } - internal sealed class AssetIdBuilder : IProcessSceneWithReport { - public int callbackOrder => -5001; - - public void OnProcessScene(Scene scene, BuildReport report) { - var _serializer = typeof(Serializer); - var _typeCheckSerializers = _serializer.GetField("_typeCheckSerializers", BindingFlags.Static | BindingFlags.NonPublic); - var typeCheckSerializers = (List)_typeCheckSerializers.GetValue(_serializer); - typeCheckSerializers.RemoveAll(x => x.GetType() == typeof(AssetIdSerializer)); - //typeCheckSerializers.RemoveAll(x => x.GetType() == typeof(StringAssetIdSerializer)); - typeCheckSerializers.Insert(0, new AssetIdSerializer(null)); - //typeCheckSerializers.Insert(0, new StringAssetIdSerializer(null)); - } - } } diff --git a/Packages/com.hoshinolabs.ulocalization/Editor/AssetIdSerializerBuilder.cs b/Packages/com.hoshinolabs.ulocalization/Editor/AssetIdSerializerBuilder.cs new file mode 100644 index 0000000..4878248 --- /dev/null +++ b/Packages/com.hoshinolabs.ulocalization/Editor/AssetIdSerializerBuilder.cs @@ -0,0 +1,22 @@ +using System.Collections; +using System.Collections.Generic; +using System.Reflection; +using UdonSharp.Serialization; +using UnityEditor.Build; +using UnityEditor.Build.Reporting; +using UnityEngine; +using UnityEngine.Localization; +using UnityEngine.SceneManagement; + +namespace HoshinoLabs.ULocalization { + internal sealed class AssetIdSerializerBuilder : IProcessSceneWithReport { + public int callbackOrder => -5001; + + public void OnProcessScene(Scene scene, BuildReport report) { + var typeCheckSerializersField = typeof(Serializer).GetField("_typeCheckSerializers", BindingFlags.Static | BindingFlags.NonPublic); + var typeCheckSerializers = (List)typeCheckSerializersField.GetValue(null); + typeCheckSerializers.RemoveAll(x => x.GetType() == typeof(AssetIdSerializer)); + typeCheckSerializers.Insert(0, new AssetIdSerializer(null)); + } + } +} diff --git a/Packages/com.hoshinolabs.ulocalization/Editor/AssetIdSerializerBuilder.cs.meta b/Packages/com.hoshinolabs.ulocalization/Editor/AssetIdSerializerBuilder.cs.meta new file mode 100644 index 0000000..105fa47 --- /dev/null +++ b/Packages/com.hoshinolabs.ulocalization/Editor/AssetIdSerializerBuilder.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 409ec21084b9c7c4ba740b2b4db52542 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/com.hoshinolabs.ulocalization/Editor/GroupIdArraySerializerBuilder.cs b/Packages/com.hoshinolabs.ulocalization/Editor/GroupIdArraySerializerBuilder.cs index fe7f446..f8e0a12 100644 --- a/Packages/com.hoshinolabs.ulocalization/Editor/GroupIdArraySerializerBuilder.cs +++ b/Packages/com.hoshinolabs.ulocalization/Editor/GroupIdArraySerializerBuilder.cs @@ -13,9 +13,8 @@ internal sealed class GroupIdArraySerializerBuilder : IProcessSceneWithReport { public int callbackOrder => -5001; public void OnProcessScene(Scene scene, BuildReport report) { - var _serializer = typeof(Serializer); - var _typeCheckSerializers = _serializer.GetField("_typeCheckSerializers", BindingFlags.Static | BindingFlags.NonPublic); - var typeCheckSerializers = (List)_typeCheckSerializers.GetValue(_serializer); + var typeCheckSerializersField = typeof(Serializer).GetField("_typeCheckSerializers", BindingFlags.Static | BindingFlags.NonPublic); + var typeCheckSerializers = (List)typeCheckSerializersField.GetValue(null); typeCheckSerializers.RemoveAll(x => x.GetType() == typeof(GroupIdArraySerializer)); typeCheckSerializers.RemoveAll(x => x.GetType() == typeof(GroupIdArraySerializer)); typeCheckSerializers.Insert(0, new GroupIdArraySerializer(null)); diff --git a/Packages/com.hoshinolabs.ulocalization/Editor/GroupIdSerializerBuilder.cs b/Packages/com.hoshinolabs.ulocalization/Editor/GroupIdSerializerBuilder.cs index cd86643..e1d7588 100644 --- a/Packages/com.hoshinolabs.ulocalization/Editor/GroupIdSerializerBuilder.cs +++ b/Packages/com.hoshinolabs.ulocalization/Editor/GroupIdSerializerBuilder.cs @@ -13,9 +13,8 @@ internal sealed class GroupIdSerializerBuilder : IProcessSceneWithReport { public int callbackOrder => -5001; public void OnProcessScene(Scene scene, BuildReport report) { - var _serializer = typeof(Serializer); - var _typeCheckSerializers = _serializer.GetField("_typeCheckSerializers", BindingFlags.Static | BindingFlags.NonPublic); - var typeCheckSerializers = (List)_typeCheckSerializers.GetValue(_serializer); + var typeCheckSerializersField = typeof(Serializer).GetField("_typeCheckSerializers", BindingFlags.Static | BindingFlags.NonPublic); + var typeCheckSerializers = (List)typeCheckSerializersField.GetValue(null); typeCheckSerializers.RemoveAll(x => x.GetType() == typeof(GroupIdSerializer)); typeCheckSerializers.RemoveAll(x => x.GetType() == typeof(GroupIdSerializer)); typeCheckSerializers.Insert(0, new GroupIdSerializer(null)); diff --git a/Packages/com.hoshinolabs.ulocalization/Editor/VariableIdArraySerializerBuilder.cs b/Packages/com.hoshinolabs.ulocalization/Editor/VariableIdArraySerializerBuilder.cs index 12daecc..5594e69 100644 --- a/Packages/com.hoshinolabs.ulocalization/Editor/VariableIdArraySerializerBuilder.cs +++ b/Packages/com.hoshinolabs.ulocalization/Editor/VariableIdArraySerializerBuilder.cs @@ -13,9 +13,8 @@ internal sealed class VariableIdArraySerializerBuilder : IProcessSceneWithReport public int callbackOrder => -5001; public void OnProcessScene(Scene scene, BuildReport report) { - var _serializer = typeof(Serializer); - var _typeCheckSerializers = _serializer.GetField("_typeCheckSerializers", BindingFlags.Static | BindingFlags.NonPublic); - var typeCheckSerializers = (List)_typeCheckSerializers.GetValue(_serializer); + var typeCheckSerializersField = typeof(Serializer).GetField("_typeCheckSerializers", BindingFlags.Static | BindingFlags.NonPublic); + var typeCheckSerializers = (List)typeCheckSerializersField.GetValue(null); typeCheckSerializers.RemoveAll(x => x.GetType() == typeof(VariableIdArraySerializer)); typeCheckSerializers.Insert(0, new VariableIdArraySerializer(null)); } diff --git a/Packages/com.hoshinolabs.ulocalization/Editor/VariableIdSerializerBuilder.cs b/Packages/com.hoshinolabs.ulocalization/Editor/VariableIdSerializerBuilder.cs index 94acb24..337c3bc 100644 --- a/Packages/com.hoshinolabs.ulocalization/Editor/VariableIdSerializerBuilder.cs +++ b/Packages/com.hoshinolabs.ulocalization/Editor/VariableIdSerializerBuilder.cs @@ -13,9 +13,8 @@ internal sealed class VariableIdSerializerBuilder : IProcessSceneWithReport { public int callbackOrder => -5001; public void OnProcessScene(Scene scene, BuildReport report) { - var _serializer = typeof(Serializer); - var _typeCheckSerializers = _serializer.GetField("_typeCheckSerializers", BindingFlags.Static | BindingFlags.NonPublic); - var typeCheckSerializers = (List)_typeCheckSerializers.GetValue(_serializer); + var typeCheckSerializersField = typeof(Serializer).GetField("_typeCheckSerializers", BindingFlags.Static | BindingFlags.NonPublic); + var typeCheckSerializers = (List)typeCheckSerializersField.GetValue(null); typeCheckSerializers.RemoveAll(x => x.GetType() == typeof(VariableIdSerializer)); typeCheckSerializers.Insert(0, new VariableIdSerializer(null)); } diff --git a/Packages/com.hoshinolabs.ulocalization/Scripts/HoshinoLabs.ULocalization.asmdef b/Packages/com.hoshinolabs.ulocalization/Scripts/HoshinoLabs.ULocalization.asmdef index 08dc0cd..076fdd8 100644 --- a/Packages/com.hoshinolabs.ulocalization/Scripts/HoshinoLabs.ULocalization.asmdef +++ b/Packages/com.hoshinolabs.ulocalization/Scripts/HoshinoLabs.ULocalization.asmdef @@ -4,8 +4,7 @@ "references": [ "GUID:6055be8ebefd69e48b49212b09b47b2f", "GUID:eec0964c48f6f4e40bc3ec2257ccf8c5", - "GUID:bd3affea4e3a52b43b7883ccd9d911ab", - "GUID:b660f7bd767948e4ead9950a7cec5057" + "GUID:bd3affea4e3a52b43b7883ccd9d911ab" ], "includePlatforms": [], "excludePlatforms": [], diff --git a/Packages/com.hoshinolabs.ulocalization/Udon/HoshinoLabs.ULocalization.Udon.asmdef b/Packages/com.hoshinolabs.ulocalization/Udon/HoshinoLabs.ULocalization.Udon.asmdef index 3bb5066..f239b5b 100644 --- a/Packages/com.hoshinolabs.ulocalization/Udon/HoshinoLabs.ULocalization.Udon.asmdef +++ b/Packages/com.hoshinolabs.ulocalization/Udon/HoshinoLabs.ULocalization.Udon.asmdef @@ -10,7 +10,8 @@ "GUID:4307f53044263cf4b835bd812fc161a4", "GUID:bd3affea4e3a52b43b7883ccd9d911ab", "GUID:ace5b373fd6d6aa419f572f19c504a7c", - "GUID:d048e6ddc894a664a947e7d2c5ab3c7a" + "GUID:d048e6ddc894a664a947e7d2c5ab3c7a", + "GUID:b0f807221103f754abc2045148ac9068" ], "includePlatforms": [], "excludePlatforms": [], diff --git a/Packages/com.hoshinolabs.ulocalization/Udon/ILocalization.cs b/Packages/com.hoshinolabs.ulocalization/Udon/ILocalization.cs index c05e310..c9effb1 100644 --- a/Packages/com.hoshinolabs.ulocalization/Udon/ILocalization.cs +++ b/Packages/com.hoshinolabs.ulocalization/Udon/ILocalization.cs @@ -1,5 +1,6 @@ using UdonSharp; using UnityEngine; +using UnityEngine.Localization.Components; using VRC.SDKBase; using VRC.Udon; @@ -12,12 +13,18 @@ public class ILocalization : UdonSharpBehaviour { public virtual string SelectedLocale { get; set; } - public virtual void RefreshString(object groupId) { } - public virtual void RefreshAsset(object groupId) { } + // TODO: 型で判別できるのでRefresh()にする + public virtual void RefreshString(GroupId id) { } + public virtual void RefreshString(GroupId id) { } + public virtual void RefreshString(GroupId id) { } + public virtual void RefreshAsset(GroupId id) { } - public virtual object GetVariable(object variableId) => null; - public virtual void SetVariable(object variableId, object value) { } + public virtual object GetVariable(VariableId variableId) => null; + public virtual object GetVariable(VariableId variableId) => null; + public virtual void SetVariable(VariableId variableId, object value) { } + public virtual void SetVariable(VariableId variableId, object value) { } + // TODO: GetLocalizedText()orGetLocalizedAsset()にする public virtual string GetLocalizedString(object groupId, string locale) => null; public virtual object GetLocalizedAsset(object groupId, string locale) => null; public virtual string GetLocalizedString(string locale, object assetId) => null; diff --git a/Packages/com.hoshinolabs.ulocalization/Scripts/TMP_DropdownProxy.cs b/Packages/com.hoshinolabs.ulocalization/Udon/TMP_DropdownProxy.cs similarity index 100% rename from Packages/com.hoshinolabs.ulocalization/Scripts/TMP_DropdownProxy.cs rename to Packages/com.hoshinolabs.ulocalization/Udon/TMP_DropdownProxy.cs diff --git a/Packages/com.hoshinolabs.ulocalization/Scripts/TMP_DropdownProxy.cs.meta b/Packages/com.hoshinolabs.ulocalization/Udon/TMP_DropdownProxy.cs.meta similarity index 100% rename from Packages/com.hoshinolabs.ulocalization/Scripts/TMP_DropdownProxy.cs.meta rename to Packages/com.hoshinolabs.ulocalization/Udon/TMP_DropdownProxy.cs.meta diff --git a/Packages/com.hoshinolabs.ulocalization/Udon/UdonLocalization.cs b/Packages/com.hoshinolabs.ulocalization/Udon/UdonLocalization.cs index 50f956d..2556cc5 100644 --- a/Packages/com.hoshinolabs.ulocalization/Udon/UdonLocalization.cs +++ b/Packages/com.hoshinolabs.ulocalization/Udon/UdonLocalization.cs @@ -4,6 +4,7 @@ using System; using UdonSharp; using UnityEngine; +using UnityEngine.Localization.Components; using VRC.SDK3.Data; using VRC.SDKBase; using VRC.Udon.Common.Interfaces; @@ -102,8 +103,9 @@ private void Start() { startupSelectors = null; } - public override void RefreshString(object groupId) { - var groupIdx = (int)groupId; + public override void RefreshString(GroupId id) { + // TODO: 型で分岐するようにする + var groupIdx = (int)((object[])(object)id)[0]; if (groupIdx < 0) { return; } @@ -127,8 +129,37 @@ public override void RefreshString(object groupId) { } } - public override void RefreshAsset(object groupId) { - var groupIdx = (int)groupId; + public override void RefreshString(GroupId id) { + var groupIdx = (int)((object[])(object)id)[0]; + if (groupIdx < 0) { + return; + } + var assetIdx = groups_2[groupIdx]; + if (assetIdx < 0) { + return; + } + listenerString = currentStringDatabase[assetIdx]; + var args = groups_3[groupIdx]; + if (args != null) { + SmartLiteFormat(args); + } + var listenerLength = groups_4_0[groupIdx]; + var listenerHashs = groups_4_1[groupIdx]; + var listenerTargets = groups_4_2[groupIdx]; + var listenerArguments = groups_4_3[groupIdx]; + for (var listenerIdx = 0; listenerIdx < listenerLength; listenerIdx++) { + listenerTarget = listenerTargets[listenerIdx]; + listenerArgument = listenerArguments[listenerIdx]; + SendCustomEvent(listenerHashs[listenerIdx]); + } + } + + public override void RefreshString(GroupId id) { + var groupIdx = (int)((object[])(object)id)[0]; + } + + public override void RefreshAsset(GroupId id) { + var groupIdx = (int)((object[])(object)id)[0]; if (groupIdx < 0) { return; } @@ -148,16 +179,32 @@ public override void RefreshAsset(object groupId) { } } - public override object GetVariable(object variableId) { - var variableIdx = (int)variableId; + public override object GetVariable(VariableId id) { + var variableIdx = (int)((object[])(object)id)[0]; if (variableIdx < 0) { return null; } return variables_1[variableIdx]; } - public override void SetVariable(object variableId, object value) { - var variableIdx = (int)variableId; + public override object GetVariable(VariableId id) { + var variableIdx = (int)((object[])(object)id)[0]; + if (variableIdx < 0) { + return null; + } + return variables_1[variableIdx]; + } + + public override void SetVariable(VariableId id, object value) { + var variableIdx = (int)((object[])(object)id)[0]; + if (variableIdx < 0) { + return; + } + variables_1[variableIdx] = value; + } + + public override void SetVariable(VariableId id, object value) { + var variableIdx = (int)((object[])(object)id)[0]; if (variableIdx < 0) { return; } diff --git a/Packages/com.hoshinolabs.ulocalization/package.json b/Packages/com.hoshinolabs.ulocalization/package.json index d616346..0bea3ba 100644 --- a/Packages/com.hoshinolabs.ulocalization/package.json +++ b/Packages/com.hoshinolabs.ulocalization/package.json @@ -1,7 +1,7 @@ { "name": "com.hoshinolabs.ulocalization", "displayName": "HoshinoLabs - ULocalization", - "version": "0.7.1", + "version": "0.7.2", "unity": "2022.3", "description": "Porting to VRChat Udon of Unity Localization package", "vrchatVersion": "2022.1.1", @@ -17,6 +17,6 @@ "com.vrchat.worlds": ">=3.6.1", "com.unity.scriptablebuildpipeline": "1.21.5", "com.hoshinolabs.sardinject": ">=0.6.1", - "com.hoshinolabs.sardinal": ">=0.5.0" + "com.hoshinolabs.sardinal": ">=0.5.1" } } diff --git a/docs/docs/tutorial-extras/udon-refresh.md b/docs/docs/tutorial-extras/udon-refresh.md index f7db415..783ee08 100644 --- a/docs/docs/tutorial-extras/udon-refresh.md +++ b/docs/docs/tutorial-extras/udon-refresh.md @@ -17,8 +17,8 @@ ULocalization は言語切替のタイミングのみローカライズの更新 public class LocalizeTextReloader : UdonSharpBehaviour { [Inject, SerializeField, HideInInspector] ILocalization localization; - [GroupId, SerializeField] - string groupId; + [SerializeField] + GroupId groupId; public void ReloadText() { localization.RefreshString(groupId); diff --git a/docs/docs/tutorial-extras/udon-variables.md b/docs/docs/tutorial-extras/udon-variables.md index 2be587b..410d83b 100644 --- a/docs/docs/tutorial-extras/udon-variables.md +++ b/docs/docs/tutorial-extras/udon-variables.md @@ -19,10 +19,10 @@ Udon からローカル変数の値を書き換えることができます。 public class ClickCounter : UdonSharpBehaviour { [Inject, SerializeField, HideInInspector] ILocalization localization; - [GroupId, SerializeField] - string groupId; - [VariableId, SerializeField] - string variableId; + [SerializeField] + GroupId groupId; + [SerializeField] + VariableId variableId; int counter = 0; @@ -49,10 +49,10 @@ Udon は `Lottery` メソッドが呼び出されると値を書き換えるこ public class ItemChanger : UdonSharpBehaviour { [Inject, SerializeField, HideInInspector] ILocalization localization; - [GroupId, SerializeField] - string groupId; - [VariableId, SerializeField] - string variableId; + [SerializeField] + GroupId groupId; + [SerializeField] + VariableId variableId; [AssetId, SerializeField] string[] assetIds;