Step by step walk through Tutorial to create a new Texture2dArray within Unity:
Get Unity 2019.2.17 from here
Create a new 3d project.
Install this package here https://github.com/pschraut/UnityTexture2DArrayImportPipeline
GitHub - pschraut/UnityTexture2DArrayImportPipeline
A Texture2DArray Import Pipeline for Unity 2019.3 and newer. - pschraut/UnityTexture2DArrayImportPipeline
Here is a direct link to the download https://github.com/pschraut/UnityTexture2DArrayImportPipeline/archive/1.2.0.zip
Unzip this file, then from within Unity, you need to manually install this package and point it toward the unzipped package and wait for it to completely install it.
After that, probably a good idea to make a new folder in the Assets directory, call it whatever or TextureArrays
Right click on the new folder and select the option to create a new Texture2dArray
The new texture mod requires 3 arrays in total
The first array will contain all your base color/diffuse textures
The second array will contain the normal maps
The third array will contain your metallic gloss, roughness, emission, ambient occlusion maps
The slice index is very important and each set must match for each texture set.
If a picture of wood is set to index 1, then the normal must go in index 1 of the second array, and the metallic map goes in index 1 in the third array, likewise
I recommend using a placeholder image for index 0 due to the way the paint brush identifies index 0 as a way to "erase" a paint
Basically, start placing all images at index 1. All three arrays will require a blank/black/whatever image in index 0.
Once all three arrays are complete, make sure you hit the Apply button for the array to save, within Unity.
Then select all three arrays and export the bundle using Xyth's export script
Next, you need to modify my mod xml located in the Config folder. You need basic xml and xpath knowledge to change my defaults to whatever you like.
Modify the UV mapping.xml to match the blocks.xml id's
UV mapping file, the ID will correlate to the ID in blocks.xml. The index number will correlate to the slice index of the texture2darray within Unity
Make sure all the numbers match up.
Make sure the texture array names in Unity match those within the InitHarmony.cs file, particularly:
public static string MyTextureArrayDiffuse = "ta_NewBlockTest";
public static string MyTextureArrayNormal = "ta_NewBlockTest_n";
public static string MyTextureArraySpecular = "ta_NewBlockTest_s";
Either make your file names the same, or change those variables in the InitHarmony.cs fileTrial and error go a long way to understanding.
Good luck and if you need help, talk to me in Discord