문서 · 예제 · 불화
flecs.net 은 FLEC를위한 고급 포장지입니다. C API에 대한 저수준 바인딩이 포함되어 Bindgen.net과 함께 생성됩니다. 기본 라이브러리는 Vezel-Dev의 Zig Toolsets와 교차 컴파일됩니다.
// 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 (래퍼 + 바인딩 + 기본 라이브러리) : 릴리스 | 디버그
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의 릴리스 및 디버그 패키지를 모두 제공합니다. Debug 패키지는 API의 잘못된 사용에 대한 검사를 포함하므로 개발할 때 사용하는 것이 좋습니다. 빌드 구성을 기반으로 프로젝트에 두 가지를 포함 시키려면 아래 패키지 참조를 사용하십시오. 최신 안정 또는 사전 사전 버전이 프로젝트에 추가됩니다.
< 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> 속성 그룹에 추가하십시오. 공유 라이브러리가 출력 디렉토리에 복사되는 것을 방지하려면 Package Reference에 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 패키지 레지스트리에서 제공됩니다. 패키지는 메인 브랜치에 대한 모든 커밋에 자동으로 업로드됩니다.
프로젝트에서 개발 구축에 액세스하려면 먼저 read:packages 허가를 통해 Github 개인 액세스 토큰을 만들어야합니다. (개인 액세스 토큰 만들기 (클래식) 참조)
개인 액세스 토큰을 만든 후에는 다음 명령을 실행하여 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 "이제 Github 피드에서 모든 패키지를 참조 할 수 있습니다!
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 피드는 Global 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 "Nuget 패키지 소스에서 Github 피드를 제거하려면 다음 명령을 실행하십시오.
dotnet nuget remove source " flecs.net " GitHub Actions 워크 플로우는 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 repo를 복제하면 서브 모듈입니다.
git clone --recursive https://github.com/BeanCheeseBurrito/Flecs.NET.git
cd Flecs.NET모든 프로젝트 종속성을 복원하려면 솔루션에서 다음 명령을 실행하십시오.
dotnet restore래퍼 및 기본 라이브러리를 컴파일하십시오. ZIG 컴파일러는 로컬 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.Bindgenflecs.net은 수동 코드 복제를 피하기 위해 코드 생성에 의존합니다. flecs.net.codegen 프로젝트를 변경하면 다음 명령을 실행하여 코드 생성기를 다시 실행할 수 있습니다. 생성 된 파일 이이 폴더에 출력됩니다.
dotnet run --project src/Flecs.NET.Codegen 문제를 열거 나 요청을 시작하십시오. 모든 기부금을 환영합니다!
기여하는 방법 :