All tutorials

Đặt tên cho những gì chương trình của bạn tạo ra

Beginner 10 min engine

Một chương trình có thể tạo ra hàng trăm đối tượng và không hiển thị đối tượng nào trong Scene Graph. Đặt tên là hành động khiến một đối tượng xuất hiện, và nó hoạt động trên sprite, text, đối tượng 3D, đèn và hạt.

Bạn sẽ học được gì#

Bạn sẽ viết một chương trình BASIC nhỏ, quan sát Scene Graph vẫn trống trong khi nó rõ ràng đang hoạt động, rồi làm cho từng đối tượng xuất hiện bằng cách đặt tên cho nó. Đến cuối bài, bạn sẽ hiểu vì sao cây ẩn đi phần lớn những gì một chương trình tạo ra, và cách chọn những gì nó hiển thị.

Trước khi bắt đầu#

  • Engine là module cần được ủng hộ. Inkwell, VectraPDF Studio là ba module miễn phí.
  • Không cần bài hướng dẫn nào trước đó. Mọi thứ dưới đây chỉ là một script.
  • Giữ panel Scene Graph mở, cạnh viewport. Đó chính là trọng tâm của bài tập này.

Các bước thực hiện#

  1. Mở Engine, bắt đầu một scene trống, và mở trình soạn thảo script. Dán đoạn này vào rồi nhấn 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. Nhìn vào Scene Graph. Sprite hiện trên màn hình, đèn đã sáng, và cây thì hiển thị không có gì cả. Đây không phải lỗi, mà chính là toàn bộ bài học.

    Mẹo: panel này hiển thị số lượng đối tượng chưa được đặt tên. Con số đó chính là kết quả từ chương trình của bạn mà cây đã cố tình không liệt kê ra.

  3. Đặt tên cho sprite. Thêm một dòng sau SpritePosition, rồi nhấn Play lần nữa:

    SpriteName(sprite, "player")
    

    player xuất hiện trong cây. Không có gì khác thay đổi trên màn hình: việc đặt tên không tạo ra, di chuyển hay vẽ bất cứ thứ gì. Nó chỉ công bố mà thôi.

  4. Đặt tên cho đèn nữa, bằng lệnh đi kèm với ý tưởng này:

    LightName(1, "sun")
    

    Giờ có hai mục. Nhấp vào một mục: inspector sẽ theo sau, giống hệt như với một đối tượng bạn đã đặt bằng tay.

  5. Thêm hạt và đặt tên cho chúng, để bạn thấy rằng quy tắc này không chỉ áp dụng cho sprite:

    CreateParticles(1, 200.0, 200.0)
    ParticlesName(1, "smoke")
    
  6. Giờ hãy xoá ba dòng đặt tên và nhấn Play. Scene giống hệt như trước, cây lại trống, và số lượng chưa đặt tên quay về ba.

    Cảnh báo: một cái tên không phải là một id. SpriteName(sprite, "player") gắn nhãn cho sprite có id nằm trong sprite; nó không cho phép bạn tìm lại sprite đó sau này bằng cái nhãn đó. Id vẫn là điểm tham chiếu của bạn.

Kết quả#

Bạn có thể quyết định những gì chương trình của mình hiển thị. Một prop, một đèn và một bộ phát hạt xuất hiện dưới những cái tên bạn chọn; hàng trăm đối tượng kỹ thuật mà một chương trình thật sự tạo ra vẫn đứng ngoài tầm mắt.

Vì sao có quy tắc này#

Một chương trình BASIC điển hình liên tục tạo ra đối tượng: một sprite cho mỗi viên đạn, một text cho mỗi chữ số điểm, một image cho mỗi ô tile. Liệt kê tất cả chúng sẽ khiến Scene Graph trở nên không thể đọc nổi chỉ trong vài giây, và ba đối tượng bạn thực sự quan tâm sẽ bị chìm nghỉm trong đống nhiễu đó.

Vì vậy cây không hiển thị mọi thứ rồi ẩn phần còn lại bằng cách đoán. Nó hiển thị những gì bạn đã đặt tên, và nó đếm phần còn lại để không có gì biến mất một cách âm thầm. Bộ lọc là của bạn, không phải của engine.

Những đối tượng nào có thể được đặt tên#

LệnhĐối tượng được đặt tên
SpriteName(id, name)Một sprite
TextName(id, name)Một đối tượng text
ObjectName(id, name)Một đối tượng 3D
LightName(id, name)Một đèn điểm hoặc đèn định hướng
ParticlesName(id, name)Một bộ phát hạt, 2D hoặc 3D

Âm thanh, hình ảnh, memblock và font không có dòng nào trong Scene Graph: chúng là tài nguyên, không phải đối tượng scene, và việc đặt tên cho chúng sẽ không hiển thị gì ở đâu cả.

Tìm hiểu thêm#