From 29d7836b6656f51d7c67392b8d47fa314e8b671c Mon Sep 17 00:00:00 2001 From: bob <605277374@qq.com> Date: Wed, 25 Jun 2025 11:52:30 +0800 Subject: [PATCH] fk --- Assets/ResRaw/Fgui.meta | 8 + Assets/ResRaw/Fgui/Tools_fui.bytes | Bin 0 -> 422 bytes Assets/ResRaw/Fgui/Tools_fui.bytes.meta | 7 + Assets/Scripts/Editor/Preview.meta | 3 + .../Editor/Preview/PreviewEditWindow.cs | 204 ++++++++++++++++++ .../Editor/Preview/PreviewEditWindow.cs.meta | 3 + Assets/Scripts/Startup/App.cs | 4 +- Assets/Scripts/UI/Binders/Binder.cs | 1 + Assets/Scripts/UI/Common/ModelTexture.cs | 24 ++- Assets/Scripts/UI/Tools.meta | 3 + .../Scripts/UI/Tools/PreviewPanel.Designer.cs | 20 ++ .../UI/Tools/PreviewPanel.Designer.cs.meta | 2 + Assets/Scripts/UI/Tools/PreviewPanel.cs | 14 ++ Assets/Scripts/UI/Tools/PreviewPanel.cs.meta | 2 + Assets/Scripts/UI/Tools/ToolsBinder.cs | 13 ++ Assets/Scripts/UI/Tools/ToolsBinder.cs.meta | 2 + FGUIProject/assets/Tools/PreviewPanel.xml | 9 + FGUIProject/assets/Tools/package.xml | 7 + FGUIProject/settings/whoot/9ap8oax8isao0.json | 1 + 19 files changed, 323 insertions(+), 4 deletions(-) create mode 100644 Assets/ResRaw/Fgui.meta create mode 100644 Assets/ResRaw/Fgui/Tools_fui.bytes create mode 100644 Assets/ResRaw/Fgui/Tools_fui.bytes.meta create mode 100644 Assets/Scripts/Editor/Preview.meta create mode 100644 Assets/Scripts/Editor/Preview/PreviewEditWindow.cs create mode 100644 Assets/Scripts/Editor/Preview/PreviewEditWindow.cs.meta create mode 100644 Assets/Scripts/UI/Tools.meta create mode 100644 Assets/Scripts/UI/Tools/PreviewPanel.Designer.cs create mode 100644 Assets/Scripts/UI/Tools/PreviewPanel.Designer.cs.meta create mode 100644 Assets/Scripts/UI/Tools/PreviewPanel.cs create mode 100644 Assets/Scripts/UI/Tools/PreviewPanel.cs.meta create mode 100644 Assets/Scripts/UI/Tools/ToolsBinder.cs create mode 100644 Assets/Scripts/UI/Tools/ToolsBinder.cs.meta create mode 100644 FGUIProject/assets/Tools/PreviewPanel.xml create mode 100644 FGUIProject/assets/Tools/package.xml create mode 100644 FGUIProject/settings/whoot/9ap8oax8isao0.json diff --git a/Assets/ResRaw/Fgui.meta b/Assets/ResRaw/Fgui.meta new file mode 100644 index 000000000..5b662c51f --- /dev/null +++ b/Assets/ResRaw/Fgui.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c863cc32561f17942841fa5813217c16 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ResRaw/Fgui/Tools_fui.bytes b/Assets/ResRaw/Fgui/Tools_fui.bytes new file mode 100644 index 0000000000000000000000000000000000000000..1cb90a6b24ad4d23e2657eb21e7faad445c95769 GIT binary patch literal 422 zcmZus!Ab)$5PjKpv%4zlx#Gni==M;_q9ANR*@Mu7o+Z%57PA|%TI;Q!;rG~oDE^06 z**KF{6g1(@ByV13Ud}JB3jh%iXZl`QJy!^?tTj_&|18N&hj0XlgLPRP`Yb4Z*)rgq`{azX zg-;Od!8NoU`Ef4T#U3SJ%zw2yMUFfHJ4&!cQnvBxW&gIKNxn#5qM409Q{YJ)H}`GC z$K%_(nbA*>16x(LMmU*jn__49P|hah^HA5Nf#^c2@ryDVQJvnf1VNob_D7HNDkHMD KCc{fRD$N&YbWm&n literal 0 HcmV?d00001 diff --git a/Assets/ResRaw/Fgui/Tools_fui.bytes.meta b/Assets/ResRaw/Fgui/Tools_fui.bytes.meta new file mode 100644 index 000000000..454bae0e2 --- /dev/null +++ b/Assets/ResRaw/Fgui/Tools_fui.bytes.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 7a58326282768794dac00e6400149f28 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Editor/Preview.meta b/Assets/Scripts/Editor/Preview.meta new file mode 100644 index 000000000..e283b9e44 --- /dev/null +++ b/Assets/Scripts/Editor/Preview.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 64b3d51f8cb04af485e1a07f8a6e15a5 +timeCreated: 1750822352 \ No newline at end of file diff --git a/Assets/Scripts/Editor/Preview/PreviewEditWindow.cs b/Assets/Scripts/Editor/Preview/PreviewEditWindow.cs new file mode 100644 index 000000000..c6a6a3b1b --- /dev/null +++ b/Assets/Scripts/Editor/Preview/PreviewEditWindow.cs @@ -0,0 +1,204 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using UnityEditor; +using UnityEngine; + +namespace NBF +{ + public class PreviewableAssetEditor : EditorWindow + { + private List previewablePrefabs = new List(); + private Vector2 scrollPosition; + private int selectedIndex = -1; + private GameObject selectedPrefab; + private Editor prefabEditor; + private SerializedObject serializedObject; + + [MenuItem("Tools/Previewable Asset Editor")] + public static void ShowWindow() + { + GetWindow("Previewable Assets"); + } + + private void OnEnable() + { + RefreshPrefabList(); + } + + private void RefreshPrefabList() + { + previewablePrefabs.Clear(); + + // 查找项目中所有预制体 + string[] guids = AssetDatabase.FindAssets("t:Prefab"); + foreach (string guid in guids) + { + string path = AssetDatabase.GUIDToAssetPath(guid); + GameObject prefab = AssetDatabase.LoadAssetAtPath(path); + + // 检查预制体是否有 PreviewableAsset 组件 + if (prefab.GetComponent() != null) + { + previewablePrefabs.Add(prefab); + } + } + + // 按名称排序 + previewablePrefabs = previewablePrefabs.OrderBy(p => p.name).ToList(); + } + + private void OnGUI() + { + EditorGUILayout.BeginHorizontal(); + + // 左侧列表 + DrawPrefabList(); + + // 右侧操作区域 + DrawOperationArea(); + + EditorGUILayout.EndHorizontal(); + } + + private void DrawPrefabList() + { + EditorGUILayout.BeginVertical(GUILayout.Width(250)); + + EditorGUILayout.LabelField("Previewable Assets", EditorStyles.boldLabel); + EditorGUILayout.Space(); + + scrollPosition = EditorGUILayout.BeginScrollView(scrollPosition, "box"); + + for (int i = 0; i < previewablePrefabs.Count; i++) + { + var prefab = previewablePrefabs[i]; + bool isSelected = i == selectedIndex; + + EditorGUILayout.BeginHorizontal(); + + // 使用 toggle 样式按钮来模拟选择 + if (GUILayout.Toggle(isSelected, prefab.name, "Button", GUILayout.Height(20))) + { + if (!isSelected) + { + selectedIndex = i; + selectedPrefab = prefab; + CreatePrefabEditor(); + } + } + + EditorGUILayout.EndHorizontal(); + } + + EditorGUILayout.EndScrollView(); + + // 刷新按钮 + if (GUILayout.Button("Refresh List")) + { + RefreshPrefabList(); + selectedIndex = -1; + selectedPrefab = null; + prefabEditor = null; + } + + EditorGUILayout.EndVertical(); + } + + private void DrawOperationArea() + { + EditorGUILayout.BeginVertical(GUILayout.ExpandWidth(true)); + + if (selectedPrefab == null) + { + EditorGUILayout.HelpBox("Select a prefab from the list to edit its PreviewableAsset properties.", + MessageType.Info); + } + else + { + EditorGUILayout.LabelField("Editing: " + selectedPrefab.name, EditorStyles.boldLabel); + EditorGUILayout.Space(); + + // 显示预制体预览 + if (prefabEditor != null) + { + prefabEditor.OnPreviewGUI(GUILayoutUtility.GetRect(100, 100), EditorStyles.helpBox); + } + + EditorGUILayout.Space(); + + // 显示 PreviewableAsset 属性 + var previewableAsset = selectedPrefab.GetComponent(); + if (previewableAsset != null) + { + if (serializedObject == null || serializedObject.targetObject != previewableAsset) + { + serializedObject = new SerializedObject(previewableAsset); + } + + serializedObject.Update(); + + // 自动绘制所有序列化字段 + SerializedProperty prop = serializedObject.GetIterator(); + bool enterChildren = true; + while (prop.NextVisible(enterChildren)) + { + enterChildren = false; + if (prop.name == "m_Script") continue; // 跳过脚本引用 + EditorGUILayout.PropertyField(prop, true); + } + + serializedObject.ApplyModifiedProperties(); + + EditorGUILayout.Space(); + + // 保存按钮 + if (GUILayout.Button("Save Changes", GUILayout.Height(30))) + { + SaveChanges(); + } + } + else + { + EditorGUILayout.HelpBox("Selected prefab no longer has a PreviewableAsset component.", + MessageType.Warning); + } + } + + EditorGUILayout.EndVertical(); + } + + private void CreatePrefabEditor() + { + if (prefabEditor != null) + { + DestroyImmediate(prefabEditor); + } + + prefabEditor = Editor.CreateEditor(selectedPrefab); + } + + private void SaveChanges() + { + if (selectedPrefab != null) + { + // 标记预制体为脏以便保存 + EditorUtility.SetDirty(selectedPrefab); + + // 保存预制体 + AssetDatabase.SaveAssets(); + AssetDatabase.Refresh(); + + Debug.Log("Prefab " + selectedPrefab.name + " saved successfully."); + } + } + + private void OnDisable() + { + if (prefabEditor != null) + { + DestroyImmediate(prefabEditor); + } + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Editor/Preview/PreviewEditWindow.cs.meta b/Assets/Scripts/Editor/Preview/PreviewEditWindow.cs.meta new file mode 100644 index 000000000..2c3e1f974 --- /dev/null +++ b/Assets/Scripts/Editor/Preview/PreviewEditWindow.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 9fe1f9c26314412880e299b87d998083 +timeCreated: 1750822614 \ No newline at end of file diff --git a/Assets/Scripts/Startup/App.cs b/Assets/Scripts/Startup/App.cs index b38830f64..1558f98d5 100644 --- a/Assets/Scripts/Startup/App.cs +++ b/Assets/Scripts/Startup/App.cs @@ -140,8 +140,8 @@ namespace NBF // UI.Inst.OpenUI(); LoadData(); UI.Inst.OpenUI(); - // UI.Inst.OpenUI(); - Fishing.Inst.Go(1); + UI.Inst.OpenUI(); + // Fishing.Inst.Go(1); // UI.Inst.OpenUI(); // UI.Inst.OpenUI(); } diff --git a/Assets/Scripts/UI/Binders/Binder.cs b/Assets/Scripts/UI/Binders/Binder.cs index 8029a2c7f..d45640940 100644 --- a/Assets/Scripts/UI/Binders/Binder.cs +++ b/Assets/Scripts/UI/Binders/Binder.cs @@ -9,6 +9,7 @@ FishingBinder.BindAll(); MainBinder.BindAll(); ShopBinder.BindAll(); + } } } \ No newline at end of file diff --git a/Assets/Scripts/UI/Common/ModelTexture.cs b/Assets/Scripts/UI/Common/ModelTexture.cs index 748edce13..0eddddf1d 100644 --- a/Assets/Scripts/UI/Common/ModelTexture.cs +++ b/Assets/Scripts/UI/Common/ModelTexture.cs @@ -4,6 +4,7 @@ using System; using UnityEngine; using FairyGUI; using NBC; +using RootMotion.FinalIK; using Object = UnityEngine.Object; namespace NBF @@ -43,14 +44,33 @@ namespace NBF { _renderImage = new ModelRenderImage(ModelHolder.asGraph); } - + //Assets/Resources/gfx/hooks/berserk_hooks/clas_20421_20446/clas_20423.prefab //Assets/Resources/gfx/rods/syberia/bolo_10021/bolo_10021_LB400.prefab //"Role/test" var prefab = Resources.Load("gfx/hooks/berserk_hooks/clas_20421_20446/clas_20423"); var model = ((GameObject)Object.Instantiate(prefab)); + var ccdIk = model.GetComponent(); + if (ccdIk != null) + { + Object.Destroy(ccdIk); + } + + var lineRenderer = model.GetComponent(); + if (lineRenderer != null) + { + Object.Destroy(lineRenderer); + } + + var rigidbody = model.GetComponent(); + if (rigidbody != null) + { + rigidbody.isKinematic = true; + } + + + _renderImage.modelRoot.localScale = new Vector3(200, 200, 200); _renderImage.SetModel(model); - _renderImage.modelRoot.localScale = Vector3.one; var previewableAsset = model.GetComponent(); if (previewableAsset != null) diff --git a/Assets/Scripts/UI/Tools.meta b/Assets/Scripts/UI/Tools.meta new file mode 100644 index 000000000..f0870218f --- /dev/null +++ b/Assets/Scripts/UI/Tools.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 7cf28ec025c64ce0944299f6d30ba3c3 +timeCreated: 1750821997 \ No newline at end of file diff --git a/Assets/Scripts/UI/Tools/PreviewPanel.Designer.cs b/Assets/Scripts/UI/Tools/PreviewPanel.Designer.cs new file mode 100644 index 000000000..54f5f4a6a --- /dev/null +++ b/Assets/Scripts/UI/Tools/PreviewPanel.Designer.cs @@ -0,0 +1,20 @@ +/**本脚本为自动生成,每次生成会覆盖!请勿手动修改,生成插件文档及项目地址:https://git.whoot.com/whoot-games/whoot.fguieditorplugin**/ + +using FairyGUI; +using FairyGUI.Utils; +using NBC; +using System.Collections.Generic; + +namespace NBF +{ + /// + public partial class PreviewPanel + { + public GObject this[string aKey] => ContentPane.GetChild(aKey); + [AutoFind(Name = "Model")] + public ModelTexture Model; + public override string[] GetDependPackages(){ return new string[] {"Common"}; } + + + } +} \ No newline at end of file diff --git a/Assets/Scripts/UI/Tools/PreviewPanel.Designer.cs.meta b/Assets/Scripts/UI/Tools/PreviewPanel.Designer.cs.meta new file mode 100644 index 000000000..3f5d1c189 --- /dev/null +++ b/Assets/Scripts/UI/Tools/PreviewPanel.Designer.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: c5cbbfd0335a46e45aabd3e1479c8abf \ No newline at end of file diff --git a/Assets/Scripts/UI/Tools/PreviewPanel.cs b/Assets/Scripts/UI/Tools/PreviewPanel.cs new file mode 100644 index 000000000..33e9d7e5f --- /dev/null +++ b/Assets/Scripts/UI/Tools/PreviewPanel.cs @@ -0,0 +1,14 @@ +// 本脚本只在不存在时会生成一次。已存在不会再次生成覆盖 + +using UnityEngine; +using NBC; + +namespace NBF +{ + public partial class PreviewPanel : UIPanel + { + public override string UIPackName => "Tools"; + public override string UIResName => "PreviewPanel"; + + } +} \ No newline at end of file diff --git a/Assets/Scripts/UI/Tools/PreviewPanel.cs.meta b/Assets/Scripts/UI/Tools/PreviewPanel.cs.meta new file mode 100644 index 000000000..5f978bb24 --- /dev/null +++ b/Assets/Scripts/UI/Tools/PreviewPanel.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 536be5135584e52489e3c5b71dc719e1 \ No newline at end of file diff --git a/Assets/Scripts/UI/Tools/ToolsBinder.cs b/Assets/Scripts/UI/Tools/ToolsBinder.cs new file mode 100644 index 000000000..cbca6aa4b --- /dev/null +++ b/Assets/Scripts/UI/Tools/ToolsBinder.cs @@ -0,0 +1,13 @@ +/**注册组件绑定关系。本脚本为自动生成,每次生成会覆盖!请勿手动修改,生成插件文档及项目地址:https://git.whoot.com/whoot-games/whoot.fguieditorplugin**/ + +using FairyGUI; + +namespace NBF +{ + public class ToolsBinder + { + public static void BindAll() + { + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/UI/Tools/ToolsBinder.cs.meta b/Assets/Scripts/UI/Tools/ToolsBinder.cs.meta new file mode 100644 index 000000000..7f635709d --- /dev/null +++ b/Assets/Scripts/UI/Tools/ToolsBinder.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 2d6aa632a0961684b9f1c720d2ff496d \ No newline at end of file diff --git a/FGUIProject/assets/Tools/PreviewPanel.xml b/FGUIProject/assets/Tools/PreviewPanel.xml new file mode 100644 index 000000000..b7b5662d1 --- /dev/null +++ b/FGUIProject/assets/Tools/PreviewPanel.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/FGUIProject/assets/Tools/package.xml b/FGUIProject/assets/Tools/package.xml new file mode 100644 index 000000000..31ecb1a99 --- /dev/null +++ b/FGUIProject/assets/Tools/package.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/FGUIProject/settings/whoot/9ap8oax8isao0.json b/FGUIProject/settings/whoot/9ap8oax8isao0.json new file mode 100644 index 000000000..95b6e0e66 --- /dev/null +++ b/FGUIProject/settings/whoot/9ap8oax8isao0.json @@ -0,0 +1 @@ +{"url":"ui://9ap8oax8isao0","name":"PreviewPanel","scriptType":"panel","isCustomName":false,"customName":"","annotation":"","member":{}} \ No newline at end of file