ブループリントを使用してる方ではあればこのような少し変わったピンを見たことがあるのではないでしょうか?
![](https://historia.co.jp/wp/wp-content/uploads/2017/07/66c19942ab4ba346fdb64ccc04cde373-300x200.png)
[GetInputAnalogKeyState]
指定のキー(またボタン)のアナログ値を返す関数
![](https://historia.co.jp/wp/wp-content/uploads/2017/07/eb22bf7a906b7f73af3d68cd620dade7-300x259.png)
[HasTag]
TagContainerの中に指定のタグが含まれてるかを判定する関数
例に上げたものはそれぞれ[FKey][FGameplayTag]という構造体で定義されてるものですが、普通に作成しただけでは画像のようなピンは表示されないのですが
少しだけC++を使用することで専用ピンが作ることが可能なので今回はそれの紹介をしたいと思います。まずは[FKey]のようなクリックされたら選択できる候補がリスト上に表示されるようにしてみたいと思います。
それでは早速実装してみたいと思います。
実装1:構造体を定義する
まずはピンをカスタマイズするとき使用される構造体をRunTimeモジュールで定義します。
今回は例としてuint8の変数1つを所持した構造体を定義しました。
![](https://historia.co.jp/wp/wp-content/uploads/2017/07/44d29d2792be3bad9a9ed98c7bbb20d6-300x99.png)
もちろんこれを使用してもピンは普通の構造体と変わりません。
実装2:ピンの作成をする
ピンの編集にはSGraphPin(Engine\Source\Editor\GraphEditor\Public\SGraphPin.h)というクラス継承することで専用のウィジェットを作成することができます
ただしエディタ時のみに使用するクラスなので、プロジェクトのエディタモジュール側に定義します。
ちなみにエディタモジュールの実装に関してはこちら(https://historia.co.jp/archives/3097)の記事を参考にして下さい。
実装3:ファクトリクラスを使用してピンを登録する
次に先程作成したピンをFGraphPanelPinFactory(Engine\Source\Editor\UnrealEd\Public\EdGraphUtilities.h)を継承したクラスで生成するようにします。
これもエディタ時のみに使用するクラスなので、プロジェクトのエディタモジュール側に定義します。
そして作成したクラスをモジュールで登録をします。
以上で終了になります。では実際に見てみましょう
![](https://historia.co.jp/wp/wp-content/uploads/2017/07/66c19942ab4ba346fdb64ccc04cde373-1-300x231.png)
今回はBPノードピンの編集を行いましたが変数化した場合など詳細画面で表示された値は以前のままByteとして表示されてしまいます。また機会があれば今度は詳細画面で表示される値を編集してみたいと思います。
最後まで読んでいただきありがとうございました。