[]Laya中如何获取组件中的脚本,类似于unity里的getcomponent<>();

不知道Laya中的那个属性可以完成这样的操作
已邀请:

Aaron1111

赞同来自:

https://layaair.ldc.layabox.com/api/?category=Core&class=laya.d3.core.Sprite3D   看一下也是getcomponentby 类型什么的。

158*****553

赞同来自:

兄弟后来怎么解决的

_Chaos

赞同来自:

今天学习也碰到了这个问题,刚发现的解决办法,记录一下供大家参考:
正如楼上兄弟说的只有继承了Laya.Compnent的类可以填入getComponent函数里,下面是官方案例里的一个使用示例,Laya.Rigidbody3D继承自PhysicsColliderComponent,而PhysicsColliderComponent继承自Component,确实是这样。
    onAwake(): void {
console.log("Direct Start=============")
this.target = this.owner as Laya.Sprite3D;
this.targetRig = this.target.getComponent(Laya.Rigidbody3D);
this.forwardlenth = new Laya.Vector3();
}
那有些不继承自Component的就很有可能获取到的节点就是需要本身需要的Component,所以代码可以这样写:
假设需要获取场景里名叫MyVideo的VideoNode组件并播放,由于知道了视频组件是2D组件(使用的是Laya3.1版本),所以可以通过scene来获取
this.owner.scene.getChildByName("MyVideo").play();
这样就能获取到了,但在VSCode里并不知道getChildByName获取到的节点是什么类型,可能会报错,所以需要转换一下,可以这样写
(this.owner.scene.getChildByName("MyVideo") as Laya.VideoNode).play();

要回复问题请先

商务合作
商务合作