TS代码中static方法怎么用?

新手小白在练习的时候遇到一个问题:
bg节点绑定了主逻辑脚本Game.ts
Ball预制体绑定了Ball.ts
Ball脚本调用了Game.tsisOver() 方法

static isOver(){
cc.log(this.ballNodeArr.length);
//cc.log(Game.ballNodeArr.length);
}

问题1:
这里使用 this.ballNodeArr.length 或者 Game.ballNodeArr.length 都报错
问题2:
Ball.ts中无法使用Game.isOver();调用。(尝试过用单例,但是两个脚本相互调用了,会报错)
感谢大佬解答,感激不尽/抱拳/抱拳

静态方法里面的变量也要时静态或者常量的

ballNodeArr是静态参数吗

组件里为什么要用静态呢?你可以Game.instance = this,通过Game.instance.isOver来调用

是private类型的,我改一下,感谢

这个我试过,不过Game.ts中使用了this.node.getComptent(“Ball”).xxx;,我这样运行时会报错,我搜索发现文档说,使用单例模式脚本间互相调用会报错

做个事件管理吧,Ball中抛事件出来给Game接收调用isOver

静态方法是类方法,方法内的 this 也是值得 Game 这个类本身,而不是这个类的对象

可能是你 Game 类没有静态属性 ballNodeArr, 所以会报错

那可能是因为你把 Game.ts 所在脚本的属性上初始化 Ball.ts的对象,并且在Ball.ts所在脚本的属性上初始化Game.ts的对象了,不要在类的属性初始化上相互嵌套,你可以在 Game.ts 的onLoad 里对 Ball.ts的 game 属性赋值

1赞

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。