#c# #unity3d
Вопрос:
Я реструктурирую свой код и создал пространство имен с намерением поместить в него все классы объектов, доступных для сценариев. (Я прилагаю код и скриншот ниже для организации.)
Когда я возвращаюсь в Юнити, все кажется прекрасным. Он также отображает опцию создания в меню. Но когда я проверяю объект, кажется, что к нему не прикреплен скрипт.
Некоторые люди показали, что Unity способна иметь более одного подобного в этом посте с форума Unity. Парень даже перечисляет то же поведение, что и мое в Деле № 4. Но я не могу понять, почему мой код не ведет себя так, как в его случае № 2. Я думаю , что это вызвано Attribute
, но я не знаю, как отобразить опцию создания актива.. Кто-нибудь может мне помочь?
редактировать: Я попытался использовать класс редактора в качестве поста, но получил тот же результат.
namespace BBMM.UI.ScriptableObjects
{
[CreateAssetMenu(fileName = "New Size Preset", menuName = "BBMM/Size Preset")]
public class SO_UI_SizePreset : ScriptableObject
{
public string presetName;
public Vector2 realSize;
public UnitType unit;
}
[CreateAssetMenu(fileName = "New Object", menuName = "BBMM/Object Container")]
public class SO_UI_ObjectList_Item : ScriptableObject
{
public string objectName;
public GameObject prefab;
}
}
Вот ресурс, созданный с использованием приведенного выше кода:
Ответ №1:
Прежде всего убедитесь, что каждый класс находится в отдельном файле с соответствующим именем!
SO_UI_SizePreset.cs
namespace BBMM.UI.ScriptableObjects
{
[CreateAssetMenu(fileName = "New Size Preset", menuName = "BBMM/Size Preset")]
public class SO_UI_SizePreset : ScriptableObject
{
public string presetName;
public Vector2 realSize;
public UnitType unit;
}
}
SO_UI_ObjectList_Item.cs
namespace BBMM.UI.ScriptableObjects
{
[CreateAssetMenu(fileName = "New Object", menuName = "BBMM/Object Container")]
public class SO_UI_ObjectList_Item : ScriptableObject
{
public string objectName;
public GameObject prefab;
}
}
Затем, если вы сначала создали ресурс SO, а затем изменили пространство имен, Unity может потерять соединение (в зависимости от того, как именно вы внесли это изменение).
-> вы можете либо воссоздать их, либо перейти в меню Инспектора в правом верхнем углу, включить > Debug
режим и перетащить правильный сценарий в поле Сценарий.