getComponent() null错误

快速上手:制作第一个游戏
在制作随机位置生成星星时,出现错误:
Simulator: 44:TypeError: this.player.getComponent(…) is null
at a (F:\Workspace\Cocos2d-JS\Star\start_project\library\bundle.project.js?009:NaN:0)

我的代码Game.js:

cc.Class({
    extends: cc.Component,

    properties: {
        //这个属性引用了星星的预制资源
        starPrefab:{
            default:null,
            type:cc.Prefab
        },
        //星星产生后消失时间的随机范围
        maxStarDuration:0,
        minStarDuration:0,
        //地面节点,用于确定星星生成的高度
        ground:{
            default:null,
            type:cc.Node
        },
        //player 节点,用于获取主角弹跳的高度,和控制主角行动开关
        player:{
            default:null,
            type:cc.Node
        }
    },
    
    spanwnNewStar:function(){
      //使用给定的模板在场景中生成一个新节点
      var newStar = cc.instantiate(this.starPrefab);
      //将新增的节点添加到Canvas节点下面
      this.node.addChild(newStar);
      //为星星设置一个随机位置
      newStar.setPosition(this.getNewStarPosition());
      //将Game组件的实例传入星星组件
      //newStar.getComponent('Star').game = this;
    },
    
    getNewStarPosition:function(){
      var randX = 0;
      //根据地面位置和主角跳跃高度,随机得到一个星星的y坐标
       var randY = this.groundY + cc.random0To1() * this.player.getComponent('Player').jumpHeight + 50;
      //根据屏幕宽度,随机得到一个星星x坐标
      var maxX = this.node.width/2;
      randX = cc.randomMinus1To1()*maxX;
      //返回星星坐标
      return cc.p(randX,randY);
    },
    
    // use this for initialization
    onLoad: function () {
        //获取地面的y坐标
        this.groundY = this.groundY + this.ground.height/2;
        //生成一个新的星星
        this.spanwnNewStar();
    },

    // called every frame, uncomment this function to activate update callback
    // update: function (dt) {

    // },
});

几种可能:

  1. Game 组件上的 Player 属性没有赋值,需要把场景中的 player 节点拖上去
  2. player 节点上没有添加 Player 组件

你比我做的快,我是在随机位置生成星星

这里就错误了。

我也是在这个位置的,你也是这错误吗?

是的啊,好坑爹,我们俩来讨论讨论

Game 组件上的 Player 属性赋值成功是这样吗?
player 节点上添加 Player 组件是这样吗?

我知道错误了,我的组件名写错了Player.js->改为Player

我也遇到这个问题了,原因是做星星预制资源的时候,忘记把Star.js这个组件给添加进去了。
解决办法:找到资源管理器的预制资源star双击之后可以在右边的属性检查器里面添加组件(把脚本拖进去就好了)

1赞

非常感谢,原来我也是一样,添加错误的地方了。、、、

感激不尽:relieved:

感激不尽:relieved:

是的,我问题也是这么解决的。就是getCOmponent为null.是因为没有给prefab添加js文件