楼主: dasasdhba

[讨论] 【Godot】Mario Forever Berry Editor 工程记录帖

[复制链接]

37

主题

725

回帖

13

精华

版主

经验
7376
硬币
1159 枚

赞助用户永吧十五周年建吧日纪念勋章永吧十五周年倒计时海报勋章第五届MW杯亚军对不起,小姐盲猜大王数字君X68数字君X68数字君X78

 楼主| 发表于 2023-7-29 01:22:09 来自手机 | 显示全部楼层
修了 Overlap2D 相关的 bug,调整大部分 _EnterTree() 中的内容为 event TreeEntered += xxx,这样就不需要 override _EnterTree,灵活一点。
之前写的 StateMachine 跟 Node._Process(delta) 相性不太好,正在考虑改为基于 delegate 的形式。
也在考虑后续怎么快速为各种 spawner 生成 godot 编辑器可用的 packedscene 资源,一个一个自行打包实为繁琐。目前的一个不成熟想法是为特定 cs 文件指定同文件名的 json 文件,开发编辑器扩展来处理这些 json 文件并自动生成 packedscene 资源。不过最好能不做成自动生成,毕竟有时候难免需要基于自动生成的结果做一些进一步的工作。
说到这个还有个问题是,我 spawner 是计划做成一系列泛型类,但要想以脚本形式给一个 godot 编辑器节点加脚本,这个脚本文件的文件名必须和其里面希望被加到节点的类名一致。这很讨厌,比如我做了一个 troopaspawner<T> where T : troopa,那要想在编辑器上用我还得 greentroopa redtroopa 等等都给它单独整个 cs 文件,简直。所以更好的想法是直接针对这些泛型 spawner 写生成配置,直接把这些个形式上的 cs 文件和 packedscene 都搞好才比较方便。
Moonstruck Blossom
个人网站:dasasdhba.github.io

37

主题

725

回帖

13

精华

版主

经验
7376
硬币
1159 枚

赞助用户永吧十五周年建吧日纪念勋章永吧十五周年倒计时海报勋章第五届MW杯亚军对不起,小姐盲猜大王数字君X68数字君X68数字君X78

 楼主| 发表于 2023-7-30 19:26:26 来自手机 | 显示全部楼层
现在卡在了 StateMachine 设计方面,感觉无论如何设计都与 Godot 的节点树 process 模式有些冲突。如果要想用 delegate 绑特定的 process 函数,那基本上需要等实例化之后才行,换言之我得全塞到构造函数里面去。不然的话就得绑静态函数,这样的话需要把实例本身也作为参数传进来,但这样一方面麻烦不说另一方面还要求绑的函数必须得是 public,虽然这好像不是什么大事,毕竟像 gdscript 根本就没有这方面的区分。(不过问题是我已经设计了一大堆 protected 方法,有点懒得改了。)
此外,statemachine 这东西本身一般来说还得处理状态开始时,状态结束时,以及两个特定状态之间发生切换时的事情,这就又提出了我该把这些东西放哪的麻烦。
也许我应该直接把 unity C# 那边一些开源的 fsm 直接改改拿来用才对,自己空想也老是想不出什么满意的方案,直接抄得了。
Moonstruck Blossom
个人网站:dasasdhba.github.io

37

主题

725

回帖

13

精华

版主

经验
7376
硬币
1159 枚

赞助用户永吧十五周年建吧日纪念勋章永吧十五周年倒计时海报勋章第五届MW杯亚军对不起,小姐盲猜大王数字君X68数字君X68数字君X78

 楼主| 发表于 2023-8-1 23:10:40 来自手机 | 显示全部楼层
完成马里奥运动(移动跳跃游泳走单格修正),不过仅限运动,音效动画啥也没加,之后再弄。下蹲卡墙等方面的修正还在考虑如何处理较为合适,至少目前的 StateMachine 模式可以很方便地让我切一个 State 完成这事,倒也无妨。
Moonstruck Blossom
个人网站:dasasdhba.github.io

37

主题

725

回帖

13

精华

版主

经验
7376
硬币
1159 枚

赞助用户永吧十五周年建吧日纪念勋章永吧十五周年倒计时海报勋章第五届MW杯亚军对不起,小姐盲猜大王数字君X68数字君X68数字君X78

 楼主| 发表于 2023-8-3 01:12:19 来自手机 | 显示全部楼层
过段时间可以考虑先放到 git 上了,毕竟有个版本控制还是方便得多,到时候可能开个新帖,不过名字我还是没想好(
这几天完善了一些 entity 类的设计,顺便也在考虑 sprite 这方面怎么处理比较合适。如果说有那种不同的类需要互相访问 sprite 相关数据的需求,那就有必要统一一下开发规范。比如敌人死亡一般都需要把 sprite 相关数据传给尸体对象,这些东西肯定更希望用类似于 enemy 抽象类去完成,那么在抽象类里边就有必要规定 sprite 的处理方式。
Moonstruck Blossom
个人网站:dasasdhba.github.io
您需要登录后才可以回帖 登录 | 创建账户

本版积分规则