ScriptableSingleton Unity возвращает 0 значений

#unity3d

Вопрос:

Я использую ScriptableSingleton для хранения своих возможностей, как показано ниже на рисунке.
Но в коде я получаю значения 0.
Например, ниже приведен созданный элемент ScriptableSingleton :

 [CreateAssetMenu(fileName = "PlayerStatsFileName", menuName = "PlayerScriptableObject/PlayerAbilities")]
public class PlayerAbilities : ScriptableSingleton<PlayerAbilities>
{
    [Header("Abilities")] 
    [SerializeField] private int _movementSpeed;
    
    public float GetRunningSpeed()
    {
        return _movementSpeed;
    }
}
 

И когда вызывается в коде:

 Debug.Log("PlayerAbilities :"   PlayerAbilities.instance.GetRunningSpeed());
 

Это всегда возвращает 0, даже если значения указаны, как показано ниже.

введите описание изображения здесь

Итак, я попытался создать его, чтобы посмотреть, связано ли это с редактором, но при сборке у нас возникла эта ошибка:

введите описание изображения здесь

то есть :

 The type or namespace name 'ScriptableSingleton<>' could not be found (are you missing a using directive or an assembly reference?)
 

Как это можно решить, чего мне не хватает?

Комментарии:

1. Не могли бы вы, пожалуйста, добавить код ScriptableSingleton и его место в иерархии проектов ?

2. Извини, я не смог этого понять. Вы просили код, кстати, это было выше … и я вызывал его напрямую, как PlayerAbilities.instance.GetRunningSpeed() из другого кода. И еще одна вещь, которая, похоже, находится в пространстве имен редактора.

3. Как вы сказали, это код редактора, поэтому вы не можете использовать его для своей игры. Вы можете легко создать свою собственную версию, используя одноэлементную реализацию, которая наследуется от ScriptableObject

4. Извините, не знал, что это часть пространства имен UnityEditor. Я думал, ты разработал свой собственный синглтон.

Ответ №1:

ScriptableSingleton находится в пространстве имен UnityEditor. Нам нужно создать нашу собственную реализацию, которая наследуется от ScriptableObject.