using UnityEngine; namespace Entity { public class Outline:MonoBehaviour { public GameObject body; public SpriteRenderer outlineRenderer; public void Show() { var size = GetSize(); outlineRenderer.gameObject.SetActive(true); outlineRenderer.size = size; } public void Hide() { outlineRenderer.gameObject.SetActive(false); } /// /// 获取指定对象及其所有子对象组成的图像的大小。 /// /// /// 返回一个 Vector3 对象,表示对象在世界空间中的总大小(宽度、高度、深度)。 /// 如果没有找到任何渲染器,则返回 (-1, -1, -1) 表示无效大小。 /// public Vector3 GetSize() { var renderers = body.GetComponentsInChildren(); if (renderers.Length == 0) { return new(-1,-1); } var totalBounds = renderers[0].bounds; for (var i = 1; i < renderers.Length; i++) { totalBounds.Encapsulate(renderers[i].bounds); } var size = totalBounds.size; return size; } } }