为什么节点没有一个即用的visible属性?

通过设置opacity和layer的方法可以实现,但都需要另外保存一个原有的opacity或者layer,layer还需要遍历所有子孙节点,这个难道不是常见需求吗,为什么没有封装好的接口呢

.active?

node.active?这不是很常用的吗?为啥要用opacity?

active会调用生命周期函数,而且false会禁用节点的update,定时器应该也会禁用(推测),UI很多需求只是暂时隐藏但并不禁止活动,比如page的切换。就隐藏和显示的需求,不需要做其他无关操作。

active 和 visiable 不一样。
active 的消耗明显大很多。
实际的一个应用场景是:
地图上众多对象,在屏幕可视区域外的对象不渲染。仅仅是标记不渲染。

调节透明度需要给节点添加 UIopacity这个组件

我知道这个组件,但本身visible和透明度就是两个不同的需求吧,为什么要用透明度实现隐藏,那我节点本身就需要是半透明呢,隐藏后还要保存一个原本的透明度用来恢复,很难受吧。目前看就是改变layer来实现隐藏显示比较符合需求了。

转发一下我的看法,仅代表个人立场,不代表引擎官方
image


总之,

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

谢谢回复。