【问题标题】:Unity, Visual Effects Graph - how can I programatically play + stop an effect?Unity,视觉效果图 - 我如何以编程方式播放+停止效果?
【发布时间】:2018-12-28 23:32:52
【问题描述】:

我想使用Visual Effect Graph 进行粒子爆炸。我正在尝试以编程方式激活和停止这种爆炸。

我首先创建一个Particles prefab 对象,并将Visual Effect Graph 对象附加到它:

然后我将spawn rate 设为exposed parameter。因此,当爆炸激活时,它将将此参数设置为 100。要停止爆炸,生成速率将设置为 0:

现在这个参数在粒子预制中是可见的:

然后我实例化 Particles 预制件:

var effect = Instantiate(particlesPrefab, position), Quaternion.identity);

粒子效果出现在屏幕上,但问题是我找不到spawn rate属性。

如何以编程方式更改此属性的值?

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:
    1. ParticlesGameObject获取VisualEffect

      // In a MonoBehaviour attached to the Particles GameObject
      
      using UnityEngine.Experimental.VFX;
      
      ...
      
      // As a field in the MonoBehaviour
      public VisualEffect myEffect;
      
      ... 
      
      myEffect = GetComponent<VisualEffect>();
      
    2. 使用SetInt 设置被称为"spawn rate" 的公开整数:

      // As class field
      
      public static readonly string SPAWN_RATE_NAME = "spawn rate";
      
      // Wherever you want to stop explosion
      
      myEffect.SetInt(SPAWN_RATE_NAME, 0);
      
      // Wherever you want to start explosion
      
      myEffect.SetInt(SPAWN_RATE_NAME, 100);
      

    【讨论】:

    • Unity 似乎无法识别 VisualEffect 类型。我需要包含一个库吗? (版本:2018.3.0f2)
    • 您必须包含using UnityEngine.Experimental.VFX; 才能引用VisualEffect 类。
    • 按照上述说明:我得到一个错误:Value of name 'spawn rate' was not found - UnityEngine.Experimental.VFX.VisualEffect:SetInt(String, Int32)
    • 参数还是int,叫spawn rate吗?另外,游戏对象上是否只有一个VisualEffect
    • 是的,正如我在原帖中描述的那样。
    猜你喜欢
    • 2020-03-22
    • 1970-01-01
    • 1970-01-01
    • 2014-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-04
    相关资源
    最近更新 更多