Files
Gen_Hack-and-Slash-Roguelit…/Client/Assets/Scripts/Entity/Outline.cs

45 lines
1.3 KiB
C#

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);
}
/// <summary>
/// 获取指定对象及其所有子对象组成的图像的大小。
/// </summary>
/// <returns>
/// 返回一个 Vector3 对象,表示对象在世界空间中的总大小(宽度、高度、深度)。
/// 如果没有找到任何渲染器,则返回 (-1, -1, -1) 表示无效大小。
/// </returns>
public Vector3 GetSize()
{
var renderers = body.GetComponentsInChildren<Renderer>();
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;
}
}
}