Priv's Blog

Programming Basics: Quiz) Create with Code 1 본문

Unity Learn/Pathway: Junior Programmer

Programming Basics: Quiz) Create with Code 1

Priv 2021. 7. 24. 18:05

출처

 

Quiz: Create with Code 1 - Unity Learn

This quiz will assess your understanding of the concepts covered in the Create with Code 1 Mission.

learn.unity.com


 

 

문제 1

아래 코드의 결과를 올바르게 설명한 것은 무엇인가요?

public class Enemy : MonoBehaviour
{
    public Transform ground;

    void Update()
    {
        if (transform.position.y < ground.position.y)
        {
            Destroy(gameObject);
        }
    }
}

 

  1. 적(enemy)이 땅(ground) 위로 올라가면, 적(enemy)을 파괴합니다.
  2. 적(enemy)이 땅(ground) 아래로 내려가면, 적(enemy)을 파괴합니다.
  3. 플레이어(player)가 땅(ground) 아래로 내려가면, 플레이어(player)를 파괴합니다.
  4. 플레이어(player)가 적(enemy)과 접촉하면, 플레이어(player)를 파괴합니다.

 

- 정답

더보기

답: 2

Enemy 클래스에 있는 Destroy(gameObject) 코드는 적을 파괴하는 코드입니다. if 문은 적(enemy)의 y 좌표 값이 땅(ground)의 y 좌표 값보다 작은지(또는 미만인지)를 검사합니다. 그러므로 적(enemy)은 땅(ground) 아래로 내려갔을 경우 파괴될 것입니다.

 


 

문제 2

다음 중, 주석 처리된 부분에 들어가야 하는 알맞은 코드는 무엇인가요?

public float[] values = values[5];

void Start()
{
 // assign the first element in the array the value of 5.0
}

 

  1. value[1] = 5.0f;
  2. float.0 = 5.0f;
  3. float[0] = 5.0f;
  4. values[0] = 5.0f;

 

- 정답

더보기

답: 4

배열의 요소에 접근하기 위해서는, 대괄호로 묶여 있는 배열 요소의 인덱스 값이 뒤에 따라붙는 "value" 키워드처럼 배열의 이름으로 참조해야 합니다. 배열의 첫 번째 요소 인덱스는 0이므로, 답은 values[0] = 5.0f;가 됩니다.

 


 

문제 3

아래의 코드를 가장 잘 설명하는 주석은 어떤 것인가요?

  1. // If the enemy collides with a spike, destroy the enemy
    // 적이 스파이크에 닿았을 경우, 적을 파괴합니다.
  2. // If the player collides with a spike, destroy the player
    // 플레이어가 스파이크에 닿았을 경우, 플레이어를 파괴합니다.
  3. // If the player collides with a spike, destroy the spike
    // 플레이어가 스파이크에 닿았을 경우, 스파이크를 파괴합니다.
  4. // If the player collides with an enemy, destroy the enemy
    // 플레이어가 적과 닿았을 경우, 적을 파괴합니다.

 

- 정답

더보기

답: 3

이 클래스는 "Player" 클래스이므로, 플레이어가 다른 오브젝트와 충돌했을 때의 상황을 테스트하고 있습니다. 그러므로 해당 클래스 상에서 "other.gameOjbect"를 파괴한다면, 이는 스파이크를 파괴하는 것이 됩니다.

 


 

문제 4

아래의 이미지는 스크립트 편집 도구(또는 IDE)를 여러분이 원하는 것으로 변경할 수 있는 Preferences 창을 보여줍니다. 편집 도구를 변경하고자 할 때, 어느 항목을 클릭해야 하나요?

 

 

  1. 1번 박스 (External Script Editor)
  2. 2번 박스 (Image application)
  3. 3번 박스 (Revision control Diff/Merge)

 

- 정답

더보기

답: 1

비주얼 스튜디오(Visual Studio)에서 다른 편집 도구로 변경하고 싶으시다면, 1번 박스에 있는 설정 값, "External Script Editor" 항목을 선택하셔야 합니다.

 


 

문제 5

비주얼 스튜디오(Visual Studio) 상에서 "5.0f;" 부분에 빨간 밑줄이 그어졌습니다. 마우스를 항목 위에 가져가면, 어떤 오류 메시지가 표시될까요?

int health = 5.0f;

 

  1. Cannot complete statement. Remove semicolon.
  2. The value “f” could not be interpreted for type ‘int’.
  3. Cannot implicitly convert type ‘float’ to ‘int’.
  4. The value 5.0 is out of bounds.

 

- 정답

더보기

답: 3

float에는 소수가 포함되고, int (정수형)에는 소수가 포함되지 않으므로, int 변수에는 소수 값을 저장할 없습니다. float(소수 포함) 값은 int 값으로 변환할 수 었습니다.

 


 

문제 6

아래 사진 속의 자동 완성 팝업 창에 표시된 정보를 활용하고자 할 때, Instantiate 메서드를 올바르게 호출한 코드는 무엇인가요?

 

  1. Instantiate(objectPrefab.transform, spawner, true);
  2. Instantiate(objectPrefab, spawner, false);
  3. Instantiate(objectPrefab, spawner.transform, true);
  4. Instantiate(objectPrefab, spawner, bool);

 

- 정답

더보기

답: 3

사진 속 툴팁(tooltip)을 통해 Instantiate 메서드가 3가지 타입: Object, Transform, bool 매개변수를 요구한다는 것을 알 수 있습니다. 이는 즉, 첫 번째 매개변수는 오브젝트 (objectPrefab)가 될 수 있고, 두 번째 매개변수는 오브젝트의 트랜스폼(transform) (spawner.transform)이 될 수 있으며, 세 번째 매개변수는 불리언 값(ex. true 또는 false)이어야 한다는 것입니다.

 


 

문제 7

아래와 같은 디버깅 메시지를 출력하는 코드는 무엇인가요?

Hello world.

 

  1. Debug(Log(“Hello world.”));
  2. Debug.Log(Hello world.);
  3. Debug(“Hello world.”);
  4. Debug.Log("Hello world.");

 

- 정답

더보기

답: 4

올바른 메서드는 Debug.Log이며, "Hello world."처럼 단순한 문자열 메시지는 따옴표로 묶어주어야 합니다.

 


 

문제 8

다음 중, Unity Monobehavior 클래스 내의 Start() 또는 Update() 함수에 대한 설명으로 올바른 것은 무엇인가요?

 

  1. Update() 함수는 Start() 함수 이전에 실행됩니다.
  2. Start() 함수는 Update() 함수가 실행될 때마다 실행됩니다.
  3. 플레이어의 입력 감지는 Update() 함수 안에서 처리되어야 합니다.
  4. Update() 함수는 1번만 실행됩니다.

 

- 정답

더보기

답: 3

Start() 함수 내에서 플레이어의 입력을 처리하는 것은 1번만 함수가 실행되기 때문에 의미가 없습니다. 매 프레임마다 실행되는 Update() 함수 안에서 사용자의 입력을 처리하는 것이 더 합리적입니다.

 


 

문제 9

아래의 코드는 어떤 순서로 명령이 처리될까요?

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerController : MonoBehaviour
{
 public float speed;
 public string playerName;

 void Start()
    {
        playerName = "Test";
    }

 void Update()
    {
        speed++;
    }

}

 

  1. 변수, 네임스페이스(namespaces), 함수, 클래스 선언
  2. 함수, 클래스 선언, 네임스페이스(namespaces), 변수
  3. 클래스 선언, 네임스페이스(namespaces), 함수, 변수
  4. 네임스페이스(namespaces), 클래스 선언, 변수, 함수

 

- 정답

더보기

답: 4

"using" 문은 네임스페이스(namespaces)를 의미하며, "public class"로 시작되는 줄은 클래스 선언, "public"으로 시작되는 줄은 변수, Start()와 Update() 부분은 함수를 의미합니다.

 


 

문제 10

다음 중 표준 유니티 명명 규칙을 따르는 코드는 몇 번인가요?

 

  1. 1번
  2. 2번
  3. 3번
  4. 4번

 

- 정답

더보기

답: 4

"public float speed = 40.0f;"는 올바른 명명 규칙을 따르고 있습니다. 사용된 3가지 용어 모두 소문자로 시작해야 하기 때문입니다.

 


 

문제 11

아래 사진 속 inspector 창은 "Speed" 및 "Player name" 변수를 보여줍니다. PlayerController.cs 상에서 사진처럼 해당 변수가 inspector 창에 표시되도록 만드는 코드는 무엇인가요?

 

  1. public float Speed;
    public text Player Name;
  2. public float speed;
    public string playerName;
  3. new Float speed;
    new String playerName;
  4. float speed;
    string playerName;

 

- 정답

더보기

답: 2

inspector 창에 변수가 표시되려면, 변수에 "public" 접근 제한자를 추가해주어야 합니다. 변수 이름은 낙타 대문자(camelcase) 규칙을 따라야 하며, 공백을 포함해서는 안됩니다.

 


 


수고하셨습니다!


Comments