Godot Version
4.7.stable
Question
Here is the current script, but this produces a uncompressed Texture2DArray.
I have made a Texture2DArray comprising of compressed texture2d before but I dont remember how.
@tool
extends EditorScript
var albedo_array = [
load("res://Assets/Materials/Albedo/Ground.png"), #1
load("res://Assets/Materials/Albedo/Grass.png"),#2
load("res://Assets/Materials/Albedo/Rock.png"),#3
load("res://Assets/Materials/Albedo/Sand.png"),#4
load("res://Assets/Materials/Albedo/Snow.png"),#5
load("res://Assets/Materials/Albedo/Gravel.png"),#6
load("res://Assets/Materials/Albedo/Wood.png"),#7
load("res://Assets/Materials/Albedo/Brick.png"),#8
load("res://Assets/Materials/Albedo/Metal.png"),#9
load("res://Assets/Materials/Albedo/Concrete.png"),#10
load("res://Assets/Materials/Albedo/Marble.png"),#11
load("res://Assets/Materials/Albedo/WoodFloor.png"),#12
]
var normal_array = [
load("res://Assets/Materials/Normal/Ground.png"), #1
load("res://Assets/Materials/Normal/Grass.png"),#2
load("res://Assets/Materials/Normal/Rock.png"),#3
load("res://Assets/Materials/Normal/Sand.png"),#4
load("res://Assets/Materials/Normal/Snow.png"),#5
load("res://Assets/Materials/Normal/Gravel.png"),#6
load("res://Assets/Materials/Normal/Wood.png"),#7
load("res://Assets/Materials/Normal/Brick.png"),#8
load("res://Assets/Materials/Normal/Metal.png"),#9
load("res://Assets/Materials/Normal/Concrete.png"),#10
load("res://Assets/Materials/Normal/Marble.png"),#11
load("res://Assets/Materials/Normal/WoodFloor.png"),#12
]
var orm_array = [
load("res://Assets/Materials/ORM/Ground.png"), #1
load("res://Assets/Materials/ORM/Grass.png"),#2
load("res://Assets/Materials/ORM/Rock.png"),#3
load("res://Assets/Materials/ORM/Sand.png"),#4
load("res://Assets/Materials/ORM/Snow.png"),#5
load("res://Assets/Materials/ORM/Gravel.png"),#6
load("res://Assets/Materials/ORM/Wood.png"),#7
load("res://Assets/Materials/ORM/Brick.png"),#8
load("res://Assets/Materials/ORM/Metal.png"),#9
load("res://Assets/Materials/ORM/Concrete.png"),#10
load("res://Assets/Materials/ORM/Marble.png"),#11
load("res://Assets/Materials/ORM/WoodFloor.png"),#12
]
func _run() -> void:
var albedo_tex_array = Texture2DArray.new()
albedo_tex_array.create_from_images(orm_array)
albedo_tex_array
save_editor_resource(albedo_tex_array, "user://albedo_array.res")
func save_editor_resource(resource: Resource, target_path: String) -> void:
if not resource:
return
var base_dir = target_path.get_base_dir()
if not DirAccess.dir_exists_absolute(base_dir):
var dir_error = DirAccess.make_dir_recursive_absolute(base_dir)
if dir_error != OK:
return
var resource_to_save = resource
if FileAccess.file_exists(target_path):
resource_to_save = resource.duplicate(true)
var error = ResourceSaver.save(resource_to_save, target_path, ResourceSaver.FLAG_NONE)
if error == OK:
if Engine.is_editor_hint():
EditorInterface.get_resource_filesystem().scan()
else:
printerr("Failed to save tool resource. Error code: ", error)