AnimatorOverrideControllerをAgentControllerのAnimatorに設定するとエラーが発生する

ここは、Arbor開発者へ不具合を報告するためのフォーラムです。
フォーラムルールをよく読み、不具合確認に必要な情報を記載するようお願いします。

注意点:
  • Arborを更新する際は「アップデートガイド」をよく読み行ってください。
  • 既に把握している不具合は「既知の問題」にまとめてありますので一度確認してみてください。
  • 不具合報告をする前にReleaseNoteを確認し、なるべく最新バージョンを使用して下さい。
  • Unityのベータ版およびアルファ版はサポート対象外です。正式リリース版をご利用ください。
  • 他アセット導入による不具合は原則サポート対象外です。不具合を見つけた場合はどのアセットの問題であるか切り分けた上でのご報告をお願いいたします。

Here is a forum for reporting failure to Arbor developer.
Please read the forum rules carefully and enter the information necessary to confirm the problem.

Note:
  • Please read the "Update Guide" carefully when updating Arbor.
  • The bugs that we already know are summarized in "Known Issues", so please check once.
  • Please check ReleaseNote and use the latest version if possible before reporting a bug.
  • Unity beta and alpha versions are not supported. Please use the official release version.
  • In principle, defects caused by the introduction of other assets are not supported. If you find a defect, please report it after isolating which asset is the problem.

Forum rules
報告に必要な項目は以下の通りです。
  • OS(必須)
  • Unityバージョン(必須)
  • Arborバージョン(必須)
  • 再現方法(必須)
    再現方法については、誰が読んでも同様の手順を行えるよう正確に記述するようにお願いいたします。
    もし正確な再現手順が不明な場合、覚えている限りで構いませんので直前に行っていたことや最後に編集した時のことを教えてください。
  • ビルドプラットフォーム
  • 再現プロジェクト(Arborや他アセットなどを含まない最小構成)もしくは動画

注意点:
  • Arborを更新する際は「アップデートガイド」をよく読み行ってください。
  • 既に把握している不具合は「既知の問題」にまとめてありますので一度確認してみてください。
  • 不具合報告をする前にReleaseNoteを確認し、なるべく最新バージョンを使用して下さい。
  • Unityのベータ版およびアルファ版はサポート対象外です。正式リリース版をご利用ください。
  • 他アセット導入による不具合は原則サポート対象外です。不具合を見つけた場合はどのアセットの問題であるか切り分けた上でのご報告をお願いいたします。

The items necessary for reporting are as follows.
  • OS(Required)
  • Unity version(Required)
  • Arbor version(Required)
  • How to reproduce(Required)
    The reproduction method should be described accurately so that anyone can read the same procedure.
    If you do not know the exact reproduction procedure, as long as you can remember it, so please tell us what you were doing immediately before and the last time you edited it.
  • Build platform
  • Reproduction project (Minimum configuration not including Arbor and other assets) or video

Note:
  • Please read the "Update Guide" carefully when updating Arbor.
  • The bugs that we already know are summarized in "Known Issues", so please check once.
  • Please check ReleaseNote and use the latest version if possible before reporting a bug.
  • Unity beta and alpha versions are not supported. Please use the official release version.
  • In principle, defects caused by the introduction of other assets are not supported. If you find a defect, please report it after isolating which asset is the problem.
nanatsuki

AnimatorOverrideControllerをAgentControllerのAnimatorに設定するとエラーが発生する

Post by nanatsuki » 2022/03/12 09:17

OS: Windows11
Unityバージョン: 2021.2.15f1
Arborバージョン: 3.8.9
再現方法: AnimatorOverrideControllerをAgentControllerのAnimatorに設定する

エラー内容
ArgumentNullException: Value cannot be null.
Parameter name: key
System.Collections.Generic.Dictionary`2[TKey,TValue].FindEntry (TKey key) (at <feaaa6313e32495d9f259b175aa6b597>:0)
System.Collections.Generic.Dictionary`2[TKey,TValue].TryGetValue (TKey key, TValue& value) (at <feaaa6313e32495d9f259b175aa6b597>:0)
ArborEditor.EditorGUITools.GetAnimatorParameters (UnityEditor.Animations.AnimatorController animatorController) (at Assets/Plugins/Arbor/Internal/Editor/EditorGUITools.cs:1954)
ArborEditor.EditorGUITools.AnimatorParameterField (UnityEngine.Rect position, UnityEngine.Animator animator, UnityEditor.SerializedProperty nameProperty, UnityEditor.SerializedProperty typeProperty, UnityEngine.GUIContent label, System.Boolean hasType, UnityEngine.AnimatorControllerParameterType parameterType) (at Assets/Plugins/Arbor/Internal/Editor/EditorGUITools.cs:1973)
ArborEditor.EditorGUITools.AnimatorParameterField (UnityEngine.Animator animator, UnityEditor.SerializedProperty nameProperty, UnityEditor.SerializedProperty typeProperty, UnityEngine.GUIContent label, UnityEngine.AnimatorControllerParameterType parameterType) (at Assets/Plugins/Arbor/Internal/Editor/EditorGUITools.cs:2078)
ArborEditor.AgentControllerInspector.OnInspectorGUI () (at Assets/Plugins/Arbor/BuiltInBehaviours/Editor/Components/AgentControllerInspector.cs:70)
UnityEditor.UIElements.InspectorElement+<>c__DisplayClass59_0.<CreateIMGUIInspectorFromEditor>b__0 () (at <fa4830dcb55b4d21a18ffd468621039e>:0)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr, Boolean&)

AnimatorOverrideControllerの場合、Assets/Plugins/Arbor/Internal/Editor/EditorGUITools.cs の L1969

Code: Select all

AnimatorController animatorController = animator.runtimeAnimatorController as AnimatorController;
がnullになるためにエラーが発生し設定できないようです。
以下のようにAnimatorOverrideControllerの場合を考慮するとエラーが解消され設定できるようになりました。
ご確認よろしくお願いいたします。

Code: Select all

AnimatorController animatorController;
if (animator.runtimeAnimatorController is AnimatorOverrideController)
{
	var animatorOverrideController = animator.runtimeAnimatorController as AnimatorOverrideController;
	animatorController = animatorOverrideController.runtimeAnimatorController as AnimatorController;
}
else
{
	animatorController = animator.runtimeAnimatorController as AnimatorController;
}

nanatsuki

Re: AnimatorOverrideControllerをAgentControllerのAnimatorに設定するとエラーが発生する

Post by nanatsuki » 2022/03/12 10:16

少々説明が不適切だったため以下の通り訂正いたします。

× 再現方法: AnimatorOverrideController を AgentController の Animator に設定する
○ 再現方法: AnimatorOverrideController を Controller に設定したAnimatorを AgentController の Animator に設定する

User avatar
caitsithware
管理人
Posts: 462
Joined: 2015/08/17 12:41

Re: AnimatorOverrideControllerをAgentControllerのAnimatorに設定するとエラーが発生する

Post by caitsithware » 2022/03/12 10:19

ご報告ありがとうございます。
確認の後修正いたします。

User avatar
caitsithware
管理人
Posts: 462
Joined: 2015/08/17 12:41

Re: AnimatorOverrideControllerをAgentControllerのAnimatorに設定するとエラーが発生する

Post by caitsithware » 2022/03/12 11:08

確認したところ再現できましたので次回の更新で修正いたします。
AgentController以外でもruntimeAnimatorControllerからAnimatorControllerを取得している箇所がありますので、そちらも併せて修正いたします。

対処方法についてはご提示していただいた方法で問題なさそうです。

暫定対処方法まとめ
  • EditorGUIToolsに以下のようなメソッド追加。

    Code: Select all

    public static AnimatorController GetAnimatorController(Animator animator)
    {
    	if (animator == null)
    	{
    		return null;
    	}
    
    	var runtimeAnimatorController = animator.runtimeAnimatorController;
    	if (runtimeAnimatorController is AnimatorOverrideController overrideController)
    	{
    		runtimeAnimatorController = overrideController.runtimeAnimatorController;
    	}
    
    	return runtimeAnimatorController as AnimatorController;
    }
    
  • animator.runtimeAnimatorControllerに直接アクセスしている箇所をGetAnimatorController(animator)に置き換え。

nanatsuki

Re: AnimatorOverrideControllerをAgentControllerのAnimatorに設定するとエラーが発生する

Post by nanatsuki » 2022/03/12 11:18

早速の返信ありがとうございます。
修正よろしくお願いいたします。

Post Reply