[유니티] 피드백 시스템

오늘은 학교 심화반 수업에서 배운 피드백 시스템에 대해 알아볼것이다.

 

피드백 시스템이란?

피드백 시스템은 한번의 여러가지 스크립트를 동시에 동작시킬 수 있는 시스템이다.

 

 

예를들어 플레이어가 피격을 받았을때 피격 효과, 효과음, 화면 흔들림, 파티클 등을 구현해야 한다.

 

이때, 피격효과, 효과음, 화면 흔들림, 파티클을 생성하는 스크립트를 따로 만들어 놓는다.

 

그리고 피격을 받았을때 앞서 말한 모든 기능들을 동시에 수행시킬 수 있는 시스템이다.

 

 

만드는 방법

코드에서 피드백 시스템을 구현하는 방법이다.

 

Feedback

효과 피드백, 흔들림 피드백 등등 구현할 피드백들에게 상속할 클래스이다.

추상클래스를 이용해  PlayFeedback, StopFeedback 추상 메소드를 만들어준다

public abstract class Feedback : MonoBehaviour
{
    public abstract void PlayFeedback(); //피드백이 실행되었을때
    public abstract void StopFeedback(); //피드백 실행을 멈췄을때

    private void OnDisable() //비활성화 되면 피드백을 멈춰준다.
    {
        StopFeedback();
    }
}

 

PlayFeedback - 말 그대로 실행되었을때 동작할 내용을 적는 곳이다.

StopFeedback - 피드백을 멈출때 동작할 내용을 적는 곳이다.

 

OnDisable은 비활성화가 되었을때 작동하는 함수로 비활성화가 되었을때도 실행이 되면 안되기 때문에

StopFeedback을 해준다.

 

public class TestEffectFeedback : Feedback
{
    [SerializeField] private ParticleSystem _effect;

    public override void PlayFeedback()
    {
        ParticleSystem effect = Instantiate(_effect, transform.position, Quaternion.identity);
    }

    public override void StopFeedback()
    {
        
    }
}

파티클을 재생하는 피드백을 하나 만들어준다.

 

피드백을 상속받고 추상이기 때문에 추상 메소드들을 모두 구현해준다.

 

PlayFeedback에서 파티클을 소환하는 코드를 적어주고 StopFeedback에선 할것이 없기때문에 비워둔다.

 

이런식으로 피드백들을 구현해준다.

 

FeedbackPlayer

Feedback컴포넌트를 모두 찾아 동시에 재생시켜주는 역할을 한다.

 

public class FeedbackPlayer : MonoBehaviour
{
    private List<Feedback> _feedbackToPlay; //피드백들을 담을 리스트

    private void Awake()
    {
        _feedbackToPlay = GetComponents<Feedback>().ToList();
    }

    public void PlayFeedback() //foreach로 리스트에 있는 모든 피드백을 실행시켜준다
    {
        StopFeedback();

        _feedbackToPlay.ForEach(f => f.PlayFeedback());
    }

    public void StopFeedback() //foreach로 리스트에 있는 모든 피드백을 실행을 멈춰준다
    {
        _feedbackToPlay.ForEach(f => f.StopFeedback());
    }
}

피드백들을 담아줄 List를 하나 선언해준다.

 

PlayFeedback에서 List에 있는 모든 피드백들을 PlayFeedback을 실행시켜 동작시켜준다.

StopFeedback에서 List에 있는 모든 피드백들을 StopFeedback을 실행시켜 멈춰준다.

 

실제 사용 예시

이펙트 피드백, 트윈 피드백을 만든 후

T를 눌렀을때 FeedbackPlayer가 실행되도록 하였다.

결과물 : 파티클이 나오면서 동시에 트윈도 재생된다.

'유니티' 카테고리의 다른 글

[유니티] 스킬 트리 만들기  (1) 2025.04.10