All tutorials

תנו שם למה שהתוכנית שלכם יוצרת

Beginner 10 min engine

תוכנית יכולה לבנות מאה אובייקטים ולא להראות אף אחד מהם ב-Scene Graph. מתן שם הוא הפעולה שגורמת לאובייקט להופיע, וזה עובד על ספרייטים, טקסט, אובייקטים תלת-ממדיים, אורות וחלקיקים.

מה תלמדו#

תכתבו תוכנית 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. הספרייט מוצג על המסך, האור דלוק, והעץ מראה כלום. זה לא באג, וזה כל השיעור.

    טיפ: הפאנל מציג ספירה של אובייקטים ללא שם. המספר הזה הוא הפלט של התוכנית שלכם, שהעץ בכוונה לא הציג ברשימה.

  3. תנו שם לספרייט. הוסיפו שורה אחת אחרי SpritePosition, ולחצו Play שוב:

    SpriteName(sprite, "שחקן")
    

    שחקן מופיע בעץ. שום דבר אחר לא השתנה על המסך: מתן שם לא יוצר, לא מזיז ולא מצייר דבר. הוא מפרסם.

  4. תנו שם גם לאור, עם הפקודה שהגיעה יחד עם הרעיון הזה:

    LightName(1, "שמש")
    

    עכשיו יש שתי רשומות. לחצו על אחת: ה-inspector עוקב אחריה, בדיוק כפי שהיה קורה עבור אובייקט שהייתם ממקמים ביד.

  5. הוסיפו חלקיקים ותנו להם שם, כדי לראות שהכלל הזה לא נוגע רק לספרייטים:

    CreateParticles(1, 200.0, 200.0)
    ParticlesName(1, "עשן")
    
  6. עכשיו הסירו את שלוש שורות מתן השם ולחצו Play. הסצנה זהה, העץ ריק שוב, והספירה של הבלתי-מתויגים חוזרת לשלוש.

    אזהרה: שם הוא לא id. SpriteName(sprite, "שחקן") מתייגת את הספרייט שה-id שלו נמצא ב-sprite; זה לא מאפשר למצוא אותו מאוחר יותר לפי התווית הזו. ה-id נשאר ה-handle שלכם.

תוצאה#

אתם קובעים מה התוכנית שלכם מציגה. prop, אור ופולט מופיעים תחת השמות שבחרתם; מאות האובייקטים הטכניים שתוכנית אמיתית בונה נשארים מחוץ לדרך.

למה הכלל הזה קיים#

תוכנית BASIC קלאסית יוצרת אובייקטים כל הזמן: ספרייט לכל כדור, טקסט לכל ספרת ניקוד, תמונה לכל אריח. הצגת כולם ברשימה הייתה הופכת את Scene Graph לבלתי קריא תוך שניות, ושלושת האובייקטים שבאמת חשובים לכם היו הולכים לאיבוד ברעש.

אז העץ לא מציג הכול ומסתיר את השאר בניחוש. הוא מציג את מה שנתתם לו שם, וסופר את השאר כך שדבר לא נעלם בשקט. הסינון הוא שלכם, לא של המנוע.

אילו אובייקטים אפשר לתת להם שם#

פקודהמה היא נותנת לו שם
SpriteName(id, name)ספרייט
TextName(id, name)אובייקט טקסט
ObjectName(id, name)אובייקט תלת-ממדי
LightName(id, name)אור נקודתי או כיווני
ParticlesName(id, name)פולט חלקיקים, דו-ממדי או תלת-ממדי

לצלילים, תמונות, memblocks וגופנים אין שורה ב-Scene Graph: הם משאבים, לא אובייקטי סצנה, ומתן שם להם לא היה מציג דבר בשום מקום.

להעמקה#