Page 1 of 1

SubStateMachineの引数にList型を指定して実行すると、 ParameterTypeMismatchException

Posted: 2021/10/01 06:53
by ooee
いつもお世話になっています。

件名の不具合に遭遇したので、ご報告いたします。

OS: Windows10
Unityバージョン: 2020.3.19f1
Arborバージョン: 3.8.5
再現方法:
1. ArborFSM内にSubStateMachineを追加、SubStateMachine内のパラメータにList型(例えばIntList)を追加
2. ArborFSMのパラメータにList型を作成して、作成したList型を引数にSubStateMachineを呼び出すようにする
3. ParameterTypeMismatchException: It can not be assigned because the parameter type is different.と表示される。

Re: SubStateMachineの引数にList型を指定して実行すると、 ParameterTypeMismatchException

Posted: 2021/10/01 07:20
by caitsithware
ご報告ありがとうございます。

確認したところ再現できましたので修正いたします。

暫定対象方法
  1. Assets/Plugins/Arbor/BuiltInBehaviours/Scripts/Common/GraphArgumentList.csを開く。
  2. 283行目を以下のように変更。

    Code: Select all

    parameter.value = value;

Re: SubStateMachineの引数にList型を指定して実行すると、 ParameterTypeMismatchException

Posted: 2021/10/01 09:11
by ooee
暫定対象方法を実行したところ、エラーは発生しなくなり処理が実行されるようになりました。ありがとうございます。

新たにもう一つ気になる点ができたのですが、
引数として渡したListをSubStateMachine内で操作(要素の削除とか追加)して完了しても、
呼び出し元のListには反映されないのですが、これは仕様でしょうか。

Re: SubStateMachineの引数にList型を指定して実行すると、 ParameterTypeMismatchException

Posted: 2021/10/01 09:57
by caitsithware
ご確認ありがとうございます。
アセットへの正式反映はもうしばらくお待ちください。
(現在3.8.6の審査中であるため、その次の3.8.7にて修正する予定です)
ooee wrote: 2021/10/01 09:11 呼び出し元のListには反映されないのですが、これは仕様でしょうか。
「呼び出し元のList」とは親グラフ側ということですよね、こちらはパラメーターの仕様となっております。
パラメーターにList型の値を格納する際にパラメーター内部のList<T>インスタンスに要素を格納しなおす(Clearして各要素をAddする)仕様です。
親グラフ側のパラメーターに反映しなおしたい場合はSubStateMachineからパラメーターを出力してSetParameterしてください。

Re: SubStateMachineの引数にList型を指定して実行すると、 ParameterTypeMismatchException

Posted: 2021/10/01 10:44
by ooee
回答ありがとうございます。
caitsithware wrote: 2021/10/01 09:57 親グラフ側のパラメーターに反映しなおしたい場合はSubStateMachineからパラメーターを出力してSetParameterしてください。
確認してみたところ、やりたいことはこれでうまくいきそうです。ありがとうございました。

Re: SubStateMachineの引数にList型を指定して実行すると、 ParameterTypeMismatchException

Posted: 2021/11/10 00:00
by caitsithware
Arbor 3.8.7にて修正いたしました。
アセットストアから再DLし、リリースノートやreadme記載の更新手順に従って再インポートしてください。
Arbor 3.8.7 リリース | Arbor 3