MissingReferenceException Помогите забороть.

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Re: MissingReferenceException Помогите забороть.

Сообщение liver9711 09 янв 2013, 12:46

private GameObject[] GO_inst = new GameObject[50];

Может так? Должно сработать, указателей слава богу в (c#) нет.
liver9711
UNITрон
 
Сообщения: 285
Зарегистрирован: 14 мар 2012, 11:16

Re: MissingReferenceException Помогите забороть.

Сообщение yursiv 09 янв 2013, 12:50

Но вся проблема в том, что у меня нет ни одного GameObject, который был бы создан локально.

Может в цикле постоянно создается\удаляется объект, а через инспектор вы это отследить врядли сможете. Попробовали бы поставить брейкпоинты в монодевелопе - уверен, что решили бы проблему враз.

ЗЫ
public static GameObject GO_Grp;

Может проблема в статик-переменной?
Аватара пользователя
yursiv
UNIт
 
Сообщения: 130
Зарегистрирован: 09 ноя 2010, 11:51
Откуда: Харьков

Re: MissingReferenceException Помогите забороть.

Сообщение mr.Wolfram 09 янв 2013, 13:06

liver9711: "Может так?"
Так уже было.

yursiv: "Может проблема в статик-переменной?"
Может и в ней... Не знаю :) К GO_Grp мне нужен доступ из другого скрипта.
mr.Wolfram
UNец
 
Сообщения: 41
Зарегистрирован: 03 янв 2012, 15:01

Re: MissingReferenceException Помогите забороть.

Сообщение liver9711 09 янв 2013, 13:35

mr.Wolfram писал(а):liver9711: "Может так?"
Так уже было.

yursiv: "Может проблема в статик-переменной?"
Может и в ней... Не знаю :) К GO_Grp мне нужен доступ из другого скрипта.


Тогда либо используй GetComponenet (посмотри как им пользоваться в референсе, не помню), либо объединяй скрипты (у меня несколько удачных попыток было, вроде работает).
liver9711
UNITрон
 
Сообщения: 285
Зарегистрирован: 14 мар 2012, 11:16

Re: MissingReferenceException Помогите забороть.

Сообщение mr.Wolfram 10 янв 2013, 14:23

Похоже это какой-то именно что глюк. И генерят ошибку нефига не мои скрипты. Все что можно засунул в try catch - ни разу не сработало. Проблема вылезает тогда, когда открыто окно Animation.
mr.Wolfram
UNец
 
Сообщения: 41
Зарегистрирован: 03 янв 2012, 15:01

Re: MissingReferenceException Помогите забороть.

Сообщение Volandpro 10 янв 2013, 15:17

ну и хрен с ним тогда)
Аватара пользователя
Volandpro
UNITрон
 
Сообщения: 242
Зарегистрирован: 19 авг 2012, 17:07

Re: MissingReferenceException Помогите забороть.

Сообщение liver9711 11 янв 2013, 11:03

mr.Wolfram писал(а):Проблема вылезает тогда, когда открыто окно Animation.

Ну в таком случае, попробуйте компильнуть и всё. Если всё будет именно так как и задуманно, следовательно ошибка не влияет на работу (да и не должна).
liver9711
UNITрон
 
Сообщения: 285
Зарегистрирован: 14 мар 2012, 11:16

Re: MissingReferenceException Помогите забороть.

Сообщение Mimik 11 янв 2013, 15:02

mr.Wolfram писал(а):"Люди, читайте что вам консоль пишет"
Я отлично вижу что мне консоль пишет. Но вся проблема в том, что у меня нет ни одного GameObject, который был бы создан локально. И я ни где ни разу не удаляю GameObject в явном виде, потому как у меня вообще ни один GameObject не должен быть удален до выхода из сцены. Вся работа с объектами сводится с созданию массивов и заполнению их инстансами префаба из Resources. Условно как-то так:
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class xxx : MonoBehaviour {
        private GameObject[] GO_inst;
        public static GameObject GO_Grp;
        void Start(){
                GO_inst = new GameObject[50];
                GO_Grp = new GameObject();
                for (int i = 0; i< 50; i++){   
                        GO_inst[i] = Instantiate(Resources.Load("yyy")) as GameObject;
                        GO_inst[i].transform.parent = GO_Grp.transform;
                }
        }
        void Update () {
        }
}


Все что потом делается с GO_Grp, это трансформ. Уже в другом скрипте.

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




GO_inst[i] = Instantiate(Resources.Load("yyy")) as GameObject;
не уверен в таком присваивании типа.
может лучше ?
GO_inst[i] = (GameObject)Instantiate(Resources.Load("yyy")) ;

еще взглянуть бы на обращение к массиву?!
также не известно что за Ресурс, его бы описание.

да и еще, скрипт вызываеться один раз? нет такого что раз в период скрипт заново создает новый массив?

еще можно попробовать создать лист - ради эксперементов

Синтаксис:
Используется csharp
List<GameObject> test = new List<GameObject>();
try
{
GameObject res = (GameObject)Instantiate(Resources.Load("yyy")) ; //еще не плохо было бы завернуть в try загрузку, может тут ошибка.
}
catch( System.Exception arg)
{
Debug.Log(arg.Message   );
}
res.transform.parent = GO_Grp.transform;
test.Add(res);

 

//чисто в эксперементальных методах...

ps лучший способ изучить что-то - разбираться в чужих проблемах.
Последний раз редактировалось Mimik 11 янв 2013, 15:37, всего редактировалось 5 раз(а).
Нет, я не пишу игры, мне просто интересно развиваться, и я просто стал изучать Unity.
Скучно на работе, занялся развитием..
Mimik
Админ
 
Сообщения: 113
Зарегистрирован: 20 дек 2012, 18:50
Откуда: г.Костомукша
Skype: Mimik_fc7
  • ICQ

Пред.

Вернуться в Почемучка

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

Сейчас этот форум просматривают: Google [Bot] и гости: 22