using UnityEngine; using System.Collections; using System.Collections.Generic; using Chronos; /// /// 英雄残影 /// public class HeroBlur : MonoBehaviour { public float interval = 0.1f; public float lifeCycle = 1.0f; float lastCombinedTime = 0.0f; /// /// 网格过滤组件 /// MeshFilter[] meshFilters = null; /// /// 网格渲染组件 /// MeshRenderer[] meshRenderers = null; /// /// skinned网格渲染组件 /// SkinnedMeshRenderer[] skinnedMeshRenderers = null; public List objs = new List(); public float scale = 2; public Color col = new Color(61,215,255,0); public float width; /// /// 材质 /// public Material mat; /// /// 时钟组件 /// public Timeline time { get { return GetComponent(); } } // Use this for initialization void Start () { //skinnedMeshRenderers = gameObject.GetComponentsInChildren();//获取网格渲染组件 } /// /// 禁用 /// void OnDisable() { if(objs != null) { foreach (GameObject go in objs) { Destroy(go);//销毁对象 } objs.Clear(); objs = null; } } /// /// 启用 /// public void OnEnable() { if(mat == null) { mat = Resources.Load("Material/HeroBlur") as Material; } if (meshFilters == null) { meshFilters = gameObject.GetComponentsInChildren();//获取网格过滤组件 } if (skinnedMeshRenderers == null) { skinnedMeshRenderers = gameObject.GetComponentsInChildren();//获取网格渲染组件 } 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.mesh = mesh;//设置网格 MeshRenderer meshRenderer = go.AddComponent();//给残影对象添加网格渲染组件 meshRenderer.material = mat;//设置材质 //初始化褪色在对象 InitFadeInObj(go, skinnedMeshRenderers[i].transform.position , skinnedMeshRenderers[i].transform.rotation , lifeCycle); } } // Update is called once per frame void Update () { } /// /// 初始化褪色在对象 /// /// 独享 /// 位置 /// 旋转 /// 生命周期 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();//添加褪色进入组件 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);//添加到对象集合 } } }