using UnityEngine; using System.Collections.Generic; public class XRayShadow { private static Stack m_ShadowPool = new Stack(); public static XRayShadowController Request(Renderer requester, float lastTime = 1) { if (requester == null) { return null; } SkinnedMeshRenderer _smr = requester.GetComponent(); if (_smr == null) { return null; } Mesh _mesh = new Mesh(); _smr.BakeMesh(_mesh); GameObject _xayShadow = new GameObject(); MeshFilter _filter = _xayShadow.AddComponent(); _filter.mesh = _mesh; MeshRenderer _renderer = _xayShadow.AddComponent(); _renderer.material = Resources.Load("Material/XRay"); _xayShadow.transform.localScale = requester.transform.localScale; _xayShadow.transform.position = requester.transform.position; _xayShadow.transform.rotation = requester.transform.rotation; _xayShadow.layer = LayerUtility.BattleEffect; XRayShadowController _controller = _xayShadow.AddComponent(); _controller.duration = lastTime; _controller.deleteTime = Time.time + _controller.duration; _controller.meshRenderer = _renderer; return _controller; } public static void Request(Renderer requester, Color color, float intensity, float lastTime = 1) { XRayShadowController _controller = Request(requester, lastTime); if (_controller) { _controller.SetColor(color); _controller.SetIntensity(intensity); } } }