Настройки импорта Unity Script определяют значения переменных по умолчанию - PullRequest
0 голосов
/ 15 апреля 2020

Я не уверен, как еще сформулировать этот вопрос. поэтому я опубликую скриншоты моей проблемы.

Как сделать так, чтобы

[SerializeField] private Sprite[] m_Sprites;

появилось в инспекторе здесь

enter image description here

Я пробовал public Sprite[] Sprites; и private Sprite[] m_Sprites, но безрезультатно, я видел, что там появляются переменные, но я не могу понять это сейчас, когда мне это нужно. После дальнейших попыток я обнаружил, что появляется public Sprite Sprite;, однако я требую, чтобы он был массивом спрайтов. Я также попытался создать класс-держатель и определить массив внутри него, но он все еще не появляется.

Ответы [ 2 ]

1 голос
/ 15 апреля 2020

Единственными типами полей, допускающими ссылки по умолчанию, являются поля типа, производного от UnityEngine.Object

... a Sprite[] является массивом и не наследуется от UnityEngine.Object .


Как упоминалось ранее, вы можете использовать класс-оболочку ScriptableObject, такой как, например,

// this attribute adds an entry to the Asset context menu Add->SpriteCotnainer
[CreateAssetMenu]
public class SpriteContainer : ScriptableObject
{
    public Sprite[] sprites;
}

, тогда в своем классе используйте

[SerializeField] private SpriteContainer spriteContainer;

, который теперь имеет тип ScriptableObject, который наследуется от UnityEngine.Object, поэтому он должен отображаться в качестве справочного поля по умолчанию.

Так что вам нужно будет создать этот актив с помощью щелчок правой кнопкой мыши на AssetsAddSpriteContainer. Здесь вы можете ссылаться на все спрайты, которые вам нужны. Затем перетащите его в поле spriteContainer вашего скрипта.

0 голосов
/ 15 апреля 2020

У вас есть два варианта: либо создать игровой объект / префаб, добавить к нему скрипт - и тогда он появится.

Или, если вам нужен доступ только к объекту данных, вы можете сделать это. ScriptableObject и создайте его экземпляр.

В любом случае вам придется создать экземпляр; Вы не можете назначать переменные сценариям, только объекты с прикрепленными сценариями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...