0

我刚刚为我正在开发的一款 VR 游戏实施了评分系统。但是表现很糟糕,我认为这是因为我如何渲染分数。在我实施评分后,性能问题就开始了。

我正在使用新的 THREE.TextGeometry 创建一个新的 THREE.Mesh,然后在每次分数发生变化时将其添加到场景中。据我了解,在 TextGeometry 对象中呈现的字符串不能动态更改,因此需要创建一个全新的对象。

每次分数变化时都会发生以下情况:

    this.scene.remove( this.text );
    this.material = this.assetStore.mainEmissiveMaterial;
    this.geometry = new THREE.TextGeometry( String(this.score), {
        font: this.assetStore.mainFont,
        size: 6,
        height: 0,
    } );
    this.geometry.translate(-10, 25, -40);
    this.text = new THREE.Mesh( this.geometry, this.material );
    this.scene.add( this.text );

我的问题:是否有另一种显示文本的方式,对性能影响不大?

4

1 回答 1

1

处理几何图形时,不应在每次需要更新时创建和销毁它们。这会扼杀你的表现。相反,创建所有 10 个数字0123456789,将它们保存为您的模板,然后重新使用它们。显示和隐藏它们并根据需要复制它们,但不要在每次文本更改时重新构建数千个顶点和面。

于 2021-03-11T23:38:41.053 回答