في هذه المقالة ، سوف نناقش إنشاء مكون المخزون وربطه بالممثل المطلوب. نظرًا لأن هذا المكون هو ببساطة مستودع للكائنات ومنطق تحميلها / تفريغها ، فلا يوجد فرق في تطبيقه على شخصية أو نوع من الصناديق.
يمكنك إنشاء مكون باستخدام كل من Blueprint و C ++ . أفضل الطريقة الثانية ، لأنني سأستخدم وظيفة C ++ بنشاط.
بادئ ذي بدء ، نقوم بإنشاء بنية خلية لتخزين عنصر واحد. أفضل تخزينه في ملف .h منفصل من أجل الاتصال بحرية عند الضرورة:
نعم ، تحتوي خلية المخزون لدينا على 3 متغيرات فقط: المعرف والكمية والمعلمات الفريدة. لا أكثر. يمكن نسخ جميع البيانات وحفظها وتنزيلها دون أي مشاكل. لا مواد ، إشارات إلى الممثلين ، إلخ. ليس هنا. يمكن تنزيل جميع المعلومات الإضافية من قاعدة البيانات على DataAsset ، التي تحدثنا عنها سابقًا.
على الأرجح ، لقد لاحظت بالفعل بنية StructItemFactors.h أخرى ، متصلة في البداية. هذا ليس أكثر من مستودع لأية خصائص فريدة للجسم (على شكل عوامة ) ، مثل البلى ، التلف ، إلخ. بمعنى ، الخصائص المتأصلة فقط في هذه النسخة من الموضوع ، ولا يوجد أي شيء آخر هو نفسه. هذه البنية بسيطة للغاية:
تجدر الإشارة إلى وظيفة واحدة مثيرة للاهتمام للغاية في الهيكل أعلاه ، والتي تم تصميمها لتبسيط حياتنا بشكل كبير:
friend bool operator==(const FItemFactor & Lhs, const FItemFactor & Rhs) { return Lhs.ItemFactorTag == Rhs.ItemFactorTag && Lhs.ItemFactor == Rhs.ItemFactor; }
هذا ليس أكثر من عامل مقارنة == ، والذي يمكننا استخدامه لهذه البنية حتى لا يتم استخراج العناصر لهذا في كل مرة. مريح للغاية.
لذلك ، مع الانتهاء من الهياكل. ننتقل إلى إنشاء المكون:
DreampaxContainerComponent.h إذا كان في الكود أعلاه قم بتفعيل الخط
UCLASS( ClassGroup=(Custom), meta=(BlueprintSpawnableComponent) )
ثم يمكنك توصيل هذا المكون مباشرة بمخطط . أفضل القيام بذلك في C ++ . بالنسبة للشخصية ، يبدو كما يلي:
Inventory = CreateDefaultSubobject<UDreampaxContainerComponent>(TEXT("Inventory"));
حسنًا ، لصدر مثل هذا:
ADreampaxActorContainer::ADreampaxActorContainer(const FObjectInitializer& ObjectInitializer) : Super(ObjectInitializer) { Container = CreateDefaultSubobject<UDreampaxContainerComponent>(TEXT("Container")); }
كما ترون ، الفرق هو فقط في أسماء المتغيرات.
في المقالة التالية سأتحدث عن ميزات النسخ المتماثل (بسيطة على الأصابع ) ، والتي ستجعل مخزوننا متعدد اللاعبين حقًا.