[2025/08/04]TIL

오수호·2025년 8월 4일

TIL

목록 보기
55/60

셰이더(Shader) 잘못 매핑되어있는 걸 한번에 고치기

문제상황

에셋을 임포트했을 때 에셋들이 핑크셋으로 나오는 문제 (셰이더가 잘못 매핑되어있는 문제)

해결방법

  1. window메뉴 클릭

  2. Rendering에서 RenderPipeline Converter선택

  3. Material Upgrade체크 후 Initialize Converters와 Initialize And Convert를 클릭

같은소리가 중첩해서 날때 사인파 증폭에 의해 소리가 너무 커지게 들리는 현상을 수정하기

소리의 파형은 아날로그 => 디지털=> 아날로그로 바뀌어 결과적으로 사인파 형태로 우리귀에 전해진다.

파동은 간섭, 증폭을 할 수 있기 때문에 같은소리가 동시에 재생되면 사용자가 의도했던 볼륨사이즈보다 훨씬 큰 소리가 나게 된다.

우리 게임 ManiMind에서는 같은 소리가 동시에 나는 상황이 존재하는데, 바로 다수기로 동시에 여러 몬스터를 공격했을 때이다. 따라서 이 현상을 수정해주어야 한다.

문제해결방법


   public Dictionary<string, int> NestedDictionary = new();

가장 먼저 오디오 매니저에 새로운 딕셔너리를 추가해준다. 오디오재생에 사용되는 키값형태인 string값을 키로 가지고 값을 int로 가지는 딕셔너리이다.
        if (!NestedDictionary.ContainsKey(clipName))
        {
            NestedDictionary.Add(clipName, 1);
        }
        else
        {
            NestedDictionary[clipName]++;
        }

        if (AudioDictionary != null && AudioDictionary.ContainsKey(clipName) && NestedDictionary[clipName] < 4)
        {

            GameObject sfxPlayer = objectPoolManager.GetObject(sfxPlayerPoolName);
            if (sfxPlayer == null)
            {
                sfxPlayer = Instantiate(sfxAudioSourcePrefab);
            }

            PoolableAudioSource sfxSource = sfxPlayer.GetComponent<PoolableAudioSource>();
            if (sfxPlayer != null)
            {
                sfxSource.Play(AudioDictionary[clipName], soundEffectVolume * masterVolume);
            }
            else
            {
                return;
            }
        }
        }

그리고 SFX효과가 재생될 때 해당 딕셔너리의 값을 1올려주고, 이 값이 4보다 작을때만 SFX가 재생되도록 한다. 이로써 동시에 같은 SFX사운드가 4개이상 재생되지 않도록 만들었다.

profile
게임개발자 취준생입니다

0개의 댓글