V0.45.0.0 Release Note
新增功能
[优化] mesh世界UI支持emoji字体
- 先前的世界UI不支持emoji字体,导致很多玩家的昵称带emoji会变成**
?
**,这个版本之后我们支持了部分常见emoji字符:
🐱🐒🐼🙉🐼🐒🐼🙊🦊🐣🐼🐱3️⃣🍺👂❤️🥺👍🏻🤷🏼♀️🙂😌🙃😗😘😀😛😃😃🥲😉😉🚓🛵🚓🛵🚓🏎️💟💘💜💖🩷❣️💔🇦🇮🏳️⚧️🥭🥑🍉🍎🍆🥑🍉🍏🥒🥬☝️👆📌📍📝
演示工程及结果如下:
https://arkimg.ark.online/045RNEmoji.zip
- emoji字符可以渲染至世界UI
- MW中emoji字符样式与原样式接近,但是非一模一样
- 部分不支持的字符将显示**
?
**
![]() | ![]() |
---|---|
世界空间 | 屏幕空间 |
[新增] 加载页及游戏内显示233号和房间号
- 加载页及游戏内显示233号和房间号,方便创作者通过玩家的游戏截图/视频定位房间和233号
![]() | ![]() |
---|---|
[新增] 资源导入上传服装链路中新增双面材质
- 资源导入上传服装链路中新增双面材质,默认启用“正面渲染”,支持用户选择为“双面渲染”。
- 解决的痛点:
- 缩短与竞品的差距,解决创作者一直反馈的材质不能双面显示问题。
- 优化面数分布,现阶段需要复制大量面来手动制作双面(双层模型,一面朝内,一面朝外)+模型封口。可以把这些面用到模型细节上去。
- 解决黑面穿插问题,双面材质+单层模型,可完全避免运动时两层模型互相穿插造成的沟边渲染的黑面问题。
- 选项
- 演示视频:
[新增] 新服装材质和对应的合图工具
资源导入服装资源时,MRAE贴图、MRFE贴图、SNEN贴图均增加了该合图工具
解决的痛点:
- 新增的服装材质(如绒毛、丝袜、新头发等),均会用到一些非典型的贴图通道合并方案,如SNEN、MRAB等。合并方案会导致美术及非专业人员增加工作量,且提高理解成本。
- 所以MW中新增了自动合并图片的功能,让生产按合并前的单张图进行制作,最后的合并交由工具完成,以降低门槛,提高效率。
位置如下图所示:
点击“展开合图工具”后显示其合图工具内需要贴图参数槽位,支持将对应的贴图素材进行拖入,空槽位有默认值。
使用演示:
[优化]资源导入服装材质球上限提升
- 导入的服装材质球数量限制调整:3 → 4
[优化] 角色材质优化-新材质(服装表现升级)
新服装材质替换掉旧的RT材质(材质名称保持的一致),提升质感以及光影效果表现,并增加了镭射和闪光等功能。
升级后效果对比:
[优化]创作者中心资源公开可改非公开
- 创作者中心资源可从公开状态切换至非公开状态,方便大家将已经公开的资源切回非公开状态。
[新增] Character增加“开始碰撞”和”结束碰撞”的代理
- 角色对象在场景中移动时可以通过
onTouch
和onTouchEnd
监听到碰撞发生的时机,通过获取碰撞对象和碰撞结果方便进行业务功能的实现,例如角色移动过程中修改碰撞的模型颜色:
由于角色移动组件特殊性,因此touch事件和forceUpdateMovement(强制位移)开关绑定
当forceUpdateMovement = true时,touch事件才能正常触发。
javascript
Player.localPlayer.character.forceUpdateMovement = true;
Player.localPlayer.character.onTouch.add((vArray, actors, points, normals) => {
(actors[0] as Model).color = new LinearColor(MathUtil.randomFloat(0,1), MathUtil.randomFloat(0,1), MathUtil.randomFloat(0,1));
console.error("touch")
});
Player.localPlayer.character.forceUpdateMovement = true;
Player.localPlayer.character.onTouch.add((vArray, actors, points, normals) => {
(actors[0] as Model).color = new LinearColor(MathUtil.randomFloat(0,1), MathUtil.randomFloat(0,1), MathUtil.randomFloat(0,1));
console.error("touch")
});
[优化] spawn mesh 或者 预制体包里含 mesh 的时候,可以自动创建为 instance,提高创建速度。
- 调用Gameobject.spawn 生成 mesh 或者 有 mesh的预制体 的时候,会把 mesh 先创建为一个简单的 instacne ,然后如果用到该物体其他的功能的时候(比如移动,设置材质...),才会真正的创建一个 mesh 出来。
- 如果仅spawn mesh 但 spawn 后没做啥操作的话,就会加快 spawn 的速度(mesh 能加快5~10 倍左右)
- 希望大家在代码中尽可能地在 spawn 的时候就把想要的效果传进去(比如位置)而不是先 spawn 然后设置
TypeScript
/**例.1 spawn 的时候不传位置,我们会认为之后大概率还要设置所以不会生成 instance */
GameObject.spawn("360262")
/**例.2 spawn 的时候传入位置,则会创建出 instance*/
GameObject.spawn("360262", { transform: new Transform() })
/**例.1 spawn 的时候不传位置,我们会认为之后大概率还要设置所以不会生成 instance */
GameObject.spawn("360262")
/**例.2 spawn 的时候传入位置,则会创建出 instance*/
GameObject.spawn("360262", { transform: new Transform() })