123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- using UnityEngine;
- using System.Collections;
- using System.Collections.Generic;
- using Chronos;
- /// <summary>
- /// 英雄残影
- /// </summary>
- public class HeroBlur : MonoBehaviour
- {
- public float interval = 0.1f;
- public float lifeCycle = 1.0f;
- float lastCombinedTime = 0.0f;
- /// <summary>
- /// 网格过滤组件
- /// </summary>
- MeshFilter[] meshFilters = null;
- /// <summary>
- /// 网格渲染组件
- /// </summary>
- MeshRenderer[] meshRenderers = null;
- /// <summary>
- /// skinned网格渲染组件
- /// </summary>
- SkinnedMeshRenderer[] skinnedMeshRenderers = null;
- public List<GameObject> objs = new List<GameObject>();
- public float scale = 2;
- public Color col = new Color(61,215,255,0);
- public float width;
- /// <summary>
- /// 材质
- /// </summary>
- public Material mat;
- /// <summary>
- /// 时钟组件
- /// </summary>
- public Timeline time
- {
- get
- {
- return GetComponent<Timeline>();
- }
- }
- // Use this for initialization
- void Start ()
- {
-
- //skinnedMeshRenderers = gameObject.GetComponentsInChildren<SkinnedMeshRenderer>();//获取网格渲染组件
-
- }
- /// <summary>
- /// 禁用
- /// </summary>
- void OnDisable()
- {
- if(objs != null)
- {
- foreach (GameObject go in objs)
- {
- Destroy(go);//销毁对象
- }
- objs.Clear();
- objs = null;
- }
- }
- /// <summary>
- /// 启用
- /// </summary>
- public void OnEnable()
- {
- if(mat == null)
- {
- mat = Resources.Load("Material/HeroBlur") as Material;
- }
- if (meshFilters == null)
- {
- meshFilters = gameObject.GetComponentsInChildren<MeshFilter>();//获取网格过滤组件
- }
- if (skinnedMeshRenderers == null)
- {
- skinnedMeshRenderers = gameObject.GetComponentsInChildren<SkinnedMeshRenderer>();//获取网格渲染组件
- }
- for (int i = 0; skinnedMeshRenderers != null && i < skinnedMeshRenderers.Length; ++i)
- {
- Mesh mesh = new Mesh();
- skinnedMeshRenderers[i].BakeMesh(mesh);//烘焙网格
- GameObject go = new GameObject();//新建残影对象
- //go.hideFlags = HideFlags.HideAndDontSave;//物体隐藏不保存
- MeshFilter meshfilter = go.AddComponent<MeshFilter>();//添加网格过滤组件
- meshfilter.mesh = mesh;//设置网格
-
- MeshRenderer meshRenderer = go.AddComponent<MeshRenderer>();//给残影对象添加网格渲染组件
- meshRenderer.material = mat;//设置材质
- //初始化褪色在对象
- InitFadeInObj(go, skinnedMeshRenderers[i].transform.position
- , skinnedMeshRenderers[i].transform.rotation
- , lifeCycle);
- }
- }
- // Update is called once per frame
- void Update ()
- {
-
- }
- /// <summary>
- /// 初始化褪色在对象
- /// </summary>
- /// <param name="go">独享</param>
- /// <param name="position">位置</param>
- /// <param name="rotation">旋转</param>
- /// <param name="lifeCycle">生命周期</param>
- private void InitFadeInObj(GameObject go, Vector3 position, Quaternion rotation, float lifeCycle)
- {
- if(go)
- {
- //go.hideFlags = HideFlags.HideAndDontSave;//隐藏不保存
- go.transform.position = position;
- go.transform.rotation = rotation;
- FadeIn fi = go.AddComponent<FadeIn>();//添加褪色进入组件
- fi.time = time;
- fi.lifeCycle = lifeCycle;//设置生命周期
- fi.scale = scale;//设置透明度
- //fi.color = col;//设置颜色
- // Debug.Log("col1111..... " + FadeIn.color.r + " " + FadeIn.color.g + " " + FadeIn.color.b + " width " + FadeIn.width);
- if (objs != null)
- objs.Add(go);//添加到对象集合
- }
- }
- }
|