是一个需求、想做一个朝向摄像机的数字、并不像通过UMG消耗太多性能,就用材质写了这么一个东西。
主要用于转移cup的消耗制作的
先看内容、用了两个自定义节点和一个自定义函数,(其实可以都用函数、有很大的优化空间)
首先在输入数字后进行拆分、目前最大支持4位数字,基本满足很多东西了。(可以进行继续扩展、根据需求能继续拆分)
float4 AndNum;
AndNum.x = floor(InputNum/1000);
AndNum.y = floor(InputNum/100-AndNum.x*10);
AndNum.z = floor(InputNum/10-AndNum.x*100-AndNum.y*10);
AndNum.w = floor(InputNum-AndNum.x*1000-AndNum.y*100-AndNum.z*10);
return AndNum;
把输入进来的数字进行按分位拆分,
拆分后用Mask 进行不同图片的读取和显示
是否显示主要是判断首位是否为0
float4 Num = float4(1.0f, 1.0f, 1.0f,1.0f);
if(saturate(InputNum.x)<1)
{
Num.x = 0;
if(saturate(InputNum.y)<1)
{
Num.y = 0;
if(saturate(InputNum.z)<1)
{
Num.z = 0;
if(saturate(InputNum.w)<1)
{
Num.w = 0;
}
}
}
}
return Num;
显示的内容在材质函数中,材质函数中主要做了一把输入进来的数字 进行读取图片中对应的位置、然后根据输入进来是否应该显示,显示在第几位等。
主要是通过系统的函数FlipBook 制作的。输出后进开始进行拼装。
当然要注意有A通道的就需要进行添加A通道了、这里我就提前添加的A通道,
最后就能显示出想要的效果了。
最后补充一个小东西、测试拆分是否正确的!
float OutNum = InputLocation.w+InputLocation.z*10+InputLocation.y*100+InputLocation.x*1000;
return OutNum;