Постоянно вываливается предупреждение:
You are trying to create a MonoBehaviour using the 'new' keyword. This is not allowed. MonoBehaviours can only be added using AddComponent(). Alternatively, your script can inherit from ScriptableObject or no base class at all
UnityEngine.MonoBehaviour:.ctor()
ObjectDataBase:.ctor()
Это из-за этих строк в коде :
ODBtemp = new ObjectDataBase();
Полностью код:
...
public class PlacementObjects : EditorWindow
{
ObjectDataBase ODBtemp = new ObjectDataBase();
...
void OnEnable()
{
...
ODBtemp = new ObjectDataBase();
...
}
void OnGUI()
{
EditorGUI.BeginChangeCheck();
string[] tabs = { "Объекты", "Назначение/Просмотр DATA у Terrain", "TAB THREE" };
//selectedTab = GUILayout.Toolbar(selectedTab, tabs, tabStyle);
selectedTab = GUILayout.Toolbar(selectedTab, tabs);
switch (selectedTab)
{
case 0:
DrawLayouts();
DrawHeader();
DrawLeft();
DrawRight();
DrawFooter();
break;
case 1:
DrawListTerrain();
break;
case 2:
GUILayout.Label("TAB THREE");
break;
}
EditorGUI.EndChangeCheck();
}
void SetGamObjArrayPrefab(int Objint)
{
ODBtemp = new ObjectDataBase();
...
}
void InitOnGUI()
{
ODBtemp = new ObjectDataBase();
...
}
void DrawHeader()
{
ODBtemp = new ObjectDataBase();
...
}
void SaveInBDObj(string stringupdate)
{
ODBtemp = new ObjectDataBase();
...
}
...
}
Как лучше переписать код , чтоб предупреждения не было?
Судя по всему, Ваш класс ObjectDataBase наследуется от MonoBehaviour. А корректно создавать новые экземпляры компонентов можно только методом AddComponent.
Отсюда два решения:
1. Создавать ObjectDataBase в каком-нибудь объекте-контейнере
ODBtemp = gameObjectParent.AddComponent<ObjectDataBase>();
2. Переписать класс ObjectDataBase без наследования от MonoBehaviour
<...>
Сборка персонального компьютера от Artline: умный выбор для современных пользователей