using UnityEngine; /// /// 挂在每个 ping 对象上。带蓝色闪烁描边,点击后显示对应 chanrao 并隐藏自己。 /// 从 ping.004 开始作为第一个(reverse order)。 /// public class PingClickHandler : MonoBehaviour { public GameObject chanraoObject; public GameObject nextPing; private MeshRenderer _meshRenderer; void Start() { _meshRenderer = GetComponent(); if (_meshRenderer == null) _meshRenderer = GetComponentInChildren(); StartCoroutine(BlinkOutline()); } void OnEnable() { _meshRenderer = GetComponent(); if (_meshRenderer == null) _meshRenderer = GetComponentInChildren(); if (_meshRenderer != null) _meshRenderer.enabled = true; StopAllCoroutines(); StartCoroutine(BlinkOutline()); } System.Collections.IEnumerator BlinkOutline() { while (true) { if (_meshRenderer != null) _meshRenderer.enabled = !_meshRenderer.enabled; yield return new WaitForSeconds(0.4f); } } void OnMouseDown() { Debug.Log($"[PingClick] {name} 被点击"); if (chanraoObject != null) { chanraoObject.SetActive(true); Debug.Log($"[PingClick] {chanraoObject.name} 已显示"); } StopAllCoroutines(); if (_meshRenderer != null) _meshRenderer.enabled = false; gameObject.SetActive(false); if (nextPing != null) { nextPing.SetActive(true); Debug.Log($"[PingClick] {name} → {nextPing.name} 已激活"); } } }