Вкратце:
У меня есть скрипт чекпоинта(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 к скрипту и всё спокойно работает.
До запуска:
После запуска: