在unity3d中一下c#程序是实现什么功能的,求解析?

List<Color32>AddLines(List<Color32>colors32,boolclear){Texture2DlTex=lines.renderer.s... List<Color32> AddLines(List<Color32> colors32, bool clear)
{
Texture2D lTex = lines.renderer.sharedMaterial.mainTexture as Texture2D;
Color[] texColors = lTex.GetPixels();

if (clear)
colors32.Clear();

for (int y = 0; y < lTex.height; ++y)
for (int x = 0; x < lTex.width; ++x)
{
if (clear)
{
colors32.Add(backgroundColor);
if (texColors[y * texWidth + x].a > 0.5f)
colors32[colors32.Count - 1] = texColors[y * texWidth + x];
}
else
{
if (texColors[y * texWidth + x].a > 0.5f)
colors32[y * texWidth + x] = texColors[y * texWidth + x];
}
}

return colors32;
}
展开
 我来答
腹黑的艾莉嘉
2014-10-14 · TA获得超过177个赞
知道答主
回答量:109
采纳率:0%
帮助的人:109万
展开全部
根据我的理解应该是读取材质的颜色数组,并根据数组中的透明度一值对颜色数组进行筛选
List<Color32> AddLines(List<Color32> colors32, bool clear)
{
//读取材质
Texture2D lTex = lines.renderer.sharedMaterial.mainTexture as Texture2D;
Color[] texColors = lTex.GetPixels();
//使用初始化,即,将颜色调节位白色+100%透明
if (clear)
colors32.Clear();

for (int y = 0; y < lTex.height; ++y)
for (int x = 0; x < lTex.width; ++x)
{
if (clear)
{
//如果clear为true,添加背景颜色
colors32.Add(backgroundColor);
//如果材质的颜色透明度大于0.5(半透明),则添加到color32数组中,即根据筛选材质颜色透明度大于0.5的值
if (texColors[y * texWidth + x].a > 0.5f)
colors32[colors32.Count - 1] = texColors[y * texWidth + x];
}
else
{
同上
if (texColors[y * texWidth + x].a > 0.5f)
colors32[y * texWidth + x] = texColors[y * texWidth + x];
}
}
//返回根据透明度筛选过后的像素颜色数组
return colors32;
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式