《Homesickness》6月12日开发日志
与其说这是开发日志,不如说是自己的碎碎念,看的人也许并不能看懂。只能说最近一段时间做了很多无用功,虽然能学到一些技术上的东西,但对于游戏开发进度无济于事。
最近发现Tilemap 里有个GameObject Brush的东西好像很好用,于是想着可以拿他做编辑器开发,但是得基于他的操作方式来做配套工具,于是做了一个批量生成Tile和RuleTile的工具,但是最后发现并不好用而不得不放弃。原因大致如下:
为什么不使用tilePalette中的GameObjectBrush绘制RuleTile生成SceneObj?
1、需要对不同显示层级的Tilemap分层:例如(DefaultEnv < DynamicTile < Character),每次绘制的时候要切换分层,而直接拖拽可以根据prefab类型自动切换显示层级
2、RuleTiles的预览与prefab不一致,有时候prefab的精灵会flipX和flipY来差异化,但RuleTile的sprite不能flip,造成预览和实际展示不一致的问题。
3、Character可以编辑组编号来实现按组移动,RuleTiles不能编辑自定义数据
4、批量生成RuleTile和Tile是否有必要?前面的阐述已经表明,RuleTile来创建Prefab对应的GameObject不如直接拖拽prefab方便,所以生成sceneObj对应的RuleTile已经没必要了。
而精灵批量生成Tile用处不大,可以减少部分工作量,先生成一遍,然后再手动编辑一部分Tile,还有其它不需要的可以删除,所以下次重复生成的不覆盖。但这也导致删除的会再次被生成。所以也很麻烦。建议全部手动制作。
所以说适合自己的才是最好的,官方的东西并不一定好用,基于自己游戏的玩法去创建好用的编辑器,才是正道。同样不是官方的但很优秀的插件也并不一定适合每一个项目,就像前期我使用DoTween来做角色位移,因为Animator的RootMotion移动不够精确,而我是一个走格子游戏,每次位移必须精准到位,否则多次移动就会出现位置偏差。但当我想让两个动画同时显示时DoTween总是优先移动,移动结束后才播放Animator,而且DoTween的连续移动总是会卡顿一段时间,并不连贯。于是我使用了Update()方法来自己创建位移,但之后Animator的Sprite动画会经常卡住,于是我自己实现了Sprite的序列帧动画,然后引入SKFramework中的StateMachine来实现状态机的切换,最后所有卡顿问题得以解决。这个卡顿到底是什么原因导致的我还不清楚,但是作为一个策划,能保证东西跑起来就行了。
等会录制一下这两周的开发内容。