Skip to main content

ノード

ノードは、複雑な動作を作成するために接続できるロジックの単位です。プログラム内の関数を視覚的に表現したものと考えることができます。

型定義​

ブループリント内でインスタンス化して保存できるノード型を作成できます。ノード型は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文字列とローカライズされたテキスト。

Categoryenzh_CNja
CATEGORY_ACCESSORIESAccessories配件付属品
CATEGORY_ANIMATIONAnimation动画アニメーション
CATEGORY_ARITHMETICArithmetic运算計算
CATEGORY_ASSETSAsset资源アセット
CATEGORY_BLENDSHAPESBlendShapesBlendShapeBlendShape
CATEGORY_CHARACTERSCharacters角色キャラクター
CATEGORY_CINEMATOGRAPHYCinematography摄影撮影
CATEGORY_CONDITIONALSConditionals条件条件
CATEGORY_CONTROL_FLOWFlow Control流控制フローコントロール
CATEGORY_DATAData数据データ
CATEGORY_DEBUGDebug调试デバッグ
CATEGORY_ENVIRONMENTSEnvironment环境環境
CATEGORY_EVENTSEvents事件イベント
CATEGORY_EXTERNAL_INTEGRATIONExternal Integration外部集成外部統合
CATEGORY_GRAPHSBlueprints蓝图ブループリント
CATEGORY_INPUTInput输入–
CATEGORY_LIGHTSLights光源ライト
CATEGORY_LITERALSLiterals字面量リテラル
CATEGORY_MOTION_CAPTUREMotion Capture动作捕捉モーションキャプチャー
CATEGORY_PROPProps道具道具
CATEGORY_SCENEScene场景Scene
CATEGORY_SWITCHESSwitches切换切り替え
CATEGORY_VARIABLESVariables变量変量

コンポーネント​

ノード型では、データ入力、データ出力、フロー入力、フロー出力、トリガーを定義できます。

ライフサイクル​

エンティティページに記載されているライフサイクル段階に加え、ノードには次の追加のライフサイクル段階があります。

  • 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の返す基になる型と互換性がない場合、入力ポートが受け取る値はnullになります。

型コンバーター​

ノードを接続すると、可能であればWarudoが自動的にデータ型を変換することに気付くでしょう。たとえば、float出力をint入力へ接続できます。この場合、値は単に切り捨てられます。

DataConvertersクラスを使用してカスタム型コンバーターを登録できます。最も簡単な方法は、DataConverter<T1, T2>クラスを実装することです。

public class MyFloatToIntConverter : DataConverter<float, int> {
public override int Convert(float data) => (int) data;
}

次に、プラグインのOnCreateメソッドでコンバーターを登録します。

public override void OnCreate() {
base.OnCreate();
DataConverters.RegisterConverter(new MyFloatToIntConverter());
}
注意

ノード型のOnCreateで型コンバーターを登録しないでください。ノードインスタンスが作成されるたびに登録されてしまいます。

コード例​

基本​

上級​

最終更新日 2026.10.06