unity3d 从Unity中的另一个脚本切换到ML Agent脚本

d7v8vwbk  于 2023-03-23  发布在  其他
关注(0)|答案(1)|浏览(120)

我想在Unity中训练2 ml代理(相同的脚本,使用自我播放)。我希望代理最初遵循脚本路径,直到它检测到敌方玩家(其他代理)。一旦检测到,路径跟踪脚本被禁用,代理脚本被启用。这是否可能,如果是这样,如何?
这是我的代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

private void Start()
{
    agent = FindObjectsOfType<AIAgent>();

    //FindObjectsOfType<AIAgent>();
    pathFollowerscript = FindObjectOfType<PathFollower1>();

}
if (IsWithinRange)
{
    Debug.Log("Detected " + collider.name);
    // Do something with the detected collider

    collider.tag = enemyTag + "Detected";
    //Debug.Log(collider.tag);
    //Debug.Log(enemyTag);
    pathFollowerscript.enabled = false;
    foreach (var a in agent)
    {
        a.enabled = true;
    }

}

else
{
    collider.tag = enemyTag;
    pathFollowerscript.enabled = true;
}

foreach (var a in agent)
{
    a.enabled = false;
}
}

我在'FindObjectsOfType'行得到一个NullReferenceException,可能是因为在游戏开始时没有代理。有人能帮我解决这个问题吗?

plicqrtu

plicqrtu1#

我找到了原因。这是因为代理最初是不活动的,FindObjectsOfType只在活动组件上工作,除非传递参数FindObjectsOfType(inactive:正确)

相关问题