首页 前端知识 TS跨脚本调用的几种方法

TS跨脚本调用的几种方法

2024-04-29 12:04:14 前端知识 前端哥 154 956 我要收藏

1.全局变量

A B两个脚本如果想相互调用,可以用globalThis定义一个全局变量比如:

A脚本里面存在Afun()方法,B脚本里面存在Bfun()方法,那么可以在初始时在A脚本里面定义一个globalThis._A=this;在B脚本里面定义一个globalThis._B=this;那么之后就可以在A脚本里面调用globalThis._B.Bfun()函数了。也可以在B脚本里面调用globalThis._A.Afun()函数。

2.全局事件

同样的,我们可以直接定义一个全局事件来一劳永逸。在脚本初始时我们创建globalThis._event=new cc.EventTarget();之后就可以在其他所有脚本里面通过globalThis._event.emit("callType",data)来触发监听事件。通过globalThis._event.on("callType",(data)=>{})来响应事件。

3.单实例事件

	
export default class eventTargetMar {
    static ins:cc.EventTarget=null;
    static getInstence(){
     if(!this.ins)
      {
     this.ins=new cc.EventTarget();
      }
     return this.ins;
    }
    }
    

通过上面方法可以实现一个单实例类,在其他脚本里面调用let ec=eventTargetMar.getInstence()即可通过ec.emit跟ec.on来接收与响应。

4.通过编辑器引入。

在A脚本里面写入以下代码

@property(cc.Node)
B_Node:cc.Node=null;

在编辑器里面把带有B脚本的节点拖入B_Node块中。即可在A脚本中通过

let bNode=this.B_Node.getComponent(B);
bNode.Bfun();

来跨脚本调用B的方法。

Tips:如果想让B也能调用A的方法,则需要在B脚本里面定义init()方法,如下:

a_node;//属性
init(A){
this.a_node=A;
}

然后在A脚本里面调用

this.B_Node.getComponent(B).init(this);

方法,即可在B脚本里面通过this.a_node.Afun()来实现B脚本的跨脚本调用。

转载请注明出处或者链接地址:https://www.qianduange.cn//article/6556.html
标签
游戏引擎
评论
发布的文章

什么是JSON 为什么使用它

2024-05-07 13:05:36

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!