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);//添加到对象集合
}
}
}