少年修仙传客户端代码仓库
hch
2025-03-03 28785d6ddf9c08e49527ede9405c7b6c93c6ed32
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
using UnityEngine;
using System.Collections.Generic;
 
public class XRayShadow
{
    private static Stack<XRayShadow> m_ShadowPool = new Stack<XRayShadow>();
 
    public static XRayShadowController Request(Renderer requester, float lastTime = 1)
    {
        if (requester == null)
        {
            return null;
        }
 
        SkinnedMeshRenderer _smr = requester.GetComponent<SkinnedMeshRenderer>();
 
        if (_smr == null)
        {
            return null;
        }
 
        Mesh _mesh = new Mesh();
        _smr.BakeMesh(_mesh);
 
        GameObject _xayShadow = new GameObject();
        MeshFilter _filter = _xayShadow.AddComponent<MeshFilter>();
        _filter.mesh = _mesh;
 
        MeshRenderer _renderer = _xayShadow.AddComponent<MeshRenderer>();
        _renderer.material = BuiltInLoader.LoadMaterial("XRay");
 
        _xayShadow.transform.localScale = requester.transform.localScale*1.2f;
        _xayShadow.transform.position = requester.transform.position;
        _xayShadow.transform.rotation = requester.transform.rotation;
        _xayShadow.layer = LayerUtility.BattleEffectLow;
 
        XRayShadowController _controller = _xayShadow.AddComponent<XRayShadowController>();
        _controller.duration = lastTime;
        _controller.deleteTime = Time.time + _controller.duration;
        _controller.meshRenderer = _renderer;
        _controller.SetColor(UIHelper.GetUIColor(2, false));
        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);
        }
    }
}