多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
![](https://img.kancloud.cn/e9/f0/e9f063b55d296ebd59ac59d14376e9a6_177x110.png) 【节点说明】 脚本是一个内容节点,可以托管一段C#/Visual Basic源代码,以便使用自定义功能扩展对功能进行拓展。尽管可以使用现有节点功能创建一些相当复杂的场景,但是有些情况下,使用节点和绑定属性无法实现某些效果,这时在场景中添加一小段代码更容易实现,可以通过这些代码执行相应的程序来实现某些功能。 双击脚本节点,打开“脚本编辑器”,如下图: ![](https://img.kancloud.cn/9e/6e/9e6eca28fbdfffa7d94d3ef779af8b42_692x433.png) 左侧的窗口显示此节点的输入和输出属性。通过添加按钮,可以创建浮点值,字符串等新属性。窗口下方还包含一个选项卡,用于显示可以在脚本中使用的程序集(即DLL)的引用。 脚本编辑器的主要区域展示编辑的源代码。编辑器提供许多专业 IDE 的功能,如上下文突出显示。在更改代码时,脚本编辑器会尝试动态检测语法错误,并将它们列在脚本编辑器底部的错误列表中。 #### **4.6.2.1 输入/输出属性** ![](https://img.kancloud.cn/a0/2d/a02d344ceb5474213c0f88761a2c7290_228x289.png)![](https://img.kancloud.cn/0d/b4/0db4fe48c785055bc787572f3c1ffea0_228x289.png) 可以在左侧的编辑器中设置输入输出属性,输入属性涵盖基本数据类型以及数组和方法(Method)。如下图所示。 ![](https://img.kancloud.cn/0c/15/0c15a10bd6cb7a12cbb7d08c53e226ac_237x346.png) 双击新建的方法Method1,在脚本编辑框将自动生成如下图的方法OnMethod1,当有事件调用该方法时,则执行此段代码。 ![](https://img.kancloud.cn/fc/a5/fca5eba440c99235935b1aff2a4f4c5c_448x109.png) 输出属性除了具有与输入相同的数据类型以外,添加了事件(Event)。如下图所示。 ![](https://img.kancloud.cn/8a/f4/8af43c533cb64b6b99fae5d0bda8adb7_237x368.png) 属性参数比较多的时候,就需要对属性进行分组,点击![](https://img.kancloud.cn/0f/36/0f361199f33e9d95d63f126abb39c545_32x29.png)按钮可以添加一个分组,使用鼠标拖拽属性到该分组下即可改变属性的分组。 如果一个分组下没有任何属性,点击![](https://img.kancloud.cn/39/ce/39cee489fb68dd9c7922618c4dbd0721_38x33.png)按钮后该分组将被移除。 #### **4.6.2.2 添加引用** ![](https://img.kancloud.cn/84/bd/84bd46ad649dea3365136d8ddb783904_284x531.png) 点击标签栏“引用”,进入引用管理界面,在这里我们可以添加/移除GAC的引用。 GAC,即全局程序集缓存(Global Assembly Cache),在“GAC Assemblies”处单击鼠标右键,弹出快捷菜单,如下图所示。 ![](https://img.kancloud.cn/93/8d/938df394ee042148ce5c37cbbb4230fc_259x94.png) 点击“添加引用”进入GAC引用对话框,在这里我们可以添加需要的.NET库。如下图所示。 ![](https://img.kancloud.cn/31/6f/316f5acd71e6980c03ce34600c9bc081_478x428.png) 添加GAC库之后就可以在脚本中使用,如下图所示。 ![](https://img.kancloud.cn/c6/17/c617ca7a54c7a0556b3c670dbad336a6_258x84.png) #### **4.6.2.3 脚本成员属性和方法** **属性changed** 一个状态消息,用于告示系统数据已经更改。当执行changed=true之后,则该节点将告知与之相关的节点刷新数据,以保持数据时序的正常。 **方法Script()** 该脚本的构造方法。当该脚本节点被加载,或者被修改时,则运行此方法。 **方法Dispose()** 当节点被删除时,或者关闭项目时执行此方法。 **方法Validate()** 当任意输入属性有改动时执行此方法。此方法可以实现实时响应的逻辑节点。但是需要注意执行效率和性能。 **方法Generate()** 实时方法,该方法会在渲染的帧与帧之间运行,所以该方法执行的频率是最高的。请谨慎使用。 #### **4.6.2.4 编译和保存** ![](https://img.kancloud.cn/96/76/96767978fe352f7bcee4c0207ae7f215_540x169.png) 脚本编辑器上方的工具栏包含保存、撤销、重做、复制、粘贴等功能。 点击![](https://img.kancloud.cn/80/4e/804e6340a0d90375dca06a6dbd9d702a_69x25.png)按钮,可以对编写的脚本进行编译和检查。如果编译出错,错误会在下方的错误列表中列出。如下图所示。 ![](https://img.kancloud.cn/81/01/8101d56c4adb4b7ff6ca4e6f361bffbd_492x89.png) 点击![](https://img.kancloud.cn/e6/e0/e6e0d60b4a61f38b346a89437478ccb8_107x30.png)按钮,将关闭脚本编辑器,并尝试加载该脚本。 此时脚本虽然已经被更新,并且被加载运行,但并没有真正保存到项目中,需要及时保存项目,以保存到硬盘中。 ![](https://img.kancloud.cn/95/95/9595492aa1899be282cc3a8df2be1920_447x207.png) 注:编译不通过的脚本是不会被加载和运行的。但可以保存。 #### **4.6.2.5 打印LOG** 在脚本中使用VLog.Info(string)方法,可以将执行的情况打印到消息框(Message)中,方便调试。 ![](https://img.kancloud.cn/58/6c/586ca0e0da6227b2eea85ea53cb1a23d_303x112.png) 当执行到VLog.Info时,消息框会打印消息,如下图所示。 ![](https://img.kancloud.cn/0d/56/0d5695829546bac8dd60c5f679257ee8_539x177.png)