
using문을 작성한다
coin(아이템) 획득되면 > 원샷 사운드 재생 메서드
private void OnTriggerEnter2D()
{
if (!collected)
{
collectParticle.Play();
CollectCoin();
}
}
private void CollectCoin()
{
collected = true;
visual.gameObject.SetActive(false);
emitter.Stop();
AudioManager.instance.PlayOneShot(FMODEvents.instance.coinCollected, this.transform.position);
GameEventsManager.instance.CoinCollected();
}
이벤트 참조

별도의 FMODEvent 스크립트 만들기
프로젝트가 커질 경우 아래의 방식으로 작업하는 편이 좋다.

Coin 스크립트 수정 방법


완성된 코드
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using FMODUnity;
[RequireComponent(typeof(StudioEventEmitter))]
public class Coin : MonoBehaviour
{
//[SerializeField] private EventReference coinCollectedSound;
private SpriteRenderer visual;
private ParticleSystem collectParticle;
private bool collected = false;
private StudioEventEmitter emitter;
private void Awake()
{
visual = this.GetComponentInChildren<SpriteRenderer>();
collectParticle = this.GetComponentInChildren<ParticleSystem>();
collectParticle.Stop();
}
private void Start()
{
emitter = AudioManager.instance.InitializeEventEmitter(FMODEvents.instance.coinIdle, this.gameObject);
emitter.Play();
}
private void OnTriggerEnter2D()
{
if (!collected)
{
collectParticle.Play();
CollectCoin();
}
}
private void CollectCoin()
{
collected = true;
visual.gameObject.SetActive(false);
emitter.Stop();
//AudioManager.instance.PlayOneShot(coinCollectedSound, this.transform.position);
AudioManager.instance.PlayOneShot(FMODEvents.instance.coinCollected, this.transform.position);
GameEventsManager.instance.CoinCollected();
}
}
FMODEvent를 한 데 모아서 관리
ㄴ한 곳에서 모든 이벤트 참조를 볼 수 있음
ㄴ다른 스크립트의 코드도 더 깔끔해짐
'Game Lab' 카테고리의 다른 글
| [Week14] 캐릭터, 맵, 프롭 만들기 (0) | 2026.06.11 |
|---|---|
| [Week13] 캐릭터 디자인 (0) | 2026.06.10 |
| [Week13] 엘레베이터 + UI SFX 제작 (0) | 2026.06.08 |
| [FMOD Studio]Bank (0) | 2026.06.06 |
| [FMOD Studio]Instruments/Logic tracks/Parameter (0) | 2026.06.05 |