Создайте постоянный объект
Создайте здесь сцену с предварительным загрузчиком, вы можете разместить заставку или что угодно, но важно загружать вещи, которые должны быть постоянными (например, такие какNetwork или GameManager)
Создайте скрипт PersistentObject.cs
и вставьте в него следующий код
private void Awake(){
DontDestroyOnLoad(this.gameObject);
}
Поместите этот скрипт в любой объект, который вы инициализируете в прелоадере
Доступобъект из любого места
Если вы хотите получить доступ к объекту в другой сцене, есть несколько способов, но я предполагаю, что у вас нет какой-либо конкретной ссылки на объект
Так что если у нас есть GameManager.cs
и мы создали постоянный куб в нашем предварительном загрузчике под названием Cube
, мы можем получить ссылку на игровой объект, сказав GameObject cube = GameObject.FindGameobjectWithName("Cube");
Теперь вы можете делать все, что захотите, используя cube
Пишите меньше, Делайте больше с синглетами
Создание синглтона также будет очень полезно
public static class Singleton<T>: MonoBehavior where T: MonoBehavior{
private static T instance;
//Notice the lower and upper case difference here
public static T Instance{
get{
if(instance == null){
instance = GameObject.FindGameObjectOfType<T>();
}
return instance;
}
}
}
Затем вы можете добавить это в свой скрипт, чтобы получить доступИспользование свойств упрощает и уменьшает объем кода, который вы должны написать
public class Cube: Singleton<Cube>{
private string cubeName = "Jeff";
public void ChangeCubeName(string newName){
cubeName = newName;
}
}
Чтобы получить доступ к этим методам этого класса, теперь вы можете вызывать синглтон из любого места в вашем коде
Пример
public class GameManager: MonoBehavior{
private void Start(){
cube.Instance.ChangeCubeName("Joe");
}
}