Unity 将多个纹理(数组)传递给着色器?

Unity Pass multiple textures(array) into shader?

现在在我的着色器中,我有 5 个纹理,

 Properties
     {
         _MainTex ("Texture", 2D) = "white" {}
         _MainTex2("Texture2", 2D) = "white" {}
         _MainTex3 ("Texture3", 2D) = "white" {}
             _MainTex4 ("Texture4", 2D) = "white" {}
             _MainTex5 ("Texture5", 2D) = "white" {}
     }

有没有可能我可以把它变成一个数组,这样我就不需要声明那么多纹理了?

您可以使用允许您这样做的 2DArray 类型。

Properties
{
    _TheTextureArray ("Tex", 2DArray) = "" {}
}

您可以在这里找到更多相关信息:https://docs.unity3d.com/Manual/SL-TextureArrays.html

请注意技术限制(例如,DX11/12),因此默认情况下它不会在所有环境中工作,当然也不是网络(当前)。