Не могу понять, почему не вызывается метод CreateBuilding()? Все значения переменных передаются корректно, условие №1 в методе CreateBuildingOnLoad() тоже работает, а вот метод не вызывается... Методы находятся в одном классе, MonoBehaviour есть, скрипт не находится ни на каком объекте(он там не нужен), экземпляр класса создается в другом классе, вроде более-менее описал проблему.
private void CreateBuildingOnLoad(string buildingName, int xPosition, int zPosition)
{
// Работает.
if (buildingName == "Bld_Barn_01")
{
// Работает.
building = buildingsSO[0];
CreateBuilding(xPosition, zPosition, building);
}
else if (buildingName == "Bld_Barn_02")
{
building = buildingsSO[1];
CreateBuilding(xPosition, zPosition, building);
}
else if (buildingName == "Bld_Barn_03")
{
building = buildingsSO[2];
CreateBuilding(xPosition, zPosition, building);
}
}
private void CreateBuilding(int xPosition, int zPosition, BuildingSO building)
{
// Не работает.
Vector3 position = new Vector3(xPosition, 0, zPosition);
Instantiate(building.prefab, position, Quaternion.identity);
SetBuilding(xPosition / cellSize, zPosition / cellSize, building.width, building.height, building);
}
Ошибка в консоли:
NullReferenceException: Object reference not set to an instance of an object
Grid.CreateBuildingOnLoad (System.String buildingName, System.Int32 xPosition, System.Int32 zPosition) (at Assets/Scripts/Grid.cs:115)
Grid..ctor (System.Int32 width, System.Int32 height, System.Int32 cellSize) (at Assets/Scripts/Grid.cs:87)
GridBuildingSystem.Start () (at Assets/Scripts/GridBuildingSystem.cs:20)