Глобальный объект сценариев - PullRequest
0 голосов
/ 10 июля 2019

Предположим, у меня есть этот объект ScriptableObject для представления списка карт:

using UnityEngine;
using System.Collections;

[CreateAssetMenu(fileName = "CardList", menuName = "Inventory/List", order = 1)]
public class CardList : ScriptableObject {
    public string[] cardName;
    public Sprite[] cardSprite;
}

Затем я создаю объект ScriptableObject и заполняю его всей информацией о моих картах.

Есть ли способ изменить этот код так, чтобы любой скрипт имел статический доступ к нему? Например, можно ли задать CardList одноэлементное поведение?

Я не хочу создавать другой класс, было бы легко создать ScriptableObjectManager, который мог бы ссылаться на CardList. Я бы лучше назвал что-то вроде CardList.instance.cardName[i] напрямую.

1 Ответ

0 голосов
/ 11 июля 2019

Определенно, вы можете создать его как синглтон, так и для этого. Предположим, что у нас есть проект Unity с файловой иерархией, такой как

UnityProject
- Assets (directory)
    Scripts
        SampleScriptableObject.cs   
- Resources (directory)
    SampleScriptableObject.asset
- Project
- ..etc

в классе "SampleScriptableObject" будет похоже на

public class SampleScriptableObject<T> : ScriptableObject where T : ScriptableObject  
{
    private static T _instance;
    public T GetInstance()
    {
        if (_instance == null)
        {
            _instance = Resources.Load(typeof(T).Name) as T;
        }
        return _instance;
    }
}

Вы можете использовать объект сценариев как синглтон, как хотите.

...