Unity - A计划(永久有效期) 扫二维码继续学习 二维码时效为半小时

(207评价)
优惠后 ¥1899.00优惠前 ¥2499.00 双十一全年最大力度限时优惠
1对1 答疑即时回复7天无理由退款30天价保提问必答

服务保障

1对1 答疑

提供专属的一对一在线答疑,快速答疑解惑。

即时回复

及时响应学习咨询,帮助解决问题。

7天无理由退款

购买后7天内可申请无理由退款。

30天价保

购买后30天内如遇降价,可申请价保。

提问必答

对于提问做到有问必答,帮您扫清学习过程中的种种障碍

为什么会错啊
乌拉乌拉木大发起了问答2019-05-01
3
回复
314
浏览

public class Node : MonoBehaviour
{
    [HideInInspector]
    public GameObject turretGo;//保存当前炮塔

}

 

 public class BuildManger : MonoBehaviour
{

void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            if (EventSystem.current.IsPointerOverGameObject() == false)
            {
                Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
                RaycastHit hit;
                bool iscollider = Physics.Raycast(ray, out hit, 1000, LayerMask.GetMask("Node"));
                if (iscollider)
                {
                    Node node = hit.collider.GetComponent<Node>();
                    if (node.turretGO == null)   //这里在Unity里报错
                    {   //可以创建
                        if(Money > selectedTurretDesign.cost)
                        {
                            MoneyChange(-selectedTurretDesign.cost);
                            node.BuildTurret(selectedTurretDesign.Prefab);
                            
                        }
                    }

}

报错原因NullReferenceException: Object reference not set to an instance of an object

所有回复
  • 老师_Trigger • 2019-05-02

    同学你好,把target赋值一下,而且这个判断语句要用node.turretGO != null哦,可以下载老师源码对比看一下。

    • 乌拉乌拉木大 • 2019-05-03

      我也实例化了 和源码比较也没错的 还是会报错

      (0) 回复
    • 老师_Trigger • 2019-05-03

      回复 @ 乌拉乌拉木大: 同学在报错位置debug一下,看看具体是哪个东西是空的,note,note.turretGo这两个东西看哪个是空的。也可能是我们在做项目的时候哪个地方粗心多挂了一个脚本,先debug确定哪个是空的。

      (0) 回复
    还有-3条回复,点击查看
    你还没有登录,请先登录或注册!
发表回复
你还没有登录,请先 登录或 注册!