为什么粒子不会显示在UICanvas上面?

文章讲述了在Unity中遇到粒子系统在Canvas下创建不显示的问题,解决办法是将Canvas的渲染模式改为ScreenSpace-Camera,并使用UIcamera确保UI在粒子系统之上。还介绍了如何设置粒子系统的最大数量和计数器功能。
摘要由CSDN通过智能技术生成

ParticleSystem - Unity 脚本 API

相似问题:粒子在Canvas下创建不会在Game视图在显示,粒子特效在scene视图显示,game视图中不显示。直接在场景中创建粒子可以正常显示,在Canvas下创建粒子就会出现该情况,请问是什么原因导致?

【Unity】如何让粒子系统显示在UI上呢?-CSDN博客

首先Canvas要将渲染模式改为Scree Space - Camera,然后把UI专用相机挂上去。

在这里插入图片描述

这是因为相机设置的问题。通常我们会单独为UI放置一个UIcamera,这个相机是专门用来渲染UI的。相应的,MainCamera应当勾掉UI层级。

UIcamera会比MainCamera更”靠前“一点,这样才能使得在运行的过程中,保证UI界面浮在场景的前方。

当需要把粒子效果和UI结合在一起的时候,也就是需要让粒子和UI结合在一起显示时,应当把粒子所在的gameObject设定为UI层级。不然会出现只看得见UI,却看不见粒子的情况。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

最大粒子数量
在这里插入图片描述

public UnityEngine.UI.Image circularImage;
public Text countdownText;
public GameObject FxTrails;
public float speed;
private float currentAmout = 100;

void Update()
{
    ringCountdown();
}

float b = 10f;
public void ringCountdown()
{
    FxTrails.GetComponent<ParticleSystem>().Play();
    float a = Mathf.Floor(currentAmout);

    b -= Time.deltaTime;
    countdownText.text = Convert.ToString(Mathf.Ceil(b));
    if(b < 0f) 
    { 
        countdownText.enabled = false;
        FxTrails.GetComponent<ParticleSystem>().Stop();
    }

    currentAmout -= speed;
    if (currentAmout < 0) currentAmout = 0;
    circularImage.GetComponent<UnityEngine.UI.Image>().
fillAmount = currentAmout / 100.0f;
}
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值