今天出现了一个奇怪的问题,人物角色在UI上的显示,采用的是Render Texture方案。在PC上正常,但在Android下的渲染异常(不显示)。
尝试改了兼容性比较好的色彩模式(如下图),也不行。最后动态生成Render Texture,可以了。我没有搞明白这是为什么,如果有明白的朋友,请不吝赐教。
改了参数也不行
下面是动态生成Render Texture:
动态生成的代码,根据你项目适当修改即可:
cs
using UnityEngine.UI;
public class DynamicRenderTexture_Role : MonoBehaviour
{
// 获取 RawImage 组件并应用 Render Texture
public RawImage rawImage;
// 最新更改为动态生成 Render Texture
[Header("动态生成--RenderTexture")]
public int textureWidth = 1024;
public int textureHeight = 1024;
// 格式, RenderTextureFormat.ARGB32 或 RenderTextureFormat.Default
// 貌似都是 [ R8B8G8A8_UNORM ]
public RenderTextureFormat textureFormat = RenderTextureFormat.Default;
public RenderTexture renderTexture;
public Camera cam;
void Start()
{
// ---------- 用于动态生成 RT ---------
// 动态找相机
cam = GameObject.Find("Camera_For_RT").GetComponent<Camera>();
// 创建 Render Texture
renderTexture = new RenderTexture(textureWidth, textureHeight, 16, textureFormat);
renderTexture.Create();
// 将 Render Texture 附加到像机
cam.targetTexture = renderTexture;
// 将其应用到UI
if (rawImage != null)
{
rawImage.texture = renderTexture;
}
// ----------------------------------
}
void OnDisable()
{
// 清理 Render Texture
if (renderTexture != null)
{
renderTexture.Release();
renderTexture = null;
}
}
}