본문 바로가기

수업/Unity 2주 프로젝트 및 공부

Unity 프로젝트 및 공부 11일차

<오늘 진행할 일>

사운드 매니저 (+싱글톤) 공부 및 사용


<오늘의 공부>

1. 싱글턴화 시키기

: 씬을 이동할 때, 이전 씬에 있던 모든 객체들이 파괴되기에 씬이동이 이뤄지더라 하더라도 파괴가 일어나지 않게하기 위함.

 

2. 가장 먼저 실행되는 호출

① Awake() : 객체 생성시 최초 실행, 비활성화 활성화 관계 없음

② Start() : 매번 활성화되면 실행, 비활성화→활성화 될때 마다 실행, 코루틴 실행 가능

③ OnEnable() : 매번 활성화 되면 실행, 비활성화→활성화 될때 마다 실행, 코루틴 실행 불가

 

3. DontDestroyOnLoad()

: 씬이 넘어갔을 때 기존의 오브젝트가 사라지게 되는데, 같은 객체를 다시 생성해준다해도 정보는 사라지게 된다.

Scene이 변경되도 계속 남아있게 하고싶다면 위 함수를 사용하면 된다.

 

4. 함수의 예외처리에 있어 Debug.log()를 넣어 확인이 편리하게 미리 만들어 두는것도 좋다.

ex) 

//이름들을 넣어둠
string[] name;

//찾으려는 이름
string findName;

void FindName()
{
	for (int i = 0; i < name.Length; i++)
	{
   		if (name[i] == findName)
   		{
      		name[i] = "이미 찾음";
      
      		//함수를 나온다.
      		return;
   		}
	}

	Debug.Log("현재 찾고있는 " + findName + "이(가) 없습니다.");
}

 

5. 데이터 직렬화 Serialized

변수를 인스펙터창에 띄우려면 변수의 접근자 앞에 [Serialized]를 붙이는 것 처럼

클래스를 직렬화하여 인스펙터창에 띄우게 하려면 클래스 앞(또는 위)에 [System.Serialized]를 붙여야 한다.

 


<오늘 진행한 일>

 

1. 사운드 매니저 싱글톤화

: 먼저 싱글톤에 대해서 알아보고 공부한 후, 사운드 매니저 스크립트를 새로 생성하여 해당 스크립트를 싱글톤화 시켰습니다.

사운드 매니저는 어디에서든지 사용하기에 싱글톤으로 만들었습니다.

싱글톤화 시킨 후 해당 부분은 다시 건들지 않기에 스크립트를 작성함에 있어 편의를 위해 접어두려고 region을 이용했습니다. 

 

2. 사운드 수정

: 채굴과정에서 돌을 때리고 부수는 소리는 돌이 AudioSource를 가지고 클립들을 재생시켰지만, 사운드 매니저를 만든 후에는 돌이 오디오 클립을 가지고 직접 재생시키는 것이 아닌 string값만 가지고 사운드 매니저에서 재생시키도록 수정했습니다.

 

3. 사운드 저장

: 사운드 매니저에 사운드를 담을 변수들을 배열로 만들어 미리 담아두고 관리할 수 있도록 제작하였습니다.

재생중인 사운드 중에 특정 사운드만 멈추게 하기위해 playSoundName이라는 재생목록을 만들었습니다.

 

 

 


- 참고영상 케이디의 유튜브

https://www.youtube.com/playlist?list=PLUZ5gNInsv_Nzex8Cvxce_1zjUf0cNWY9

 

유니티 강좌 [3D FPS 서바이벌 생존] - YouTube

유니티 강좌 - 3D 게임 제작 스킬을 배워보는 강좌

www.youtube.com