Priv's Blog

Programming Simple Functionality: Unit 4 - Gameplay Mechanics) Quiz 4 본문

Unity Learn/Pathway: Junior Programmer

Programming Simple Functionality: Unit 4 - Gameplay Mechanics) Quiz 4

Priv 2021. 7. 24. 18:14

출처

 

Quiz 4 - Unity Learn

This quiz will assess your knowledge of the skills and concepts learned in Unit 4.

learn.unity.com


 

문제 1

1부터 100 사이의 랜덤 숫자를 age 변수에 담아 출력하려고 했으나, 에러가 발생했습니다. 에러를 수정하려면 어떻게 바꿔야 하나요?

 

1) 1번 줄을 "private float age"로 바꾼다.

2) 8번 줄에 "int" 단어를 추가하여 "int age = ..."로 바꾼다.

3) 7번 줄에 "private" 단어를 "void"로 바꾼다.

4) 8번 줄 뒤에 "return age;"를 새로 추가한다.

 

- 정답

더보기

답: 4

이 메서드는 "int"형 반환 타입의 "private int GenerateRandomAge()"가 있으므로, int 형 값은 반환해야 합니다.

 


 

문제 2

다음과 같은 메시지가 콘솔 창에 출력되었습니다: “Monica has 20 dollars”.

해당 문장은 PrintNames 함수의 어떤 줄에서 출력되었나요?

 

1) A번 줄

2) B번 줄

3) C번 줄

4) D번 줄

 

- 정답

더보기

답: 2

Debug.Log(names[1] + " has " + money*2 + " dollars"); 가 맞습니다.

배열 인덱스는 0부터 시작하므로, "Monica"의 인덱스 값은 "1"(names[1])입니다.

프로그램이 시작되면 money에 2가 곱해져서 값이 10이 되므로, "money*2"를 거쳐서 최종적으로 값은 20이 됩니다.

 


 

문제 3

아래의 코드를 실행하면 “error CS0029: Cannot implicitly convert type 'float' to 'UnityEngine.Vector3'”이라는 에러가 발생합니다. 이 에러를 수정하려면 어떻게 해야 하나요?

 

1) 1번 줄에서 "Vector3"를 "float"으로 바꾼다.

2) 3번 줄에서 "="를 "+"로 바꾼다.

3) 1번 또는 2번

4) 해당 사항 없음

 

- 정답

더보기

답: 1

"Vector3"를 "float"으로 바꾸게 되면 float 값에 다른 float 값을 곱하게 되므로 작동이 됩니다. Vector3에는 float 데이터를 저장할 수 없기 때문에 "="를 "+"로 바꿔도 작동되지 않습니다.

 


 

문제 4

유니티의 명명 규칙(특히 대문자 표기와 관련하여)을 따르는 것은 몇 번인가요?

 

1) A번 줄

2) B번 줄

3) C번 줄

4) D번 줄

 

- 정답

더보기

답: 1

소문자 "float", 낙타 표기법 변수, 대문자 클래스 & 메서드 이름

 


 

문제 5

inspector에서 powerup 변수를 할당해주려고 했는데 Player Controller 컴포넌트 내에 표시가 되질 않습니다. 무엇이 문제인가요?

 

1) Player Controller 스크립트 내에서 powerup 변수를 선언할 수 없습니다.

2) inpector 상에서는 GameObject 타입의 변수를 할당할 수 없습니다.

3) powerup 변수를 private가 아닌 public으로 선언해야 합니다.

4) PlayerController 클래스는 필히 public이 아니라 private로 선언해야 합니다.

 

- 정답

더보기

답: 3

변수를 public으로 만들면 inspector 창에 표시될 것입니다.

 


 

문제 6

게임을 시작하자 다음과 같은 에러가 발생했습니다. "UnassignedReferenceException: The variable playerIndicator of PlayerController has not been assigned.” 문제를 해결하려면 어떻게 해야 하나요?

 

1) PlayerIndicator 스크립트 내에 PlayerController 변수를 선언해야 합니다.

2) playerIndicator 변수를 private로 만들어야 합니다.

3) PlayerComtroller 스크립트에 player 오브젝트를 할당해야 합니다.

4) 오브젝트를 inspector 내의 playerIndicator 변수로 드래그해야 합니다.

 

- 정답

더보기

답: 4

콘솔 창에 변수가 할당되지 않았다는 메시지가 출력될 경우, inspector 창에서 오브젝트를 변수에 드래그하여 할당해주는 것을 잊었을 가능성이 큽니다.

 


 

문제 7

수를 매개변수로 받아서 두 수를 곱하는 메서드를 새로 만들려고 합니다. 어떤 메서드가 적합한가요?

 

1) 메서드 A

2) 메서드 B

3) 메서드 C

4) 메서드 D

 

- 정답

더보기

답: 2

값을 "반환"해야 하므로, "private void"가 아니라 "private float" 반환 타입을 가져야 합니다. 숫자 값을 가져와야 하므로, float형 매개변수("float number")가 필요합니다.

 


 

문제 8

아래의 코드에 가장 적절한 주석은 무엇인가요?

 

1) // If the player collides with an enemy, destroy the enemy

2) // If the enemy collides with a spike, destroy the spike

3) // If the enemy collides with a spike, destroy the enemy

4) // If the player collides with a spike, destroy the spike

 

- 정답

더보기

답: 2

이는 "Enemy" 클래스이므로, 적이 다른 물체와의 충돌을 테스트하고 있습니다. "other.gameObject"를 파괴하라고 했으므로, spike 오브젝트를 파괴할 것입니다.

 


 

문제 9

아래의 코드를 실행하면 "error CS0029: Cannot implicitly convert type 'UnityEngine.GameObject' to 'UnityEngine.Rigidbody'” 라는 에러가 발생합니다. 해당 문제를 해결하려면 어떻게 해야 하나요?

 

1) 1번 줄에서 "collision"을 "Rigidbody"로 바꾼다.

2) 2번 줄에서 "gameObject"을 "Rigidbody"로 바꾼다.

3) 3번 줄에서 ".gameObject"를 삭제한다.

4) 3번 줄에서 ".GetComponent<Rigidbody>()" 문장을 세미콜론 앞에 추가한다.

 

- 정답

더보기

답: 4

코드는 RigidBody 타입의 변수를 GameObject 타입의 변수로 반환할 수 없으므로, gameObject로부터 RigidBody 컴포넌트를 가져와야 합니다.

 


 

문제 10

함수/메서드의 설명으로 올바른 것은 몇 번인가요?

 

1) A와 B가 정답

2) B만 정답

3) B와 C가 정답

4) D만 정답

5) 정답 없음

 

- 정답

더보기

답: 4

A. 함수/메서드에서 매개변수는 필수 사항이 아닙니다.

B. "void" 타입의 함수/메서드는 매개변수를 받을 수 있습니다.

C. "int" 반환 타입의 함수/매소드는 "return 0.5f;" 코드를 실행할 수 없습니다. 0.5f가 float형이기 때문입니다.

D. 만약 함수/메서드를 “private void RenameObject(string newName)”로 선언하면, RenameObject(“Steve”);처럼 string 타입의 매개변수를 전달할 수 있습니다.

 


 

 


수고하셨습니다!


Comments