Godot Swift is a Swift Package Manager plugin that builds and packages Swift projects as Godot Native libraries.
final
class MySwiftClass:Godot.NativeScript
{
var foo:Int = 5
init(delegate _:Godot.Unmanaged.Spatial)
{
}
func bar(delegate _:Godot.Unmanaged.Spatial, x:Int) -> Int
{
self.foo * x
}
@Interface
static var interface:Interface
{
Interface.properties
{
\.foo <- "foo"
}
Interface.methods
{
bar(delegate:x:) <- "bar"
}
}
}
extension Godot.Library
{
@Interface
static var interface:Interface
{
MySwiftClass.self <- "MyExportedSwiftClass"
}
}
Godot Swift uses the experimental Swift package plugins feature, which is currently only available in recent nightly Swift toolchains. Because this feature is in active development, we strongly recommend using the following Swift toolchain version to avoid compilation issues:
DEVELOPMENT-SNAPSHOT-2021-06-01-a
We recommend using swiftenv
to manage multiple Swift toolchain installations. You can install a custom toolchain using swiftenv
by passing the swiftenv install
command the url of the toolchain on swift.org.
For example, to install the 2021-06-01-a
snapshot on Ubuntu 20.04 x86_64, run:
swiftenv install \
https://swift.org/builds/development/ubuntu2004/swift-DEVELOPMENT-SNAPSHOT-2021-06-01-a/swift-DEVELOPMENT-SNAPSHOT-2021-06-01-a-ubuntu20.04.tar.gz
Godot Swift builds native libraries for Godot 3.3.0.
Warning: Although Godot Swift libraries should be compatible with later Godot versions, we strongly recommend using Godot 3.3.0 to avoid unrecognized-symbol errors at runtime.
To use Godot Swift in a project, add it as a dependency in Package.swift
, and add the GodotNative
module and the GodotNativeScript
plugin to your build target.
// swift-tools-version:5.5
import PackageDescription
let package = Package(
name: "example",
products:
[
.library(name: "godot-swift-example", type: .dynamic,
targets:
[
"GodotSwiftExample"
])
],
dependencies:
[
.package(url: "https://github.com/kelvin13/godot-swift/", .branch("master"))
],
targets:
[
.target(name: "GodotSwiftExample",
dependencies:
[
.product(name: "GodotNative", package: "godot-swift")
],
plugins:
[
.plugin(name: "GodotNativeScript", package: "godot-swift")
])
]
)