[LayaAirIDE3][3.1.0 B2] 继承PixelLineRenderer的脚本会在编辑器中触发onUpdate



test.png

 
无法关闭,且没有开启编辑器运行的功能.附件是ts脚本,随便挂在一个3d精灵上就能复现.
test.png
已邀请:

layaAir小孟

赞同来自:

您好,这个问题是这样的:
1.因为我在使用的时候,一般脚本里都是继承的Laya.Script,然后在脚本里再去使用其它类。我看到您直接继承的Laya.PixelLineRenderer,一般不这样使用。

2.如果您需要绘制像素线,使用的是PixelLineSprite3D。具体的用法可以参考”引擎API使用示例“的CustomMesh场景。

1.png


2.png

 
 
3.关于您本帖的onUpdate问题,我与同事讨论后,认为是这样的:这个pixelLineRenderer是个组件内容,继承自Component。在Component里面就有onUpdate函数周期的,就是会每帧调用呢。生命周期也不是脚本组件独有的,脚本组件重点在组件Component。之所以在编辑器内不预览的时候都能调用,是因为这个场景在ide内是还在运行的,每个组件内容会走onUpdate更新。
 

无名玩家X

赞同来自:

您好,我这整理了一些内容
Snipaste_2023-12-11_19-59-06.png

Snipaste_2023-12-11_19-59-27.png

引用里能看到二者都是直接或间接继承于component,不过这个问题和从哪里继承没啥关系,和生命周期关系也不大.
主要问题是组件在编辑器里的行为不一致,按理说,开发人员没有标记@runInEditor装饰器的话,他就不应该在编辑器模式生效,只在播放模式生效(其他的脚本,比如继承script的脚本,默认都是这样的行为)
关于@runInEditor,文档内容如下图
Snipaste_2023-12-11_20-05-59.png

 
出于以上情况,才将这个问题作为bug考虑的. 
其实现在也能通过判断是否播放来抑制事件,但是这个办法应该只作为临时解决方案,因为这可能和@runInEditor装饰器的效果产生冲突.
 
顺带一提:其实直接继承Laya.PixelLineRenderer这种内部组件,属于"基于基本组件进行扩展",按理说应该是很常见的开发者行为,尤其是对于我这种水平比较差的用户,有时候能省下不少造轮子的时间....

要回复问题请先

商务合作
商务合作