想请教一下关于换皮肤的功能怎么实现

用户点击相应的皮肤后怎么更换人物的皮肤 人物是prefab动态加载的 皮肤也是loadRes里异步读取资源加载的 这中间的一系列操作是怎么做的呢

最简单粗暴的方式就是在游戏启动的时候就加载所有的皮肤资源分组保存至全局变量中。当用户切换时直接从全局变量中读取对应的资源就可以了。

现在只是换纹理 想知道如果换了人物 人物的动画那些也要随之改变这种 要怎么设置 是play animation的时候指定该皮肤下的动画吗 例如 play(‘run’+number)

用数据保存皮肤信息,换皮肤的时候,保存皮肤的名字,每次使用皮肤动画,先读取皮肤名字,然后调用相应动画,例如:皮肤1_run,皮肤2_run,皮肤3_idle

我现在这好也做换肤的功能呢,我的思路是用一个点击的皮肤的道具id 和 具体需要换皮肤loadRes 的资源名字关联起来,当你点击皮肤道具的时候 用观察者发出一个消息,里面到这type 和 id ,然后通过度表把loadRes 需要的资源名通过spriteframe类型读出来,然后在回调里面直接进行改变贴图就好了。 这里面的表就是一个大的对象,自己创建一个js创建出来就好了。 虽然办法low点但是应该能解决你的问题。

如果这里你不想用对象管理来控制的话,也可以把发送的id直接作为具体的皮肤的图片名字,只不过将他们放在resource 下不同的目录就行了。

resource
resource/skin/head_1.png

假如有5个皮肤 光是一个run的动作 人物就要挂载5个动画了吗

我得先load prefab 然后才load spriteframe 想知道这两个怎么同步 因为两个都是异步的 会报错

干嘛要挂载5个run动画,一个部位挂一个就好了,皮肤改变之后,挂载的动画也要进行替换啊

你这个loadprefab是干嘛的

老哥 加个v 详聊好吗~ clq767622025

使用 anim.play() 不是指定节点挂载的动画吗 如果没挂载上 怎么选择

比如我的子弹是perfab 只有射击才会创建 我现在需要更换子弹的皮肤这种

你那边有没有spine的动画,spine动画是可以 动态切换皮肤的,动作和皮肤是分开的。如果你的皮肤是一整套的 可以试试用spine弄,很方便,然是h5上好像不支持流体动画,这个要让美术注意。

我现在有点迷糊了,,如果你是纯换皮肤,加入你的是子弹,通过子弹id去索引到具体的皮肤,然后在子弹创建之前就把资源reload 进来,在创建子弹的时候直接设置下贴图不就好了。

没有spine动画 现在的比较简单 就只是动画帧

嗯嗯。

我也在想这个问题 难道要这样做?大哥 你解决了吗?

换皮肤单独做一个场景,其他所有的场景通过变量来加载spriteFrame。

角色动画的话,你换了个皮肤,比如run的时候,手和脚移动,贴图不是跟着移动吗,还是你想对手上的贴图单独做什么?如果是的,你可以先创建好animation,给手上的anim重新赋值。