Высокоуровневая сеть C# для Godot на основе популярных сетевых решений Unity с открытым исходным кодом Mirror и Mirage.
Видео-демо примера проекта: https://youtu.be/Ty55PZWtsJI
Документацию для Unity-версии Mirage можно найти по адресу https://miragenet.github.io/Mirage/. Большинство тех же концепций применимо и к версии Годо.
git clone [email protected]:James-Frowen/Mirage.Godot.git
src/Mirage.Godot/Scripts
в свой проект Godot..csproj
вашего проекта добавьте ссылку на:Mirage.Logging.csproj
Mirage.SocketLayer.csproj
dotnet build Mirage.CodeGen.csproj -c Release
[-o|--output <OUTPUT_DIRECTORY>]
чтобы облегчить поиск пути< Project Sdk = " Godot.NET.Sdk/4.1.1 " >
...
< Target Name = " PostBuild " AfterTargets = " PostBuildEvent " >
< Exec Command = " path/to/Mirage.CodeGen.exe $(TargetPath) -force " />
< Error Condition = " $(ExitCode) == 1 " />
</ Target >
< Target Name = " PrePublish " BeforeTargets = " Publish " >
< Exec Command = " path/to/Mirage.CodeGen.exe $(PublishDir)$(TargetFileName) $(TargetDir) -force " />
< Error Condition = " $(ExitCode) == 1 " />
</ Target >
</ Project >
Mirage.CodeGen.csproj
в настоящее время использует ссылку на Mirage.Godot.csproj
для поиска типов Mirage, но при запуске будут использоваться типы внутри целевого csproj.
Команды для выполнения описанных выше шагов (замените path/to/project
своим проектом)
git clone [email protected]:James-Frowen/Mirage.Godot.git
cd Mirage.Godot
cp src/Mirage.Godot/Scripts " path/to/project/Mirage.Godot "
dotnet build src/Mirage.Core/Mirage.CodeGen/Mirage.CodeGen.csproj -o ./CodeGen
а затем добавьте цель PostBuild
вручную, указав путь к CodeGen/CodeGen.exe
примечание: вы можете исключить папку src/Mirage.Godot/Scripts/Example1
при сборке, иначе она окажется в dll Mirage.Godot.
Mirage.Godot использует Mono.Cecil для изменения исходного кода C# после его компиляции, что обеспечивает высокую производительность и простоту использования функций.
Для установки добавьте этот код в csproj по умолчанию для проекта godot.
< Target Name = " PostBuild " AfterTargets = " PostBuildEvent " >
< Exec Command = " path/to/Mirage.CodeGen.exe $(TargetPath) -force " />
< Error Condition = " $(ExitCode) == 1 " />
</ Target >
< Target Name = " PrePublish " BeforeTargets = " Publish " >
< Exec Command = " path/to/Mirage.CodeGen.exe $(PublishDir)$(TargetFileName) $(TargetDir) -force " />
< Error Condition = " $(ExitCode) == 1 " />
</ Target >
и измените путь Path/To/Mirage.CodeGen.exe
туда, где вы создали файл Mirage.CodeGen.exe
.
Обратите внимание, что обе цели обязательны:
TargetPath
лучше всего работает в редакторе, чтобы гарантировать, что изменения в коде будут применены перед запуском.PublishDir
необходим, поскольку TargetPath
не является путем, скопированным при экспорте сборки. В примере используются символические ссылки для включения сценариев Mirage.Godot во второй проект.
Чтобы клонировать этот репозиторий с этими символическими ссылками, запустите его от имени администратора:
git clone -c core.symlinks=true [email protected]:James-Frowen/Mirage.Godot.git
При загрузке без символических ссылок (например, из zip-файла) вам нужно будет вручную скопировать (не перемещать) файлы из src/Mirage.Godot/Scripts
в src/Mirage.Godot.Example1/Mirage.Godot
при локальной разработке кода вы можете добавить этот шаг в начало целей PostBuild, чтобы он пересобирал проект кода перед его запуском.
< Exec Command = " dotnet build $(ProjectDir)/../Mirage.Core/Mirage.CodeGen/Mirage.CodeGen.csproj -c Release " />