--- title: Τα δομικά στοιχεία του Defold brief: Αυτό το εγχειρίδιο σκάβει τις λεπτομέρειες του τρόπου λειτουργίας των αντικειμένων, των συστατικών και των συλλογών του παιχνιδιού. --- # Δομικά στοιχεία Στον πυρήνα του σχεδιασμού του Defold υπάρχουν μερικές έννοιες που μπορεί να χρειαστούν λίγη ώρα για να αποκτήσετε εμπειρία μαζί τουε. Αυτό το εγχειρίδιο εξηγεί ποια είναι τα δομικά στοιχεία του Defold. Αφού διαβάσετε αυτό το εγχειρίδιο, προχωρήστε στο [εγχειρίδιο διευθύνσεων](/manuals/addressing) και το [εγχειρίδιο διαβίβασης μηνυμάτων](/manuals/message-passing). Υπάρχει επίσης ένα σετ [tutorials](/tutorials/getting-started) διαθέσιμα μέσα από το κειμενογράφο για να ξεκινήσετε γρήγορα. ![Building blocks](images/building_blocks/building_blocks.png) There are three basic types of building blocks that you use to construct a Defold game: Συλλογή : Μια συλλογή είναι ένα αρχείο που χρησιμοποιείται για τη δομή του παιχνιδιού σας. Στις συλλογές δημιουργείτε ιεραρχίες αντικειμένων παιχνιδού και άλλων συλλογών. Συνήθως χρησιμοποιούνται για τη δομή επιπέδων παιχνιδιών, ομάδων εχθρών ή χαρακτήρων που έχουν δημιουργηθεί από διάφορα αντικείμενα παιχνιδιού. Αντικείμενο παιχνιδιού : Ένα αντικείμενο παιχνιδιού είναι ένα κοντέινερ με αναγνωριστικό, θέση, περιστροφή και κλίμακα. Χρησιμοποιείται για να περιέχει συστατικά. Συνήθως χρησιμοποιούνται για τη δημιουργία χαρακτήρων παίκτη, κουκκίδων, του συστήματος κανόνων του παιχνιδιού ή ενός επιπέδου φόρτωσης / εκφόρτωσης. Συστατικό : Τα στοιχεία είναι οντότητες που τοποθετούνται σε αντικείμενο παιχνιδιού για να τους δώσουν οπτική, ακουστική και / ή λογική αναπαράσταση στο παιχνίδι. Συνήθως χρησιμοποιούνται για τη δημιουργία χαρακτήρων sprites, αρχείων script, για την προσθήκη ηχητικών εφέ ή για την προσθήκη εφέ σωματιδίων. ## Collections Συλλογές Οι συλλογές είναι δομές δέντρων που περιέχουν αντικείμενα παιχνιδιών και άλλες συλλογές. Μια συλλογή αποθηκεύεται πάντα στο αρχείο. Όταν ξεκινά η μηχανή Defold, φορτώνει ένα μόνο _bootstrap collection_ όπως καθορίζεται στο αρχείο ρυθμίσεων *game.project*. Η συλλογή bootstrap ονομάζεται συχνά "main.collection" αλλά μπορείτε να χρησιμοποιήσετε οποιοδήποτε όνομα θέλετε. Μια συλλογή μπορεί να περιέχει αντικείμενα παιχνιδιού και άλλες συλλογές (με αναφορά στο αρχείο της υπο-συλλογής), ένθετα και αυθαίρετα βαθιά. Εδώ είναι ένα παράδειγμα αρχείου που ονομάζεται "main.collection". Περιέχει ένα αντικείμενο παιχνιδιού (με το αναγνωριστικό "can") και μία υπο-συλλογή (με το id "bean"). Η υπο-συλλογή, με τη σειρά της, περιέχει δύο αντικείμενα παιχνιδιού: "bean" και "shield". ![Collection](images/building_blocks/collection.png) Σημειώστε ότι η υπο-συλλογή με id "bean" αποθηκεύεται στο δικό της αρχείο, που ονομάζεται "/main/bean.collection" και αναφέρεται μόνο στο "main.collection": ![Bean collection](images/building_blocks/bean_collection.png) Δεν μπορείτε να διευθύνετε τις συλλογές οι ίδιοι, καθώς δεν υπάρχουν αντικείμενα κατά την ώρα του χρόνου εκτέλεσης που να αντιστοιχούν στις συλλογές "main" και "bean". Ωστόσο, μερικές φορές πρέπει να χρησιμοποιήσετε την ταυτότητα μιας συλλογής ως μέρος του _path_ σε ένα αντικείμενο παιχνιδιού(See the [addressing manual](/manuals/addressing) for details): ```lua -- file: can.script -- get position of the "bean" game object in the "bean" collection local pos = go.get_position("bean/bean") ``` Μια συλλογή προστίθεται πάντα σε μια άλλη συλλογή ως αναφορά σε ένα αρχείο συλλογής: Right-click the collection in the *Outline* view and select Add Collection File. ## Game objects Αντικείμενα Παιχνιδιού Τα αντικείμενα του παιχνιδιού είναι απλά αντικείμενα που το καθένα έχει ξεχωριστή διάρκεια ζωής κατά την εκτέλεση του παιχνιδιού σας. Τα αντικείμενα του παιχνιδιού έχουν μια θέση, περιστροφή και κλίμακα που κάθε ένα από αυτά μπορεί να χειραγωγηθεί και να εμψυχωθεί κατά το χρόνο εκτέλεσης. ```lua -- animate X position of "can" game object go.animate("can", "position.x", go.PLAYBACK_LOOP_PINGPONG, 100, go.EASING_LINEAR, 1.0) ``` Τα αντικείμενα του παιχνιδιού μπορούν να χρησιμοποιηθούν κενά (για παράδειγμα, ως δείκτες θέσης), αλλά συνήθως χρησιμοποιούνται εξοπλισμένα με διάφορα στοιχεία, όπως sprites, ήχους, scripts, μοντέλα, factories και άλλα. Τα αντικείμενα του παιχνιδιού είτε δημιουργούνται στο πρόγραμμα επεξεργασίας, τοποθετούνται σε αρχεία συλλογής ή δημιουργούνται δυναμικά κατά το χρόνο εκτέλεσης μέσω των στοιχείων _factory_. Τα αντικείμενα του παιχνιδιού είτε προστίθενται επιτόπου σε μια συλλογή, είτε προστίθενται σε μια συλλογή ως αναφορά σε ένα αρχείο αντικειμένου παιχνιδιού: Right-click the collection in the *Outline* view and select Add Game Object (add in-place) or Add Game Object File (add as file reference). ## Components Συστατικό :[components](../shared/components.md) Ανατρέξτε στο [component overview](/manuals/components/) για μία λίστα των τύπων των συστατικών. ## Αντικείμενα προστέθηκαν επιτόπου ή με αναφορά Όταν δημιουργείτε μια συλλογή, αντικείμενο παιχνιδιού ή στοιχείο _file_, δημιουργείτε ένα σχεδιάγραμμα ή ένα πρωτότυπο. Αυτό προσθέτει μόνο ένα αρχείο στη δομή του αρχείου έργου, δεν προστίθεται τίποτα στο τρέχον παιχνίδι σας. Για να προσθέσετε μια παρουσία μιας συλλογής, ενός αντικειμένου παιχνιδιού ή ενός στοιχείου που βασίζεται σε ένα αρχείο σχεδιαγράμματος, προσθέτετε μια παρουσία του σε ένα από τα αρχεία συλλογής σας. Μπορείτε να δείτε σε ποιο αρχείο βασίζεται μια παρουσία αντικειμένου στην προβολή διάρθρωσης. Το αρχείο "main.collection" περιέχει τρεις παρουσίες που βασίζονται σε αρχεία: 1. Η υπο-συλλογή "φασόλι". 2. Το στοιχείο script "bean" στο αντικείμενο παιχνιδιού "bean" στην υπο-συλλογή "bean". 3. Το στοιχείο script "μπορεί" στο αντικείμενο παιχνιδιού "μπορεί". ![Instance](images/building_blocks/instance.png) Το όφελος από τη δημιουργία αρχείων blueprint γίνεται εμφανές όταν έχετε πολλές παρουσίες ενός αντικειμένου παιχνιδιού ή μιας συλλογής και επιθυμείτε να τα αλλάξετε όλα: ![GO instances](images/building_blocks/go_instance.png) Αλλάζοντας το αρχείο blueprint, κάθε περίπτωση που χρησιμοποιεί αυτό το αρχείο θα ενημερωθεί αμέσως. ![GO instances updated](images/building_blocks/go_instance2.png) ## Childing game objects Σε ένα αρχείο συλλογής, μπορείτε να δημιουργήσετε ιεραρχίες αντικειμένων παιχνιδιού, έτσι ώστε ένα ή περισσότερα αντικείμενα παιχνιδιού να είναι παιδιά σε ένα αντικείμενο γονικού παιχνιδιού. Απλώς dropping πάνω σε ένα άλλο, το αντικείμενο παιχνιδιού που σύρεται είναι παιδικό κάτω από τον στόχο: ![Childing game objects](images/building_blocks/childing.png) Οι ιεραρχίες γονέα-παιδιού αντικειμένου είναι μια δυναμική σχέση που επηρεάζει τον τρόπο με τον οποίο τα αντικείμενα αντιδρούν σε μετασχηματισμούς. Οποιοσδήποτε μετασχηματισμός (κίνηση, περιστροφή ή κλιμάκωση) που εφαρμόζεται σε ένα αντικείμενο θα εφαρμοστεί με τη σειρά του στα παιδιά του αντικειμένου, τόσο στο πρόγραμμα επεξεργασίας όσο και στο χρόνο εκτέλεσης: ![Child transform](images/building_blocks/child_transform.png) Αντίθετα, οι μεταφράσεις ενός παιδιού γίνονται στον τοπικό χώρο του γονέα. Στο πρόγραμμα επεξεργασίας, μπορείτε να επιλέξετε να επεξεργαστείτε ένα αντικείμενο παιδικού παιχνιδιού στον τοπικό χώρο ή στον παγκόσμιο χώρο επιλέγοντας Edit ▸ World Space (the default) or Edit ▸ Local Space. It is also possible to alter an object’s parent in run-time by sending a `set_parent` message to the object. ```lua local parent = go.get_id("bean") msg.post("child_bean", "set_parent", { parent_id = parent }) ``` Μια κοινή παρανόηση είναι ότι η θέση ενός αντικειμένου παιχνιδιού στην ιεραρχία συλλογής αλλάζει όταν γίνεται μέρος μιας ιεραρχίας γονέα-παιδιού. Ωστόσο, αυτά είναι δύο πολύ διαφορετικά πράγματα. Οι ιεραρχίες γονέα-παιδιού αλλάζουν δυναμικά το γράφημα σκηνής που επιτρέπει στα αντικείμενα να συνδέονται οπτικά μεταξύ τους. Το μόνο πράγμα που υπαγορεύει τη διεύθυνση ενός αντικειμένου παιχνιδιού είναι η θέση του στην ιεραρχία συλλογής. Η διεύθυνση είναι στατική καθ 'όλη τη διάρκεια ζωής του αντικειμένου.