Unity动态改变粒子的颜色

最近项目有需要动态改变粒子颜色的需求,就记一下吧。

主要区别一下:

直接看代码,挂到粒子身上就可以了:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;



/*
 * 
 *  Writer:June
 * 
 *  Date: 2019.10.30
 * 
 *  Function:代码动态修改粒子颜色
 * 
 *  Remarks:颜色随机
 *          第一种方式是过时的,但是也还能用
 *          如果用新的方式,不能像第一种方式那样直接赋值。
 * 
 */


/// <summary>
/// 设置方式枚举
/// </summary>
public enum SetType
{
    Old,
    New
}


public class ChangeParticleSystemData : MonoBehaviour
{
    /// <summary>
    /// 自身粒子组件
    /// </summary>
    ParticleSystem _particleSystem;
    /// <summary>
    /// 计时器
    /// </summary>
    private float _timer;
    /// <summary>
    /// 变化时间
    /// </summary>
    public float _changeTime = 1f;
    /// <summary>
    /// 枚举
    /// </summary>
    public SetType _setType;



    private void Start()
    {
        _timer = 0;
        _particleSystem = GetComponent<ParticleSystem>();
    }

    private void Update()
    {
        _timer += Time.deltaTime;
        switch (_setType)
        {
            case SetType.Old:
                if (_timer >= _changeTime)
                {
                    _timer = 0;
                    _particleSystem.startColor = new Color(Random.Range(0, 256) / 255f, Random.Range(0, 256) / 255f, Random.Range(0, 256) / 255f, Random.Range(0.1f, 1f));
                }
                break;
            case SetType.New:
                if (_timer >= _changeTime)
                {
                    _timer = 0;
                    ParticleSystem.MainModule mainModule = _particleSystem.main;
                    mainModule.startColor = new Color(Random.Range(0, 256) / 255f, Random.Range(0, 256) / 255f, Random.Range(0, 256) / 255f, Random.Range(0.1f, 1f));
                }
                break;
            default:
                break;
        }
    }
}

 

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 在Unity中,设置粒子遮罩需要通过一些步骤来完成。下面是具体的设置过程: 1. 首先,确保你已经将需要遮罩的对象和粒子系统导入到Unity中。 2. 在需要遮罩的对象上,添加一个新的材质。可以在Inspector窗口点击“Add Material”按钮来创建一个新材质。 3. 打开该材质,并选择“Shader”选项卡。在这里,你需要选择一个支持遮罩的shader。常见的可选择的遮罩着色器有“Transparent/VertexLit”和“Transparent/Cutout”。 4. 在材质中设置遮罩纹理。点击“Albedo”纹理的小圆圈图标,然后选择需要作为遮罩的纹理图片。请注意,遮罩图像应该是一个只有黑白两种颜色的灰度图像,白色部分表示可见部分,黑色部分表示不可见部分。 5. 接下来,在粒子系统的“Renderer”组件中,将材质设置为刚刚创建和设置好的材质。 6. 最后,你可以根据需要调整粒子系统的其他属性,如粒子的大小、数量、速度等。 通过以上步骤,你已经成功设置了粒子遮罩。可以在场景中播放并查看效果。如果需要进一步调整遮罩效果,可以对遮罩纹理进行修改,或者调整其他相关属性。 ### 回答2: Unity中可以使用粒子遮罩来实现粒子效果的遮挡效果。下面是设置粒子遮罩的步骤: 1. 首先,在Unity的层级管理器中创建一个空物体,作为粒子遮罩的父物体。 2. 在父物体下创建一个掩罩平面,可以使用3D对象中的平面或者是在父物体下创建一个Quad对象,并调整其大小和位置。 3. 将遮罩平面的材质设置为Transparent/Diffuse(透明/漫反射)或者其他适合的材质。 4. 接下来,在父物体上添加一个新的Layer,用于设置粒子遮罩层。可以点击菜单栏上的"Edit",然后选择"Project Settings",再选择"Tags and Layers"来添加新的Layer。 5. 选中父物体,在Inspector面板中找到Layer属性,并选择刚才添加的Layer。 6. 在粒子系统的Renderer组件中找到Sorting Layers属性,并选择与父物体相同的Layer。 7. 然后,将所有需要使用粒子遮罩的粒子系统的Material属性设置为在步骤3中创建的遮罩平面的材质。 8. 最后,将所有需要显示在粒子遮罩之后的其他物体的Layer设置为与父物体不同的Layer。可以在Inspector面板中找到每个物体的Layer属性,并选择一个不同的Layer。 通过以上步骤,就可以实现Unity粒子系统的遮罩效果。可以根据需求调整遮罩平面的透明度、粒子系统的位置、大小和形状等,来实现不同的遮罩效果。 ### 回答3: 设置粒子遮罩可以通过以下步骤进行: 1. 打开Unity并进入项目场景。 2. 创建一个粒子系统。你可以在层次结构中右键单击并选择“粒子系统”来创建一个新的粒子系统。 3. 选中你的粒子系统,然后在Inspector面板中找到“Renderer”部分。 4. 在“Renderer”部分下的“Material”属性中,选择一个适合的粒子材质。这个材质可以是自定义的,也可以是Unity中预设的。 5. 在该材质的Inspector面板中,查找“Rendering Mode”设置,将其设置为“Fade”。这将允许粒子的透明度根据深度进行混合。 6. 在同一面板上,找到“Albedo”属性。单击右侧的小圆圈,选择一个贴图作为粒子材质的遮罩。这个遮罩贴图可以是具有透明度通道的图片。 7. 调整“Tiling”参数以根据需要调整粒子材质的纹理平铺。 8. 根据需要,您还可以在Inspector面板的其他部分进行一些自定义设置,例如粒子的持续时间、发射器的形状等。 通过以上步骤,你就可以成功设置粒子遮罩。请记得在设置遮罩贴图时,确保其具有透明度通道,以便正确地显示遮罩效果。另外,根据需要,你还可以对粒子系统的其他属性进行调整,以达到更好的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值