Files
ichni_Creator_Studio/Assets/Scripts/Editor Tools/NodeScript/Node重构.txt
2026-05-23 21:05:16 +08:00

14 lines
3.0 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
节点逻辑重构
在这次重构中我们不需要改UI部分而是聚焦于node manager对node的指令的控制和node的行为的表现。我打算把系统运行的控制权集中在manager上使用类似生命周期的方式控制节点指令。
逻辑流程每个node都有一个status为ready hang或complete刚开始启动的时候所有的都为ready或者complete然后启动start节点。
Manager拥有一个触发表在开始一次周期前将触发表并入运行时表中并清空触发表。
在周期中遍历运行时表运行节点内置的loop方法 收集下一次的触发以及要从运行时表中去除的东西。
节点不再传递值会从前面的节点拿取值或者引用启动后每周期检查如果前方的节点不处于complete那么status就改为hang将自己维持在运行时表中并且将前面的node加入触发表取值满足后进行运算返回complete。
特殊节点变量节点不存在hang在启动之后立刻返回值或者引用并且complete这些节点拥有一个signal输入这个输入通常不需要连接只有在循环节点内这个signal才用得到。
循环和子函数节点可能需要一种新的状态表示其内部正在运行。这些节点可能需要一个新的UI控件比如一个rect当别的节点拖放在这个rect里面就相当于在节点内。我们的UI支持自动调整你只需要在之前放选项的地方也就是UI builder所需要的地方直接加入一个可以手动放大缩小范围的rect并且对他添加脚本就好而像for循环原有的每个循环都会有的Index和Signal输出点就可能不用放在第三列而是放在位于输入节点的第一列以拉取到rect里面循环还包含一个子控制器监控里面的节点运行情况不过这里面节点的运行状况依然交由主manager子控制器只负责检查是否完成重置节点并开启下一步的循环。
子函数节点包含子函数定义节点和子函数执行节点。定义值点只有一个输入string name我们使用rect外连接到rect内的变量节点代表输入以及连接到rect外的set节点代表输出。
Manager可能需要扫描所有文件注册这些子函数定义节点然后在其他地方的执行节点中表现为input输入和output输出。
关于signalSignal依然存在仅用于触发操作拥有signal并且signal输入已连接的节点会像上文一样等待signal。
其他节点拥有一个“到stars节点的最短距离”l
举例L等于零的输出可以接在l等于七的输入上而l等于七的输出不能接在l等于二的输入上。确保单向逻辑。
关于引用和动态类型比如set节点输入第一项为原值比如一个变量int。第二项也为int用于更改第一个项指向的值。引用节点没有输出只有输入并且要根据输入的第一项的类型更改输入第二项的类型可能要为此实现一个input<any>之类的东西,