VirtualFramework/Assets/Scripts/Item/DrawController.cs
2025-03-18 10:34:06 +08:00

67 lines
1.5 KiB
C#

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Rendering.Universal;
public class DrawController : MonoBehaviour
{
public static DrawController instance;
[HideInInspector]
public Camera self;
public LineRenderer lineRenderer;
Stack<LineRenderer> lines = new Stack<LineRenderer>();
private void Awake()
{
instance = this;
self = GetComponent<Camera>();
DontDestroyOnLoad(this);
if (lineRenderer.material == null)
{
// ʹÓÃÊÊºÏ LineRenderer µÄ×ÅÉ«Æ÷
lineRenderer.material = new Material(Shader.Find("Sprites/Default"));
}
}
private void Start()
{
gameObject.SetActive(false);
}
public LineRenderer LineRendererFactory()
{
var line = GameObject.Instantiate(lineRenderer, transform);
lines.Push(line);
return line;
}
public void Remove()
{
if (lines.Count > 0)
{
var line = lines.Pop();
line.positionCount = 0;
GameObject.Destroy(line.gameObject);
}
}
public void Clear()
{
while (lines.Count > 0)
{
Remove();
}
}
public static void SetupCameraStack(Camera subCamera, Camera baseCamera)
{
UniversalAdditionalCameraData additionalCameraData = baseCamera.GetUniversalAdditionalCameraData();
if (!additionalCameraData.cameraStack.Contains(subCamera))
{
additionalCameraData.cameraStack.Add(subCamera);
}
}
}