首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >统一2D -脚本激活时的空引用

统一2D -脚本激活时的空引用
EN

Stack Overflow用户
提问于 2017-11-04 22:10:34
回答 1查看 73关注 0票数 0

我有一个似乎无法解决的问题。

我有一个AIManager脚本。这有所有的控制和我的敌人将如何行动。然后我就有了一个EnemyBasic脚本。这代表了这个敌人的人工智能行为。他多久会攻击一次等。

我试着使用一个关于Raycast的教程,它可以帮助我为我的敌人实现视力。这起作用了,我的敌人确实发现了我,用一个公开的嘘声来测试。

有问题的部分。如果我禁用了EnemyBasic脚本,我的敌人就会呆在一个地方,这是我想要的。当我进入他的视线,我想激活EnemyBasic脚本,这样他就可以开始攻击我。不幸的是,在我的代码中,这会产生一个错误:

NullReferenceException:对象引用未设置为对象Sight.Raycasting ()的实例(at Asset/Sight.cs:21) Sight.Update () (at Asset/Sight.cs:13)

这是我的代码:

代码语言:javascript
复制
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Sight : MonoBehaviour {

    public Transform sightStart, sightEnd;
    public bool spotted = false;

    void Update () {
        Raycasting();
    }

     void Raycasting()
    {
        spotted = Physics2D.Linecast(sightStart.position, sightEnd.position, 1 << LayerMask.NameToLayer("Player"));

        if (spotted)
        {
           /*---> LINE OF ERROR */ gameObject.GetComponent<EnemyBasic>().enabled = true;
        }
    }
}

任何想法。我对团结是陌生的,所以很有可能它是愚蠢的。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-04 22:40:39

正如@程序员在注释中所建议的那样。结果发现,我的视觉脚本与GameObejct脚本不同,它与EnemyBasic脚本不同。把剧本抄袭过来,效果就像一种魅力。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47116111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档