以编程方式在图像中加载纹理并将边框设置为图像 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) 像素数据)

在OpenGL中加载图像以用于GIS应用程序

在 pyqt 中加载图像和文本

SetBackgroundDrawable 在内存中加载图像吗?

如何在 webpack 中加载 sass 样式表中使用的图像?

OpenGL - 在一个函数中加载多个纹理