object reference not set to an instance of an object после компиляции на Win x86_64

После компиляции тестового проекта выдает в логе "object reference not set to an instance of an object", хотя в редакторе все работает + через дебаг проверял, есть ли ссылки на объект(в моем случае океан). В программировании начинающий, прошу сильно не бить :)

Текст ошибки из лога:

  at OceanManager.WaterHeightAtPositions (UnityEngine.Vector3 position) [0x00001] in C:\Users\KIRIN\Ships\Assets\Scripts\OceanManager.cs:41 
  at Floater.FixedUpdate () [0x00010] in C:\Users\KIRIN\Ships\Assets\Scripts\Floater.cs:31 
(Filename: C:/Users/KIRIN/Ships/Assets/Scripts/Floater.cs Line: 31)

в этой строке

float difference = floatersPoints[i].transform.position.y - OceanManager.instance.WaterHeightAtPositions(floatersPoints[i].position);

Сами скрипты:

OceanManager

    public float waveHeight = 7f, waveFrenquency = 1f, waveSpeed = 1f;

    public Transform ocean;

    public static OceanManager instance;


    Material oceanMat;
    Texture2D displacementWater;

    private void Awake()
    {
        if (instance == null)
        {
            instance = this;
        }
        else if (instance != this)
        {
            Debug.Log("Instance alredy exists");
            Destroy(this);
        }

    }
    void SetVariables()
    {
        oceanMat = ocean.GetComponent<Renderer>().sharedMaterial;
        displacementWater = (Texture2D)oceanMat.GetTexture("_WaveDisplacement");
    }

    public float WaterHeightAtPositions( Vector3 position)
    {
        return ocean.position.y + displacementWater.GetPixelBilinear(position.x * waveFrenquency / 100, position.z * waveFrenquency / 100 + Time.time * waveSpeed / 100).g * waveHeight / 10 * ocean.localScale.x;
    }
    private void OnValidate()
    {
        if (!oceanMat)
        {
            SetVariables();
        }
        UpdateMaterial();
    }

    private void UpdateMaterial()
    {
        oceanMat.SetFloat("_WavesSpeed", waveSpeed / 100);
        oceanMat.SetFloat("_WavesFrenquency", waveFrenquency / 100);
        oceanMat.SetFloat("_WavesHeights", waveHeight / 10);
    }
} 

Floater


    public float underWaterDrag = 1f, underWaterAngularDrag = 1f;
    public float airDrag = 0f, airAngularDrag = 0.05f;
    public float floatingPower = 15f;

    OceanManager oceanManager;
    Rigidbody _rigidbody;

    int floatersUnderwater;

    bool underwater;


    void Start()
    {
        _rigidbody = GetComponent<Rigidbody>();
    }

    void FixedUpdate()
    {
        floatersUnderwater = 0;
        for (int i = 0; i < floatersPoints.Length; i++)
        {
            float difference = floatersPoints[i].transform.position.y - OceanManager.instance.WaterHeightAtPositions(floatersPoints[i].position);

            if (difference < 0)
            {
                _rigidbody.AddForceAtPosition(Vector3.up * floatingPower * Mathf.Abs(difference), floatersPoints[i].transform.position, ForceMode.Force);
                floatersUnderwater += 1;
                if (!underwater)
                {
                    underwater = true;
                    SwitchStateBody(true);
                }
            }
            if (underwater && floatersUnderwater == 0)
            {
                underwater = false;
                SwitchStateBody(false);

            }
        }
    }

    void SwitchStateBody(bool isUnderwater)
    {
        if (isUnderwater)
        {
            _rigidbody.drag = underWaterDrag;
            _rigidbody.angularDrag = underWaterAngularDrag;
        }
        else
        {
            _rigidbody.drag = airDrag;
            _rigidbody.angularDrag = airAngularDrag;
        }
    }

В редакторе объекты плавают путем указаний GameObject'ов

При запуске скомпилированой игры корабли проваливаются и выводится тонна ошибок из лога, которую описал в самом начале

Буду очень признателен за помощь


Ответы (0 шт):