unity3d 换装笔记

首先理清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后,再成功读取出来这个步骤上。
以及 一些基本概念的理解。剩下的就看源代码吧。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值