fix: ChanraoTuibu补ping边框重亮+Shose OnEnable替换Start+描边加粗
This commit is contained in:
@@ -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>();
|
||||
|
||||
Reference in New Issue
Block a user