reckfellENGINE

C#: свой Resource через GlobalClass

Регистрировать ShotSettings, сохранить .rdata и не путать регистрацию с Singleton.

На этой странице

Объявить тип

Сохраните этот класс как ShotSettings.cs с тем же регистром. Он наследуется от Resource, поэтому хранит настройки, а не занимает место в дереве Entity. Добавьте файл в существующий C#-проект и соберите. После обновления списка скриптов редактор может предложить зарегистрированный тип в создании ресурсов. Для использования в коде вызывайте обычный new ShotSettings().

ShotSettings.cs
C#
using Reckfell;

[GlobalClass]
public partial class ShotSettings : Resource
{
    [Export] public string DisplayName { get; set; } = "Pulse";
    [Export(PropertyHint.Range, "1,100,1")] public int Damage { get; set; } = 12;
    [Export] public Reckfell.Collections.Array<string> Tags { get; set; } = new() { "weapon" };

    public bool TryGetDamage(out int damage)
    {
        damage = 0;
        if (Damage < 1 || Damage > 100) return false;
        damage = Damage;
        return true;
    }
}

GlobalClass обозначает тип для редактора. Атрибут не создаёт общий экземпляр, не делает методы static и не заменяет автозагрузку. Два оружия могут ссылаться на один ShotSettings: изменение Damage общего ресурса влияет на обоих. Боезапас каждого оружия храните на его экземпляре, как _ammo в примере экспорта.

Сохранить и проверить

ResourceSaver.Save(settings, "user://shot-settings.rdata") возвращает Error: проверьте его перед загрузкой. ResourceLoader.Load<ShotSettings> возвращает типизированный ресурс; обработайте null. Для проверки чтения именно с диска, а не из общего кэша, укажите CacheMode.Ignore. Это отдельный экземпляр; обычная загрузка может использовать кэш.

В комплектном стенде проверены сохранение, чтение имени/урона/тегов и восстановление C#-типа. Импорт редактором без интерфейса регистрирует ShotSettings с базовым Resource в GetGlobalClassList. Это не проверка действий пользователя в диалоге Create Resource.

Если тип не появился

Проверьте успешную сборку, точное совпадение ShotSettings.cs и ShotSettings, атрибут GlobalClass и наследование от ReckfellObject. Обычный C#-класс с атрибутом даёт RF0401; generic-класс — RF0402. Не добавляйте GlobalClass к InventoryLedger: обычная модель данных в этом не нуждается. После переименования файла исправьте класс и ссылки, затем пересоберите проект; одна регистрация не переносит существующие ресурсы автоматически.

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.