最新Unity DOTS Instancing合批:如何针对单个渲染实体修改材质参数

本文介绍了在DOTS游戏开发中,如何处理10000+小兵的动画控制,避免因材质独立导致的GPUInstancing问题。通过利用Unity的传统MaterialPropertyBlock机制和DOTS的ComponentData特性,实现在同一材质下独立控制每个渲染实例的动画参数。

最近在做DOTS的教程,由于DOTS(版本1.0.16)目前不支持角色的骨骼动画,我们是将角色的所有动画数据Baker到一个纹理里面,通过修改材质中的参数AnimBegin,AnimEnd来决定动画播放的起点和终点,材质参数AnimTime记录当前过去的动画时间。但是在做大规模战斗控制的时候,有10000+的小兵在战斗,动画控制的时候,如果通过修改材质参数,来切换每个角色的动画。想要让角色之间的动画控制彼此独立,就必须要求每个角色有不同的材质对象,这样会导致10000+的小兵由于使用了不同的材质,无法通过GPU Instancing合批。问题的关键是我们要找到一种方法,让10000+的小兵使用同一个材质对象,同时动画控制相关的参数要基于渲染Instance独立。DOTS机制下我们找到对应的方法,于是写下这篇文章记录一下,让大家做DOTS动画与性能优化的时候少走弯路。

对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白,也有一些正在从事游戏开发的技术大佬,欢迎你来交流学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值