مستندات · أمثلة · الخلاف
Flecs.net هو غلاف عالي المستوى لـ Flecs. يتم تضمين الارتباطات ذات المستوى المنخفض إلى API C وتوليدها باستخدام Bindgen.net. المكتبات الأصلية متداخلة مع مجموعات أدوات Vezel-Dev.
// Copy, paste, and run in a .NET project!
using Flecs . NET . Core ;
using World ecs = World . Create ( ) ;
Entity entity = ecs . Entity ( )
. Set ( new Position ( 10 , 20 ) )
. Set ( new Velocity ( 1 , 2 ) ) ;
ecs . Each ( ( ref Position p , ref Velocity v ) =>
{
p . X += v . X ;
p . Y += v . Y ;
} ) ;
public record struct Position ( float X , float Y ) ;
public record struct Velocity ( float X , float Y ) ; Flecs.net - منفذ C# عالي المستوى من C ++ غلاف
flecs.net.bindings - روابط منخفضة المستوى من C API
Flecs.net.native - المكتبات الأصلية المسبقة
يمكنك تنزيل حزمة nuget واستخدام flecs.net على الفور!
flecs.net (Wrapper + Bindings + المكتبات الأصلية): الإصدار | تصحيح
dotnet add PROJECT package Flecs.NET.Release --version *-*flecs.net.bindings (Bindings + المكتبات الأصلية): الإصدار | تصحيح
dotnet add PROJECT package Flecs.NET.Bindings.Release --version *-*flecs.net.native (المكتبات الأصلية): الإصدار | تصحيح
dotnet add PROJECT package Flecs.NET.Native.Release --version *-*يوفر Flecs.net كل من حزم الإصدار والتصحيح لـ Nuget. يوصى باستخدام حزم التصحيح عند التطوير لأنها تتضمن شيكات للاستخدام غير الصحيح من واجهة برمجة التطبيقات. لتضمين كلاهما في مشروعك بناءً على تكوين البناء الخاص بك ، استخدم مراجع الحزمة أدناه. سيتم إضافة أحدث إصدارات مستقرة أو مسبقة إلى مشروعك.
< Project Sdk = " Microsoft.NET.Sdk " >
< PropertyGroup >
< OutputType >Exe</ OutputType >
< TargetFramework >net8.0</ TargetFramework >
</ PropertyGroup >
< ItemGroup >
< PackageReference Include = " Flecs.NET.Debug " Version = " *-* " Condition = " '$(Configuration)' == 'Debug' " />
< PackageReference Include = " Flecs.NET.Release " Version = " *-* " Condition = " '$(Configuration)' == 'Release' " />
</ ItemGroup >
</ Project > يوفر Flecs.net مكتبات ثابتة مسبقة يمكن استخدامها عند تمكين PublishAOT . لتمكين الربط الثابت ، أضف <FlecsStaticLink>true</FlecsStaticLink> إلى مجموعة خاصية. لمنع نسخ المكتبات المشتركة إلى دليل الإخراج ، أضف ExcludeAssets="native" إلى مرجع الحزمة الخاص بك.
< Project Sdk = " Microsoft.NET.Sdk " >
< PropertyGroup >
< PublishAot >true</ PublishAot >
< FlecsStaticLink >true</ FlecsStaticLink >
</ PropertyGroup >
< ItemGroup >
< PackageReference Include = " Flecs.NET.Debug " Version = " *-* " ExcludeAssets = " native " />
</ ItemGroup >
</ Project >لمزيد من الحزم الحديثة ، تتوفر عمليات تطوير التطوير في سجل حزمة Github. يتم تحميل الحزم تلقائيًا على كل التزام بالفرع الرئيسي.
للوصول إلى بناء تطوير من مشروعك ، تحتاج أولاً إلى إنشاء رمز الوصول الشخصي github مع إذن read:packages . (انظر إنشاء رمز وصول شخصي (كلاسيكي))
بمجرد إنشاء رمز وصول شخصي ، قم بتشغيل الأمر التالي لإضافة خلاصة GitHub كمصدر جديد للحزمة. استبدل YOUR_GITHUB_USERNAME باسم مستخدم github الخاص بك و YOUR_GITHUB_TOKEN مع رمز الوصول الشخصي الخاص بك.
dotnet nuget add source --name " flecs.net " --username " YOUR_GITHUB_USERNAME " --password " YOUR_GITHUB_TOKEN " --store-password-in-clear-text " https://nuget.pkg.github.com/BeanCheeseBurrito/index.json "يمكنك الآن الرجوع إلى أي حزمة من خلاصة جيثب!
dotnet add PROJECT package Flecs.NET.Release --version *-build.* < Project Sdk = " Microsoft.NET.Sdk " >
< PropertyGroup >
< OutputType >Exe</ OutputType >
< TargetFramework >net8.0</ TargetFramework >
</ PropertyGroup >
< ItemGroup >
< PackageReference Include = " Flecs.NET.Debug " Version = " *-build.* " />
</ ItemGroup >
</ Project > بشكل افتراضي ، ستتم إضافة خلاصة Github إلى ملف nuget.config العالمي ويمكن الرجوع إليه من قبل أي مشروع على جهازك. إذا كنت ترغب في إضافة التغذية إلى مشروع/حل واحد ، قم بإنشاء ملف nuget.config بجذر دليل المشروع/الحل الخاص بك وقم بتشغيل الأمر التالي مع خيار --configfile .
dotnet nuget add source --configfile " ./nuget.config " --name " flecs.net " --username " YOUR_GITHUB_USERNAME " --password " YOUR_GITHUB_TOKEN " --store-password-in-clear-text " https://nuget.pkg.github.com/BeanCheeseBurrito/index.json "لإزالة تغذية GitHub من مصادر حزمة Nuget ، قم بتشغيل الأمر التالي.
dotnet nuget remove source " flecs.net " يمكن مصادقة مهام سير عمل إجراءات GitHub باستخدام سر GITHUB_TOKEN .
- name : Add GitHub source
run : dotnet nuget add source --name "flecs.net" --username "USERNAME" --password "${{ secrets.GITHUB_TOKEN }}" --store-password-in-clear-text "https://nuget.pkg.github.com/BeanCheeseBurrito/index.json" تحذير
قد يتم حذف حزم تغذية التنمية دون سابق إنذار لتحرير المساحة.
لتشغيل أي من برامج المثال ، استخدم dotnet run وقم بتعيين خاصية "مثال" على مسار المثال بالنسبة لمشروع Flecs.NET.Examples . يجب فصل كل مستوى من المسار عن طريق السطحي.
مثال :
dotnet run --project src/Flecs.NET.Examples --property:Example=Entities_Basics استنساخ الريبو وهو علامات فرعية.
git clone --recursive https://github.com/BeanCheeseBurrito/Flecs.NET.git
cd Flecs.NETقم بتشغيل الأمر التالي على الحل لاستعادة جميع تبعيات المشروع.
dotnet restoreتجميع المكتبات والمكتبات الأصلية. سيتم تنزيل برنامج التحويل البرمجي التلقائي وتخزينه مؤقتًا في مجلد حزمة Nuget المحلي. سيتم تنسيق المكتبات الأصلية لـ Linux و MacOs و Windows.
dotnet buildالرجوع إلى المشروع واستيراد المكتبات الأصلية. يجب أن تكون قادرًا الآن على استخدام flecs.net من مشروعك.
< Project Sdk = " Microsoft.NET.Sdk " >
< PropertyGroup >
< OutputType >Exe</ OutputType >
< TargetFramework >net8.0</ TargetFramework >
</ PropertyGroup >
< ItemGroup >
< ProjectReference Include = " PATH/Flecs.NET/src/Flecs.NET/Flecs.NET.csproj " />
</ ItemGroup >
</ Project >يتم إنشاء روابط منخفضة المستوى إلى FLECS C API مسبقًا وتضمينها في مشروع FLECS.NET.Bindings افتراضيًا. إذا لزم الأمر ، يمكنك تشغيل الأمر التالي لتجديد ملف الارتباط.
dotnet run --project src/Flecs.NET.Bindgenتعتمد Flecs.net على توليد الكود لتجنب ازدواج الرمز اليدوي. إذا تم إجراء أي تغييرات على مشروع FLECS.NET.CODEGEN ، فيمكنك تشغيل الأمر التالي لإعادة تشغيل مولدات التعليمات البرمجية. سيتم إخراج الملفات التي تم إنشاؤها إلى هذا المجلد.
dotnet run --project src/Flecs.NET.Codegen لا تتردد في فتح مشكلة أو سحب. جميع المساهمات موضع ترحيب!
طرق للمساهمة: