此贴为新动态皮肤的实现方法,之前办法有应用局限性没有公开.但现在是时候公布新的方法了.
为此你需要用到unity 2018,uabe和任意一款编辑16进制的软件
(2019版本ab包需要使用uabea,但uabea目前不支持导入videoplayer转存,所以你需要先在2018导入转存导出dat再使用uabea导入2019版本ab包)
主要步骤:
1:打包带有videoplayer组件的ab包并使用uabe导出videoplayer转存
2:打包用于替换纹理ab包的视频纹理ab包(视频使用webm格式,因为它可以携带透明通道)
3:在物品json里Prefab使用的ab包里手动创建videoplayer组件.在GameObject里添加组件的pathid并导回
4:videoplayer转存填写好VideoClip的m_FileID,GameObject的pathid并导入
5:使用16进制编辑器更改依赖
详细步骤:
主要步骤1
创建一个带有videoplayer组件的cube并选择需要播放的视频或者url.
Render Mode Material Override它会把视频映射到当前GameObject里Mesh Renderer里所有材质的_MainTex主纹理或其他比如_EmissionMap自发光纹理(别忘了开Loop)
同时你可以让组件播放音频,不过音量衰减不能很好的调整.
主要步骤2
预览图不会渲染视频,为了使预览图看起来正常,你也得在视频纹理ab包中加入纹理并在材质更新它的pathid
打包(把视频纹理与cube分开打)
从cube导出videoplayer转存之后会需要
主要步骤3
列如m4a1,找到Prefab所使用的container ab包,创建videoplayer 组件0x00000148,记住Pathid
导出需要添加组件的GameObject转存,只需要路径model.generated就好,记住Pathid
GameObject转存按照格式写到下面,PathID填新添加的videoplayer组件的PathID,别忘了items and size+1,并导回
主要步骤4
现在可以填写video player组件的转存了,GameObject填model.generated的Pathid
VideoClip的m_FileID可以查看材质里引用纹理ab包的m_FileID,这里是9
填好后把转存导入创建的videoplayer,保存ab包
主要步骤5
已经差不多完成了,GameObject会加载videoplayer组件,而videoplayer组件会从视频纹理ab包获取视频.
现在就是通过更改container ab包的依赖.使纹理ab包的CAB,替换为我们的视频纹理ab包CAB
先找到纹理ab包的CAB
获取我们纹理视频ab包的CAB
在全部替换掉就可以了
现在你的ab包可以实现动态皮肤了,bundle.json依赖加载引导需要自行编写
来个小插曲,其实我跟萱苏还有一位JET端的mod作者一起按照kmyuhkyuk大佬给的思路倒腾了一周,最终才算完全实现动态效果,所以为啥大佬现在才发教程
强的,
牛啊
厉害了。想学,但是不会unity啊
666666