All tutorials

프로그램이 만든 것에 이름 붙이기

Beginner 10 min engine

프로그램은 수백 개의 오브젝트를 만들고도 그중 하나도 Scene Graph에 표시하지 않을 수 있습니다. 이름 붙이기는 오브젝트를 나타나게 만드는 행위이며, 스프라이트, 텍스트, 3D 오브젝트, 라이트, 파티클 모두에 적용됩니다.

배울 내용#

작은 BASIC 프로그램을 작성하고, 프로그램이 분명히 정상 작동하는데도 Scene Graph가 비어 있는 모습을 지켜본 다음, 각 오브젝트에 이름을 붙여 나타나게 만듭니다. 끝까지 마치면 트리가 프로그램이 만든 대부분의 것을 왜 숨기는지, 그리고 무엇을 보여줄지 어떻게 선택하는지 알게 됩니다.

시작하기 전에#

  • Engine은 후원이 필요한 모듈입니다. Inkwell, Vectra, PDF Studio가 무료인 세 모듈입니다.
  • 이전 튜토리얼은 필요하지 않습니다. 아래 내용은 모두 하나의 스크립트로 이루어집니다.
  • 뷰포트 옆에 Scene Graph 패널을 열어두세요. 이것이 이 연습의 핵심입니다.

단계#

  1. Engine을 열고, 빈 씬을 시작한 다음, 스크립트 에디터를 엽니다. 다음을 붙여넣고 Play를 누르세요:

    image = LoadImage("hero.png")
    sprite = CreateSprite(image)
    SpritePosition(sprite, 100.0, 120.0)
    CreatePointLight(1, 0.0, 5.0, 0.0, 10.0, 255, 255, 255)
    DO
      Sync()
    LOOP
    
  2. Scene Graph를 보세요. 스프라이트는 화면에 있고, 라이트는 켜져 있는데, 트리에는 아무것도 표시되지 않습니다. 이것은 버그가 아니며, 바로 이것이 이 수업 전체의 핵심입니다.

    Tip: 패널은 이름 없는 오브젝트의 개수를 표시합니다. 그 숫자는 트리가 의도적으로 나열하지 않은, 여러분 프로그램의 산출물입니다.

  3. 스프라이트에 이름을 붙입니다. SpritePosition 다음에 한 줄을 추가하고 다시 Play를 누르세요:

    SpriteName(sprite, "player")
    

    player가 트리에 나타납니다. 화면에서는 그 외에 아무것도 바뀌지 않았습니다: 이름 붙이기는 아무것도 생성하거나 이동시키거나 그리지 않습니다. 그저 알릴 뿐입니다.

  4. 이 개념과 함께 만들어진 명령으로 라이트에도 이름을 붙입니다:

    LightName(1, "sun")
    

    이제 항목이 두 개가 되었습니다. 하나를 클릭해 보세요: 손으로 직접 배치한 오브젝트에서와 정확히 똑같이 인스펙터가 그 오브젝트를 따라갑니다.

  5. 파티클을 추가하고 이름을 붙여, 이 규칙이 스프라이트만의 것이 아님을 확인하세요:

    CreateParticles(1, 200.0, 200.0)
    ParticlesName(1, "smoke")
    
  6. 이제 세 개의 이름 붙이기 줄을 지우고 Play를 누릅니다. 씬은 동일하지만 트리는 다시 비어 있고, 이름 없는 개수는 다시 3으로 돌아갑니다.

    Warning: 이름은 id가 아닙니다. SpriteName(sprite, "player")sprite에 담긴 id를 가진 스프라이트에 라벨을 붙일 뿐이며, 나중에 그 라벨로 오브젝트를 찾을 수 있게 해주지는 않습니다. 여전히 여러분이 다루는 핸들은 id입니다.

결과#

프로그램이 무엇을 보여줄지는 여러분이 결정할 수 있습니다. prop, 라이트, 이미터는 여러분이 선택한 이름으로 나타나고, 실제 프로그램이 만들어내는 수백 개의 기술적인 오브젝트는 방해되지 않게 비켜나 있습니다.

이 규칙이 존재하는 이유#

전형적인 BASIC 프로그램은 끊임없이 오브젝트를 만듭니다: 총알마다 스프라이트 하나, 점수 자릿수마다 텍스트 하나, 타일마다 이미지 하나씩입니다. 이것들을 전부 나열한다면 Scene Graph는 몇 초 안에 읽을 수 없는 상태가 될 것이고, 실제로 신경 써야 할 세 개의 오브젝트는 그 소음 속에 묻혀버릴 것입니다.

그래서 트리는 모든 것을 보여주고 나머지를 추측으로 숨기는 방식을 쓰지 않습니다. 트리는 여러분이 이름 붙인 것을 보여주고, 나머지는 아무것도 조용히 사라지지 않도록 개수만 셉니다. 그 필터는 엔진의 것이 아니라 여러분의 것입니다.

이름을 붙일 수 있는 오브젝트#

명령이름을 붙이는 대상
SpriteName(id, name)스프라이트
TextName(id, name)텍스트 오브젝트
ObjectName(id, name)3D 오브젝트
LightName(id, name)포인트 라이트 또는 디렉셔널 라이트
ParticlesName(id, name)파티클 이미터(2D 또는 3D)

사운드, 이미지, memblock, 폰트는 Scene Graph에 항목이 없습니다: 이것들은 씬 오브젝트가 아니라 리소스이며, 이름을 붙여도 어디에도 아무것도 표시되지 않습니다.

더 알아보기#