From e209f866b9a5cba5942add5fa7434c69b9c4980e Mon Sep 17 00:00:00 2001 From: yangbear Date: Sat, 11 Jul 2026 04:59:33 +0800 Subject: [PATCH] Fix Point2 visibility by reusing the original TouchPositionHandler renderer logic --- .../Scripts/Interaction/Point2ClickHandler.cs | 54 ++++++++++--------- 1 file changed, 28 insertions(+), 26 deletions(-) diff --git a/Assets/Scripts/Interaction/Point2ClickHandler.cs b/Assets/Scripts/Interaction/Point2ClickHandler.cs index d6e6e73..8d8f84c 100644 --- a/Assets/Scripts/Interaction/Point2ClickHandler.cs +++ b/Assets/Scripts/Interaction/Point2ClickHandler.cs @@ -3,45 +3,47 @@ using UnityEngine; public class Point2ClickHandler : MonoBehaviour { public GameObject nextObject; // This will be Shose - private MeshRenderer _outlineMesh; + private bool _clicked; public bool CanBeClicked() { return !_clicked; } + private MeshRenderer _meshRenderer; + void OnEnable() { if (GetComponent() == null) gameObject.AddComponent().radius = 0.5f; - foreach (var r in GetComponentsInChildren(true)) r.enabled = false; - CreateOutlineMesh(); + + _meshRenderer = GetComponent(); + if (_meshRenderer != null) + { + _meshRenderer.enabled = true; + var mat = _meshRenderer.material; + if (mat != null && mat.HasProperty("_MainColor")) + { + var c = mat.GetColor("_MainColor"); + c.a = 0f; + mat.SetColor("_MainColor", c); + if (mat.HasProperty("_OutlineWidth")) + { + mat.SetFloat("_OutlineWidth", OutlineConfig.Width); + } + } + } + _clicked = false; StopAllCoroutines(); StartCoroutine(BlinkOutline()); } - void CreateOutlineMesh() - { - if (_outlineMesh != null) return; - var mf = GetComponent(); - if (mf == null) mf = GetComponentInChildren(); - if (mf == null || mf.sharedMesh == null) return; - var shader = Shader.Find("Custom/OutlineUnlit"); - if (shader == null) 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", OutlineConfig.Width); - var go = new GameObject("Outline"); - go.transform.SetParent(transform, false); - go.AddComponent().sharedMesh = mf.sharedMesh; - _outlineMesh = go.AddComponent(); - _outlineMesh.material = mat; - } - System.Collections.IEnumerator BlinkOutline() { - 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 (_meshRenderer != null) _meshRenderer.enabled = !_meshRenderer.enabled; + yield return new WaitForSeconds(0.4f); + } } void OnMouseDown() @@ -58,7 +60,7 @@ public class Point2ClickHandler : MonoBehaviour ActionHistory.Push(ActionHistory.ActionType.Point2, this); StopAllCoroutines(); - if (_outlineMesh != null) _outlineMesh.enabled = false; + if (_meshRenderer != null) _meshRenderer.enabled = false; var woman = GameObject.Find("woman"); if (woman != null) @@ -77,7 +79,7 @@ public class Point2ClickHandler : MonoBehaviour public void ResetState() { _clicked = false; - if (_outlineMesh != null) _outlineMesh.enabled = true; + if (_meshRenderer != null) _meshRenderer.enabled = true; if (nextObject != null) nextObject.SetActive(false);