Godot-Mono: Difference between revisions
→Configuring VSCode Editor for Godot-Mono (C#): Current working solution for Godot C# |
→Configure Godot 4 for External VSCode Integration: codium does not work for C# extension, but be Microsoft VSCode unfortunately. |
||
Line 63: | Line 63: | ||
* Set '''Dotnet''' -> '''Editor''' -> '''External Editor''' to '''Visual Studio Code'''. | * Set '''Dotnet''' -> '''Editor''' -> '''External Editor''' to '''Visual Studio Code'''. | ||
====== Configure Godot 4 | ====== Configure VSCode as External Editor in Godot 4 ====== | ||
Click '''Editor''' [top menu] -> '''Editor Settings''' [menu item] -> '''General''' [Tab] -> '''Text Editor''' [Category] -> '''External''' [Sub-Category]: | Click '''Editor''' [top menu] -> '''Editor Settings''' [menu item] -> '''General''' [Tab] -> '''Text Editor''' [Category] -> '''External''' [Sub-Category]: | ||
* '''Exec Path''' -> Add the output of <code>which | * '''Exec Path''' -> Add the output of <code>which code</code>, on my case would be: <code>/etc/profiles/per-user/REPLACE-USERNAME/bin/code</code> | ||
* '''Exec Flags''' -> <code>{project} --goto {file}:{line}:{col}</code> | * '''Exec Flags''' -> <code>{project} --goto {file}:{line}:{col}</code> | ||
* '''Use External Editor''' -> <code>On</code> | * '''Use External Editor''' -> <code>On</code> |
Revision as of 19:21, 12 April 2025
Godot-Mono is Godot's game engine supporting C# language for creating both 2D and 3D games.
Installation
Add pkgs.godot-mono
(GDScript + C#) to environment.systemPackages
.
Export Templates
On Godot upgrade, the new export template version can be automatically provisioned this way:
home.file.".local/share/godot/export_templates/${builtins.replaceStrings [ "-" ] [ "." ] pkgs.godot-mono_4-export-templates.version}".source = pkgs.godot-mono_4-export-templates;
Note: `pkgs.godot-mono_4-export-templates` package is still pending in nixpkgs.
Configuring VSCode Editor for Godot-Mono (C#)
As Godot editor has poor support for C#, VSCode editor is recommended.
You can install and configure VSCode as such:
programs.vscode = { enable = true; # `pkgs.vscodium` is unsupported by "C# Dev Kit" VSCode extension which demands Microsoft license compliance. package = pkgs.vscode; profiles.default = { "csharp.toolsDotnetPath" = "${pkgs.dotnet-sdk_9}/bin/dotnet"; "dotnetAcquisitionExtension.sharedExistingDotnetPath" = "${pkgs.dotnet-sdk_9}/bin/dotnet"; "dotnetAcquisitionExtension.existingDotnetPath" = [ { "extensionId" = "ms-dotnettools.csharp"; "path" = "${pkgs.dotnet-sdk_9}/bin/dotnet"; } { "extensionId" = "ms-dotnettools.csdevkit"; "path" = "${pkgs.dotnet-sdk_9}/bin/dotnet"; } { "extensionId" = "woberg.godot-dotnet-tools"; "path" = "${pkgs.dotnet-sdk_8}/bin/dotnet"; # Godot-Mono uses DotNet8 version. } ]; "godotTools.lsp.serverPort" = 6005; # port should match your Godot configuration "omnisharp" = { # OminiSharp is a custom LSP for C# "path" = "${pkgs.omnisharp-roslyn}/bin/OmniSharp"; "sdkPath" = "${pkgs.dotnet-sdk_9}"; "dotnetPath" = "${pkgs.dotnet-sdk_9}/bin/dotnet"; }; extensions = with pkgs.vscode-extensions; [ geequlim.godot-tools # For Godot GDScript support woberg.godot-dotnet-tools # For Godot C# support ms-dotnettools.csdevkit ms-dotnettools.csharp ms-dotnettools.vscode-dotnet-runtime ]; }; home.packages = [ dotnetCorePackages.dotnet_9.sdk # For Godot-Mono VSCode-Extension CSharp ]; # The proposed solution above requires .Net SDK to be broadly available in the host. # Code is ugly but works. Ideally we should find a better solution to this. # If you wonder why solution got so complex, test VSCode extensions as immutable, # using flag "programs.vscode.mutableExtensionsDir = false". (No external downloads.)
Configure Godot's Editor → Editor Settings menu:
- Set Dotnet -> Editor -> External Editor to Visual Studio Code.
Configure VSCode as External Editor in Godot 4
Click Editor [top menu] -> Editor Settings [menu item] -> General [Tab] -> Text Editor [Category] -> External [Sub-Category]:
- Exec Path -> Add the output of
which code
, on my case would be:/etc/profiles/per-user/REPLACE-USERNAME/bin/code
- Exec Flags ->
{project} --goto {file}:{line}:{col}
- Use External Editor ->
On