繁体   English   中英

Unity3d 可视化脚本框架如何在幕后工作?

[英]How does a Unity3d visual scripting framework work behind the scene?

我想知道当我在 unity3d 中使用可视化脚本工具时会发生什么。

假设我想制作一个 FSM:

第一种方法是当我不使用这样的工具时。 在这种情况下,我应该在源代码 (C#) 中执行所有操作,这意味着创建所有必要的类并手动连接整个状态机。

第二种方法是当我使用像BoltNodeCanvas这样的工具时。 我仍然需要编写 State 类,但这一次,通过基于节点的图形编辑器以可视方式将它们连接起来。

问题是,这些工具如何将该图转换成 Unity 可以使用的东西? 他们是否使用T4 模板引擎等模板引擎基于图形生成 C# 代码? 或者他们会做其他事情吗?

他们可以生成一些 C# 代码或将图形定义保存到文件中,向您的游戏添加运行时执行引擎并在游戏运行时解释这些引擎。 他们也可能采用混合方法或进行一些性能优化 所以任何一种方式都是可能的,你应该查阅工具的设计文档来确定。

至于Bolt ,开发者官方博客上的这篇文章暗示当前的稳定版本不会生成任何 C# 代码。 但显然该团队正在积极开发支持代码生成的新版本。

我们目前正在积极开发 Bolt 2,这是一个主要的新版本,包括大规模的检修和新功能,例如 C# 生成、类、垂直流、补间、泛型、全新的外观等等。

至于NodeCanvas ,我不确定它是否生成任何 C# 代码,但从资产商店中的包内容来看,它的工作方式与 Bolt 类似。

Unity 有编辑器/播放模式/运行时模式。 在编辑器模式绘图中,您的设计保存在文件中。 一些工具使用自定义格式二进制文件、json 或其他。 例如 LogicForge,使用 Scriptable 对象完全兼容 Unity 依赖和序列化管理。 图形可以在编辑器和/或播放模式中设计。 Logic Forge 两者都支持,因为在播放模式下您可以立即看到您的设计在做什么。 节点可以表示原子功能或复杂组件。 如果可视化工具让您有机会设计自己的节点,也可以可视化并自动创建设计中丢弃的任何 MonoBehaviour 脚本的节点,那就太好了。 节点可以是动态的或静态的,已经编码。 动态节点使用反射来创建函数播放模式/运行时。 它们使用缓存和 IL 创建的委托进行了优化。 更改图形时可以生成代码,但Unity重新编译需要等待很长时间,也可以按要求生成。 工具可以选择压缩设计创建代码和更复杂的设计节点。
Graph asset 可以附加到 GameObject 并随场景加载,或者可以作为资源运行时加载然后实现设计。它们读取序列化数据并在游戏对象上创建组件。

一些工具集成了 FSM,因此您可以根据条件在不同的图形设计/逻辑之间切换。 Logic Forge 具有基于通用事件的 FSM 和动画播放器 blender(您不需要使用 Mecanim)

您必须了解lexer and parser才能完全理解它。

当您以非图形方式编写内容时,计算机会将这段代码或代码转换为机器可读格式,因为计算机甚至无法区分ab 它将它转换成binaryhexa进制(后来甚至变成binary )。

现在问题仍然存在可视化脚本是如何工作的?

好的,开发人员有自己的词法分析器和解析器,他们遍历这些可视组件并从中创建代码,然后根据语言对这些组件进行解释或编译。

正如您想了解的Unity ,它基于C# ,它将被编译。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM