这两天做了个很有意思的小玩意儿~
完整代码下载链接
平面轮播方式展示图片显得很单调,立体效果的果然好很多~
1.球状展示:
2.螺旋状展示:
3.文字或字母形式展示:
做字母或文字形式展示的时候一开始没有思路,后来想到了用白底带色彩字母或文字图片,识别图像中像素rgb值区分前景和背景,之后遍历每行每列(取合适的步长),将字母或文字像素位置映射到世界空间,再用图片进行填充。
文字或字母像素位置映射到世界空间代码如下:
注意行列合适步长的选取。
List<Vector3> GetWordPosByTexture(Texture2D texture)
{
List<Vector3> posList = new List<Vector3>();
int num = 0;
if (texture != null)
{
int width = texture.width;
int height = texture.height;
Color[] colors = texture.GetPixels();
int index;
for (int i = 0; i < height; i += wordHeightStep)
{
for (int j = 0; j < width; j += wordWidthStep)
{
index = i * width + j;
if (nearBlack(colors[index]))
{
num++;
Vector3 itemPos = new Vector3();
itemPos.x = width-j-(width/2);
itemPos.y = -(height-i-(height/2));
itemPos.z = 0;
posList.Add(itemPos);
}
}
}
Debug.Log("wordPoint:" + num);
}
return posList;
}
bool nearBlack(Color color)
{
if (color.r < 0.8f || color.g <0.8f || color.b < 0.8f)
return true;
else
return false;
}
``