godot制作割草游戏遇到的各种小白问题记录

发布于:2022-10-15 ⋅ 阅读:(356) ⋅ 点赞:(0)

最近迷上了类《吸血鬼幸存者》的割草游戏,所以打算   借鉴一下。

思来想去最后决定用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