如何解决如何在 Unity 中为敌人 AI 脚本创建默认播放器?
我有一个敌人 AI 脚本,它基本上跟随我的玩家。现在我有一个“公共游戏对象播放器”,我必须通过将我的播放器预制件拖到插槽上来手动分配。但是我希望场景中有很多敌人,所以我不想为每个敌人都手动执行此操作。我怎样才能给 EnemyController 脚本一个默认的玩家跟随?
我有一个 PlayerManager,用于将我的玩家的位置传递给敌人:
public class EnemyController : MonoBehavIoUr
{
Transform target;
// Start is called before the first frame update
void Start()
{
target = PlayerManager.instance.player.transform;
}
那部分工作正常。所以我的想法是,像这样为玩家创建一个公共变量:
public GameObject player = PlayerManager.instance.player;
但这没有用。我收到此错误:“NullReferenceException:未将对象引用设置为对象的实例”
非常感谢您提供的任何帮助!
解决方法
使用 public GameObject player = PlayerManager.instance.player;
时,您的字段在调用 EnemyController
的构造函数之前被初始化,并且您无法控制 PlayerManager.instance.player
的值/定义状态(PlayerManager 或实例或播放器)可以为空,在您的情况下为空)。所以现在使用它“为时过早”。
相反,您可以使用 PlayerInputManager
中的事件 playerJoinedEvent
将敌人分配给刚刚加入的事件处理程序,该事件处理程序检查 PlayerManager
和 {{1} } 和 instance
不为空,然后将玩家分配给目标。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。