From 5c45f9aa7beb4ec610491302eddfc547c4ec2669 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=80=9D=E6=B5=B7?= <10001@qq.com> Date: Fri, 7 Feb 2025 16:15:34 +0800 Subject: [PATCH] init --- Editor.meta | 8 + Editor/AlicizaX.UI.Extension.Editor.asmdef | 21 ++ .../AlicizaX.UI.Extension.Editor.asmdef.meta | 7 + Editor/UIExtension.meta | 3 + Editor/UIExtension/StaticKey.meta | 3 + .../StaticKey/LocalizeStaticKey.cs | 90 ++++++++ .../StaticKey/LocalizeStaticKey.cs.meta | 3 + Editor/UIExtension/Text.meta | 8 + .../UIExtension/Text/UXTextMeshProEditor.cs | 71 +++++++ .../Text/UXTextMeshProEditor.cs.meta | 11 + LICENSE.md | 201 ++++++++++++++++++ LICENSE.md.meta | 7 + Runtime.meta | 8 + Runtime/AlicizaX.UI.Extension.asmdef | 19 ++ Runtime/AlicizaX.UI.Extension.asmdef.meta | 7 + Runtime/UGUIExtension.meta | 3 + Runtime/UGUIExtension/Text.meta | 8 + Runtime/UGUIExtension/Text/UXTextMeshPro.cs | 25 +++ .../UGUIExtension/Text/UXTextMeshPro.cs.meta | 11 + Runtime/link.xml | 3 + Runtime/link.xml.meta | 3 + package.json | 20 ++ package.json.meta | 7 + 23 files changed, 547 insertions(+) create mode 100644 Editor.meta create mode 100644 Editor/AlicizaX.UI.Extension.Editor.asmdef create mode 100644 Editor/AlicizaX.UI.Extension.Editor.asmdef.meta create mode 100644 Editor/UIExtension.meta create mode 100644 Editor/UIExtension/StaticKey.meta create mode 100644 Editor/UIExtension/StaticKey/LocalizeStaticKey.cs create mode 100644 Editor/UIExtension/StaticKey/LocalizeStaticKey.cs.meta create mode 100644 Editor/UIExtension/Text.meta create mode 100644 Editor/UIExtension/Text/UXTextMeshProEditor.cs create mode 100644 Editor/UIExtension/Text/UXTextMeshProEditor.cs.meta create mode 100644 LICENSE.md create mode 100644 LICENSE.md.meta create mode 100644 Runtime.meta create mode 100644 Runtime/AlicizaX.UI.Extension.asmdef create mode 100644 Runtime/AlicizaX.UI.Extension.asmdef.meta create mode 100644 Runtime/UGUIExtension.meta create mode 100644 Runtime/UGUIExtension/Text.meta create mode 100644 Runtime/UGUIExtension/Text/UXTextMeshPro.cs create mode 100644 Runtime/UGUIExtension/Text/UXTextMeshPro.cs.meta create mode 100644 Runtime/link.xml create mode 100644 Runtime/link.xml.meta create mode 100644 package.json create mode 100644 package.json.meta diff --git a/Editor.meta b/Editor.meta new file mode 100644 index 0000000..c29c0e1 --- /dev/null +++ b/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3bdb20201b2e1164e996135c914b1fea +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/AlicizaX.UI.Extension.Editor.asmdef b/Editor/AlicizaX.UI.Extension.Editor.asmdef new file mode 100644 index 0000000..cc40850 --- /dev/null +++ b/Editor/AlicizaX.UI.Extension.Editor.asmdef @@ -0,0 +1,21 @@ +{ + "name": "AlicizaX.UI.Extension.Editor", + "rootNamespace": "AlicizaX.UI.Extension.Editor", + "references": [ + "GUID:6546d7765b4165b40850b3667f981c26", + "GUID:760f1778adc613f49a4394fb41ff0bbc", + "GUID:75b6f2078d190f14dbda4a5b747d709c", + "GUID:a19b414bea3b97240a91aeab9a8eab36" + ], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": true, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Editor/AlicizaX.UI.Extension.Editor.asmdef.meta b/Editor/AlicizaX.UI.Extension.Editor.asmdef.meta new file mode 100644 index 0000000..0df5a0e --- /dev/null +++ b/Editor/AlicizaX.UI.Extension.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 313320016f75fd24e9885858267ed35c +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/UIExtension.meta b/Editor/UIExtension.meta new file mode 100644 index 0000000..fd09a37 --- /dev/null +++ b/Editor/UIExtension.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 3a2c1fc8ad7d457abaf67dae3d5005de +timeCreated: 1738832149 \ No newline at end of file diff --git a/Editor/UIExtension/StaticKey.meta b/Editor/UIExtension/StaticKey.meta new file mode 100644 index 0000000..6e981ab --- /dev/null +++ b/Editor/UIExtension/StaticKey.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 618191a0ed5f4928a1686d6954d7cd1a +timeCreated: 1738834271 \ No newline at end of file diff --git a/Editor/UIExtension/StaticKey/LocalizeStaticKey.cs b/Editor/UIExtension/StaticKey/LocalizeStaticKey.cs new file mode 100644 index 0000000..74367fd --- /dev/null +++ b/Editor/UIExtension/StaticKey/LocalizeStaticKey.cs @@ -0,0 +1,90 @@ +using System.Collections.Generic; +using System.IO; +using System.Linq; +using AlicizaX.Localization.Runtime; +using AlicizaX.Runtime; +using Newtonsoft.Json; +using UnityEditor; +using UnityEngine; + +namespace AlicizaX.UI.Extension.Editor +{ + internal class LocalizeItem + { + public string key; + public string ChineseSimplified; + public string English; + public string Japanese; + } + + internal static class LocalizeStaticKey + { + static readonly string LocalizeStaticConfigPath = "Assets/AssetArt/Configs/json/tables_tblocalization.json"; + + private static bool IsLoaded = false; + + private static List LocalizeItems; + private static Dictionary> LocalizeDic; + + + /// + /// 获取所有静态Keys + /// + /// + public static string[] GetAllStaticKeys() + { + LoadStaticKey(); + List keys = LocalizeItems.Select(v => v.key).ToList(); + keys.Insert(0, "None"); + return keys.ToArray(); + } + + public static string GetText(string key) + { + LoadStaticKey(); + Language languageType = (Language)EditorPrefs.GetInt(LocalizationComponent.PrefsKey); + string value = key; + + if (LocalizeDic.TryGetValue(key, out Dictionary dic)) + { + dic.TryGetValue(languageType, out value); + } + + return value; + } + + [MenuItem("开发工具/Force Reload多语言静态Key")] + public static void ForceReload() + { + IsLoaded = false; + LoadStaticKey(); + } + + static void LoadStaticKey() + { + if (IsLoaded) return; + if (!File.Exists(LocalizeStaticConfigPath)) + { + Debug.LogError("静态多语言文本文件不存在!"); + return; + } + + TextAsset textAsset = + UnityEditor.AssetDatabase.LoadAssetAtPath(LocalizeStaticConfigPath); + + LocalizeItems = JsonConvert.DeserializeObject>(textAsset.text); + + LocalizeDic = new Dictionary>(); + foreach (var v in LocalizeItems) + { + Dictionary valueDic = new Dictionary(); + valueDic.Add(Language.ChineseSimplified, v.ChineseSimplified); + valueDic.Add(Language.English, v.English); + valueDic.Add(Language.Japanese, v.Japanese); + LocalizeDic.Add(v.key, valueDic); + } + + IsLoaded = true; + } + } +} diff --git a/Editor/UIExtension/StaticKey/LocalizeStaticKey.cs.meta b/Editor/UIExtension/StaticKey/LocalizeStaticKey.cs.meta new file mode 100644 index 0000000..53e7bd0 --- /dev/null +++ b/Editor/UIExtension/StaticKey/LocalizeStaticKey.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: d65abc05d0b640199d1f55346b3c4f1b +timeCreated: 1738834272 \ No newline at end of file diff --git a/Editor/UIExtension/Text.meta b/Editor/UIExtension/Text.meta new file mode 100644 index 0000000..31f7d3b --- /dev/null +++ b/Editor/UIExtension/Text.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9ae5a45a9c60593458ff7937ccef2268 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/UIExtension/Text/UXTextMeshProEditor.cs b/Editor/UIExtension/Text/UXTextMeshProEditor.cs new file mode 100644 index 0000000..959010e --- /dev/null +++ b/Editor/UIExtension/Text/UXTextMeshProEditor.cs @@ -0,0 +1,71 @@ +using AlicizaX.UI.Extension.Editor; +using UnityEditor; + +namespace UnityEngine.UI +{ + [CustomEditor(typeof(UXTextMeshPro), true)] + [CanEditMultipleObjects] + public class UXTextMeshProEditor : TMPro.EditorUtilities.TMP_EditorPanelUI + { + private SerializedProperty text; + private SerializedProperty localizationID; + + protected override void OnEnable() + { + text = serializedObject.FindProperty("m_text"); + localizationID = serializedObject.FindProperty("m_localizationID"); + base.OnEnable(); + } + + protected override void OnDisable() + { + base.OnDisable(); + } + + + public override void OnInspectorGUI() + { + serializedObject.Update(); + bool isPlay = Application.isPlaying; + + EditorGUI.BeginDisabledGroup(isPlay); + string[] keys = LocalizeStaticKey.GetAllStaticKeys(); + + int index = -1; + for (int i = 0; i < keys.Length; i++) + { + if (localizationID.stringValue == keys[i]) + { + index = i; + break; + } + } + + if (index == -1) + { + EditorGUILayout.HelpBox("对应的多语言Key找不到!请重新配置", MessageType.Warning); + } + + int selectedIndex = EditorGUILayout.Popup("Key", index, keys); + if (selectedIndex != index) + { + localizationID.stringValue = keys[selectedIndex]; + } + + + EditorGUI.EndDisabledGroup(); + + EditorGUI.BeginDisabledGroup(true); + EditorGUILayout.PropertyField(localizationID, new GUIContent("key")); + if (!string.IsNullOrEmpty(localizationID.stringValue) && localizationID.stringValue != "None") + { + text.stringValue = LocalizeStaticKey.GetText(localizationID.stringValue); + } + + EditorGUI.EndDisabledGroup(); + + serializedObject.ApplyModifiedProperties(); + base.OnInspectorGUI(); + } + } +} diff --git a/Editor/UIExtension/Text/UXTextMeshProEditor.cs.meta b/Editor/UIExtension/Text/UXTextMeshProEditor.cs.meta new file mode 100644 index 0000000..2d8854a --- /dev/null +++ b/Editor/UIExtension/Text/UXTextMeshProEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 45cc6be3b51ee2045b0c57c17e665f4c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..4e6513a --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + +Copyright [2023] [ALianBlank of copyright owner][alianblank@outlook.com][https://alianblank.com/] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/LICENSE.md.meta b/LICENSE.md.meta new file mode 100644 index 0000000..7f95deb --- /dev/null +++ b/LICENSE.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 1df2552bb1d632e4882a02c71379f0bb +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime.meta b/Runtime.meta new file mode 100644 index 0000000..8e0379f --- /dev/null +++ b/Runtime.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7171839096c9ab141a0fa296b7558c5f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/AlicizaX.UI.Extension.asmdef b/Runtime/AlicizaX.UI.Extension.asmdef new file mode 100644 index 0000000..8c7a53b --- /dev/null +++ b/Runtime/AlicizaX.UI.Extension.asmdef @@ -0,0 +1,19 @@ +{ + "name": "AlicizaX.UI.Extension", + "rootNamespace": "AlicizaX.UI.Extension", + "references": [ + "GUID:6055be8ebefd69e48b49212b09b47b2f", + "GUID:5553d74549d54e74cb548b3ab58a8483", + "GUID:a19b414bea3b97240a91aeab9a8eab36", + "GUID:75b6f2078d190f14dbda4a5b747d709c" + ], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": true, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Runtime/AlicizaX.UI.Extension.asmdef.meta b/Runtime/AlicizaX.UI.Extension.asmdef.meta new file mode 100644 index 0000000..0dbdb90 --- /dev/null +++ b/Runtime/AlicizaX.UI.Extension.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 760f1778adc613f49a4394fb41ff0bbc +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/UGUIExtension.meta b/Runtime/UGUIExtension.meta new file mode 100644 index 0000000..d42009b --- /dev/null +++ b/Runtime/UGUIExtension.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: c1cc52c3a64c4e83b7663f7d98b524fa +timeCreated: 1738832143 \ No newline at end of file diff --git a/Runtime/UGUIExtension/Text.meta b/Runtime/UGUIExtension/Text.meta new file mode 100644 index 0000000..a321f59 --- /dev/null +++ b/Runtime/UGUIExtension/Text.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7596661cc0d376d48948e0c163857788 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/UGUIExtension/Text/UXTextMeshPro.cs b/Runtime/UGUIExtension/Text/UXTextMeshPro.cs new file mode 100644 index 0000000..5adc27f --- /dev/null +++ b/Runtime/UGUIExtension/Text/UXTextMeshPro.cs @@ -0,0 +1,25 @@ +using System; +using TMPro; + +namespace UnityEngine.UI +{ + public class UXTextMeshPro : TextMeshProUGUI + { + [SerializeField] private string m_localizationID = ""; + + protected override void Start() + { + base.Start(); + if (!Application.isPlaying) return; + ChangeLanguage(); + } + + protected void ChangeLanguage() + { + if (!string.IsNullOrEmpty(m_localizationID) && !"None".Equals(m_localizationID)) + { + text = GameApp.Localization.GetString(m_localizationID); + } + } + } +} diff --git a/Runtime/UGUIExtension/Text/UXTextMeshPro.cs.meta b/Runtime/UGUIExtension/Text/UXTextMeshPro.cs.meta new file mode 100644 index 0000000..121427c --- /dev/null +++ b/Runtime/UGUIExtension/Text/UXTextMeshPro.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bd17b8b605f2ba540bac156b5cf5ac77 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/link.xml b/Runtime/link.xml new file mode 100644 index 0000000..4b6aaeb --- /dev/null +++ b/Runtime/link.xml @@ -0,0 +1,3 @@ + + + diff --git a/Runtime/link.xml.meta b/Runtime/link.xml.meta new file mode 100644 index 0000000..58ec092 --- /dev/null +++ b/Runtime/link.xml.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: a60c8f27b8f25724085fb5a768d8d536 +timeCreated: 1737098208 \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..0d7d485 --- /dev/null +++ b/package.json @@ -0,0 +1,20 @@ +{ + "name": "com.alicizax.unity.ui.extension", + "displayName": "Aliciza X UI Extension", + "category": "Aliciza X", + "description": "Aliciza X UI Extension", + "version": "1.0.1", + "unity": "2025.1", + "keywords": [ + "Game Framework X" + ], + "repository": { + "name": "com.alicizax.unity", + "url": "http://101.34.252.46:3000/AlicizaX/", + "type": "git" + }, + "author": { + "name": "Yuliuren", + "email": "yuliuren00@gmail.com" + } +} \ No newline at end of file diff --git a/package.json.meta b/package.json.meta new file mode 100644 index 0000000..c563c1d --- /dev/null +++ b/package.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 2c9e3513dd282f84fb0e5eecff03b0c0 +PackageManifestImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: