3D 模型怎么实现各个面可以加数字

如图,怎么把label挂载在每个面上,可以动态替换

2赞

数字不是固定的,0-999可以动态换的

6个quad拼,或者自己建模

怎么把label 加到模型上呢

这个之前做过类似的是生成一个隐藏的label用label上的texture赋给材质,不过label上texture怎么赋值更新这些要做一定处理。

 update (deltaTime: number) {
        // Your update function goes here.

        this.label.string = (parseInt(this.label.string) - 1).toString();
        this.label.node.active = true;
        this.label.updateRenderData(true);
        this.label.node.active = false;
        this.node.getComponent(MeshRenderer).material.setProperty('mainTexture',(this.label.spriteFrame as any).texture);
    }


这个只是最基础的实现,每一个面都要单独创建一个label显示,这些label的创建和对象池管理之类的优化肯定都是要做的。
labelTest.rar (105.0 KB)

3赞

大佬,这样也行么

我看你那边显示的很清楚,我这边咋这么模糊啊

这个是label本来的问题,放大使用的话,你需要调整高label的fontsize和lineheight,包括其他一些label的属性,换行或者shrink都是设置label上的属性调整,你自己可以包装一下调整的代码,或者一开始就把fontsize设置大一点,那样缩放就都能清晰了,不过是会影响内存性能这些的应该。
至于是不是该这么用,怎么说呢,肯定不太好,但是如果没有遇到问题的话可以先这样用吧,官方的现在给的方案也是类似的特殊方案。

是的呀,没有3D label

这样换的话貌似不能改每个面的背景颜色啊

一个cube上面贴6个文字的quad,cube贴颜色,label的quad用unlit材质Tec选transpaent。cube也可以换成6个quad每个quad单独贴一种颜色。
麻烦肯定是麻烦的,不然的话就自己写shader来实现label和背景图,那样就不需要要那么多quad了,纯数字贴图的label写一个符合自己需求的shader。这样的话也不需要用引擎的label来这么复杂的实现了。

1赞

怪不得啊。。。你是拼成的,用的透明材质才可以改背景颜色,我这边写的shader,六个面设置贴图实现的,改不了label的背景颜色1

如果只是显示数字的话,可以不需要用到label来实现的,就10个数字,自己实现一个label还不算太复杂。我之前还要显示文字所以用了这个方案来显示。

大佬,加个好友学习下呀

你这个有个问题啊,加了刚体动起来的话字就抖动了

有没有DEMO

你发的那个demo上加个刚体看看,下落到其他物体上拼成的那6个quad 会抖动

z-fighting?还是什么抖动?还是说刚体没加在父节点上

文字加outline无法正常显示,请问有什么办法吗