Как исправить: «Не создавайте собственные экземпляры модулей, получайте их из экземпляра ParitcleSystem» при попытке l oop ParticleSystem с помощью кода - PullRequest
0 голосов
/ 11 июля 2020

Я пытаюсь запустить / остановить цикл системы частиц с помощью кода, и когда я немного поискал в Google, я обнаружил, что вы можете сделать это следующим образом:

    [Header("Particles")]
    private ParticleSystem.MainModule particleSystemMain;
    private new ParticleSystem particleSystem;
    public GameObject particles;

    private void Start()
    {
        particleSystem = particles.GetComponent<ParticleSystem>();
        particleSystemMain = particleSystem.main;
    }

    public void ActivateParticles()
    {
        particleSystemMain.loop = true;
    }

    public void ParticlesFalse()
    {
        particleSystemMain.loop = false;
    }`

Проблема в том, что я я получаю эту ошибку: NullReferenceException: Do not create your own module instances, get them from a ParticleSystem instance UnityEngine.ParticleSystem+MainModule.set_loop (System.Boolean value)

Я неправильно выполняю часть цикла?

1 Ответ

1 голос
/ 11 июля 2020

Вы не можете изменить переменную l oop в ParticleSystem.MainModule, потому что это структура, измените эту переменную напрямую:

[Header("Particles")]
private new ParticleSystem particleSystem;
public GameObject particles;

private void Start()
{
    particleSystem = particles.GetComponent<ParticleSystem>();
}

public void ActivateParticles()
{
    particleSystem.main.loop = true;
}

public void ParticlesFalse()
{
    particleSystem.main.loop = false;
}
...