From 5d5d8a9051ff0cfa4edac40fbcc8909b18a4e2fa Mon Sep 17 00:00:00 2001 From: huqibin <762612145@qq.com> Date: Mon, 26 May 2025 19:45:33 +0800 Subject: [PATCH] =?UTF-8?q?=E9=AB=98=E7=B2=B1=E7=8E=89=E7=B1=B3=E5=AF=B9?= =?UTF-8?q?=E6=AF=94=E9=A1=B5=E9=9D=A2BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/HQB/LineFlare.mat | 128 ++++++++++++++++++ Assets/HQB/LineFlare.mat.meta | 8 ++ .../UI_Panel/UI_PlantComparisonPanel.prefab | 54 ++++++-- .../HQB/RangeFinding/MeasureDistance.prefab | 10 +- Assets/Scripts/HQB/SorghumController.cs | 2 +- .../UI/UI_Panel/UI_PlantComparisonPanel.cs | 77 +++++++++++ .../UI_Panel/UI_PlantComparisonPanel.cs.meta | 11 ++ Assets/Scripts/RawImageScript_SC.cs | 111 +++++++++++++++ Assets/Scripts/RawImageScript_SC.cs.meta | 11 ++ 9 files changed, 394 insertions(+), 18 deletions(-) create mode 100644 Assets/HQB/LineFlare.mat create mode 100644 Assets/HQB/LineFlare.mat.meta create mode 100644 Assets/Scripts/Project/UI/UI_Panel/UI_PlantComparisonPanel.cs create mode 100644 Assets/Scripts/Project/UI/UI_Panel/UI_PlantComparisonPanel.cs.meta create mode 100644 Assets/Scripts/RawImageScript_SC.cs create mode 100644 Assets/Scripts/RawImageScript_SC.cs.meta diff --git a/Assets/HQB/LineFlare.mat b/Assets/HQB/LineFlare.mat new file mode 100644 index 0000000..37ee6e8 --- /dev/null +++ b/Assets/HQB/LineFlare.mat @@ -0,0 +1,128 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: LineFlare + m_Shader: {fileID: 4800000, guid: 650dd9526735d5b46b79224bc6e94025, type: 3} + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 1 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: 2013 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _Blend: 0 + - _BlendOp: 0 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueOffset: 13 + - _ReceiveShadows: 1 + - _SampleGI: 0 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0.18066758, g: 1, b: 0.051886797, a: 1} + - _Color: {r: 0.18066755, g: 1, b: 0.051886775, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] +--- !u!114 &4563437184854181132 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 5 diff --git a/Assets/HQB/LineFlare.mat.meta b/Assets/HQB/LineFlare.mat.meta new file mode 100644 index 0000000..6bf4cac --- /dev/null +++ b/Assets/HQB/LineFlare.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 349b9c4bed5bcee4e93531e193b78099 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/UI/UI_Panel/UI_PlantComparisonPanel.prefab b/Assets/Resources/UI/UI_Panel/UI_PlantComparisonPanel.prefab index d461c4f..cd89b4d 100644 --- a/Assets/Resources/UI/UI_Panel/UI_PlantComparisonPanel.prefab +++ b/Assets/Resources/UI/UI_Panel/UI_PlantComparisonPanel.prefab @@ -144,7 +144,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: a5549af0ab4860f4982ec854145a825c, type: 3} m_Name: m_EditorClassIdentifier: - rextualPanel: {fileID: 4007482462058298327} + rextualPanel: {fileID: 0} targetRawImage: {fileID: 0} --- !u!1 &103622424108342245 GameObject: @@ -5154,7 +5154,7 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 4949156397131831978} - - component: {fileID: 4007482462058298327} + - component: {fileID: -2053597471533093755} m_Layer: 5 m_Name: UI_PlantComparisonPanel m_TagString: Untagged @@ -5184,7 +5184,7 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &4007482462058298327 +--- !u!114 &-2053597471533093755 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -5193,12 +5193,12 @@ MonoBehaviour: m_GameObject: {fileID: 3213127863992522820} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 39a57370865ba71489611c8402e8de4f, type: 3} + m_Script: {fileID: 11500000, guid: a3f6b08a228f8d54a9764628dab61c5c, type: 3} m_Name: m_EditorClassIdentifier: rawImage: {fileID: 0} - ToptextMeshProUGUI: {fileID: 0} - ContentTextMeshProUGUI: {fileID: 0} + ToptextMeshProUGUI: {fileID: 4009316998971189925} + ContentTextMeshProUGUI: {fileID: 9213132001424090846} --- !u!1 &3326583893673649304 GameObject: m_ObjectHideFlags: 0 @@ -11574,7 +11574,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: a5549af0ab4860f4982ec854145a825c, type: 3} m_Name: m_EditorClassIdentifier: - rextualPanel: {fileID: 4007482462058298327} + rextualPanel: {fileID: 0} targetRawImage: {fileID: 0} --- !u!1 &7027306909045918957 GameObject: @@ -14511,6 +14511,7 @@ GameObject: - component: {fileID: 2404267383160180} - component: {fileID: 843251802214501615} - component: {fileID: 1958389020031708348} + - component: {fileID: 395113591} m_Layer: 5 m_Name: "\u9AD8\u7CB1RawImage" m_TagString: Untagged @@ -14559,20 +14560,34 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Texture: {fileID: 0} + m_Texture: {fileID: 8400000, guid: fb2169cf27c4ec54aa65469ee996e57a, type: 2} m_UVRect: serializedVersion: 2 x: 0 y: 0 width: 1 height: 1 +--- !u!114 &395113591 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8114533561954947977} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01b62ba21085e1b4d9bb07e1113f23af, type: 3} + m_Name: + m_EditorClassIdentifier: + rextualPanel: {fileID: -2053597471533093755} + targetRawImage: {fileID: 1958389020031708348} --- !u!1 &8134453354313840729 GameObject: m_ObjectHideFlags: 0 @@ -15810,6 +15825,7 @@ GameObject: - component: {fileID: 5554581364043024722} - component: {fileID: 2197527208233419064} - component: {fileID: 3802914729905730975} + - component: {fileID: 395113590} m_Layer: 5 m_Name: "\u7389\u7C73RawImage" m_TagString: Untagged @@ -15835,7 +15851,7 @@ RectTransform: m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 815, y: 584} + m_SizeDelta: {x: 679, y: 584} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &2197527208233419064 CanvasRenderer: @@ -15858,20 +15874,34 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Texture: {fileID: 0} + m_Texture: {fileID: 8400000, guid: 76c94c4c4c4548a4c9cbc8d1ea0c1236, type: 2} m_UVRect: serializedVersion: 2 x: 0 y: 0 width: 1 height: 1 +--- !u!114 &395113590 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8915531652701088100} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01b62ba21085e1b4d9bb07e1113f23af, type: 3} + m_Name: + m_EditorClassIdentifier: + rextualPanel: {fileID: -2053597471533093755} + targetRawImage: {fileID: 3802914729905730975} --- !u!1 &8928618135586076302 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/HQB/RangeFinding/MeasureDistance.prefab b/Assets/Scripts/HQB/RangeFinding/MeasureDistance.prefab index 3bc1fcf..bd172d1 100644 --- a/Assets/Scripts/HQB/RangeFinding/MeasureDistance.prefab +++ b/Assets/Scripts/HQB/RangeFinding/MeasureDistance.prefab @@ -61,7 +61,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + - {fileID: 2100000, guid: 349b9c4bed5bcee4e93531e193b78099, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -188,7 +188,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + - {fileID: 2100000, guid: 349b9c4bed5bcee4e93531e193b78099, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -260,7 +260,7 @@ MonoBehaviour: StObj: {fileID: 1414645914767451568} EdObj: {fileID: 1414645913928041328} IsRt: 1 - LineWidth: 0.05 - LineMat: {fileID: 2100000, guid: d704fb960bf87f043b794a93136b57e2, type: 2} - LineColor: {r: 1, g: 1, b: 1, a: 1} + LineWidth: 0.02 + LineMat: {fileID: 2100000, guid: 349b9c4bed5bcee4e93531e193b78099, type: 2} + LineColor: {r: 0.13154629, g: 1, b: 0.033018887, a: 1} unittype: 100 diff --git a/Assets/Scripts/HQB/SorghumController.cs b/Assets/Scripts/HQB/SorghumController.cs index aa78270..95a9092 100644 --- a/Assets/Scripts/HQB/SorghumController.cs +++ b/Assets/Scripts/HQB/SorghumController.cs @@ -62,7 +62,7 @@ public class SorghumController : PermanentTriggerBase targetHD.SetActive(false); targetSD.SetActive(true); GameManager.UIMgr.ShowPanel(E_UI_Layer.Top); - GameManager.UIMgr.ShowPanel(E_UI_Layer.Top, (p) => { p.Init(); }); + GameManager.UIMgr.ShowPanel(E_UI_Layer.Top, (p) => { p.Init(); }); } } } diff --git a/Assets/Scripts/Project/UI/UI_Panel/UI_PlantComparisonPanel.cs b/Assets/Scripts/Project/UI/UI_Panel/UI_PlantComparisonPanel.cs new file mode 100644 index 0000000..116cce6 --- /dev/null +++ b/Assets/Scripts/Project/UI/UI_Panel/UI_PlantComparisonPanel.cs @@ -0,0 +1,77 @@ +using System.Collections; +using System.Collections.Generic; +using TMPro; +using UnityEngine; +using UnityEngine.EventSystems; +using UnityEngine.UI; + +public class UI_PlantComparisonPanel : BasePanel +{ + public RawImage rawImage; + + //顶部文字 + public TextMeshProUGUI ToptextMeshProUGUI; + + //内容 + public TextMeshProUGUI ContentTextMeshProUGUI; + + //public RawImageScript rawImageScript_Left; + //public RawImageScript rawImageScript_Right; + + public plantsInfo plantsInfo; + + public void Init() + { + plantsInfo = JsonManager.Instance.LoadData("plantsInfo"); + ToptextMeshProUGUI.text = ""; + ContentTextMeshProUGUI.text = ""; + } + + public void showPlantPartOnRawImage(GameObject partObj) + { + ToptextMeshProUGUI.text = ""; + ContentTextMeshProUGUI.text = ""; + + plantsInfo.allPlants.ForEach(plant => { + if (partObj.transform.parent.gameObject.name == plant.plantName) + { + string title = plant.plantName + ":"; + plant.plantParts.ForEach(part => + { + if (partObj.name == part.partName) + { + ToptextMeshProUGUI.text = (title += part.partName); + ContentTextMeshProUGUI.text = part.partIntro; + return; + } + }); + } + }); + } + + protected override void Awake() + { + base.Awake(); + } + public override void ShowMe() + { + base.ShowMe(); + } + public override void HideMe() + { + base.HideMe(); + } + protected override void OnClick(string btnName) + { + switch (btnName) + { + case "returnBtn": + GameManager.UIMgr.HidePanel(); + GameManager.UIMgr.HidePanel(); + //LiveSceneManger.Instance.TipBtn.gameObject.SetActive(true); + break; + } + } + +} + diff --git a/Assets/Scripts/Project/UI/UI_Panel/UI_PlantComparisonPanel.cs.meta b/Assets/Scripts/Project/UI/UI_Panel/UI_PlantComparisonPanel.cs.meta new file mode 100644 index 0000000..9198b31 --- /dev/null +++ b/Assets/Scripts/Project/UI/UI_Panel/UI_PlantComparisonPanel.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a3f6b08a228f8d54a9764628dab61c5c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/RawImageScript_SC.cs b/Assets/Scripts/RawImageScript_SC.cs new file mode 100644 index 0000000..ea86c69 --- /dev/null +++ b/Assets/Scripts/RawImageScript_SC.cs @@ -0,0 +1,111 @@ +using HighlightPlus; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.EventSystems; +using UnityEngine.UI; + +public class RawImageScript_SC : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler, IPointerMoveHandler +{ + //正常植株和病株对比面板 + public UI_PlantComparisonPanel rextualPanel; + public RawImage targetRawImage; + + HighlightEffect _highlight = null; + + public void OnPointerEnter(PointerEventData eventData) + { + } + + public void OnPointerMove(PointerEventData eventData) + { + GameObject hoveredObject = eventData.pointerEnter; + RawImage rawImage = this.GetComponent(); + // 步骤1:转换为RawImage局部坐标 + RectTransformUtility.ScreenPointToLocalPointInRectangle( + targetRawImage.rectTransform, + Input.mousePosition, + null, + out Vector2 localPos); + + Vector2 uv = CalculateUV(localPos); + if (uv.x < 0 || uv.x > 1 || uv.y < 0 || uv.y > 1) return; + + Camera renderCamera = null; + int layerMask = 0; + if (hoveredObject.name == "高粱RawImage") + { + Debug.Log("我进高粱了"); + renderCamera = GameObject.Find("Camera_Normal").GetComponent(); + layerMask = 1 << LayerMask.NameToLayer("Split_Normal"); + // 步骤3:生成射线 + } + else if (hoveredObject.name == "玉米RawImage") + { + Debug.Log("我进玉米了"); + renderCamera = GameObject.Find("Camera_Disease").GetComponent(); + layerMask = 1 << LayerMask.NameToLayer("Split_Disease"); + } + else + { + renderCamera = Camera.main; + layerMask = 1 << LayerMask.NameToLayer("Default"); + } + Ray ray = renderCamera.ViewportPointToRay(uv); + if (Physics.Raycast(ray, out RaycastHit hit, + renderCamera.farClipPlane, + layerMask)) + { + Debug.Log($"选中物体:{hit.collider.name}", hit.collider.gameObject); + if (_highlight != null) + { + _highlight.SetHighlighted(false); + _highlight = null; + } + _highlight = hit.collider.gameObject.GetComponent(); + if (_highlight != null) + { + _highlight.SetHighlighted(true); + rextualPanel.showPlantPartOnRawImage(hit.collider.gameObject); + } + } + else + { + if (_highlight != null) + { + _highlight.SetHighlighted(false); + _highlight = null; + } + } + } + + public void OnPointerExit(PointerEventData eventData) + { + GameObject hoveredObject = eventData.pointerEnter; + if (hoveredObject.name == "正常高粱") + { + Debug.Log("我退出正常了"); + } + else if (hoveredObject.name == "病株") + { + Debug.Log("我退出病株了"); + } + } + + private Vector2 CalculateUV(Vector2 localPos) + { + Rect rect = targetRawImage.rectTransform.rect; + + // 处理不同锚点模式 + Vector2 pivot = targetRawImage.rectTransform.pivot; + Vector2 offset = new Vector2( + localPos.x + rect.width * pivot.x, + localPos.y + rect.height * pivot.y + ); + + return new Vector2( + offset.x / rect.width, + offset.y / rect.height + ); + } +} diff --git a/Assets/Scripts/RawImageScript_SC.cs.meta b/Assets/Scripts/RawImageScript_SC.cs.meta new file mode 100644 index 0000000..d2bcb41 --- /dev/null +++ b/Assets/Scripts/RawImageScript_SC.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 01b62ba21085e1b4d9bb07e1113f23af +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: