Unity修改Particles Render Material(Unity3D开发之二十三)

来源:互联网 发布:淘宝美的官方旗舰店 编辑:程序博客网 时间:2024/06/01 23:57

猴子原创,欢迎转载。转载请注明: 转载自Cocos2Der-CSDN,谢谢!
原文地址: http://blog.csdn.net/cocos2der/article/details/48372999

美术在制作粒子特效的时候需要能修改让粒子在某些时刻闪烁,看了下发现没有设置能实现,所以加个脚本给美术使用。

原理就是让美术能控制Render修改Image的Color

using UnityEngine;using System.Collections;public class ParticleBlink : MonoBehaviour {    public float startBlinkTime = 0.0f;    public float blinkFrameTime = 0.02f;    public Color[] blinkColor = new Color[]{        new Color(255.0f, 255.0f, 255.0f, 0.0f),        new Color(255.0f, 255.0f, 255.0f, 255.0f)    };    private Material m_Material;    private float m_BlinkLifeTime = 0.0f;    private bool m_IsStartBlink = false;    private int m_BlinkColorIndex = 0;    // Use this for initialization    void Start () {        m_Material = GetComponent<Renderer>().material;        m_BlinkLifeTime = 0;        if (startBlinkTime > 0) {            m_IsStartBlink = false;            Invoke ("StartBlink", startBlinkTime);        } else {            m_IsStartBlink = true;        }    }    // Update is called once per frame    void Update () {        if (m_IsStartBlink) {            UpdateColor ();        }    }    void UpdateColor()    {        if (blinkColor == null || blinkColor.Length <= 0) {            return;        }        m_BlinkLifeTime += Time.deltaTime;        if (m_BlinkLifeTime >= blinkFrameTime) {            m_BlinkLifeTime = 0;            // Render Material使用不同的Shader,这里的Color变量名需要对应修改            m_Material.SetColor ("_Color", blinkColor[m_BlinkColorIndex]);            m_BlinkColorIndex += 1;            if (m_BlinkColorIndex >= blinkColor.Length) {                m_BlinkColorIndex = 0;            }        }    }    void StartBlink()    {        m_IsStartBlink = true;    }}

这里写图片描述

  1. Start Blink Time:开始切换Color的时间
  2. Blink Frame Time:每一个Color保持的时间
  3. Blink Color:待切换的Color数组
1 0
原创粉丝点击