相关文章推荐
飘逸的打火机  ·  java8 ...·  1 年前    · 
大力的饺子  ·  python - ...·  1 年前    · 
踢足球的火腿肠  ·  mysql数据实例 ...·  1 年前    · 

我想过直接将做好的这款工具直接共享出去,然后就写写怎么使用就好了,但是我发现一个事实。

脱离游戏业务逻辑的轮子,别人拿到后其实没有任何参考价值

这也是我没有直接使用现成的视觉小说插件原因,因为要改动起来太麻烦了。

所以下面我将会以如何制作编辑工具为出发点,给大家普及一个游戏重要核心工作,为游戏造自己业务相关的工具轮子。

在开始介绍工具与代码之前,先达成一个共识。

即是无论做何种类型的游戏业务功能,都是要注意逻辑与数据分离的。一款设计良好的框架,均是以数据为驱动。

我们要做角色控制器,实现角色移动的功能

需要先定义数据:是否处于移动状态 移动的朝向 移动的具体速度 是否有加速度缓冲

这些都是数据。

然后实现逻辑功能:检测到移动状态时,让角色播放move动画,当移动速度值发生改变,修改每一帧移动方向上的角色位置大小。

而具体是什么方式检测、通过事件呢?还是通过循环去判定呢?无关紧要,根据实际功能需求来即可。

这样的好处是:

表现的归表现,表现层出现的问题不会影响到实际的数据,也就是即是表现出现了偏差,但是只要你底层数据计算是对的,那就不会出现太严重的灾难。

而编辑器的本质,就是对业务数据的记录。

扩展Unity的编辑器功能

首先你想要自己做编辑器,其实对新手来说最困难一点是,无法制作工具的窗口界面。

因为在过去的Unity版本中,UnityEditor面向过程编辑界面的方式真的非常反人类。很多程序同学都困在我有很好的想法,但是却没地方去写它。

对于这种问题……我只能说。

既然做不到使用原生的UnityAPI,我们可以使用别人的轮子呀!随着游戏引擎的发展,我相信后面对基础需求层面的轮子会越来越多,后续的程序员们更关心的应该是自己想要实现什么的业务功能。

因此,我这里推荐Odin - Inspector and Serializer 这个插件

它有什么作用呢?

创建这样的窗口配置界面

BlackScreenContent:黑屏文本提示框

DialogueContent:对话内容文本框

EventContent:事件内容,主要用作播放当前timeline,设计目的是在内容节点里能更好的修改剧情事件。

PopupContent:弹窗文本(未实现)

SEAudioContent:音效播放,如开门、角色语音播放

DialogueContent内容说明

DialogueContent的功能与BlackContent等内容文本相似,了解了DialogueContent便了解了其他的Content节点

显示内容项

  • 显示:设置显示的立绘角色
  • 表情设置:显示角色的表情
  • 关闭显示:打开这段对话时,要关掉的角色位置
  • 内容文本:对话内容(后续做多语言需要修改该块)
首先先说明一下 , 节点 文本 内容获取方法,如:<root> 文本 内容</root>获取 节点 文本 内容(红色字体部分),假设xmlElement是root 节点 。上面红色字体的 文本 其实是root 节点 的子 节点 ,获取 文本 内容的方法,就是遍历子 节点 ,判断类型是否为 文本 内容。方法如下: for (int i = 0; i < xmlElement.ChildNodes.Count; i... 今天总结一下对 QTreeView 节点 重命名的操作 在 QtreeView 中有一个void eidt(const QModelIndex &index)的槽函数,当你想要对某个 节点 进行重命名操作时,将索引传给该槽函数,该 节点 状态就能变成可 编辑 。 另外如果不是通过右键菜单进行重命名操作,通过双击也能实现相应操作,只需要通过setEditTriggers(EditTriggers triggers)函 3、获取数据时,必须区分当前是否为父 节点 ,只有子 节点 使用index.parent()才有意义,父 节点 使用后返回的数据中row和column均为-1,说明无效。 QTreeView 右键菜单,网上有很多文章分享,但是数据修改, 节点 删除, 节点 增加,整合一起的很少有同学分享。 QtreeView 是ui中最常用的控件,Qt中QTreeWidget比 QTreeView 更简单,但没有 QTreeView 那么灵活(QTreeWidget封装的和MFC的CTreeCtrl很类似,没有mvc的特点)。 1. QStandardItemModel在 QTreeView 中的使用 使用QTree