@Wheat1ey
Только начал писать игры на Unity

Не сохраняется заданная скрипту в Editor ссылка на объект в Unity?

Вкратце:
У меня есть скрипт чекпоинта(1) и скрипт, сохраняющий определённые значения(2). Из 1 поступают координаты респавна в 2. В чекпоинте в инспекторе я сослался на 2, но при запуске ссылка слетает, и в графе ссылки на 2 написано None (Внизу фото).

Теперь поподробнее:
Скрипты:

using UnityEngine;
public class checkpointScr : MonoBehaviour
{
    private bool opened = false;
    //data это то, что нам нужно
    public dataScript data;
    public BoxCollider2D mycollider;
    public PolygonCollider2D playercollider;
    public SpriteRenderer spriteRenderer;
    public Sprite newSprite;
    public Light Light1;
    public Light Light2;
    AudioSource mySounding;
    public AudioClip mySound;
    void Start()
    {
        data = GetComponent<dataScript>();
        mySounding = GetComponent<AudioSource>();
        Light1.intensity = 0;
        Light2.intensity = 0;
    }

    void Update()
    {
        if (mycollider.IsTouching(playercollider) && opened == false)
        {
            Light1.intensity = 1;
            Light2.intensity = 1;
            opened = true;
            mySounding.PlayOneShot(mySound, 0.9f);
            spriteRenderer.sprite = newSprite;
            //здесь скрипт передаёт координаты
            data.x = gameObject.transform.position.x;
            data.y = gameObject.transform.position.y - 1.6f;
            data.z = gameObject.transform.position.z;
        }
    }

}

Вот код 2:

using System.Collections.Generic;
using UnityEngine;

public class dataScript : MonoBehaviour
{
    //тут совсем пусто
    public float x = -3.01f, y = -1.73f, z = 0;
}



То, что я использовал, чтобы устранить проблему:
  • Называл public dataScript по другому
  • Перезагружал Unity
  • Использовал копию чекпоинта
  • Переподключал скрипт к чекпоинту
  • Использовал скрипт на другом объекте (результат тот же)


Но зато я могу без всяких проблем используя те же строчки выполнять это в другом скрипте. Так-же я могу после запуска заново подключать 2 к скрипту и всё спокойно работает.

До запуска:
5faab2bb7296a833266335.png

После запуска:
5faab2d13f5d1337336385.png
  • Вопрос задан
  • 42 просмотра
Решения вопроса 1
DanceM
@DanceM Куратор тега Unity Game Engine
Кто хочет -ищет способ, кто не хочет -ищет причину
Здесь:
void Start()
{
data = GetComponent();
mySounding = GetComponent();
Light1.intensity = 0;
Light2.intensity = 0;
}
у вас устанавливаются значения на старте, вытирая те, что вы указали через инспектор.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы