・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を登録しています。
サイドパネルへのSetParameterにVariableのスロットを接続できない
Forum rules
報告に必要な項目は以下の通りです。
The items necessary for reporting are as follows.
報告に必要な項目は以下の通りです。
- Unityバージョン
- Arborバージョン
- OS
- ビルドプラットフォーム
- 再現方法
- 再現プロジェクト(Arborや他アセットなどを含まない最小構成)もしくは動画
The items necessary for reporting are as follows.
- Unity version
- Arbor version
- OS
- Build platform
- How to reproduce
- Reproduction project (Minimum configuration not including Arbor and other assets) or video
- caitsithware
- 管理人
- Posts: 236
- Joined: 2015/08/17 12:41
Re: サイドパネルへのSetParameterにVariableのスロットを接続できない
ご報告ありがとうございます。
FlexibleXXXX
詳しく検証して修正いたします。
OutputSlot<XXXX>
マニュアル : スクリプティング / Variableのサンプルコードにあるように、出力したい型専用のOutputSlotクラスを定義するようお願いいたします。
また、OutputSlot<FlexibleXXXX>はFlexible型を出力する事になってしまうため、想定外の動作になる恐れがあります。
OutputSlotに指定する型はFlexibleXXXX以外の通常の型を指定するようにお願いいたします。
コード例:
OutputSlotAny
OutputSlotAnyは、SlotTypeAttributeの属性で出力型を指定しない限りInputSlotAnyにのみ接続できる特殊な出力スロットであるため、こちらも仕様となっています。
特定の型を出力したい場合は以下のように型指定してください。
コード例:
※SlotType属性付きOutputSlotAnyを使う場合はOutputSlot<XXXX>の型定義は不要です。
Variableや入出力スロットの使用方法に関してのマニュアルが不足しておりました。
マニュアルについても今後の更新で改善していきます。
ご不便おかけして申し訳ございませんがよろしくお願いいたします。
FlexibleXXXX
FlexibleXXXが持つデータスロットは入力専用ですので、SetParameterにつなげられること自体が問題ですね(お互い入力スロット同士)
詳しく検証して修正いたします。
OutputSlot<XXXX>
ジェネリック型はシリアライズ対象とならないため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は、SlotTypeAttributeの属性で出力型を指定しない限りInputSlotAnyにのみ接続できる特殊な出力スロットであるため、こちらも仕様となっています。
特定の型を出力したい場合は以下のように型指定してください。
コード例:
Code: Select all
// 自作の型TestDataを出力するスロット
[SlotType(typeof(TestData))]
public OutputSlotAny outputSlotTestData = new OutputSlotAny();
Variableや入出力スロットの使用方法に関してのマニュアルが不足しておりました。
マニュアルについても今後の更新で改善していきます。
ご不便おかけして申し訳ございませんがよろしくお願いいたします。
Re: サイドパネルへのSetParameterにVariableのスロットを接続できない
迅速な回答をありがとうございます。Variable C# Scriptを生成した際に、OutputXXXX型も作られていたんですね。見落としていました。
解決しました。
解決しました。
- caitsithware
- 管理人
- Posts: 236
- Joined: 2015/08/17 12:41
Re: サイドパネルへのSetParameterにVariableのスロットを接続できない
検証してみましたが、入力スロット同士がデータの流れ的に接続されてしまう不具合は確認できませんでした。caitsithware wrote: ↑2019/02/12 00:09FlexibleXXXが持つデータスロットは入力専用ですので、SetParameterにつなげられること自体が問題ですね(お互い入力スロット同士)
詳しく検証して修正いたします。
出力スロットは複数の入力スロットに接続できるため、リルートノードに関しても出力サイドが複数の入力スロットに接続できるのは正常動作になります。
例: このような接続であれば正常です。
もし入力スロット同士が不正に接続されているようでしたら、その再現方法やスクリーンショットもいただけると助かります。