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

(196评价)
价格: 4019.00元
为什么会错啊
乌拉乌拉木大发起了问答2019-05-01
3
回复
173
浏览

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条回复,点击查看
    你还没有登录,请先登录注册
发表回复
你还没有登录,请先 登录或 注册!