如何判断一个组件是否为自定义脚本?

通过node.getComponents(Component)获取到了节点上所有组件。
但是我需要获取自定义脚本,也就是我们创建并挂载到节点上的ts或者js脚本。
有没有什么简单直接的判断方式?
或者有没有其他方法取自定义脚本?(不考虑脚本名称的情况下)

需求其实很简单,就是不管三七二十八,直接拿到组件上的脚本。

直接获取所有的组件,已知系统组件名字,剩下的就是你的组件了.
主要是你的需求很奇怪,遍历所有组件是一个不错的方法.

:joy:已知系统组件名字,意思是把所有系统组件的名字做个统计记录,然后遍历排除吗?

我想到的是把所有自定义脚本名称都加特定头,比如 CTM_XXXCompon 这様 :sweat_smile:

不用统计吧,cocos自带的组件不都是cc.开头的,判断组件名字不是这个开头不就是自定义的吗,还有sp.开头排除下

这是其中方法,
还有一种,自己组件以特定str开头,比如MyLabel,MyButton.包含"My"就是自己组件.

3.x没有这个开头了~~

这种方式有点苛刻了,用起来不太方便。

好像是一种方案,我先研究下试试。

组件名字就是cc.开头没错啊,引入方式跟组件名字没关系的
image

只要你自定义组件这里的名字不是cc.开头就行,一般也不会这么做
image

确实是一个很好的思路。 :+1:

写个自己的基类集成脚本类,然后你的脚本类都继承这个基类, 是这个自己基类的就是你的脚本

1赞

这样也可以实现,但是用起来还是不太方便。

基类方案挺好的呀,基类里面再写个必须实现的获取脚本名字的方法,这样先拿到基类,再通过获取名字的方法,就知道具体是哪个组件了