Перенос переменой между уровнями

Программирование на Юнити.

Перенос переменой между уровнями

Сообщение akkel 22 июл 2011, 10:34

Привет.
Подскажите как можо перенести переменную Transform между уровнями.
когда происходит переход между уровнями переменная меняется на "Missing".
в общем подскажите пожалуйста как это исправить.

Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class Level : MonoBehaviour {
       
        public Transform Players;
        public Transform Start;
       
        public void Awake()
        {
       
                DontDestroyOnLoad(transform.gameObject);
               
        }
       
        // Update is called once per frame
        public void Spawn () {
               
                Instantiate(Start,Start.position,Start.rotation);
               
        }
}
 
akkel
UNIт
 
Сообщения: 76
Зарегистрирован: 23 июн 2009, 07:03
Откуда: Ростов-На-Дону

Re: Перенос переменой между уровнями

Сообщение foonk 22 июл 2011, 11:02

Статические переменные, запись в файл, PlayerPrefs, DontDestroyOnLoad, передача значения на сервер в конце концов.....
— 2010-й год. В Ладу Калину поставили первый Глонасс-приемник размером с утюг. В то же время Эппл выпускает плеер размером меньше спичечного коробка с цветным дисплеем и тачскрином.
Добавить foonk09 в Skype
Аватара пользователя
foonk
UNITрон
 
Сообщения: 302
Зарегистрирован: 16 май 2009, 20:25
Откуда: Москва
  • ICQ

Re: Перенос переменой между уровнями

Сообщение akkel 22 июл 2011, 12:26

пробывал использовать статичные переменные а также DontDestroyOnLoad()
но при создании объекта ошибка
MissingReferenceException: The object of type 'Player' has been destroyed but you are still trying to access it.
akkel
UNIт
 
Сообщения: 76
Зарегистрирован: 23 июн 2009, 07:03
Откуда: Ростов-На-Дону

Re: Перенос переменой между уровнями

Сообщение foonk 22 июл 2011, 12:45

Экстрасенсы по-прежнему в отпуске.
— 2010-й год. В Ладу Калину поставили первый Глонасс-приемник размером с утюг. В то же время Эппл выпускает плеер размером меньше спичечного коробка с цветным дисплеем и тачскрином.
Добавить foonk09 в Skype
Аватара пользователя
foonk
UNITрон
 
Сообщения: 302
Зарегистрирован: 16 май 2009, 20:25
Откуда: Москва
  • ICQ

Re: Перенос переменой между уровнями

Сообщение eric 22 июл 2011, 13:06

akkel писал(а):Привет.
Подскажите как можо перенести переменную Transform между уровнями.
когда происходит переход между уровнями переменная меняется на "Missing".
в общем подскажите пожалуйста как это исправить.

Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class Level : MonoBehaviour {
       
        public Transform Players;
        public Transform Start;
       
        public void Awake()
        {
       
                DontDestroyOnLoad(transform.gameObject);
               
        }
       
        // Update is called once per frame
        public void Spawn () {
               
                Instantiate(Start,Start.position,Start.rotation);
               
        }
}
 



В коде DontDestroyOnLoad на текущий transform?
А инстанцировать пытаетесь "Start" ?
eric
UNец
 
Сообщения: 38
Зарегистрирован: 12 июн 2010, 12:35

Re: Перенос переменой между уровнями

Сообщение akkel 22 июл 2011, 13:34

нет player.
akkel
UNIт
 
Сообщения: 76
Зарегистрирован: 23 июн 2009, 07:03
Откуда: Ростов-На-Дону

Re: Перенос переменой между уровнями

Сообщение raul82 22 июл 2011, 13:41

Синтаксис:
Используется csharp
public class Global : MonoBehaviour
{
    public   static      Camera UICamera;
    public   static      Camera MainCamera;

 

обращешся к стат переменной тaк Global.MainCamera
5 годиков 7 месяцев
Аватара пользователя
raul82
Старожил
 
Сообщения: 506
Зарегистрирован: 21 янв 2011, 17:48
Откуда: Алматы

Re: Перенос переменой между уровнями

Сообщение eric 23 июл 2011, 12:51

akkel писал(а):нет player.

Что такое "player" ?
В приведенном вами коде нет ни переменной с таким именем ни класса с таким именем?
Тот трансформ, который нужно инстанцировать в другом уровне, тот и передавайте в DontDestroy.
В приведенном вами коде вы сохраняете один префаб,

DontDestroyOnLoad(transform.gameObject);
- что равнозначно трансформу на котором висит ваш скрипт "Level"

а потом обращаетесь к совсем другому.

Instantiate(Start,Start.position,Start.rotation);


Так?
eric
UNец
 
Сообщения: 38
Зарегистрирован: 12 июн 2010, 12:35


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6