最近迷上了类《吸血鬼幸存者》的割草游戏,所以打算 抄 借鉴一下。
思来想去最后决定用brotato同款游戏引擎开发( 一个就用国外的开源游戏引擎godot4 beta3)
新人上手自然要踩坑,但是我踩过的你们就别再掉进去了,这一篇会随着的我学习过程不断更新的。
获取游戏窗口大小 godot4
DisplayServer.window_get_size()
sprite的宽高
sprite.texture.get_height()
创建实例 godot4
@onready var _enemy_sc = load("res://scene/enemy_base.tscn")
_enemy_sc.instantiate()
shader
godot3 - godot4
hint_color -> source_color
代码获取和设置shader参数
aniSprite.material.set_shader_parameter("progress",value)
多个实例公用一个材质,想单独改变其中一个的shader变量,可以复制一个材质
方法一:
var mat = aniSprite.get_material().duplicate()
aniSprite.set_material(mat)
aniSprite.get_material().set_shader_parameter("progress",0.0)
方法二:
设置materail的local to scene
单例
必须继承节点类 例如 Node2d,不然会在运行时报空
在每个主场景加载的时候会自动加载,类似单例
EventSingleton 全局单例信号发射中转
eventsingleton 项目设置autoload,然后
##只作为信号的监听,发射。中转站
extends Node
signal On_Get_Point
func event_get_point():
emit_signal("On_Get_Point")
EventSingleton.connect("On_Get_Point", _On_Get_Point)
EventSingleton.emit_signal("On_Get_Point")
godot3 ->godot4
onready ->@onready
tool -> @tool
export -> @export
Godot4 beta3
实现了alt多行选择
collisionshape 新增debug color
load里面的路径和获取节点的路径都可以直接从左边资源目录、节点名录里拖过来。
Save和Load 存档
godot4
func save(content):
var file = FileAccess.open("user://save_game.dat", FileAccess.WRITE)
file.store_string(content)
func load():
var file = FileAccess.open("user://save_game.dat", FileAccess.READ)
var content = file.get_as_text()
return content
godot3应该是 File.open
加载json
var file = FileAccess.open("res://config/ability.json", FileAccess.READ) Abilities = JSON.parse_string(file.get_as_text()) for item in Abilities: print(item.name)
用字符串调用函数,且可以传参数
call("funcname"[,param1 ...])
call_derred
callv