T4M插件放入unity后怎么找不到_[我花2个月做了叙事短篇游戏]我是怎么做游戏编辑工具的...

本文主要是介绍T4M插件放入unity后怎么找不到_[我花2个月做了叙事短篇游戏]我是怎么做游戏编辑工具的...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

29f7a56e3e38b7f4ecbdae42f2b67096.png

前言

本来应该前两天就会更新这一篇内容的,但是由于去做视频去了,耽搁了两天,虽然视频本身做的质量不算高,但是主要有部分游戏内容展示,大家对游戏感兴趣的可以支持一下呢

【国产剧情像素游戏】史上最惨男主(和编剧没关系!是笔自己动的手)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com
8dc4ed95fa4a1f03aff4af69ddecf275.png

说回正题哈

授人予鱼不如授人以渔

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

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

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

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

共识

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

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

举例:

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

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

这些都是数据。

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

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

这样的好处是:

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

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

扩展Unity的编辑器功能

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

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

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

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

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

它有什么作用呢?

举例:

创建这样的窗口配置界面

1ec703d31c89c3f8c47c21405816e3a1.png

只需要书写基础窗口脚本,继承插件的窗口

021a036ade4ca8e08600c0407e0a711b.png

然后直接定义公有成员,在公有成员类里面直接开始加属性即可。

b285d9c3b4f0944aa7e693fdebb095f8.png

可以毫不留情的说,当你选择一款正确的插件,你的功能耗时直接减少了一半!这个插件的教程功能有自带的窗口演示,非常人性化,各位可以下载下来研究。

575af2b5d4196601966c003e0f3bb8d4.png

想要学习研究的同学,也可以直接看以下链接,很多开发者已经做了攻略,这里我只是再做宣传。

B站的外链视频:

【Unity U3D】Odin - Inspector and Serializer_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com
e9b235c5d42c8bd14cd5bda00d8fc6b8.png

AVG的文本编辑业务功能

因为剧情是线性触发的,这里的业务逻辑实现方式与新手引导特别相似。各位可以看下一小节的配置是由一个一个节点串联而成的

64563da5f9f0b549c2cffa219e80d15f.png

像这样主要为先后顺序,而很少并行表现的业务功能,最后使用协程的方式来实现底层的逻辑更新。

以当前游戏的一个剧情流程举例:

启动一个主体线程后,以章节、段落、事件为点进入配置的具体事件。

2b70e533e98f265a4aa145ecfe911aff.png

具体的事件列表为接口类型,方便扩张不同的节点

8b2992be6742650813d9a06091b43343.png

目前只有两种类型的节点,设置节点与内容节点。

3332021b38f46d3186a347a2c93e8ee4.png

以下是内容节点中的部分代码,各位可以很明显的看到,如果要做延迟、等待等表现性质的工作,很方面在一个代码块中实现。实现逻辑的代码块只需要对配置好的数据做判断处理即可

6c00b8b46311ad5b3f3b80774e52258d.png

同样,表现层的动画时间也能很方便的兼顾到游戏流程中,像通常的实现方式,比如实现我要等到UI层黑屏结束后再执行某个功能,去做事件监听或者循环等待,很容易出现流程混乱的问题(如果你现在正在做相关的功能界面的开发而动画表现又非常的多,我非常建议使用协程这种方式做,万象物语的UI动画能保持高水准同时业务逻辑不乱序,正是使用这种方式)

3cdce86d51d5da7ce76085f095c78e46.png

下面我还是实现我的承诺,共享出这套工具

但是这套工具本身并不是商业化的产品,它缺陷非常的明显,即是业务功能单一。但是优势也特别明显——简单!

工具的简单说明

配置角色立绘

选择Tools-》全局配置-》剧情全局配置

119913f8d9877504547bff0388e999d9.png

72c5e9f4438c1f3577eddac4a6fb86a3.png

在立绘图配置中,备注立绘名字,在立绘文件夹中,将立绘配置到设置位置上

2c2c1af4c8def499e1ca01920a187cc1.png

当立绘配置绑定成功后,为了方便剧编功能调用,我们需要做好“关键字”存储立绘的显示功能。

选择事件配置-》CharaMap

名称

CH01_L表示一号角色左侧显示的缩写名称(当然,也可以自定义成其他的)

属性介绍

  • 提示Key:将关键字事件与立绘绑定
  • 位置:在剧情对话中显示的位置
  • 图片效果:目前只有显示和压暗两种

5dead153397440d05dafccd31d6fe0aa.png

剧情片段配置

选择Tools-》NovelsEditor打开剧情片段编辑器

74101a8f9f9ac7cfa7a32e28fa773537.png

542091e372346cb8fab11d27c1683711.png

点击添加事件场景后,选择添加好的场景可以开始配置剧情界面。

点击右上角的"+"号,创建两种类型的节点

  • NovelsNodeData:剧情内容节点,主要配置角色对话、显示黑幕字幕、透明字幕等功能
  • SetNodeData:属性修改节点,主要载入场景、播放BGM、等待触发事件的响应等

92a1cfe072947309a4edb35719f0316e.png

添加一个SetNodeData节点,选择SetData的输入框,可以看到下拉的所有设置功能

主要的功能节点介绍:

  • AudioSet:设置BGM或音效
  • Delay:延迟时间
  • LoadScene: 加载剧情场景(选择预制好的场景进行加载)
  • LeaveScene:离开当前场景(销毁当前加载的剧情场景)

eb57410bf3a82403190ac6986f6c4adc.png

添加一个NovelsNodeData节点,在Contents栏点击“+”号

出现内容节点类型

BlackScreenContent:黑屏文本提示框

DialogueContent:对话内容文本框

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

PopupContent:弹窗文本(未实现)

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

423bcb211f96b844d9d292bca4fa3574.png

5d8278e97473fb9b73271b4a418212c4.png

DialogueContent内容说明

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

显示内容项

  • 显示:设置显示的立绘角色
  • 表情设置:显示角色的表情
  • 关闭显示:打开这段对话时,要关掉的角色位置
  • 内容文本:对话内容(后续做多语言需要修改该块)

b4272352b9b9f043ac8cf6f45921cc42.png

文本设置项

  • 字体出现效果:决定字体是浮入还是步入
  • 效果时间:设置为0的话读取的是全局配置中的步入时间,不为0时,使用当前设置的每个字出现时间。
  • 离开等待时间:当前对话框需要延迟X秒后进入下一个节点

7f8c473ff76ec4b45a1685f7133c2a6a.png

功能设置

  • 对话框类型:设置当前聊天内容的对话底框颜色。一般分为对话、和心理两种
  • 换行显示:自动换行的勾选,当勾选时,新的文本会自动换到下一行
  • 点击下一步:点击屏幕后才会进行下一段对话
  • 清理文本:打开该段对话时,上一段内容是否清理
  • 结束后关闭对话:用于最后一段对话,勾选后,点击下一步会关闭对话框。

d4577119ce1cb66859794bba868d539a.png

Timeline中设置剧情对话

添加Playable轨道,这个轨道为项目中自定义的脚本代码播放轨道

bb1e11b51e930c15ae0be2782cd75385.png

在创建好的Playable轨道点击右键创建剧情触发片段

fdc2c6c9b487d1635c8f1019c23685d0.png

选择剧情触发片段,可以看到起配置方式与剧编配置中的对话配置相同

工程地址:

Unity版本2019.3.2f1

https://github.com/chs71371/NovelsEditor​github.com

另外我想问下有成都的小伙伴嘛?在我最开始从业的时候,有位前辈对我说:好人得抱团,嗯,如果你也对游戏创造或者其他泛娱乐有兴趣(只是同好会哈,我们这帮混蛋还会组织桌游跑团)可以私信我哈。

这篇关于T4M插件放入unity后怎么找不到_[我花2个月做了叙事短篇游戏]我是怎么做游戏编辑工具的...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/weixin_39540178/article/details/110244016
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/330883

相关文章

Python使用FFmpeg实现高效音频格式转换工具

《Python使用FFmpeg实现高效音频格式转换工具》在数字音频处理领域,音频格式转换是一项基础但至关重要的功能,本文主要为大家介绍了Python如何使用FFmpeg实现强大功能的图形化音频转换工具... 目录概述功能详解软件效果展示主界面布局转换过程截图完成提示开发步骤详解1. 环境准备2. 项目功能结

Linux系统之stress-ng测压工具的使用

《Linux系统之stress-ng测压工具的使用》:本文主要介绍Linux系统之stress-ng测压工具的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、理论1.stress工具简介与安装2.语法及参数3.具体安装二、实验1.运行8 cpu, 4 fo

Maven项目中集成数据库文档生成工具的操作步骤

《Maven项目中集成数据库文档生成工具的操作步骤》在Maven项目中,可以通过集成数据库文档生成工具来自动生成数据库文档,本文为大家整理了使用screw-maven-plugin(推荐)的完... 目录1. 添加插件配置到 pom.XML2. 配置数据库信息3. 执行生成命令4. 高级配置选项5. 注意事

Python使用pynput模拟实现键盘自动输入工具

《Python使用pynput模拟实现键盘自动输入工具》在日常办公和软件开发中,我们经常需要处理大量重复的文本输入工作,所以本文就来和大家介绍一款使用Python的PyQt5库结合pynput键盘控制... 目录概述:当自动化遇上可视化功能全景图核心功能矩阵技术栈深度效果展示使用教程四步操作指南核心代码解析

如何基于Python开发一个微信自动化工具

《如何基于Python开发一个微信自动化工具》在当今数字化办公场景中,自动化工具已成为提升工作效率的利器,本文将深入剖析一个基于Python的微信自动化工具开发全过程,有需要的小伙伴可以了解下... 目录概述功能全景1. 核心功能模块2. 特色功能效果展示1. 主界面概览2. 定时任务配置3. 操作日志演示

Mac备忘录怎么导出/备份和云同步? Mac备忘录使用技巧

《Mac备忘录怎么导出/备份和云同步?Mac备忘录使用技巧》备忘录作为iOS里简单而又不可或缺的一个系统应用,上手容易,可以满足我们日常生活中各种记录的需求,今天我们就来看看Mac备忘录的导出、... 「备忘录」是 MAC 上的一款常用应用,它可以帮助我们捕捉灵感、记录待办事项或保存重要信息。为了便于在不同

使用Python和Tkinter实现html标签去除工具

《使用Python和Tkinter实现html标签去除工具》本文介绍用Python和Tkinter开发的HTML标签去除工具,支持去除HTML标签、转义实体并输出纯文本,提供图形界面操作及复制功能,需... 目录html 标签去除工具功能介绍创作过程1. 技术选型2. 核心实现逻辑3. 用户体验增强如何运行

Python使用Turtle实现精确计时工具

《Python使用Turtle实现精确计时工具》这篇文章主要为大家详细介绍了Python如何使用Turtle实现精确计时工具,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... 目录功能特点使用方法程序架构设计代码详解窗口和画笔创建时间和状态显示更新计时器控制逻辑计时器重置功能事件

IDEA下"File is read-only"可能原因分析及"找不到或无法加载主类"的问题

《IDEA下Fileisread-only可能原因分析及找不到或无法加载主类的问题》:本文主要介绍IDEA下Fileisread-only可能原因分析及找不到或无法加载主类的问题,具有很好的参... 目录1.File is read-only”可能原因2.“找不到或无法加载主类”问题的解决总结1.File

利用Python实现Excel文件智能合并工具

《利用Python实现Excel文件智能合并工具》有时候,我们需要将多个Excel文件按照特定顺序合并成一个文件,这样可以更方便地进行后续的数据处理和分析,下面我们看看如何使用Python实现Exce... 目录运行结果为什么需要这个工具技术实现工具的核心功能代码解析使用示例工具优化与扩展有时候,我们需要将