Pink Transparent Star

Unity/YouTube 따라 만들기

[ Unity ] 빗물받는 르탄이 제작

채유나 2024. 3. 19. 23:02
728x90

Unity 사전 부트캠프 중 [게임개발 종합반] 의 강의를 제공받아 강의를 듣게 되었습니다.

 

1번째 강의의 주제는 [ 빗물받는 르탄이 ] 로 정해진 내에 떨어지는 구체를 부딪쳐 점수를 획득하는 게임을 제작하는 강의였습니다.

 

 

Unity의 기초에 대한 수업으로 기초 지식의 정보를 복습하는 시간이라고 생각하고 1주차 게임을 제작하게 된 것 같습니다.

 

🔻조작방법 : 마우스 좌 클릭

🔻게임 방법 : 마우스를 조작하여 떨어지는 물방울과 부딪쳐 점수를 획득 

 

[ 잊고있었던 정보 ]

📌 Application.targetFrameRate = 60;

🔸 Frame : 1초에 호출 or 계산 되는 횟수

🔸 Frame를 고정 시키는 이유 : 기기 성능이 좋을 수록 Frame이 높아지므로, 기기 성능과 관계 없이 1초에 60번만 호출 or 계산하도록 고정

 

📌 InvokeRepeating (string methodName, float time, float repeatRate)

🔸methodName : 실행할 메소드의 이름 

🔸time : 몇초 후 메소드를 실행 시킬 껀지의 시간

🔸repeatRate : 몇초마다 한번씩 실행 시킬 시간

 InvokeRepeating("MakeRain", 0, 1f);

 

"MakeRain 메소드를 0초 후에 1초마다 실행시켜라" 를 의미한다.

 

📌Invoke(string methodName, float time)

🔸methodName : 실행할 메소드의 이름 

🔸time : 몇초 후 메소드를 실행 시킬 껀지의 시간

 InvokeRepeating("MakeRain", 0);

"MainRain" 메소드를 0초 후에 실행 시켜라" 를 의미한다.

 

숙제 - 빨간 공 추가하기 ( 점수 감소 )

 

다른 방식 추가하기

▪ 기존에 있는 코드 방식은 if 문으로 Switch 방식으로 변경해 보았습니다.

 

이전에 공부를 했었을 때 최적화를 할 때에는 switch문을 이용하는 방법이 최적화하는데 좋다고 들었습니다. 

 

if - else if 로 된 부분과 swith문 중 어느게 성능이 좋을까? 라는 궁금증이 생겨 찾아본 결과 해당 블로그에서 내용을 확인하여 컴파일러나 코드 상황에 따라 다르지만 if문이 3개 일때까지 switch보다 빠르고 그 이상을 swich문이 빠르다는 걸 확인 할 수 있었습니다. 

 

 

Switch 와 if문 중 어느게 더 성능이 좋을까?

코드 인스펙션을 받던 도중 선임 연구원분이 if, else로 된 부분을 switch case 문으로 바꾸라고 하셨습니다. 그래서 문득 의문이 들었습니다. switch랑 if문은 실제로 성능 차이가 있는걸까?? kldp.org/node

chucoding.tistory.com

 

🔸 if문과 switch문 모두 특정한 조건에 따라 다르게 동작하는 코드를 만듬

🔸 어떤 넓은 범위를 만족하는 조건식을 만들 때는 if문을 활용하는 것이  효과적

🔸 특정한 값에 일치하는 조건을 만들 때는 switch문이  효과적

 

기존 코드

		if (type == 1)
		{
			size = 0.8f;
			score = 1;
			renderer.color = new Color(100 / 255f, 100 / 255f, 1f, 1f);
		}
		else if (type == 2)
		{
			size = 1.0f;
			score = 2;
			renderer.color = new Color(130 / 255f, 130 / 255f, 1f, 1f);
		}
		else if (type == 3)
		{
			size = 1.2f;
			score = 3;
			renderer.color = new Color(150 / 255f, 150 / 255f, 1f, 1f);
		}
		else if(type == 4)
        {
			size = 0.8f;
			score = -5;
			renderer.color = new Color(255 / 255.0f, 100.0f / 255.0f, 100.0f / 255.0f, 255.0f / 255.0f);
		}

 

수정 코드

		switch(type)
        {
			case 1:
				size = 0.8f;
				score = 1;
				renderer.color = new Color(100 / 255f, 100 / 255f, 1f, 1f);
				break;
			case 2:
				size = 1.0f;
				score = 2;
				renderer.color = new Color(130 / 255f, 130 / 255f, 1f, 1f);
				break;
			case 3:
				size = 1.2f;
				score = 3;
				renderer.color = new Color(150 / 255f, 150 / 255f, 1f, 1f);
				break;
			case 4:
				size = 0.8f;
				score = -5;
				renderer.color = new Color(255 / 255.0f, 100.0f / 255.0f, 100.0f / 255.0f, 255.0f / 255.0f);
				break;
		}

 

728x90