微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Unity 中为敌人 AI 脚本创建默认播放器?

如何解决如何在 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 举报,一经查实,本站将立刻删除。