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 lines = new Stack(); private void Awake() { instance = this; self = GetComponent(); 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); } } }