Принцип работы EditorScript

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

Всем привет. С вами я, stalker320, и сегодня я хотел бы рассказать про написание служебных скриптов, запускающихся в редакторе. Всем желающим прочесть - добро пожаловать под кат


EditorScript - это такой скрипт, который можно запустить по нажатию комбинации Ctrl+Shift+X прямо из движка. Он может исполнять различные служебные функции. К примеру создать необходимую структуру каталогов в проекте.

tool
extends EditorScript

var folders: PoolStringArray = [# Наши папки к созданию
	"res://assets/textures/",# Их определяет разработчик
	"res://assets/fonts/",# Просто напишите сюда все конечные пути, что хотите создать
	"res://resources/",
	"res://addons/",
	"res://scenes/",
	"res://scripts/singletons/",
	"res://scripts/resources/",
	"res://scripts/editor_scripts/"
]

var placeholder: Resource = load("res://placeholder.tres")
# Ресурс-пустышка для сохранения структуры файлов. По желанию

func _run() -> void: # Входная функция этого скрипта
	var dir = Directory.new()
	for folder in folders: # проход по списку папок
		if !dir.dir_exists(folder):
			var err = OK
			err = dir.make_dir_recursive(folder)
			if err != OK:
				prints("Error", err)
				return
			else:
				if !dir.file_exists(folder.plus_file("placeholder.tres")):
					# Создаём файл плейсхолдера для гита если не существует
					err = ResourceSaver.save(folder.plus_file("placeholder.tres"), placeholder)
					if err != OK:
						prints("Error", err) 
						return
					else:
						# Говорим что создали (не обязательно)
						prints("Making", folder)
						prints("Making", folder.plus_file("placeholder.tres"))
	print("Successful. Structure created or already exists.")
	return

К сожалению я освоил их не очень хорошо, поэтому создать генератор какого-нибудь API для дальнейшего моддинга игры фанатами пока не вышло. (Хотя создать необходимую структуру файлов вышло, а это значит, что кто-либо другой может расширить функционал через словарь и создавать необходимые скрипты). Кроме того, чтобы создавать нужную структуру файлов прямо в редакторе, через метод get_scene() можно взаимодействовать и с самой сценой (Достойные примеры скриптов и сцен, к сожалению, отсутствуют).

Простите, что статья вышла короткой, но я в первую очередь хотел показать скрипт как пример, а также объяснить на русском языке как это использовать.

Спасибо за внимание. Не думаю, что буду писать статьи в дальнейшем очень часто, но у меня есть идеи, о чём можно написать.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Оцените скрипт по пятибальной шкале полезности

  • 0,0%50
  • 0,0%40
  • 0,0%30
  • 0,0%20
  • 0,0%10
Источник: https://habr.com/ru/post/563740/


Интересные статьи

Интересные статьи

Поговорим о распространённых приёмах работы с датами, которые находят применение на Data Science-собеседованиях и в обычной работе. При анализе данных весьма часто возникает необходимость...
В своих проектах мы стараемся по мере необходимости покрывать код тестами и придерживаться принципов SOLID и чистой архитектуры. Хотим поделиться с читателями Хабра перев...
Бесполезное видеонаблюдение или принцип "Чабудо" китайских производителей. Почему интерфейс софта производителей IP камер остался в стиле девяностых? Чита...
Маркетплейс – это сервис от 1С-Битрикс, который позволяет разработчикам делиться своими решениями с широкой аудиторией, состоящей из клиентов и других разработчиков.
В обновлении «Сидней» Битрикс выпустил новый продукт в составе Битрикс24: магазины. Теперь в любом портале можно создать не только лендинг или многостраничный сайт, но даже интернет-магазин. С корзино...