Page 1 of 1

サイドパネルへのSetParameterにVariableのスロットを接続できない

Posted: 2019/02/11 16:27
by Yumineko
・Unity 2018 3.5f1
・Arbor 3.4.2
・WIndows10 64bit


variableを作成してサイドパネルのパラメータへ登録。
Drug to placeでビヘイビアツリーへドロップしてSet Parameterアクションノードを作成。

別のアクションノードから
・FlexibleXXXX
・OutputSlot<XXXX>
・OutputSlot<FlexibleXXXX>
・OutputSlotAny
のいずれを使っても、SetParameterのInputスロットへ繋げません。
FlexibleXXXXのみ、一度リルートするとつなげます。2つ目と3つ目はpublicにしようと、エディタに表示すらされません。

なお、VariableのフィールドはpublicのListを登録しています。

Re: サイドパネルへのSetParameterにVariableのスロットを接続できない

Posted: 2019/02/12 00:09
by caitsithware
ご報告ありがとうございます。

FlexibleXXXX
Yumineko wrote: 2019/02/11 16:27 FlexibleXXXXのみ、一度リルートするとつなげます。
FlexibleXXXが持つデータスロットは入力専用ですので、SetParameterにつなげられること自体が問題ですね(お互い入力スロット同士)
詳しく検証して修正いたします。

OutputSlot<XXXX>
Yumineko wrote: 2019/02/11 16:27 2つ目と3つ目はpublicにしようと、エディタに表示すらされません。
ジェネリック型はシリアライズ対象とならないためUnityの仕様となっています。
マニュアル : スクリプティング / Variableのサンプルコードにあるように、出力したい型専用のOutputSlotクラスを定義するようお願いいたします。

また、OutputSlot<FlexibleXXXX>はFlexible型を出力する事になってしまうため、想定外の動作になる恐れがあります。
OutputSlotに指定する型はFlexibleXXXX以外の通常の型を指定するようにお願いいたします。

コード例:

Code: Select all

// 自作の型
[System.Serializable]
public class TestData
{
	public int intData;
}

// 自作の型TestData用出力スロット
[System.Serializable]
public class OutputSlotTestData : OutputSlot<TestData>
{
}
OutputSlotAny

OutputSlotAnyは、SlotTypeAttributeの属性で出力型を指定しない限りInputSlotAnyにのみ接続できる特殊な出力スロットであるため、こちらも仕様となっています。
特定の型を出力したい場合は以下のように型指定してください。

コード例:

Code: Select all

// 自作の型TestDataを出力するスロット
[SlotType(typeof(TestData))]
public OutputSlotAny outputSlotTestData = new OutputSlotAny();
※SlotType属性付きOutputSlotAnyを使う場合はOutputSlot<XXXX>の型定義は不要です。

Variableや入出力スロットの使用方法に関してのマニュアルが不足しておりました。
マニュアルについても今後の更新で改善していきます。

ご不便おかけして申し訳ございませんがよろしくお願いいたします。

Re: サイドパネルへのSetParameterにVariableのスロットを接続できない

Posted: 2019/02/12 05:17
by Yumineko
迅速な回答をありがとうございます。Variable C# Scriptを生成した際に、OutputXXXX型も作られていたんですね。見落としていました。
解決しました。

Re: サイドパネルへのSetParameterにVariableのスロットを接続できない

Posted: 2019/02/18 02:13
by caitsithware
caitsithware wrote: 2019/02/12 00:09 FlexibleXXXが持つデータスロットは入力専用ですので、SetParameterにつなげられること自体が問題ですね(お互い入力スロット同士)
詳しく検証して修正いたします。
検証してみましたが、入力スロット同士がデータの流れ的に接続されてしまう不具合は確認できませんでした。
出力スロットは複数の入力スロットに接続できるため、リルートノードに関しても出力サイドが複数の入力スロットに接続できるのは正常動作になります。

例:
DataSlotMultiOutput.png
DataSlotMultiOutput.png (60.56 KiB) Viewed 4303 times
このような接続であれば正常です。

もし入力スロット同士が不正に接続されているようでしたら、その再現方法やスクリーンショットもいただけると助かります。