怎么判断是在编辑器预览的。。

3.6.0添加了编辑器预览功能, 很舒服。。有个小问题。
扩展了 Component 设置 @executeInEditMode(true)//允许在编辑器运行之后 需要怎么 判断当前是在编辑器运行状态还是在编辑状态 :sweat_smile:
之前用的
if (EDITOR) {
return;
}
但是在编辑器内预览的时候 这个 值也是true。。。Preview 又是false。。求解怎么判断当前是在预览状态还是在编辑器状态

1赞

:sweat_smile: 我估计这个 Preview 就是把状态当成了浏览器环境了, 那编辑器预览不打开不就行了 ?

:sweat_smile: 。。。那他出这个编辑器预览不就白瞎了吗。。

今天做了个测试,兄弟,你看下我帖子里面的,
这个预览不是要自己手动点击预览才行吗?
编辑器环境下不点击预览,那这个状态也会变化吗?
代码这个我还没开测,你那边测试是什么状况?
不点击运行预览的话 , Editor 是 true 吗?

不运行 Editor 是 true, Preview 是false,
运行后 Editor 是 true , Preview 是false,

1赞

了解了,那确实不太对劲,
这个 preview 怕是还不太好用,
按照之前的逻辑来看,运行起来后 Editor 应该是 false 才对

:sweat_smile:毕竟第一个版本, 理解万岁 跑跑才知道有啥问题 哈哈 , 等后面看官方给方案吧。。。

1赞

也算是很不错了,终于可以用官方的节点树调试了 :smile:

EDITOR为true意味着仍然可以使用编辑器本身的能力。
如果原来写的if EDITOR then在game view中仍然生效

:sweat_smile: 有没有方案能判断当前处于在编辑器内预览的状态。。。。而不是编辑器状态

:sweat_smile:因为扩展了部分方法 不希望在编辑的过程中执行,但是期望在预览的时候执行。。。这样没法区分阿

:rofl:比如 我给一个预制添加了一个 动画,期望是 运行的时候 才会播放,在编辑的时候不播放。
但是实际上在编辑器预览的时候 无法判断是不是在预览状态,导致打开预制体的时候就会开始播放这个东西,如果判断了EDITOR 为true的情况下屏蔽的话 在预览状态下又不会播。

1赞

executeineditmode是针对在编辑状态下运行组件脚本,如果不想在编辑状态下执行某些业务逻辑,只要把此类相关业务逻辑放在一个没有被executeineditmode的脚本中即可,那么在game view中,此脚本是会被执行整个生命周期的,无需对EDITOR作判断

1赞

那就不能判断是在 gameview 运行的?

1赞

我建议还是应该给个值 能判断一下当前处于预览状态。。例如在预览状态下preview是true或者咋样。。

:joy:我现在是拿个脚本挂在非编辑状态运行的组件上放个变量判断,但是我觉得这做法有点憨

比较本来一个变量就解决的事情,突然要分成多个脚本其实很奇怪

比如我这里有个组件脚本,添加的时候需要对被添加的节点设置一下部分属性或者添加几个固定的子节点,方便组件运行时候的功能,这个时候分成两个组件未免也太奇怪了,如果让人去记要怎么弄然后每次手动去干也不科学涩。

1赞

EDITOR && !cc.GAME_VIEW

3赞

有用,谢谢。

这个判断暂时可以使用,但最终接口应该以编辑器预览摘掉实验性功能后的接口为准。可以的话,还是建议把不需要在编辑器中运行的代码,从executeInEditMode(true)的脚本中剥离出来。

已经尽量避免了, 但是还是有复杂的组件有这个情况. 因为之前用的是网页预览, 现在既然有编辑器预览就想着用编辑器预览, 结果你告诉我编辑器预览 不能判断是否处于预览状态, 这明显不科学

:rofl: 说实话扩展了一些 比较复杂的组件 需要所见即所得 所以需要把部分逻辑丢到编辑器内执行
不能所见即所得 美术还原度要求高的情况下 改一下运行一下 雀实好难受

话说为啥资源管理器的右键菜单都开放扩展, 层级管理器的右键菜单 要怎么扩展…

最终怎么处理?不考虑弄一个变量?硬要把一个脚本分成两个?