通过设置opacity和layer的方法可以实现,但都需要另外保存一个原有的opacity或者layer,layer还需要遍历所有子孙节点,这个难道不是常见需求吗,为什么没有封装好的接口呢
.active?
node.active?这不是很常用的吗?为啥要用opacity?
active会调用生命周期函数,而且false会禁用节点的update,定时器应该也会禁用(推测),UI很多需求只是暂时隐藏但并不禁止活动,比如page的切换。就隐藏和显示的需求,不需要做其他无关操作。
active 和 visiable 不一样。
active 的消耗明显大很多。
实际的一个应用场景是:
地图上众多对象,在屏幕可视区域外的对象不渲染。仅仅是标记不渲染。
调节透明度需要给节点添加 UIopacity这个组件
我知道这个组件,但本身visible和透明度就是两个不同的需求吧,为什么要用透明度实现隐藏,那我节点本身就需要是半透明呢,隐藏后还要保存一个原本的透明度用来恢复,很难受吧。目前看就是改变layer来实现隐藏显示比较符合需求了。
转发一下我的看法,仅代表个人立场,不代表引擎官方

总之,
- 可以用 UIOpacity、Material、Node Layer 等机制实现隐藏。
- 可以把逻辑和表现所在的节点分离,表现节点是一个单独的 prefab,由美术维护,这个 prefab 运行时直接整个 deactivate 就行。
谢谢回复。

