UGUI研究院之Prefab嵌套特效部分(二十九)

Prefab in Prefab的需求太多了(据可靠消息unity2018官方会支持这个功能),以前我也写过一个解决方案,但是后来自己都不用了。今天我写的这篇是自己使用过一段时间,并且觉得还不错的方法。

先说说灵感吧,前段时间再做assetbundle的打包。特效把我头疼坏了,说到特效我不得不啰嗦两句。特效美术最终都会把特效做成prefab保存在项目里,例如放在了Resources目录。程序或运行时读取,或者直接拖入到某个Prefab中来使用。

特效分三类

1.场景特效,特点是不需要运行时加载,由地编美术把特效拖入场景中完成。这类特效是被场景引用自身的关系还在prefab上,换句话说只要特效的prefab变了场景里引用它的地方也就变了,我们只需要把prefab管理好就可以。

2.我重点要说的就是第二类特效,例如人物身上绑定的特效,或者UI上绑定的特效。 人物和UI本身就是prefab,如果把特效关联上一旦apply后,这个特效就和之前的prefab断开了。未来如果要打assetbundle就需要考虑特效的依赖关系了。

3.最后一类也很恶心, 又要放在场景上、又要运行时加载、。。。。。对这类特效我不予以评价!

这时候可能就会有同学说,不把特效直接依赖上去,而是采取运行时load的形式不就完了。确实是这样,但是这样的问题就是预览起来非常麻烦。尤其UI上的特效,只要调位置都得运行起来看,还有一些特效的出现时机是需要逻辑满足才播放,这样调起来就更麻烦了。

废话了这么多,说说今天的重点,我要让prefab嵌套prefab,并且很方便的预览,还要使用者点击apply不能破坏原有的依赖结构。

我们可以监听GameObject在Hierarchy视图中选择的事件。

1.清空节点 保证节点下没东西

2.实例化prefab ,设置不可被保存,也就是apply后不会再被保存在prefab上。

实例化prefab,就是根据一个路径去load(序列化好),实例化到hierarchy视图中,并且设置这个gameObject的属性,不可编辑,以及不可能被保存.

3.此时在Scene视图中就可以预览效果了。

这里我举个例子,如下图所示,我有一个父Prefab需要嵌套一个子Prefab(特效),我把子Prefab(特效)拖入右侧resPrview处。即可直接在Hierarchy视图中预览,resPreview这个脚本只需要序列化保存了特效的路径. 无论你怎么Apply父Prefab也不会把子Prefab(特效)包含在父Prefab中了。

UGUI研究院之Prefab嵌套特效部分(二十九) - 雨松MOMO程序研究院 - 14.最终游戏运行就按上面的加载顺序实例化即可。

文章中的例子可能比较简单,因为实际游戏中嵌套的Prefab可能还需要一些自身的逻辑,不仅仅是隐藏/显示/加载 这么简单的操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值