godot2d的一些使用技巧(1)
前言吐槽:不得不说,godot作为一款冷门引擎,可查阅的资料几乎只有godot官网的QA或者reddit、stackoverflow几个网站,贴吧、B站、知乎的资料虽有零散,但有关C#的太少了。
1、godot在windows平台的开发需要两个部分,godot引擎本体和导出模板,mono版和standard版是分开的,只有mono版才能使用C#脚本,导出模板版本需要和引擎版本相同,导出模板包含了所有目标导出平台的模板。
2、使用VS code编辑脚本:在godot的编辑器——编辑器设置——Text Editor——External中,勾选Use External Editor,Exec Path选中VS code的可执行文件(.exe)。
另外,使用vs code的时候要先安装C#插件;使用VS code好处是可以享受内部编辑器没有的代码提示和debug,缺点是每次修改完后godot都会出现报错提示脚本被外部打开。
3、VS code打开脚本无法正常代码提示:VS code——文件——打开文件夹,选择项目的根目录,.sln文件存放在项目根目录中,VS code会自动读取.sln文件,等读取完毕后VS code左下角的OmniSharp Server(火焰图标)会变亮,在它右边会显示当前项目名+.sln。
4、有时VS code的debug功能会出错,可以直接点左下角当前项目名+.sln,VS code上方会出现项目路径,点击后就会重新读取项目,一般出错就会消失,如果还是报错,请检查代码是否有问题。
5、godot的资源读取:
1:.png文件(贴图)
Texture texture = (Texture)GD.Load("res://textures/icon.png");//有时会用替换sprite的图片上
2:.tscn文件(保存为资源的节点或场景)
Node node= GD.Load<PackedScene>("res://prefabs/Enemy.tscn").Instance();
6、保存为资源的节点实例化并添加到某个父节点下:
this.AddChild(GD.Load<PackedScene>("res://prefabs/ExitGameUIController.tscn").Instance());//节点首先要被读取,然后实例化(存在但无法显示),最后成为某个节点的子节点才能显示在场景中
7、信号连接的几种方法:
1:信号不自带参数传递
public override void _Ready()
{
timer = this.GetNode<Timer>("Timer");
timer.Connect("timeout", this, nameof(rebuildenemy));
_loadenemy();
}
private void rebuildenemy()
{
_loadenemy();
}
2:信号自带参数传递,如RigidBody2D的body_entered(body_Node)会传入与本体碰撞的其他碰撞体。
public override void _Ready()
{
GetNode<RigidBody2D>("bulletRigidBody2D").Connect("body_entered",this,nameof(_destroy));
}
private void _destroy(Node node)
{
if (node.Name =="EnemyRigidBody2D")//判断其他碰撞体的名字
{
this.QueueFree();//销毁自己及所有子节点
}
}
暂时写这么多,想到什么能写的话就下次再写。

浙公网安备 33010602011771号