1)Shader预热生成的内容会被RUUA卸载吗
2)纯WebGL可以实现微信小游戏提供的WASM分包功能吗
3)如何为单个实例添加命中计数
4)如何从蓝图中的for循环中获得所有Index
这是第402篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地掌握和学习。
UWA社区主页:community.uwa4d.com
UWA QQ群:793972859
Shader
Q:Shader WarmUp生成的内容会被Resources.UnloadUnusedAssets的操作而卸载吗?
A:保证相关的SVC不被卸载,这样Shader就会被引用住,相关的WarmUp的内容就不会被Resources.UnloadUnusedAssets卸载了。
WebGL
Q:纯WebGL(浏览器上跑的游戏)可以实现微信小游戏提供的WASM分包功能吗?
以上两条问答均为UWA DAY 2024大会中对于《Unity移动游戏性能优化全解析与小游戏转化的实战经验》议题的提问精选,欢迎大家前往UWA问答【UWA DAY 2024 留言帖】下一起讨论,关于大会的疑问以及针对大会议题内容的提问,我们将尽快为您解答。
Script
Q:类似于敲砖块的游戏,我希望为游戏中的实例对象增加生命值,被击中一定次数后将其摧毁,有什么巧妙的方法可以实现这种功能呢?
A:可以使用一个Map类型的Int变量来储存所有实例的index和当前生命值,被击中时更新生命值-1,当生命值为0时将其销毁即可。
如果希望让实例能够在不同的生命值情况下有不同的材质显示,使用Custom Primitive Data功能会是一种比较巧妙的方式,可以在运行时修改材质中的标量和矢量参数,而不需要设置多个材质实例。
如果针对基础物体,需要将材质中要实时修改的参数勾选Use Custom Primitive Data选项,并将Primitive Data Index设置为相互独立的值;之后在蓝图或C++中控制这些Custom Primitive Data,例如蓝图中使用Set Custom Primitive Data Float/Vector节点。
如果针对物体实例,则需要在材质蓝图中使用PerInstanceCustomData或者PerInstanceCustomData3Vector,在Const Default Value设置默认值并将Data Index设为相互独立的值,之后同样通过蓝图或C++对其进行控制。
对于敲砖块类型的游戏,可以在材质中用Lerp来控制健康的状态(如绿色)到不健康状态(如红色),使用PerInstanceCustomData来控制Alpha。在某个实例被击中时除了控制生命值外,也通过Set Custom Primitive Data Float来调整这个值,即可实现被击中时变化材质的效果。
针对以上问题,有经验的朋友欢迎转至社区交流:
https://answer.uwa4d.com/question/66debd86682c7e5cd61bf8d4
Script
Q:我想创建一个圣诞彩灯,让其中奇数用黄色的材质,偶数用蓝色的材质,交替出现。我用for循环来获取所有灯的Index,如果除以2余0就设置为黄色,不是则设置蓝色。但是最后结果都是同一种颜色,有人知道我哪里做错了吗?
A:因为你用了InstanceStaticMesh,只能有一个网格和一个材质,所以无论如何分配材质只会给到组件上的所有实例。要想实现所说的效果有以下几种方法:
- 直接用两个InstanceStaticMesh;
- 不用InstanceStaticMesh,改用StaticMesh;
- 使用CustomPrimitiveData,可以实现一个InstanceStaticMesh,一个材质,任意多的颜色。
针对以上问题,有经验的朋友欢迎转至社区交流:
https://answer.uwa4d.com/question/66debe5e3d306f3e9d594d20
封面图来源于网络
今天的分享就到这里。生有涯而知无涯,在漫漫的开发周期中,我们遇到的问题只是冰山一角,UWA社区愿伴你同行,一起探索分享。欢迎更多的开发者加入UWA社区。
UWA官网:www.uwa4d.com
UWA社区:community.uwa4d.com
UWA学堂:edu.uwa4d.com
官方技术QQ群:793972859