Page 1 of 1

ParameterContainerのロードエラー

Posted: 2018/12/17 04:27
by kag
Unity: 2018.2.14
Arbor: 3.4.0 (プロジェクト作成はArbor3.3.2)
OS: Windows
ビルドプラットフォーム: Windows

いつもお世話になっております。

ロード先シーンでPrefab内にあるParameterContainerのロード時にobjectReferenceValueで、
System.InvalidOperationException: EnsureRunningOnMainThread can only be called from the main thread
の例外が発生します。

再現方法
・添付のプロジェクトのTest1シーンを開く
・実行するとTest2をロードするのですが、例外が発生します。

よろしくお願いします。

Re: ParameterContainerのロードエラー

Posted: 2018/12/17 04:52
by caitsithware
ご報告ありがとうございます。

確認いたしますので少々お待ちください。

もし追加でお気づきの点などがありましたら続けて返信していただけると助かります。

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

Re: ParameterContainerのロードエラー

Posted: 2018/12/17 05:22
by caitsithware
再現確認できました。

早急に修正版に更新いたします。
アセットストアへの更新には数日かかってしまう可能性がありますがご了承下さい。

暫定対処方法:
  • Assets/Plugins/Arbor/Internal/Scripts/ParameterContainerInternal.csをスクリプトエディタで開く。
  • 4903行あたりから4916行あたりを以下のように変更する。

    Code: Select all

    case Parameter.Type.GameObject:
    	_ObjectParameters[newParameter._ParameterIndex] = p._GameObjectValue;
    	break;
    case Parameter.Type.Component:
    	_ObjectParameters[newParameter._ParameterIndex] = p._ObjectReferenceValue;
    	newParameter.referenceType = new ClassTypeReference(p.referenceType);
    	break;
    case Parameter.Type.Transform:
    case Parameter.Type.RectTransform:
    case Parameter.Type.Rigidbody:
    case Parameter.Type.Rigidbody2D:
    case Parameter.Type.Variable:
    	_ObjectParameters[newParameter._ParameterIndex] = p._ObjectReferenceValue;
    	break;
    
    (「newParameter.objectReferenceValue = ~」となっているところを「_ObjectParameters[newParameter._ParameterIndex] = ~」に変更)
以上となります。
ご不便おかけして申し訳ございませんがよろしくお願いいたします。

Re: ParameterContainerのロードエラー

Posted: 2018/12/17 07:00
by kag
対応ありがとうございます。
例外は発生しなくなりました。

次に同じ環境で、ParamterTransitionで、Bool型のパラメータを参照したときにNullReferenceの例外が発生します。
※ParameterContainerの修正は反映させてあります。

再現方法
・添付のプロジェクトのTest1シーンを開く
・実行するとTest3をロードするのですが、例外が発生します。

よろしくお願いします。

Re: ParameterContainerのロードエラー

Posted: 2018/12/17 07:38
by caitsithware
ご確認ありがとうございます。
ParameterContainerのエラーにつきましては早急に修正版を公開いたします。
アセットストアへの反映までもうしばらくお待ちください。
kag wrote:
2018/12/17 07:00
次に同じ環境で、ParamterTransitionで、Bool型のパラメータを参照したときにNullReferenceの例外が発生します。
こちらについてですが、なぜかISerializationCallbackReceiver.OnAfterDeserializeが呼ばれなく必要な情報が受け渡しできない状況のようです。
Unityの不具合の可能性も含め、詳しく調査いたしますのでもう少しお時間をください。

Re: ParameterContainerのロードエラー

Posted: 2018/12/17 08:35
by caitsithware
kag wrote:
2018/12/17 07:00
次に同じ環境で、ParamterTransitionで、Bool型のパラメータを参照したときにNullReferenceの例外が発生します。
こちらについても原因特定出来ました。

ParameterContainerの修正対応と合わせて次の更新で対応いたします。
アセットストアへの反映には数日かかってしまう可能性がありますがご了承下さい。
それまでの間、以下の暫定対処方法を行ってください。

暫定対処方法:
  • Assets/Plugins/Arbor/BuiltInBehaviours/Scripts/Common/ParameterConditionList.csをスクリプトエディタで開く。
  • 179行目(_Conditions.Add(condition);の前)あたりに以下のコードを挿入。

    Code: Select all

    condition.owner = this;
    
また、同様の不具合としてCalculatorTransitionなどでも発生しておりました。
CalculatorTransitionの暫定対処方法は以下の通りです。
  • Assets/Plugins/Arbor/BuiltInBehaviours/Scripts/Common/CalculatorConditionList.csをスクリプトエディタで開く。
  • 150行目(_Conditions.Add(condition);の前)あたりに以下のコードを挿入。

    Code: Select all

    condition.owner = this;
    
この不具合についてですが、シーンを旧データのまま実行時に読み込むと発生する不具合でした。
もし他にもシーン読み込み時に例外が発生するようでしたら、発生するシーンを一度保存し直すと改善できるかもしれません。
(他にも発生するようでしたら、お手数おかけしますが不具合報告もよろしくお願いいたします)

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

Re: ParameterContainerのロードエラー

Posted: 2018/12/17 10:13
by kag
対応ありがとうございます。
解消されました。
今後とも宜しくお願いします。