(摘) Godot 自定义类 2024年3月14日    godot 多此一举的部份,只是为了举例 extends Node class_name ease_timer var timer :int = 0 ## 定时秒 var timerTask var obj signal timer_stop func _init(set_obj :SceneTree, set_timer :int) -> void: timer = set_timer obj = set_obj func start(): timerTask = obj.create_timer(timer) await timerTask.timeout … ...
(摘) Godot状态鸡(状态机) 2024年3月14日    状态机 godot 状态鸡就是 处理对象状态的机器。目的还是简化大型程序,分而治之。避免“史山代码”。 管理机(StateMachine) 顾名思义,即进行状态的管理。其实这里的代码就只是把初始状态传入(_ready中),一些对象(管理机自己)传入。 然后将各事件传给各状态(handle_input/update/physics_update)。定义一个切换状态的函数(transition_to) 看起来没进行啥真正的管理。各个状态都在它之下进行切换。新添加其它状态也一样。 ...
(码) Godot实现Web上传与下载 2024年3月11日    godot 上传 下载 Godot中也会遇到上传或下载文件的时候,比如下载资源包,上传队友的语音文件等。 这里使用了 HTTPClient 低级节点,从低层一步步实现上传下载 下载代码 此代码含项目中的个别内容,需自行删除 ...
(摘) Godot录音并转换为mp3/ogg 2024年3月10日    godot 录音 ogg mp3 UI很简单,两个节点:AudioStreamPlayer用于录音,Button用于开始/结束录音。 注意 项目设置必须 音频-驱动-启动输入,启用它,否则你得到的是空的音频文件。(在这上面折腾好久) ...
(摘) Godot 三十行代码实现多人游戏 2024年3月8日    多人 godot 看看别人的写的简单多人游戏代码 B站视频 B站上还有一个E文的无语音视频,似乎更简单,也可以借鉴理解。 希望更简单的,可以直接跳到第二个示例 示例1 主场景 代码并不复杂 MainScene关联代码 extends Node2D @onready var players: Node = $Players @onready var camera : Camera2D = $Camera2D const PLAYER = preload("res://player.tscn") var peer = ENetMultiplayerPeer.new() ## 创建服务器 func … ...
(原) 学习传奇游戏复刻记录 2024年3月8日    传奇 跟着网友教程,使用Godot复刻传奇游戏。 Github 我个人自动克隆的项目,每4小时自动一次。 他的官方网址 B站课程更新中 为了简单(懒),并没有按教程一步步搭建环境,毕竟那不是重点,利用现在有的PVE开一个Ubuntu即可,何况各端都可以导出Win程序。 为了更简单(更懒),尽可以减少每次Github新代码后的修改,于是: ...
(摘) Godot的多线程 2024年3月5日    godot 线程 Godot需要学习的几个点:网络、线程、着色器 线程安全的API 官方文档 使用多线程 官方文档 创建线程 var thread: Thread func _read(): thread = Thread.new() thread.start(_thread_func.bind("Waff")) func _thread_func(user): print("我是一个线程,用户是:",user) func _exit_tree(): thread.wait_to_finish() Mutex 当从不同线程访问一个数据时, 一定要使用 Mutex … ...
(原) 自建Git服务器Gogs,同步Github库 2024年3月5日    gogs git 之前自建了一个Git服务,主要还是个人用。代码不会丢,还可以随便(回)滚。 经常想同步一些Github.com上的项目,今天稍作研究。至少能用了。 先在帐号下建立好库名,然后使用类似以下脚本。可能第一次需要输入你的帐号密码存于系统中。 ...
(摘) Godot加载超大型地图的解决探讨(学习更新中) 2024年3月5日    godot 地图 有网友提出,当地图过大时,会导致加载时间过长,内存占用过大,以及较大的PCK包等问题。于是网上搜搜解决方法。 1 在Github中,有网友的解决方法:将超大地图切分为几个区域,使用条件触发。 也提到几个问题:需要手动的划分区域,且区域之间需要精心设计,以避免玩家看到“空”(未加载)区域。比如扭曲环境,使用“雾”来掩盖。在“两个场景”中切换时会更麻烦。 ...
(原) Godot使用ENetMultiplayerPeer实现的简单聊天室 2024年3月4日    godot enetmultiplayerpeer 聊天 确实是比较简单,创建服务器,加入服务器。连接后,每次都会获取名字和内容。 get_tree().set_multiplayer(SceneMultiplayer.new(),self.get_path()) 啥意思?不用也没啥区别。 peer.get_host().compress(ENetConnection.COMPRESS_RANGE_CODER) 这个有效果吗?估计得人多才能有测试。 为什么要在发送信息时使用 msg_rpc.rpc(my_name.text,send_message.text) ? 执行远程客户端上的msg()函数,并附带上当前的姓名和消息内容。 ...