我想在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,可能是因为在游戏开始时没有代理。有人能帮我解决这个问题吗?
1条答案
按热度按时间plicqrtu1#
我找到了原因。这是因为代理最初是不活动的,FindObjectsOfType只在活动组件上工作,除非传递参数FindObjectsOfType(inactive:正确)