C# API differences to GDScript¶
This is a (incomplete) list of API differences between C# and GDScript.
General differences¶
As explained in the C# basics, C# generally uses PascalCase
instead
of the snake_case
used in GDScript and C++.
Global scope¶
Global functions and some constants had to be moved to classes, since C# does not allow declaring them in namespaces. Most global constants were moved to their own enums.
Constants¶
In C#, only primitive types can be constant. For example, the TAU
constant
is replaced by the Mathf.Tau
constant, but the Vector2.RIGHT
constant
is replaced by the Vector2.Right
read-only property. This behaves similarly
to a constant, but can't be used in some contexts like switch
statements.
Global enum constants were moved to their own enums.
For example, ERR_*
constants were moved to the Error
enum.
Special cases:
GDScript |
C# |
---|---|
|
|
|
|
Math functions¶
Math global functions, like abs
, acos
, asin
, atan
and atan2
, are
located under Mathf
as Abs
, Acos
, Asin
, Atan
and Atan2
.
The PI
constant can be found as Mathf.Pi
.
C# also provides static System.Math and System.MathF classes that may contain other useful mathematical operations.
Random functions¶
Random global functions, like rand_range
and rand_seed
, are located under GD
.
Example: GD.RandRange
and GD.RandSeed
.
Consider using System.Random or, if you need cryptographically strong randomness, System.Security.Cryptography.RandomNumberGenerator.
Other functions¶
Many other global functions like print
and var_to_str
are located under GD
.
Example: GD.Print
and GD.VarToStr
.
Exceptions:
GDScript |
C# |
---|---|
|
|
|
|
|
|
|
|
Tips¶
Sometimes it can be useful to use the using static
directive. This directive allows
to access the members and nested types of a class without specifying the class name.
Example:
using static Godot.GD;
public class Test
{
static Test()
{
Print("Hello"); // Instead of GD.Print("Hello");
}
}
Full list of equivalences¶
List of Godot's global scope functions and their equivalent in C#:
GDScript |
C# |
---|---|
abs |
Mathf.Abs |
absf |
Mathf.Abs |
absi |
Mathf.Abs |
acos |
Mathf.Acos |
asin |
Mathf.Asin |
atan |
Mathf.Atan |
atan2 |
Mathf.Atan2 |
bezier_derivative |
Mathf.BezierDerivative |
bezier_interpolate |
Mathf.BezierInterpolate |
bytes_to_var |
GD.BytesToVar |
bytes_to_var_with_objects |
GD.BytesToVarWithObjects |
ceil |
Mathf.Ceil |
ceilf |
Mathf.Ceil |
ceili |
Mathf.CeilToInt |
clamp |
Mathf.Clamp |
clampf |
Mathf.Clamp |
clampi |
Mathf.Clamp |
cos |
Mathf.Cos |
cosh |
Mathf.Cosh |
cubic_interpolate |
Mathf.CubicInterpolate |
cubic_interpoalte_angle |
Mathf.CubicInterpolateAngle |
cubic_interpolate_angle_in_time |
Mathf.CubicInterpolateInTime |
cubic_interpolate_in_time |
Mathf.CubicInterpolateAngleInTime |
db_to_linear |
Mathf.DbToLinear |
deg_to_rad |
Mathf.DegToRad |
ease |
Mathf.Ease |
error_string |
Error.ToString |
exp |
Mathf.Exp |
floor |
Mathf.Floor |
floorf |
Mathf.Floor |
floori |
Mathf.FloorToInt |
fmod |
operator % |
fposmod |
Mathf.PosMod |
hash |
GD.Hash |
instance_from_id |
GodotObject.InstanceFromId |
inverse_lerp |
Mathf.InverseLerp |
is_equal_approx |
Mathf.IsEqualApprox |
is_finite |
Mathf.IsFinite or float.IsFinite or double.IsFinite |
is_inf |
Mathf.IsInf or float.IsInfinity or double.IsInfinity |
is_instance_id_valid |
GodotObject.IsInstanceIdValid |
is_instance_valid |
GodotObject.IsInstanceValid |
is_nan |
Mathf.IsNaN or float.IsNaN or double.IsNaN |
is_same |
operator == or object.ReferenceEquals |
is_zero_approx |
Mathf.IsZeroApprox |
lerp |
Mathf.Lerp |
lerp_angle |
Mathf.LerpAngle |
lerpf |
Mathf.Lerp |
linear_to_db |
Mathf.LinearToDb |
log |
Mathf.Log |
max |
Mathf.Max |
maxf |
Mathf.Max |
maxi |
Mathf.Max |
min |
Mathf.Min |
minf |
Mathf.Min |
mini |
Mathf.Min |
move_toward |
Mathf.MoveToward |
nearest_po2 |
Mathf.NearestPo2 |
pingpong |
Mathf.PingPong |
posmod |
Mathf.PosMod |
pow |
Mathf.Pow |
GD.Print |
|
print_rich |
GD.PrintRich |