using System.Collections; using System.Collections.Generic; using UnityEngine; public class GuideArrowPath : MonoBehaviour { public LayerMask obstacleMask; public float pathHeight = 0.5f; private LineRenderer lineRenderer; private bool isPathVisible = false; void Awake() { // 从预制体上获取已存在的LineRenderer组件 lineRenderer = GetComponent(); if (lineRenderer == null) { Debug.LogError("LineRenderer组件未找到!请确保预制体上已挂载LineRenderer组件"); return; } // 预制体上已预设LineRenderer属性,这里不再动态设置 // 如果需要在代码中覆盖预制体设置,可以取消注释以下代码 /* lineRenderer.startWidth = 0.1f; lineRenderer.endWidth = 0.1f; lineRenderer.material = new Material(Shader.Find("Sprites/Default")); lineRenderer.startColor = Color.yellow; lineRenderer.endColor = Color.red; */ lineRenderer.positionCount = 0; lineRenderer.enabled = false; // 初始禁用 Debug.Log("GuideArrowPath 初始化完成,LineRenderer: " + (lineRenderer != null)); } /// /// 设置路径 /// public void SetPath(List pathPoints) { if (lineRenderer == null) { Debug.LogError("LineRenderer 未找到!"); return; } if (pathPoints == null || pathPoints.Count < 2) { lineRenderer.positionCount = 0; return; } // 调整路径点高度 for (int i = 0; i < pathPoints.Count; i++) { pathPoints[i] = new Vector3(pathPoints[i].x, pathHeight, pathPoints[i].z); } lineRenderer.positionCount = pathPoints.Count; lineRenderer.SetPositions(pathPoints.ToArray()); Debug.Log("设置路径,点数: " + pathPoints.Count); } /// /// 显示路径 /// public void ShowPath() { if (lineRenderer != null) { lineRenderer.enabled = true; isPathVisible = true; Debug.Log("显示路径,LineRenderer enabled: " + lineRenderer.enabled); } } /// /// 关闭路径 /// public void ClosePath() { if (lineRenderer != null) { lineRenderer.enabled = false; isPathVisible = false; lineRenderer.positionCount = 0; Debug.Log("关闭路径"); } } /// /// 检查路径是否可见 /// public bool IsPathVisible() { return isPathVisible && lineRenderer != null && lineRenderer.enabled; } }