ノード
ノードは、複雑な動作を作成するために接続できるロジックの単位です。プログラム内の関数を視覚的に表現したものと考えることができます。
型定義
ブループリント内でインスタンス化して保存できるノード型を作成できます。ノード型はNode型を継承し、次のように[NodeType]属性で修飾します。
using Warudo.Core.Attributes;
using Warudo.Core.Graphs;
[NodeType(
Id = "c76b2fef-a7e7-4299-b942-e0b6dec52660",
Title = "Hello World",
Category = "CATEGORY_DEBUG",
Width = 1f
)]
public class HelloWorldNode : Node {
// Node implementation
}
パラメーターの概要は次のとおりです。
| パラメーター | 必須 | データ型 | 説明 |
|---|---|---|---|
Id | 必須 | string | このノードクラスの一意の識別子です。 新しいノード型ごとに新しいGUIDを生成してください。 注: ノードクラスの Idは、ノードインスタンスのUUID(node.Id)とは異なります。 |
Title | 任意 | string | ノードパレットに表示される、このノードの名前です。 |
Category | 任意 | string | ノードパレット内での、このノードのグループです。 |
Width | 任意 | float | このノードの幅です。デフォルトは1fです。幅が 2fのノードは、幅が1fのノードの2倍のスペースを 占めます。 |
- 下の表にある組み込みの
Category文字列を使用できます。- これらはプログラムの言語に自動的にローカライズされます。
- 独自のカスタム
Category名を使用することもできます。- このノードをワークショップにアップロードする場合は、これを強く推奨します。
- プラグイン名を
Categoryとして使用すると、ユーザーは使用しているノードがプラグイン由来であること、そしてどのプラグインのものかをより明確に把握できます。
表 組み込みのCategory文字列とローカライズされたテキスト。
Category | en | zh_CN | ja |
|---|---|---|---|
CATEGORY_ACCESSORIES | Accessories | 配件 | 付属品 |
CATEGORY_ANIMATION | Animation | 动画 | アニメーション |
CATEGORY_ARITHMETIC | Arithmetic | 运算 | 計算 |
CATEGORY_ASSETS | Asset | 资源 | アセット |
CATEGORY_BLENDSHAPES | BlendShapes | BlendShape | BlendShape |
CATEGORY_CHARACTERS | Characters | 角色 | キャラクター |
CATEGORY_CINEMATOGRAPHY | Cinematography | 摄影 | 撮影 |
CATEGORY_CONDITIONALS | Conditionals | 条件 | 条件 |
CATEGORY_CONTROL_FLOW | Flow Control | 流控制 | フローコントロール |
CATEGORY_DATA | Data | 数据 | データ |
CATEGORY_DEBUG | Debug | 调试 | デバッグ |
CATEGORY_ENVIRONMENTS | Environment | 环境 | 環境 |
CATEGORY_EVENTS | Events | 事件 | イベント |
CATEGORY_EXTERNAL_INTEGRATION | External Integration | 外部集成 | 外部統合 |
CATEGORY_GRAPHS | Blueprints | 蓝图 | ブループリント |
CATEGORY_INPUT | Input | 输入 | – |
CATEGORY_LIGHTS | Lights | 光源 | ライト |
CATEGORY_LITERALS | Literals | 字面量 | リテラル |
CATEGORY_MOTION_CAPTURE | Motion Capture | 动作捕捉 | モーションキャプチャー |
CATEGORY_PROP | Props | 道具 | 道具 |
CATEGORY_SCENE | Scene | 场景 | Scene |
CATEGORY_SWITCHES | Switches | 切换 | 切り替え |
CATEGORY_VARIABLES | Variables | 变量 | 変量 |
コンポーネント
ノード型では、データ入力、データ出力、フロー入力、フロー出力、トリガーを定義できます。

ライフサイクル
エンティティページに記載されているライフサイクル段階に加え、ノードには次の追加のライフサイクル段階があります。
OnAllNodesDeserialized(): 所属するブループリント内のすべてのノードがデシリアライズされた後に呼び出されます。同じブループリント内の他のノードにアクセスする必要がある場合に便利です。OnUserAddToScene(): ユーザーがノードパレットからドラッグして、ブループリントエディター内でノードをインスタンス化した直後に呼び出されます。
フローのトリガー
フロー入力メソッドでフロー出力のContinuationを返すと、出力フローをトリガーできます。例:
[FlowInput]
public Continuation Enter() {
// Do something
return Exit;
}
[FlowOutput]
public Continuation Exit;
フローがここで終了する場合は、nullを返してフローが終了したことを示せます。
[FlowInput]
public Continuation Enter() {
// Do something
return null;
}
フロー出力を遅延させたり、手動でトリガーしたりしたい場合があります。InvokeFlow(string flowOutputPortKey)メソッドを使用して、フロー出力をトリガーできます。例:
[FlowInput]
public Continuation Enter() {
async void TriggerExitLater() {
await UniTask.Delay(TimeSpan.FromSeconds(5));
InvokeFlow(nameof(Exit)); // Start a new flow from the "Exit" output port
}
return null; // You still need to return a Continuation. Since *this* flow technically ends here, we return null
}
シリアライズ不可能なデータ入力と出力
ノードの特別な点として、シリアライズ不可能なデータ入力と出力を持たせることができます(アセットやプラグインではできません。まったく表示されません)。これにより、ノード間でGameObjectやTexture2DなどのUnityオブジェクトを渡して処理できます。
次のように、ジェネリックなデータ入力または出力を持たせることもできます。
[DataInput]
public object MyGenericInput; // Note it's 'object', not 'Object'
[DataOutput
public object MyGenericOutput() => ...
任意の型のデータ出力ポートをMyGenericInputに接続できます(値は単にobjectへアップキャストされます)。逆に、MyGenericOutputは任意のデータ入力ポートへ接続できますが、入力ポートの型がMyGenericOutput