Laya中贴图实时合并

策划同学想在游戏内增加投显子弹数量的功能,看了下Laya中并没有提供3d文本相关的组件,所以先去百度下看了下并没有相关的轮子可以直接使用,只能自己写下了

首先分析下需求 子弹数量投显 只需要显示0-9的数字就可以了
那么最简单的一种方式是:
让建模同学每一位搞一个面片 然后把对应的数字贴图贴上去 有几位搞几个面片
显然这种方式是最差解。。。

既然是造轮子,当然不能就这样结束了!

所以,决定用一张贴图一面片来实现这个功能
那么问题点就在于:怎么把0-9这几个数字在运行时实时的将需要的散图合并成一张新的贴图 ,然后放到材质中去渲染
Laya中有可以获取到加载后的图片的像素数据的接口 即 Texture.getTexturePixels
关键代码:

            var ctx = new ILaya.Context();
            ctx.size(width, height);
            ctx.asBitmap = true;
            var uv = null;
            if (x != 0 || y != 0 || width != tex2dw || height != tex2dh) {
   
   
                uv = this._uv.slice();
                var stu = uv[0];
                var stv = uv[1];
                var uvw = uv[2] - stu;
                var uvh = uv[7] - stv;
                var uk = uvw / texw;
                var vk = uvh / texh;
                uv = [stu + rePosX * uk, stv + rePosY * vk,
                    stu + (rePosX + draww) * uk, stv + rePosY * vk,
                    stu + (rePosX + draww) * uk, stv + (rePosY + drawh) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值