Решить вопрос с запуском без файла setting_prd_control.json #4

Closed
opened 2025-11-16 22:52:10 +03:00 by maxim · 3 comments
Owner

При первом запуске идет парсинг json файла, ели нет, то необходимо что то сделать

При первом запуске идет парсинг json файла, ели нет, то необходимо что то сделать
Author
Owner

В общем
Пример реализации:

func _ensure_config_exists() -> bool:
var user_path = "user://config/setting_prd_control"
var project_path = "res://config/setting_prd_control/"

var dir = DirAccess.open("user://")
if not dir.dir_exists("user://config"):
dir.make_dir("user://config")

if FileAccess.file_exists(user_path):
return true

# Копируем из ресурсов
var source_file = FileAccess.open(project_path, FileAccess.READ)
if source_file:
var content = source_file.get_as_text()
source_file.close()

var dest_file = FileAccess.open(user_path, FileAccess.WRITE)
if dest_file:
    dest_file.store_string(content)
    dest_file.close()
    print("Config copied from project to user directory")
    return true
else:
    push_error("Failed to create config file: " + user_path)
    return false
else:
push_error("Source config not found: " + project_path)
  return false

func _load_configuration() -> void:
if not _ensure_config_exists():
return

var config_file = FileAccess.open("user://config/controlprd.json", FileAccess.READ)
if config_file:

... загрузка конфига

Особенности:
Это код сгенерированный и не относится к реальности, просто суть что хочется.
· В редакторе: res:// указывает на папку проекта
· В бинарнике: res:// читается из .pck архива
· user:// всегда указывает на папку данных пользователя:
· Windows: %APPDATA%/Godot/app_userdata/[project_name]/
· Linux: ~/.local/share/godot/app_userdata/[project_name]/
· macOS: ~/Library/Application Support/Godot/app_userdata/[project_name]/

Для экспорта убедись:

  1. Файл res://config/controlprd.json включен в экспорт (в настройках экспорта)
  2. Папка config отмечена для копирования при экспорте

Это способ иметь конфиг по умолчанию в проекте с возможностью пользовательских изменений.

В общем Пример реализации: func _ensure_config_exists() -> bool: var user_path = "user://config/setting_prd_control" var project_path = "res://config/setting_prd_control/" var dir = DirAccess.open("user://") if not dir.dir_exists("user://config"): dir.make_dir("user://config") if FileAccess.file_exists(user_path): return true # Копируем из ресурсов var source_file = FileAccess.open(project_path, FileAccess.READ) if source_file: var content = source_file.get_as_text() source_file.close() var dest_file = FileAccess.open(user_path, FileAccess.WRITE) if dest_file: dest_file.store_string(content) dest_file.close() print("Config copied from project to user directory") return true else: push_error("Failed to create config file: " + user_path) return false else: push_error("Source config not found: " + project_path) return false func _load_configuration() -> void: if not _ensure_config_exists(): return var config_file = FileAccess.open("user://config/controlprd.json", FileAccess.READ) if config_file: # ... загрузка конфига Особенности: Это код сгенерированный и не относится к реальности, просто суть что хочется. · В редакторе: res:// указывает на папку проекта · В бинарнике: res:// читается из .pck архива · user:// всегда указывает на папку данных пользователя: · Windows: %APPDATA%/Godot/app_userdata/[project_name]/ · Linux: ~/.local/share/godot/app_userdata/[project_name]/ · macOS: ~/Library/Application Support/Godot/app_userdata/[project_name]/ Для экспорта убедись: 1. Файл res://config/controlprd.json включен в экспорт (в настройках экспорта) 2. Папка config отмечена для копирования при экспорте Это способ иметь конфиг по умолчанию в проекте с возможностью пользовательских изменений.
velelepie was assigned by maxim 2025-11-17 02:08:44 +03:00
Collaborator

Задача звучит - Проверка наличия "user://config/setting_prd_control.json", если нет, то создаётся автоматически из "res://config/setting_prd_control.json"

Задача звучит - Проверка наличия "user://config/setting_prd_control.json", если нет, то создаётся автоматически из "res://config/setting_prd_control.json"
Collaborator
https://totmaxim.ru/velelepie/uarep-ctl/commit/0670bf4b09ba8691d63eaefce074f6039567eefa
Sign in to join this conversation.
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: maxim/uarep-ctl#4
No description provided.