以编程方式在图像中加载纹理并将边框设置为图像 Unity
Posted
技术标签:
【中文标题】以编程方式在图像中加载纹理并将边框设置为图像 Unity【英文标题】:Programmatically Load Texture in Image and Set Border to the Image Unity 【发布时间】:2016-02-26 04:34:06 【问题描述】:我正在开发一款没完没了的游戏,并且想在玩家死亡时拍摄快照。我几乎已经使用 Texture2D 完成了。我已经以编程方式在图像中完成了加载纹理。但想为图像设置边框。我怎样才能做到这一点。?如何在运行时为该图像设置边框?
此代码用于在我的播放器死亡时在运行时将纹理加载到图像。
void LoadImage()
byte[] bytes = File.ReadAllBytes (Application.dataPath +"/GameOverScreenShot" + "/BirdDiedScreenShot.png");
Texture2D texture = new Texture2D (900, 900, TextureFormat.RGB24, false);
texture.filterMode = FilterMode.Trilinear;
texture.LoadImage (bytes);
Sprite sprite = Sprite.Create (texture, new Rect (0, 0, 700, 380), new Vector2 (0.5f, 0.0f), 1.0f);
imgObject.GetComponent<UnityEngine.UI.Image> ().sprite = sprite;
我想在运行时为该图像设置边框。任何人都可以帮助我真的很感激。提前致谢。
【问题讨论】:
不容易,一种方法是使用一种渲染纹理相机 你能告诉我怎么做吗?给出任何示例,链接,视频,任何东西。我不知道渲染纹理 您说要为图像设置边框是什么意思?您想为快照应用晕影吗? 我的意思是当我的播放器死亡并设置为 UnityEngine.UI.Image 时我拍摄快照,但还想在运行时为该图像设置边框。 no @fafase 我不想将小插图应用于快照。只想为快照运行时设置边框。 【参考方案1】:在将图像加载到 Texture2D 变量后执行此操作,这会将图像的边框更改为您想要的任何颜色。
//color should be a variable that holds the color of the border you want.
for (int i = 0; i< texture.width; i++)
texture.SetPixel(i, 0, color); //top border
texture.SetPixel(i, texture.height - 1, color); //bottom border
for (int j = 0; j < texture.height; j++)
texture.SetPixel(0, j, color); // left border
texture.SetPixel(texture.width - 1, j, color); //right border
texture.Apply();
这将替换原始图像边缘上的任何像素,因此如果您需要这些边缘像素,则需要寻找其他解决方案。此外,texture.Apply 需要一段时间才能运行,因此如果您需要不断应用此边框,您可能会遇到速度变慢,但您提到只有当玩家死亡时才会出现这种情况,所以这应该不是问题。
【讨论】:
以上是关于以编程方式在图像中加载纹理并将边框设置为图像 Unity的主要内容,如果未能解决你的问题,请参考以下文章
在 openGL 纹理中加载图像(使用它们的 RGB(A) 像素数据)
SetBackgroundDrawable 在内存中加载图像吗?