Skip to main content

初めてのスクリプトを作成する

Warudoでスクリプトを書く方法は、Playgroundを使用する方法とプラグインModを作成する方法の2つです。このチュートリアルでは、Playgroundを使用して初めてのカスタムノードを作成します!

ヒント

Playgroundとは? Playgroundは、カスタムノードやアセットを記述・テストできるサンドボックスだと考えてください。C#コードをコンパイル・パッケージ化する代わりに、WarudoのデータフォルダーにあるPlaygroundディレクトリへ直接コードを記述できます。これにより、ModをビルドしたりWarudoを再起動したりすることなく、コードをすばやく反復・テストできます。

それでは、さっそく始めましょう!

情報

質問があれば、Discordサーバーの専用 #plugins-scripting チャンネルでサポートを受けられます!

ステップ1: 環境設定​

まず、.NET 8 SDKがインストールされていることを確認します。次に、こちらから.csprojファイルをダウンロードし、Warudoのデータフォルダー内にあるPlaygroundディレクトリへ配置します(メニュー → データフォルダーを開く)。このファイルは、IDEでコード補完や構文ハイライトを利用するために役立ちます。

お好みのC# IDEを開きます。このチュートリアルではJetBrains Riderを使用しますが、Visual Studio CodeなどのほかのIDEでも問題ありません(Visual Studio Codeでは、C#言語拡張機能のインストールが必要になる場合があります)。

IDEでPlaygroundディレクトリを開きます。ディレクトリ内にHelloWorldNode.csというファイルを作成し、以下を貼り付けます。

using Warudo.Core;
using Warudo.Core.Attributes;
using Warudo.Core.Graphs;

[NodeType(Id = "c76b2fef-a7e7-4299-b942-e0b6dec52660", Title = "Hello World")]
public class HelloWorldNode : Node {

[FlowInput]
public Continuation Enter() {
Context.Service.PromptMessage("Hello World!", "This node is working!");
return Exit;
}

[FlowOutput]
public Continuation Exit;

}

ステップ2: カスタムノード​

Warudoを開きます。起動時に、次のようなポップアップメッセージ(トーストと呼びます)が表示されます。

これはHelloWorldNode.csが正常にコンパイル・読み込みされたことを示しています。上記のコードではカスタムノードを定義しているため、メッセージにはNodes: 1と表示されます。

ブループリントタブに移動します。新しいブループリントを作成し、ノードパレットからHello Worldノードを見つけます。ドラッグして配置すると、次のように表示されます。

Enterフロー入力をクリックすると、次のメッセージが表示されます。

すべて動作していれば、おめでとうございます!初めてのWarudoノードを作成しました!

ステップ3: ホットリロード​

素晴らしい点の一つは、コードを変更するたびにWarudoを再起動する必要がないことです。実際、WarudoはPlaygroundディレクトリ内で行った変更を自動的に検出し、コードをホットリロードします!

動作を確認してみましょう。HelloWorldNode.csに戻り、次の新しいコードを貼り付けます(タイピングの練習をしたい場合は、既存のコードを更新しても構いません)。

using Warudo.Core;
using Warudo.Core.Attributes;
using Warudo.Core.Graphs;

[NodeType(Id = "c76b2fef-a7e7-4299-b942-e0b6dec52660", Title = "Hello World")]
public class HelloWorldNode : Node {

// New code below
[DataInput]
[IntegerSlider(1, 100)]
public int LuckyNumber = 42;
// New code above

[FlowInput]
public Continuation Enter() {
// Changed code below
Context.Service.PromptMessage("Hello World!", "This node is working! My lucky number: " + LuckyNumber);
return Exit;
}

[FlowOutput]
public Continuation Exit;

}

Ctrl+Sを押すとすぐに、ノードが正常にコンパイル・ホットリロードされたことを示す別のトーストメッセージが表示されます。ブループリント内のノードもそれに応じて更新されます。

ラッキーナンバーを設定して、ノードが引き続き動作することを確認してください!

ステップ4: カスタムアセット​

Warudoは新しい.csファイルも検出できます。今度はカスタムアセットを作成してみましょう。PlaygroundディレクトリにCookieClickerAsset.csというファイルを作成し、以下のコードを貼り付けます。

using Warudo.Core.Attributes;
using Warudo.Core.Scenes;

[AssetType(Id = "82ae6c21-e202-4e0e-9183-318e2e607672", Title = "Cookie Clicker")]
public class CookieClickerAsset : Asset {

[Markdown]
public string Status = "You don't have any cookies.";

[DataInput]
[IntegerSlider(1, 10)]
[Description("Increase me to get more cookies each time!")]
public int Multiplier = 1;

private int count;

[Trigger]
public void GimmeCookie() {
count += Multiplier;
SetDataInput(nameof(Status), "You have " + count + " cookie(s).", broadcast: true);
}

protected override void OnCreate() {
base.OnCreate();
SetActive(true);
}

}

カスタムノード1つ(HelloWorldNode.cs)とカスタムアセット1つ(CookieClickerAsset.cs)が読み込まれたことを示すトーストメッセージが表示されます。

新しいアセットはAdd Assetメニューから見つけられます。

シーンに追加して楽しんでください!これなら一日中遊んでいられるのに、誰がVTubingなんて必要とするでしょう?

まとめ​

この短いチュートリアルでは、Playgroundの使い方を学び、カスタムノードとアセットの仕組みを少しだけ見てきました。次のチュートリアルでは、作成したカスタムノードとアセットを配布するためのプラグインModの作成方法を見ていきます!

最終更新日 2026.10.06