1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

UnityのGraph Toolkitを知ろう!

Last updated at Posted at 2025-12-19

こんにちわ、KLabの@tsune2neです
この記事はKLab Engineer Advent Calendar 2025の20日目の記事です

概要

Unity6.3で入りそうで入らなかった Graph Toolkit の調査メモです
機能概要とサンプルと使いどころ・所感を話していきます

GraphTookitとは

About Graph Toolkit - 公式ドキュメント

ノードベースのツールを開発するための包括的なフレームワーク
ShaderGraphをシェーダー以外の目的でも使えるようになる

UnrealEngineでは機能ごとにノードスクリプティングができるが
それを作れるフレームワークということ

CreateTexureNodeSample4.png

たとえば
・AIの行動の編集機能。特定ゲームに最適化して非エンジニアでも気軽に編集。性能制限もできる。AIデザイナーに提供できる。社外で量産もしやすい。
・育成ツリーの編集機能。アウトゲームの構成をパターン化してデザイナーやアーティストに依頼する。社外で量産もしやすい。

VisualScriptingとの違い

Unityのノードスクリプティングと聞くとVisualScripting(旧Bolt)を思い浮かべる人もいるだろう
これはC#スクリプトをノードスクリプティングできる機能だ

これは破壊的な変更が可能であり、エンジニア以外が触るには非常に危険
チューニングコストも発生してしまう

それの解決策ともいえる

サンプル

GraphToolkitには2つのサンプルがついてます

Unity6.3LTS(6000.3.1f1) ではまだ使えなかったので Unity6.3Alpha(6000.3.0a2) でインストールしました

テクスチャメーカーのサンプル

色テクスチャを作り、ブレンドしてテクスチャを出力するグラフとノードのサンプルです
グラフからマテリアルを作ってCubeオブジェクトに適用すると反映されます

このサンプルにはSceneがないので、自分でSceneとGraphを作って動かす必要があります

簡単なShaderGraphをGraphToolkitで作るイメージです

実行結果

グラフ 結果 メモ
CreateTexureNodeSample.png CreateTexureNodeSample6.png 単色テクスチャを出力するグラフ
CubeオブジェクトにD&Dしたらテクスチャ生成されて描画されます
CreateTexureNodeSample4.png CreateTexureNodeSample5.png 2つのテクスチャ出力の平均をとってテクスチャを生成します

ファイル構成

  • Editor/TextureMakerGraph.cs
    • グラフ自体のクラス定義でエントリーポイント
  • Editor/AssetImport/TextureMakerImporter.cs
    • グラフをオブジェクトにマウントしたときの処理、ここではTexture2Dを出力してる
  • Editor/Model/Nodes/CreateTextureNode.cs
    • テクスチャメーカーグラフでの出力ノードの定義
  • Editor/Model/Nodes/ITextureEvaluatorNode.cs
    • ノードのテクスチャ入力処理を抽象化するためのクラス
  • Editor/Model/Nodes/UniformNode.cs(ITextureEvaluatorNodeを実装)
    • 指定した色単色のテクスチャを作るノードの定義
  • Editor/Model/Nodes/MeanColorNode.cs(ITextureEvaluatorNodeを実装)
    • 2つのテクスチャ入力を平均化したテクスチャを作るノードの定義

ゲーム内処理は入っておらず
エディタ機能のみでテクスチャを作成してます

Visual Novel Directorサンプル

ノードベースで作成するビジュアルノベルのサンプルです
グラフが各GameObjectを動かすことでビジュアルノベルが進んでいきます

Graphで設定したノード情報をゲーム実行中(ランタイム)で処理するので
ランタイムで使えるようにクラス定義やデータ構造化と実行機(Executor,Director)を定義してます

このサンプルにはSceneがついてるので直接動作確認できます

実行結果

グラフ 結果 メモ
VisualNovelSample.png VisualNovelSample2.png グラフのようなノード接続が延々と続いていて、クリックするごとに次のノードが実行されていきます

ノードを組んでいくことでビジュアルが変わっていきます
多くの場合、データベースでビジュアルノベルを構成することが多いですが
視覚的にわかりやすく作れます

ファイル構成

  • Editor/Model/VisualNovelDirectorGraph.cs
    • グラフ自体のクラス定義でエントリーポイント
  • Editor/AssetImport/VisualNovelDirectorImporter.cs
    • グラフをオブジェクトにマウントしたときの処理、ここではTexture2Dを出力してる
  • Editor/Model/Nodes/SetDialogueNode.cs
    • ダイアログ表示ノードの定義
  • Runtime/VisualNovelDirector.cs
    • ビジュアルノベルの進行を制御するメインクラス、各ノードのExecutorを利用してゲーム中の処理を実行する
  • Runtime/VisualNovelRuntimeGraph.cs
    • グラフ情報(ノード情報など)を保持
  • Runtime/InputProvider/IVisualNovelInputProvider.cs
    • ビジュアルノベル用ノードの入力を抽象化するインターフェース
  • Runtime/InputProvider/UnityInputProvider.cs
    • 入力処理
  • Runtime/Nodes/SetDialogue/SetDialogueExecutor.cs
    • ダイアログ表示ノードの実処理
  • Runtime/Nodes/SetDialogue/SetDialogueNode.cs
    • ダイアログ表示ノードのパラメータ

メリット

GraphToolkitというかノードスクリプティングのメリットだが、
「デザイナーが自分で動的処理を組めるようになる」
これが一番大事のメリット

マップのちょっとしたギミック・機能をデザイナーが一人で作ってコミットするのが低コストでクオリティアップになる
これができないとエンジニア作業が発生してしまい、機会損失やコミュニケーションコストになる

破壊リスクが低く、処理コストが発生しにくい環境を用意することで
リッチな体験を低コストで量産できる

デメリット

ロジックがアセット(バイナリファイル)に格納されてしまうので
差分レビューやバージョン管理がしにくくなる
特に同時編集してコンフリクトしたときは最悪

UnrealEngineではコンフリクト解消ツールがあるが、GraphToolkitにはない

グラフ内に入れるロジックは減らし、
1機能の担当者も1,2人で収まる規模にとどめておくのがよい

しかし
1グラフ作るのに結構面倒
高機能グラフを作るとマンモスコードになりそう
大規模プロジェクトで使う時は気を付けて

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?