[РЕШЕНО] Что значит "Собрать проект с нуля в новой папке"?

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

[РЕШЕНО] Что значит "Собрать проект с нуля в новой папке"?

Сообщение roach1993 25 ноя 2011, 01:18

Проблема такая же как в этой теме http://unity3d.ru/distribution/viewtopic.php?f=5&t=2340&p=19916&hilit=%D1%81%D0%BE%D0%B1%D1%80%D0%B0%D1%82%D1%8C+%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82+%D0%BD%D1%83%D0%BB%D1%8F#p19916 В режиме симуляции все прекрасно работает. После сборки проекта - некоторые функции не хотят. Прочитал, что можно попробовать "Собрать проект с нуля в новой папке", но что то не понял как это сделать. Чайник я еще в этом деле.
Если "Это просто сделать Build проекта в другую папку" - это не помогло...
Последний раз редактировалось roach1993 25 ноя 2011, 19:56, всего редактировалось 2 раз(а).
roach1993
UNец
 
Сообщения: 5
Зарегистрирован: 25 ноя 2011, 00:41

Re: Что значит "Собрать проект с нуля в новой папке"?

Сообщение DbIMok 25 ноя 2011, 01:30

"режим симуляции" - в смысле в редакторе? что не работает после сборки, какие ошибки в логе? почему вы сделали вывод, что проблема "такая же" (такая же версия юнити, такая же ошибка в логе)?
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.8k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: Что значит "Собрать проект с нуля в новой папке"?

Сообщение roach1993 25 ноя 2011, 01:36

Да, в смысле в редакторе. Версия Unity 3.3.0f4. Сделал анимацию открытия/закрытия сундука. После открытия крышки должно появляться GUI окно с содержимым, после чего можно закрыть сундук или окно. В Debug.Log() отслеживал события мыши (Enter, Exit, Up). В самом лог-файле ошибка после первого клика мыши NullReferenceException: Object reference not set to an instance of an object
at Chest+<Open>c__Iterator0.MoveNext () [0x00000] in <filename unknown>:0

Для осуществления анимации и затем прорисовки окна использовал CSharpMessenger Extended(2 скрипта: Callback.cs и Messenger.cs) взятый с http://www.unifycommunity.com/wiki/index.php?title=CSharpMessenger_Extended
roach1993
UNец
 
Сообщения: 5
Зарегистрирован: 25 ноя 2011, 00:41

Re: Что значит "Собрать проект с нуля в новой папке"?

Сообщение DbIMok 25 ноя 2011, 02:13

в ошибке написано, что для обьекта Chest была запущена корутина Open, и в какой-то момент по какой-то причине она об'ект не нашла
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.8k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: Что значит "Собрать проект с нуля в новой папке"?

Сообщение roach1993 25 ноя 2011, 12:27

Ясно. Спасибо за пояснение. Буду думать, как исправить. Но почему в редакторе все нормально работает и этой ошибки в помине нет?
roach1993
UNец
 
Сообщения: 5
Зарегистрирован: 25 ноя 2011, 00:41

Re: Что значит "Собрать проект с нуля в новой папке"?

Сообщение DbIMok 25 ноя 2011, 12:31

что-то делаете неправильно. для начала вставьте сюда скрипт (теги под кнопочками CS, JS), в котором происходит Open. может что-то прояснится
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.8k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: Что значит "Собрать проект с нуля в новой папке"?

Сообщение roach1993 25 ноя 2011, 12:35

Вот скрипт сундука
Chest.cs
Синтаксис:
Используется csharp

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class Chest : MonoBehaviour {
       
        public enum State
        {
                open,
                close,
                inbetween
        }
       
        public AudioClip openSound;
        public AudioClip closeSound;
        public GameObject[] _parts;
        private Color[] _defaultColors;
        public float maxDistance = 5;
        public State state;
        private GameObject _player;
        private Transform _myTransform;
        public bool inUse = false;
        private bool _used = false;
        public List<Item> _loot = new List<Item>();
       
        // Use this for initialization
        void Start () {
                _myTransform = transform;
                state = Chest.State.close;
                _defaultColors = new Color[_parts.Length];
                if(_parts.Length > 0)
                        for(int i = 0; i < _defaultColors.Length; i++)
                                _defaultColors[i] = _parts[i].renderer.material.GetColor("_Color");
        }
       
        void Update(){
                if(!inUse)
                        return;
               
                if(_player == null)
                        return;
                if(Vector3.Distance(transform.position, _player.transform.position) > maxDistance)
                        myGUI.chest.ForceClose();
                        //Messenger.Broadcast("CloseChest");
        }
       
        public void OnMouseEnter()
        {
                Debug.Log("Enetr");
                HighLight(true);
        }
       
        public void OnMouseExit()
        {
                Debug.Log("Exit");
                HighLight(false);
        }
       
        public void OnMouseUp()
        {
                GameObject go = GameObject.FindGameObjectWithTag("Player");
               
                if(go == null)
                {              
                        return;
                       
                }
                if(Vector3.Distance(_myTransform.position, go.transform.position) > maxDistance && !inUse)
                        return;
               
                Debug.Log("Up");
                switch(state)
                {
                case State.open: state = Chest.State.inbetween;ForceClose();break;
                case State.close:
                        if(myGUI.chest != null)
                        {
                                myGUI.chest.ForceClose();
                        }
                        state = Chest.State.inbetween; StartCoroutine("Open"); break;
                }
               
                /*if(state == Chest.State.close)
                        Open();
                else
                        Close();*/

        }
       
        private IEnumerator Open()
        {
                myGUI.chest = this;
                _player = GameObject.FindGameObjectWithTag("Player");
                inUse = true;
                animation.Play("open");
                audio.PlayOneShot(openSound);
                if(!_used)
                        PopulateChest(5);
                yield return new WaitForSeconds(animation["open"].length);
                state = Chest.State.open;
//              Messenger<int>.Broadcast("PopulateChest", 5, MessengerMode.DONT_REQUIRE_LISTENER);
                Messenger.Broadcast("DisplayLoot");

        }
       
        private void PopulateChest(int x)
        {
               
                for(int i = 0; i < x; i++)
                {
                        _loot.Add(new Item());
                        _loot[i].Name = "I:" + Random.Range(0, 100);
                }
                _used = true;
               
        }
       
        private IEnumerator Close()
         {
                _player = null;
                inUse = false;
                animation.Play("close");
                audio.PlayOneShot(closeSound);
                yield return new WaitForSeconds(animation["close"].length);
                state = Chest.State.close;
         }
       
        public void ForceClose()
        {
                Messenger.Broadcast("CloseChest");
                StopCoroutine("Open");
                StartCoroutine("Close");
        }
       
        private void HighLight(bool glow)
        {
                if(glow)
                        {
                                if(_parts.Length > 0)
                                        for(int i = 0; i < _defaultColors.Length; i++)
                                                _parts[i].renderer.material.SetColor("_Color", Color.yellow);
                        }
                else
                        {
                                if(_parts.Length > 0)
                        for(int i = 0; i < _defaultColors.Length; i++)
                                _parts[i].renderer.material.SetColor("_Color", _defaultColors[i]);
                        }
        }
}

 
roach1993
UNец
 
Сообщения: 5
Зарегистрирован: 25 ноя 2011, 00:41

Re: Что значит "Собрать проект с нуля в новой папке"?

Сообщение DbIMok 25 ноя 2011, 13:04

в целях отладки попробуйте
Синтаксис:
Используется csharp
        private IEnumerator Open()
        {
                if (myGUI == null) Debug.LogWarning("myGUI is null!");
                myGUI.chest = this;
                _player = GameObject.FindGameObjectWithTag("Player");
                inUse = true;
                if (animation["open"] == null) Debug.LogWarning("animation open is null!");
                animation.Play("open");
                if (audio == null) Debug.LogWarning("audio is null!");
                if (openSound == null) Debug.LogWarning("openSound is null!");
                audio.PlayOneShot(openSound);
                if(!_used)
                        PopulateChest(5);
                yield return new WaitForSeconds(animation["open"].length);
                state = Chest.State.open;
//              Messenger<int>.Broadcast("PopulateChest", 5, MessengerMode.DONT_REQUIRE_LISTENER);
                Messenger.Broadcast("DisplayLoot");
        }
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.8k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: Что значит "Собрать проект с нуля в новой папке"?

Сообщение roach1993 25 ноя 2011, 13:17

Спасибо большое! Проблема решена. Перед сборкой проекта я не поставил звуки на открытие и закрытие крышки. Поставил звуки, сделал Build, все работает. Спасибо DbIMok!
(3A4OT)
roach1993
UNец
 
Сообщения: 5
Зарегистрирован: 25 ноя 2011, 00:41

Re: Что значит "Собрать проект с нуля в новой папке"?

Сообщение seaman 25 ноя 2011, 18:05

Если решено - так и напишите в названии темы путем редактирования первого сообщения.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара


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

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

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