首先理清CharacterCustomization例子里面的换装基本思路:
1. 对characters 目录下各个角色进行 打包.
2. 在读取的时候动态将里面的数据 读取出来即可.
这是最基本的, 但是中间有几部很重要的。
1. characters 目录下的资源是不能直接使用的.
2. 模型,材质,骨骼都是有一定关系。
3. 很多时候这种关系是通过文件名来组织在一起的。
打包的时候已经把这种关系理好了。
这种关系是:
1. 模型, 信息存储在Skinned Mesh Render 接口里. 包含蒙皮信息与模型数据的引用
2. 动作, 数据存在根节点的Animation组件内, 比如Female元件里.
3. 材质, 用文件名与模型中的联系起来
实现步骤
1. 将源资源按照内部关系生成 各种Prefab 并分好类.(用编辑器命令实现)
内部关系即, 模型材质蒙皮信息 属于哪个部件。每个部件属于哪个角色的哪不分。
原来叫 CreateAssetbundles.cs , 去除了动态加载 就叫 CreatePrefabAsset.cs
这里有个重要的点, 就是生成的数据有两种. 一种是一般的Prefab. 另一种ScriptableObject.
ScriptableObject 有点坑的是, 只能支持一些简单的数据结构, 比如Array, List. string, 等.
要有一些组合的结构, 就要另外加结构 并 在开头打上 [Serializable] 关键字。
恩, 这里还有一个概念, 就是打包的时候可能会用到一些 GameObject。 需要将其生成为Prefab后,
对他的引用才能有效, 这点很好理解, 因为动态生成的GameObject, 在编辑器命令执行完后肯定就销毁了。
2. 有了上面的 ScriptableObject 数据后。 将其组装起来即可,
骨架是直接用Prefab 克隆的, 模型数据与材质都在自定义的类, 叫 RoleElement 里 .
蒙皮的骨骼点就是用 骨骼的名称来 重新查找好了.统统这些资源都在 RoleResource 里.
剩下的重点就在怎么使用 CombineInstance组件功能 将其数据都拼接成一个模型.
当然不用 CombineInstance, 直接将各做好的部件添加到人物的root下面也行, 可效率可就低好多倍。
因为不管渲染多少次, 时间都是差不多的. 因此尽量把要的东西一次渲染, CombineInstance 帮我们做的就是这事。
这里主要的坑还是将数据打成对应的Prefab后,再成功读取出来这个步骤上。
以及 一些基本概念的理解。剩下的就看源代码吧。
unity 更换衣服换装 unity3d 换装
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Android平台Unity3D下如何同时播放多路RTMP|RTSP流?
技术背景好多开发者,提到希望在Unity的Android头显终端,播放2路以上RTMP或RTSP流,在设备性能一般的情况下,对Unity下的RTMP|RTSP播放器提出了更高的要求。实际上,我们在前几年发布Unity下直播播放模块的时候,就已经支持了Android多实例播放RTMP|RTSP,随着大家对这块的技术诉求和性能要求越来越高,我们需要持续考虑如何低资源占用的播放多实例流。实现思路目前,我
Unity3D rtmp播放器 Unity3D rtsp播放器 unity rtsp播放器 unity rtmp播放器 大牛直播SDK