Unity Visual Effect : Play ()는 효과가 없습니다.

Sep 11 2020

나는 첫 시각 효과를 만들고 우주선이 날 때 효과를 낸다. 그래서 배가 실제로 움직일 때만 플레이하고 싶습니다. 나는 그것이 쉽다고 생각하고 Play ()를 호출하면 재생됩니다. Stop () 재생하면 중지됩니다. 하지만 플레이를 부르면 아무 일도 일어나지 않습니다.

public void Update()
{
    _ship.Rotate(Input.GetAxis("Horizontal"));

    var move = Input.GetAxis("Vertical");
    _ship.Move(move);
    if (move > 0)
    {
        FlyEffect.Play();
        FlyEffect.SetVector3("Velocity", new Vector3(0, -_ship.Speed * move, 0));
    }
    else
    {
        FlyEffect.Stop();
    }
}

초기 이벤트 이름 OnPlay를 입력하면 정상적으로 재생됩니다. 하지만 대본에는 아무것도 ... 내가 여기서 뭘 놓치고 있니?

답변

2 Zechy Sep 11 2020 at 00:30

좋아 ... 처음에는에 대한 내부 속성이있을 것으로 예상 VisualEffect했는데,이 속성은 재생 중인지 여부를 알려줍니다.하지만 그런 식으로 아무것도 찾지 못했습니다. 그래서 저는 그다지 큰 문제가 아니라고 생각했습니다. 그냥 플레이라고 부르면 ...

하지만 분명히 ... @DMGregory가 제안했듯이 Play ()를 한 번 호출하고 재생중인 경우 상태를 유지하기 위해 사용자 지정 변수를 추가했습니다.

public void Update()
{
    _ship.Rotate(Input.GetAxis("Horizontal"));

    var move = Input.GetAxis("Vertical");
    _ship.Move(move);
    if (move > 0)
    {
        if (!_isPlaying)
        {
            FlyEffect.Play();
            _isPlaying = true;
        }
        FlyEffect.SetVector3("Velocity", new Vector3(0, -_ship.Speed * move, 0));
    }
    else
    {
        if (_isPlaying)
        {
            FlyEffect.Stop();
            _isPlaying = false;
        }
    }
}