DreamFXLang
语言参考

DreamFXLang 参考

DreamFXLang 参考

DreamFXLang 参考

这门语言按你所写的内容划分。凡规则因引擎所迫而存在的 —— 栈为什么是语句列表、表达式白名单为什么很短、#Region 为什么只是注释 —— 页面都会在陈述该规则之处说明原因。

页面涵盖内容
dfs.md.dfs —— 一个系统:user 参数、系统栈、发射器、renderer
dfe.md.dfe —— 一个可复用发射器,以及 from 对它做了什么
system-inheritance.md.dfs 源父级、覆盖、依赖重建和循环错误
native-emitter-inheritance.md带 inherits 的原生 Niagara 发射器父级
dfm.md.dfm —— 一个模块或 dynamic input,以及哪些引擎能生成它
values.md每一个值位置、类型规则,以及按名称列出的八条 L* 规则

每个文件的形状

一个顶层对象,在所有地方都用相同的头声明:

<Kind>(Name="<path under the root>", Root="<root token>")
{
    ...
}

Kind 是 System、Emitter、Module 或 DynamicInput,并且必须与文件扩展名一致 (DFX2021)。Root 是 Game、空(同样含义)或 Plugin.<PluginName>;Name 是相对于该根的内容目录的资源 路径。

系统还接受 Parent="../Base.dfs",用于源继承。 发射器声明可以使用 inherits "/Game/FX/NE_Base" 指定 原生 Niagara 父级。发射器 from 保留其源拷贝语义; 对 .dfe 的编辑会通过源监视器重建依赖系统。

块使用 Name = { ... },语句以 ; 结尾,// 和 /* */ 是注释。 属性以方括号形式挂在声明上:[ Group="Burst"; SortPriority=10 ]。 在 Properties / Inputs 内部,Group("Name") { ... } 作用域会把这两个属性加盖到 其中包含的每一个参数上 —— 参见 dfs.md。

有意不在这里的东西

  • MaterialParam。 保留(L8),未实现(DFX5093)。
  • 任何需要通用表达式编译器的东西。 参见 values.md 中的 L6。

本页目录