Skip to content
V0.45.0.0 Release Note

V0.45.0.0 Release Note

新增功能

[优化] mesh世界UI支持emoji字体

  • 先前的世界UI不支持emoji字体,导致很多玩家的昵称带emoji会变成****,这个版本之后我们支持了部分常见emoji字符:

🐱🐒🐼🙉🐼🐒🐼🙊🦊🐣🐼🐱3️⃣🍺👂❤️🥺👍🏻🤷🏼♀️🙂😌🙃😗😘😀😛😃😃🥲😉😉🚓🛵🚓🛵🚓🏎️💟💘💜💖🩷❣️💔🇦🇮🏳️⚧️🥭🥑🍉🍎🍆🥑🍉🍏🥒🥬☝️👆📌📍📝

演示工程及结果如下:

https://arkimg.ark.online/045RNEmoji.zip

  • emoji字符可以渲染至世界UI
  • MW中emoji字符样式与原样式接近,但是非一模一样
  • 部分不支持的字符将显示****
imgimg
世界空间屏幕空间

[新增] 加载页及游戏内显示233号和房间号

  • 加载页及游戏内显示233号和房间号,方便创作者通过玩家的游戏截图/视频定位房间和233号
imgimg

[新增] 资源导入上传服装链路中新增双面材质

  • 资源导入上传服装链路中新增双面材质,默认启用“正面渲染”,支持用户选择为“双面渲染”。
  • 解决的痛点
    • 缩短与竞品的差距,解决创作者一直反馈的材质不能双面显示问题。
    • 优化面数分布,现阶段需要复制大量面来手动制作双面(双层模型,一面朝内,一面朝外)+模型封口。可以把这些面用到模型细节上去。
    • 解决黑面穿插问题,双面材质+单层模型,可完全避免运动时两层模型互相穿插造成的沟边渲染的黑面问题。
  • 选项

img

  • 演示视频:

[新增] 新服装材质和对应的合图工具

  • 资源导入服装资源时,MRAE贴图、MRFE贴图、SNEN贴图均增加了该合图工具

  • 解决的痛点:

    • 新增的服装材质(如绒毛、丝袜、新头发等),均会用到一些非典型的贴图通道合并方案,如SNEN、MRAB等。合并方案会导致美术及非专业人员增加工作量,且提高理解成本。
    • 所以MW中新增了自动合并图片的功能,让生产按合并前的单张图进行制作,最后的合并交由工具完成,以降低门槛,提高效率。
  • 位置如下图所示:

    img

    • 点击“展开合图工具”后显示其合图工具内需要贴图参数槽位,支持将对应的贴图素材进行拖入,空槽位有默认值。

      img

    • 使用演示:

[优化]资源导入服装材质球上限提升

  • 导入的服装材质球数量限制调整:3 → 4

[优化] 角色材质优化-新材质(服装表现升级)

  • 新服装材质替换掉旧的RT材质(材质名称保持的一致),提升质感以及光影效果表现,并增加了镭射和闪光等功能。

    • 升级后效果对比:

[优化]创作者中心资源公开可改非公开

  • 创作者中心资源可从公开状态切换至非公开状态,方便大家将已经公开的资源切回非公开状态。

[新增] Character增加“开始碰撞”和”结束碰撞”的代理

  • 角色对象在场景中移动时可以通过onTouchonTouchEnd监听到碰撞发生的时机,通过获取碰撞对象和碰撞结果方便进行业务功能的实现,例如角色移动过程中修改碰撞的模型颜色:

由于角色移动组件特殊性,因此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() })