본문 바로가기

TIL

[TIL]2024-3-04 / 48일차 - 심화 팀플 마지막날

임무목표

1. 오늘의 코드카타 - 과일 장수

답안 :

using System;
using System.Linq;

public class Solution {
    public int solution(int k, int m, int[] score) {
        int answer = 0;
        int index = m - 1;
        Array.Sort(score);
        Array.Reverse(score);
        
        for(int i = 0; i < score.Length / m; i++)
        {
            answer += score[index] * m;
            index += m;
        }
        return answer;
    }
}

 

 

Score를 Array.Sort와 Reverse를 통해 내림차순으로 바꿔주고

for문을 Score 의 길이를 m으로 나눈 만큼 돌리고,  score[index]에 m을 곱한 값을 더해주고 index를 m만큼 증가

이제부터는 어렵다고 느껴져서 인터넷에 검색을 해야했다. 코드 자체는 특별히 복잡해지지 않은 만큼 문제에서 요구하는 알고리즘 자체를 파악하는 것이 조금 더 어려워진 탓으로 보인다.


2. 오늘의 작업

 

제출 날이라 엄청나게 분주했다. 발표자인 만큼 발표자료를 준비하느라 곱으로 힘들었던 것 같다.

 

 

===최종 구현 모습===

 

 

===시연 영상===

 

 

 

===트러블 슈팅===

 

 


 

오늘은 자잘한 작업들을 제외하면 사운드 매니저, 오디오 믹서와 볼륨 컨트롤러를 마지막으로 작업했다.

 

사운드 매니저는 옛날 강의에서 사용한 내용을 우리 프로젝트에 풀 매니저와 리소스 매니저를 통해 사운드 소스를 오브젝트 풀링하여 생성하는 메소드만 추가했다.

또한 총소리는 많이 날 것으로 판단되어 다른 전용 사운드 소스를 통해 구분되도록 분리해 놓았다.

 

오디오 믹서와 볼륨 컨트롤러를 통해 사운드 조절이 가능해 졌는데 볼륨 컨트롤러의 코드는 다음과 같다.

 

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Audio;
using UnityEngine.UI;

public class VolumeController : MonoBehaviour
{
    
    [SerializeField] private AudioMixer _audioMixer;
    [SerializeField] private Slider Master_Slider;
    [SerializeField] private Slider Bgm_Slider;
    [SerializeField] private Slider Fx_Slider;
    [SerializeField] private Slider Gun_Slider;
    
    
    private void Start()
    {
        Init();
        Managers.UI_Manager.HideUI<UI_OptionMain>();
    }

    public void Init()
    {
        if (PlayerPrefs.HasKey("MasterVolume"))
        {
            Debug.Log("LoadVolume");
            LoadVolume();
        }
        else
        {
            SetMasterVolume();
            SetBGMVolume();
            SetFXVolume();
            SetGunVolume();
        }
    }

    public void SetMasterVolume()
    {
        float mastervolume = Master_Slider.value;
        _audioMixer.SetFloat("MasterParam", Mathf.Log10(mastervolume) * 20);
        PlayerPrefs.SetFloat("MasterVolume", mastervolume);
    }

    public void SetBGMVolume()
    {
        float bgmvolume = Bgm_Slider.value;
        _audioMixer.SetFloat("BGMParam", Mathf.Log10(bgmvolume) * 20);
        PlayerPrefs.SetFloat("BGMVolume", bgmvolume);
    }
    
    public void SetFXVolume()
    {
        float fxvolume = Fx_Slider.value;
        _audioMixer.SetFloat("FXParam", Mathf.Log10(fxvolume) * 20);
        PlayerPrefs.SetFloat("FXVolume", fxvolume);
    }
    
    public void SetGunVolume()
    {
        float gunvolume = Gun_Slider.value;
        _audioMixer.SetFloat("GunParam", Mathf.Log10(gunvolume) * 20);
        PlayerPrefs.SetFloat("GunVolume", gunvolume);
    }


    private void LoadVolume()
    {
        Master_Slider.value = PlayerPrefs.GetFloat("MasterVolume");
        _audioMixer.SetFloat("MasterParam", Mathf.Log10(PlayerPrefs.GetFloat("MasterVolume")) * 20);
        
        Bgm_Slider.value = PlayerPrefs.GetFloat("BGMVolume");
        _audioMixer.SetFloat("BGMParam", Mathf.Log10(PlayerPrefs.GetFloat("BGMVolume")) * 20);
        
        Fx_Slider.value = PlayerPrefs.GetFloat("FXVolume");
        _audioMixer.SetFloat("FXParam", Mathf.Log10(PlayerPrefs.GetFloat("FXVolume")) * 20);
        
        Gun_Slider.value = PlayerPrefs.GetFloat("GunVolume");
        _audioMixer.SetFloat("GunParam", Mathf.Log10(PlayerPrefs.GetFloat("GunVolume")) * 20);
    }
}

 

졸려 죽을 것 같다.