From be29cef5c1b37b97d4c927aab6a440df4aee0bf1 Mon Sep 17 00:00:00 2001 From: shihuilong <1280118982@qq.com> Date: Tue, 31 Mar 2026 16:42:19 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90M=E3=80=91=E9=80=82=E9=85=8DXReal=20ar?= =?UTF-8?q?t=E7=94=9F=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Editor/ArtBuild/ArtServerManageWindow.cs | 83 +++++++++++++++++-- Assets/00.BuildOriginality/package.json | 2 +- 2 files changed, 79 insertions(+), 6 deletions(-) diff --git a/Assets/00.BuildOriginality/Editor/ArtBuild/ArtServerManageWindow.cs b/Assets/00.BuildOriginality/Editor/ArtBuild/ArtServerManageWindow.cs index ad7cdf2..91dd441 100644 --- a/Assets/00.BuildOriginality/Editor/ArtBuild/ArtServerManageWindow.cs +++ b/Assets/00.BuildOriginality/Editor/ArtBuild/ArtServerManageWindow.cs @@ -20,9 +20,20 @@ namespace Stary.Evo.Editor window.Show(); } - [EnumToggleButtons, HideLabel] [OnValueChanged("SetUseTypeData")] + [BoxGroup("Selection")] + [EnumToggleButtons, HideLabel] + [OnValueChanged("SetUseTypeData")] public UseType useType = UseType.Member; + private static DeviceMode _DeviceMode = DeviceMode.Evo_Rokid; + [BoxGroup("Selection")] + [ShowInInspector, ShowIf("@useType == UseType.Art")] + public DeviceMode deviceMode + { + get => _DeviceMode; + set { _DeviceMode = value; } + } + private string _titleGroupName; [TitleGroup("@ _titleGroupName")] public string productName; @@ -104,11 +115,39 @@ namespace Stary.Evo.Editor } /* 5. 载入并实例化 RKCameraRig.prefab */ - string prefabPath = "Prefabs/BaseSetting/RKCameraRig"; - var prefab = Resources.Load(prefabPath); - var spawned = (GameObject)PrefabUtility.InstantiatePrefab(prefab); - spawned.name = "RKCameraRigTest"; + if (deviceMode == DeviceMode.Evo_Rokid) + { + string prefabPath = "Prefabs/BaseSetting/RKCameraRig"; + + var prefab = Resources.Load(prefabPath); + var spawned = (GameObject)PrefabUtility.InstantiatePrefab(prefab); + spawned.name = "RKCameraRigTest"; + } + else + { + string prefabPath = "Prefabs/BaseSetting/RKCameraRig"; + // 模糊搜索 + GameObject prefab = LoadByFuzzy(); + GameObject instance = null; + if (prefab != null) + { + instance = (GameObject)PrefabUtility.InstantiatePrefab(prefab); + instance.transform.position = Vector3.zero; + Debug.Log($"✅ 已加载: {prefab.name}"); + } + else + { + Debug.LogError($"无法加载 Prefab: {prefabPath}\n请检查路径是否正确,或 XR Interaction Toolkit 样本是否已导入。"); + return; + } + + // 选中并聚焦 + // Selection.activeGameObject = instance; + // EditorGUIUtility.PingObject(instance); + if (instance) Debug.Log($"成功加载: {instance.name}"); + } + /* 6. 保存场景 */ string scenePath = Path.Combine("Assets/Art", productName, "Scenes", "TestScene.unity"); @@ -120,6 +159,32 @@ namespace Stary.Evo.Editor artList.Add(creatArtDomainEntity); } + GameObject LoadByFuzzy() + { + // 通过文件名模糊搜索,完全无视路径 + var guids = AssetDatabase.FindAssets("XR Origin (XR Rig) t:Prefab"); + + if (guids.Length == 0) + { + Debug.LogError("未找到 XR Origin (XR Rig) Prefab"); + return null; + } + + // 如果找到多个,优先选择 XR Interaction Toolkit 路径下的 + foreach (var guid in guids) + { + string path = AssetDatabase.GUIDToAssetPath(guid); + if (path.Contains("XR Interaction Toolkit")) + { + return AssetDatabase.LoadAssetAtPath(path); + } + } + + // 默认返回第一个 + return AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath(guids[0])); + } + + /// /// 创建成员目录 /// @@ -438,5 +503,13 @@ namespace Stary.Evo.Editor /// Art } + + public enum DeviceMode + { + //Xreal, + Evo_Xreal, + //Rokid, + Evo_Rokid, + } } } \ No newline at end of file diff --git a/Assets/00.BuildOriginality/package.json b/Assets/00.BuildOriginality/package.json index 0ad12f5..3331c8a 100644 --- a/Assets/00.BuildOriginality/package.json +++ b/Assets/00.BuildOriginality/package.json @@ -1,6 +1,6 @@ { "name": "com.staryevo.buildoriginality", - "version": "1.1.0", + "version": "1.1.1", "displayName": "00.StaryEvo.BuildOriginality", "description": "美术打包工具", "unity": "2021.3",