fix: ChanraoTuibu补ping边框重亮+Shose OnEnable替换Start+描边加粗

This commit is contained in:
yangbear
2026-07-06 04:43:49 +08:00
parent 3c76ce47df
commit 96f6d22658
2 changed files with 9 additions and 15 deletions
@@ -2,18 +2,15 @@ using UnityEngine;
public class ChanraoTuibuHandler : MonoBehaviour
{
public GameObject nextObject;
private MeshRenderer _modelRenderer, _outlineMesh;
private MeshRenderer _outlineMesh;
void OnEnable()
{
_modelRenderer = GetComponent<MeshRenderer>();
if (_modelRenderer == null) _modelRenderer = GetComponentInChildren<MeshRenderer>();
foreach (var r in GetComponentsInChildren<Renderer>(true)) r.enabled = false;
if (GetComponent<Collider>() == null) gameObject.AddComponent<SphereCollider>().radius = 0.5f;
CreateOutlineMesh();
StopAllCoroutines();
StartCoroutine(BlinkOutline());
Debug.Log($"[ChanraoTuibu] OnEnable outline={_outlineMesh!=null}");
}
void CreateOutlineMesh()
@@ -21,11 +18,13 @@ public class ChanraoTuibuHandler : MonoBehaviour
if (_outlineMesh != null) return;
var mf = GetComponent<MeshFilter>();
if (mf == null) mf = GetComponentInChildren<MeshFilter>();
if (mf == null || mf.sharedMesh == null) return;
var mat = new Material(Shader.Find("Custom/OutlineUnlit"));
if (mf == null || mf.sharedMesh == null) { Debug.LogWarning("[ChanraoTuibu] 无MeshFilter"); return; }
var shader = Shader.Find("Custom/OutlineUnlit");
if (shader == null) { Debug.LogWarning("[ChanraoTuibu] Shader缺失"); return; }
var mat = new Material(shader);
mat.SetColor("_OutlineColor", new Color(0.2f, 0.5f, 1f, 1f));
mat.SetColor("_MainColor", new Color(0, 0, 0, 0));
mat.SetFloat("_OutlineWidth", 0.1f);
mat.SetFloat("_OutlineWidth", 0.12f);
var go = new GameObject("Outline");
go.transform.SetParent(transform, false);
go.AddComponent<MeshFilter>().sharedMesh = mf.sharedMesh;
@@ -37,18 +36,13 @@ public class ChanraoTuibuHandler : MonoBehaviour
{
if (_outlineMesh != null) _outlineMesh.enabled = true;
yield return new WaitForSeconds(0.4f);
while (true)
{
if (_outlineMesh != null) _outlineMesh.enabled = !_outlineMesh.enabled;
yield return new WaitForSeconds(0.4f);
}
while (true) { if (_outlineMesh != null) _outlineMesh.enabled = !_outlineMesh.enabled; yield return new WaitForSeconds(0.4f); }
}
void OnMouseDown()
{
Debug.Log($"[ChanraoTuibu] {name} 被点击");
StopAllCoroutines();
if (_modelRenderer != null) _modelRenderer.enabled = true;
if (_outlineMesh != null) _outlineMesh.enabled = false;
// 亮起所有 ping 的边框进入第二轮
@@ -8,7 +8,7 @@ public class ShoseClickHandler : MonoBehaviour
private Bounds _meshBounds;
private bool _clicked;
void Start()
void OnEnable()
{
// 用模型的精确 Bounds 设 BoxCollider
var mf = GetComponent<MeshFilter>();