Jelajahi Sumber

[+】场景暂存

2809621200 1 bulan lalu
induk
melakukan
00a0614d3b

+ 1 - 1
WindTurbinesMaintenance_2025/Assets/GameAssets/03_Models/02_金风风力发电组/Materials/纯色_四色.mat

@@ -63,7 +63,7 @@ Material:
     - _GlossMapScale: 1
     - _Glossiness: 0.72
     - _GlossyReflections: 1
-    - _Metallic: 0.32
+    - _Metallic: 0.43
     - _Mode: 0
     - _OcclusionStrength: 1
     - _Parallax: 0.02

+ 1 - 1
WindTurbinesMaintenance_2025/Assets/GameAssets/03_Models/02_金风风力发电组/Materials/纯色_灰白.mat

@@ -63,7 +63,7 @@ Material:
     - _GlossMapScale: 1
     - _Glossiness: 0.63
     - _GlossyReflections: 1
-    - _Metallic: 0.27
+    - _Metallic: 0.5
     - _Mode: 0
     - _OcclusionStrength: 1
     - _Parallax: 0.02

+ 2 - 2
WindTurbinesMaintenance_2025/Assets/GameAssets/03_Models/02_金风风力发电组/Materials/纯色_蓝.mat

@@ -61,9 +61,9 @@ Material:
     - _DetailNormalMapScale: 1
     - _DstBlend: 0
     - _GlossMapScale: 1
-    - _Glossiness: 0.6
+    - _Glossiness: 0.75
     - _GlossyReflections: 1
-    - _Metallic: 0.27
+    - _Metallic: 0.42
     - _Mode: 0
     - _OcclusionStrength: 1
     - _Parallax: 0.02

File diff ditekan karena terlalu besar
+ 0 - 49917
WindTurbinesMaintenance_2025/Assets/Scenes/金风-变桨逆变器OK信号丢失故障检修_bf.unity


+ 0 - 7
WindTurbinesMaintenance_2025/Assets/Scenes/金风-变桨逆变器OK信号丢失故障检修_bf.unity.meta

@@ -1,7 +0,0 @@
-fileFormatVersion: 2
-guid: e6263e7869589a7449c17c5df5cdc201
-DefaultImporter:
-  externalObjects: {}
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 

+ 23 - 10
WindTurbinesMaintenance_2025/Assets/Scripts/Tool/Editor/MeshSelectionTool.cs

@@ -3,42 +3,51 @@ using System.Collections.Generic;
 using System.Linq;
 using UnityEditor;
 using UnityEngine;
+using Sirenix.OdinInspector.Editor;
+using Sirenix.OdinInspector;
 
 [CustomEditor(typeof(MeshSelection))]
-public class MeshSelectionTool : Editor
+public class MeshSelectionTool : OdinEditor
 {
     MeshSelection selection;
-    GameObject obj;
 
     private Mesh mesh;
     private HashSet<int> selectedTriangles = new HashSet<int>();
 
-    private void OnEnable()
+    private bool enableSelect;
+
+    protected override void OnEnable()
     {
+        base.OnEnable();
         selection = (MeshSelection)target;
     }
 
-    private bool enableSelect;
     public override void OnInspectorGUI()
     {
+        base.OnInspectorGUI();
+
         if (GUILayout.Button("开始选择"))
         {
+            if (selection.ToolSelectObj == null)
+                return;
+
             enableSelect = true;
             selection.SelectedTrianglesIndex.Clear();
             selectedTriangles.Clear();
         }
-        GUILayout.Space(10);
-        if (GUILayout.Button("结束选择"))
+        GUILayout.Space(3);
+        if (GUILayout.Button("生成"))
         {
+            if (selectedTriangles.Count == 0)
+                return;
+
             enableSelect = false;
-            selection.setObj(obj);
             selection.SelectedTrianglesIndex = selectedTriangles.ToList();
             selection.GetBoundaryVertices(mesh);
             selection.CreateCenter();
+            selectedTriangles.Clear();
         }
 
-        base.OnInspectorGUI();
-
     }
 
     private void OnSceneGUI()
@@ -53,9 +62,13 @@ public class MeshSelectionTool : Editor
 
                 if (Physics.Raycast(ray, out hit))
                 {
+                    if (hit.transform.gameObject != selection.ToolSelectObj)
+                    {
+                        return;
+                    }
+
                     int triangleIndex = hit.triangleIndex * 3;
 
-                    obj = hit.transform.gameObject;
                     mesh = hit.transform.GetComponent<MeshFilter>().sharedMesh;
                     selectedTriangles.Add(triangleIndex);
                 }

+ 55 - 14
WindTurbinesMaintenance_2025/Assets/Scripts/Tool/MeshSelection.cs

@@ -1,16 +1,32 @@
 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
+using Sirenix.OdinInspector;
 
 public class MeshSelection : MonoBehaviour
 {
+    [DetailedInfoBox("使用说明", "1、选择要修改的物体\n2、点击开始选择,然后“ctrl+左键”选择网格上的面,选择完毕后点击生成\n3、选择第二个面进行生成点位\n4、点击生成中心点")]
 
-    private GameObject ToolSelectObj;
+    [LabelText("需要修改的物体")]
+    public GameObject ToolSelectObj;
 
+    [HideInInspector]
     public List<int> SelectedTrianglesIndex = new List<int>();
-
+    [HideInInspector]
     public HashSet<Vector3> TrianglesVector3s = new HashSet<Vector3>();
 
+    [LabelText("第一个点位")]
+    [ShowIf("showF"), ReadOnly]
+    public GameObject firstObj;
+
+    [LabelText("第二个点位")]
+    [ShowIf("showS"),ReadOnly]
+    public GameObject SecondObj;
+
+    bool showF = false;
+    bool showS = false;
+    bool showC = false;
+
 
     public void GetBoundaryVertices(Mesh mesh)
     {
@@ -38,7 +54,6 @@ public class MeshSelection : MonoBehaviour
             {
                 TrianglesVector3s.Add(ToolSelectObj.transform.TransformPoint(vertices[edge.Key.Item1]));
                 TrianglesVector3s.Add(ToolSelectObj.transform.TransformPoint(vertices[edge.Key.Item2]));
-
             }
         }
 
@@ -55,23 +70,49 @@ public class MeshSelection : MonoBehaviour
         Vector3 v3 = Vector3.zero;
         foreach(Vector3 vector3 in TrianglesVector3s)
         {
-            GameObject gameObject = new GameObject();
-            gameObject.transform.position = vector3;
             v3 += vector3;
         }
 
-        GameObject obj = new GameObject();
-        obj.transform.SetParent(ToolSelectObj.transform.parent, true);
-        obj.transform.localPosition = v3 / TrianglesVector3s.Count ;
-        obj.name = ToolSelectObj.name+"---生成点";
-        //ToolSelectObj.transform.SetParent(obj.transform,true);
+        if(firstObj == null)
+        {
+            firstObj = new GameObject();
+            firstObj.transform.SetParent(ToolSelectObj.transform.parent, true);
+            firstObj.transform.position = v3 / TrianglesVector3s.Count;
+            firstObj.name = ToolSelectObj.name + "-第一个生成点";
+            showF = true;
+            TrianglesVector3s.Clear();
+            if (showF && showS) showC = true;
+            return;
+        }
+
+        if (SecondObj == null)
+        {
+            SecondObj = new GameObject();
+            SecondObj.transform.SetParent(ToolSelectObj.transform.parent, true);
+            SecondObj.transform.position = v3 / TrianglesVector3s.Count;
+            SecondObj.name = ToolSelectObj.name + "-第二个生成点";
+            showS = true;
+            TrianglesVector3s.Clear();
+            if (showF && showS) showC = true;
+            return;
+        }
 
-        TrianglesVector3s.Clear();
-    }
 
-    public void setObj(GameObject obj)
+    }
+    [Button("生成中心点")]
+    [ShowIf("showC")]
+    public void CreateCenterObj()
     {
-        ToolSelectObj = obj;
+        GameObject obj = new GameObject();
+        obj.transform.SetParent(ToolSelectObj.transform.parent, true);
+        obj.transform.position = (firstObj.transform.position + SecondObj.transform.position) / 2;
+        obj.transform.rotation = Quaternion.LookRotation( (firstObj.transform.position - SecondObj.transform.position).normalized);
+        obj.name = ToolSelectObj.name + "---生成点";
+        ToolSelectObj.transform.SetParent(obj.transform);
+        DestroyImmediate(firstObj);
+        DestroyImmediate(SecondObj);
+        showC= showF = showS = false;
+        TrianglesVector3s.Clear();
     }
 
 }

+ 85 - 0
WindTurbinesMaintenance_2025/Assets/Scripts/Tool/NewBehaviourScript.cs

@@ -0,0 +1,85 @@
+using Sirenix.OdinInspector;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class NewBehaviourScript : MonoBehaviour
+{
+    public GameObject 已分组;
+    public GameObject 待分组;
+
+    public GameObject 分组目标;
+
+    objTree ObjATree;
+
+   public Dictionary<Mesh, GameObject> objBDic ;
+
+    [Button("测试")]
+    void 生成树()
+    {
+        ObjATree = new objTree(已分组);
+        objBDic = new Dictionary<Mesh, GameObject>();
+        FindChild(待分组);
+        dui(ObjATree, 分组目标);
+    }
+
+    void FindChild(GameObject child)
+    {
+        MeshFilter meshFilter = child.GetComponent<MeshFilter>();
+        if (meshFilter != null && meshFilter.sharedMesh != null)
+        {
+            if (!objBDic.ContainsKey(meshFilter.sharedMesh))
+                objBDic.Add(meshFilter.sharedMesh, child);
+        }
+
+        for (int i = 0; i < child.transform.childCount; i++)
+            FindChild(child.transform.GetChild(i).gameObject);
+    }
+
+    void dui(objTree tree,GameObject 当前节点)
+    {
+        GameObject matchTmpObj;
+
+        if (tree.nodeMesh != null && objBDic.TryGetValue(tree.nodeMesh, out GameObject tmpObj))
+            matchTmpObj = tmpObj;
+        else
+        {
+            matchTmpObj = new GameObject();
+            matchTmpObj.name = tree.nodeObj.name;
+        }
+        matchTmpObj.transform.SetParent(当前节点.transform);
+
+        foreach (objTree tmp in tree.children)
+            dui(tmp, matchTmpObj);
+
+    }
+
+    [Serializable]
+    public class objTree
+    {
+        public Mesh nodeMesh;
+        public GameObject nodeObj;
+        public List<objTree> children = new List<objTree>();
+
+       public objTree(GameObject gameObj)
+        {
+            nodeObj = gameObj;//节点
+
+            try { nodeMesh = nodeObj.GetComponent<MeshFilter>().sharedMesh; }
+            catch (Exception) { }
+
+            addObjNode();
+        }
+
+        public void addObjNode()
+        {
+            for (int i = 0; i < nodeObj.transform.childCount; i++)
+            {
+                children.Add(new objTree(nodeObj.transform.GetChild(i).gameObject));
+            }
+
+        }
+    }
+}
+

+ 11 - 0
WindTurbinesMaintenance_2025/Assets/Scripts/Tool/NewBehaviourScript.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: e03a1ff5bdefcb647bec281190dbd641
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

TEMPAT SAMPAH
WindTurbinesMaintenance_2025/Assets/StreamingAssets/Config/流程配置/金风-变桨逆变器OK信号丢失故障检修_bf.xlsx


+ 0 - 7
WindTurbinesMaintenance_2025/Assets/StreamingAssets/Config/流程配置/金风-变桨逆变器OK信号丢失故障检修_bf.xlsx.meta

@@ -1,7 +0,0 @@
-fileFormatVersion: 2
-guid: 177c6041a47f14940ba069ba188249ce
-DefaultImporter:
-  externalObjects: {}
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 

Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini