查看“VSL/zh”的源代码
←
VSL/zh
跳转至:
导航
、
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您必须确认您的电子邮件地址才能编辑页面。请通过
系统设置
设置并确认您的电子邮件地址。
您可以查看与复制此页面的源代码。
{{Distinguish|本条目并不是玩家口中通常所说的Virtools脚本,关于玩家通常所说的Virtools脚本,请参见'''[[脚本]]'''。}} '''VSL'''(Virtools Script Language,[[Virtools]][[脚本]]语言)是一种<del>强大的</del>脚本语言<ref>在Virtools中相比较原理图的连线来说已经够强大了</ref>,通过提供对[[Virtools SDK]]的脚本级别访问,对Virtools 原理图编辑器进行了补充。 VSL编辑器支持智能的上下文相关的文本突出显示(着色)系统,上下文相关的完成和功能参数的自动显示。同时也包括完整调试模式:断点,具有值编辑功能的变量监视以及单步调试(包括进入函数/退出函数支持)。 VSL是Virtools 3.0开始引入的,因此脚本内嵌地图是不能使用VSL的,但是可以在制作自制地图的过程中使用VSL进行一部分辅助制作。 == 概述 == === 适用 === VSL是一种程序员和脚本编写者均可使用的高级功能: * 对于程序员来说,VSL是Dev内部与SDK的接口。 无需创建C++项目,就可以轻松快速地测试新想法,并且无需编写新的DLL就可实现自定义代码。 * 对于脚本编写者,VSL是替换复杂参数操作(例如数学计算,字符串操作)和创建高级行为脚本的理想选择。 VSL还是一种非常有效的方式来自动化您的工作流程(例如,完成媒体处理,仅用几行脚本执行批处理操作等),实现创新的视觉效果等等。 === 要求 === 在尝试使用VSL之前,必须具有先前的编程或脚本编写(例如JavaScript,C++)经验。 此外,您必须相当熟悉或愿意熟悉Virtools SDK。 === 相似功能比较 === 如果您想在Dev中执行当前不存在BB或BG的操作。您可以使用[[原理图编辑器]],VSL以及Virtools SDK三者中间任意一个进行编写。而具体选择使用哪一种取决于您的能力和目标。使用最适合您需求的解决方案。需要记住的是,从原理图编辑器到VSL再到Virtools SDK,开发复杂性通常会增加。 ==== 原理图编辑器 ==== 通常,如果通过简单连接现有Building Block或Behavior Graph脚本可以轻松满足您的需求,请使用原理图编辑器。 ==== VSL ==== 如果发现正在创建复杂脚本,例如具有需多循环的,或者需要创建许多[[Param Operation]]树,那么您可能需要考虑编写VSL脚本。您可能希望使用VSL进行原型设计和测试(但是,如果可行的话,请尽量使用SDK来实现这些想法,以实现最佳性能)。或者,您也可以使用VSL创建自定义功能,而不必为分发自定义DLL而担心。 注意:尽管VSL可以创建新的数据类型(结构),但是它们仅在VSL中可用,并且只能由VSL脚本使用。 ==== Virtools SDK ==== 有些事情只能用SDK来完成,因为VSL中并非所有功能和方法都可用,或者在自定义插件中实现时效果更好(除了定义新的Building Block之外,还可以定义新的数据类型,并使用管理器来运行所有内容)。 == 基础内容 == === 全局VSL函数和Run VSL函数 === VSL脚本可以是以下两种类型之一:全局VSL或Run VSL。 全局VSL脚本的存在意义在于定义可用于所有其他VSL脚本的功能。全局VSL脚本不能自己运行,只能由其他VSL脚本(包括全局VSL和Run VSL)调用。 Run VSL脚本将被附加到原理图编辑器中的Run VSL Building Block中——一个Run VSL脚本对应于一个Run VSL Building Block,其中Run VSL Building Block的第一个[[pIn]]包含该BB执行的VSL代码。Run VSL脚本也可以在作者模式下运行(通过从VSL脚本管理器内执行代码),也可以在运行时模式下与其他任何Building Block一样激活和处理Building Block。 Run VSL脚本能够使用bc(行为上下文)全局变量。 === 行为上下文和动作上下文 === bc是全局变量,只能在Run VSL脚本中使用。ac是一个全局变量,只能在[[Actions]]脚本中使用。两者都提供了一些非常有用的方法: * 创建对象 * 在控制台或3D视图中写文本 * 管理属性 * 与变量管理器打交道 * 对你的脚本进行性能分析 * 等等 bc具有特定的运行时方法,例如: * 管理消息 * 运行一个场景 * 等等 而ac则专注于选择和鼠标位置等。 === 脚本间的依赖关系 === 需要注意的是,从全局VSL脚本调用函数的任何脚本(全局VSL或Run VSL)都依赖于该全局VSL脚本。如果修改全局VSL脚本,则不仅必须先重新编译此脚本,而且还必须重新编译所有调用该全局VSL脚本的脚本。对VSL脚本进行更改时,可以通过查看VSL管理器的 VSL脚本视图中的已编译列来查看更改,决定是否需要重新编译某些VSL脚本。 === 变量类型 === 除了在下面列出的基本类型,您还可以使用VSL <- SDK Binding Tables - Classes and Methods中列出的类。您还可以使用VSL <- SDK Binding Tables - Enumerations中列出的枚举参数类型。 基本类型 * bool:布尔值。布尔值为true(TRUE)或false(FALSE)。 * char:字符值。字符是-128到127(含)范围内的有符号字节值。 * int:整数值。一个int是一个有符号4字节值,范围为-2,147,483,648到2,147,483,647(含)。 * float:浮点值。浮点数是一个有符号的4字节值。 * str:字符串。 str是由空字符0或'\ 0'终止的字符的常量数组。也就是通常所说的C风格字符串。注意:如果要操作字符串,则应使用从Virtools SDK绑定到VSL的String类。 如上所述,所有其他可能的变量类型将在[[VSL/SDK绑定表]]中列出。如果在其中看不到要查找的类型,则意味着脚本中不允许该类型的变量。 为避免定义NULL对象,强烈建议您使用调试检查(可在变量管理器中激活或停用)。运行使用NULL对象变量的脚本可能会导致VSL Manager崩溃,也可能会导致Dev崩溃。因此与通常一样,强烈建议您在进行软件开发时,尽可能多地保存项目的增量版本。 == 编译,调试,发布 == 必须先编译所有VSL脚本,然后才能运行它们。在以下情况下,VSL管理器将自动尝试编译未编译的VSL脚本: * 加载[[Virtools文件]](CMO,VMO,NMO或NMS)时 * 当Run VSL Building Block被激活时 需要注意的是,在尝试编译运行VSL脚本之前,VSL管理器会尝试编译任何必需的(链接的)全局VSL脚本。强烈建议您在运行VSL脚本之前先对其进行编译,以检查错误并帮助确保VSL脚本将按预期运行。 您可以选择在VSL脚本管理器中编译所有脚本或仅编译某些脚本。编译VSL脚本时,必须决定是将其编译为Debug还是Release。 可以使用VSL脚本管理器中的调试工具来调试作为Debug编译的VSL脚本。您不能从VSL调试Virtools SDK元素。不能使用VSL脚本管理器调试工具来调试编译为Release的VSL脚本。在运行时,Release VSL脚本的执行速度比Debug VSL脚本快几倍,因为它们是使用JIT编译器进行编译的,该JIT编译器会创建高度优化的,类似于汇编程序的代码。 注意事项: * 可以在Debug中同时使用某些脚本,而在Release中则同时使用其他脚本——除非脚本共享一个全局VSL脚本(即,可以调试或发布全局VSL脚本,但不能同时使用这两个脚本)。 * 在VSL脚本上更改编译模式(例如,从Debug到Release),也可能导致链接的Global脚本也被重新编译。 * 编译脚本(全局VSL或Run VSL)时,VSL管理器首先尝试编译未编译或处于不同编译模式(例如Release / Debug)的所有全局脚本。如果编译失败,则错误消息将出现在VSL脚本管理器的Errors部分和Event Log中。 * 编辑全局脚本后,该脚本将变为“未编译”。使用此脚本任何部分的所有其他脚本也都设置为“未编译”。 * 强烈建议:在变量管理器的VSL部分中选择Debug Check Variable,以确保所有对象都经过测试,并确保在使用它们之前它们不是NULL(即使它们存在)。 == 运行VSL脚本 == 您可以在作者模式(Author mode)或用户模式(Player mode)下运行VSL脚本。 === 作者模式 === 在“VSL脚本管理器中,在VSL脚本列中选择一个Run VSL脚本,然后单击Run Script或按F5。 请注意,以作者模式运行脚本仅会执行VSL代码。 Run VSL Building Block本身并不会激活。 这意味着将使用[[pIn]]并计算[[pOut]],但不考虑[[bIn]]和[[bOut]]。 === 用户模式 === 用户模式也称运行时模式,必须通过与另一个Building Block,或原理图中的脚本起始点的链接激活Run VSL Building Block来运行脚本。 == 保存与导出 == 您可以通过VSL脚本管理器界面中的保存和加载按钮保存和加载全局VSL和Run VSL脚本。 VSL脚本另存为扩展名为.VSC的文本文件。需要注意的是,您只能将VSL脚本加载到当前任何存在的VSL脚本中。 加载之前,请确保脚本为空,否则,您要导入的脚本将替换您已有的任何代码。 还要注意,您要保存或导入的只是代码视图中的源代码——不保存与上下文设置(bIn,bOut,pIn,pOut)有关的信息。 当然,您可以保存具有VSL脚本的Virtools文件(CMO / VMO / NMO / NMS)。 在这种情况下,请确保在加载保存的文件时所有被依赖的脚本均是可用的。 == 限制 == VSL是一种对Virtools的补充,但不能替代Virtools SDK。 在某些情况下,Virtools SDK更合适,并且某些事情VSL无法完成,仅可通过Virtools SDK来实现: * 不能创建管理器 * 不能实现文件导入器 * 不能注册新的参数类型 * VSL中没有模板 * VSL中没有指针 * VSL中没有动态分配(例如,像new这样的运算符) * 无法使用VSL写入磁盘或从磁盘读取数据 * 在VSL中不能创建类 * VSL中没有双精度浮点类型 * VSL脚本限制为65,535个字符 [[VSL/SDK绑定表]]页面列出了VSL中可用的所有功能及其相应的SDK元素。 如果表中未列出SDK元素,则该SDK元素在VSL中不可用。 == 注释 == 机器翻译和人工修改自Virtools 3.5的说明文档。 <references />
该页面使用的模板:
模板:Distinguish
(
查看源代码
)
模板:Dmbox
(
查看源代码
)
返回至
VSL/zh
。
导航菜单
个人工具
中文(中国大陆)
创建账户
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
帮助
主分类
制图
竞速
Q&A
机关大全
相关程序
地图图鉴
相关网站
Ballance吧
Ballance QQ群
Ballance Discord群组
Speedrun.com
Ballance吧专区
导航贴
英雄榜
快捷访问
公共沙盒
贡献指南
赞助我们
工具
链入页面
相关更改
特殊页面
页面信息