|
Unity Мультиплатформенный инструмент для разработки игр |
24.02.2013, 09:34
|
#931
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Фак по Юнити.
Ребят помогите разобраться. Начал осваивать корутины, но в моём примере ниже, корутина выполняется только один раз. т.е. FPSCount = 1, и корутина останавливается.
Я скорее всего смысл их не полностью знаю.
Я думал что корутина работает постоянно, пока её не остановишь или return не сделаешь.
using UnityEngine; using System.Collections;
public class Game : MonoBehaviour { public bool showFPS; public int FPSCount, FPSResult; private float FPSTimer; void Start () { if (showFPS == true) {StartCoroutine(ShowFPS());} } // Update is called once per frame void Update () { }
IEnumerator ShowFPS() { FPSTimer = FPSTimer + Time.deltaTime; FPSCount++; if (FPSTimer >= 1f) {FPSTimer = 0; FPSResult = FPSCount;} if (showFPS == false) {yield return null;} } }
__________________
|
(Offline)
|
|
24.02.2013, 10:13
|
#932
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Фак по Юнити.
Опять же нарыл пример Пакса )
Разобрался немного, но суть всё равно до конца не понимаю... Но работает
using UnityEngine; using System.Collections;
public class Game : MonoBehaviour { public bool showFPS; public int FPSCount, FPSResult; private float FPSTimer; void Start () { if (showFPS == true) {StartCoroutine(ShowFPS());} }
IEnumerator ShowFPS() { while (showFPS) { FPSTimer = FPSTimer + Time.deltaTime; FPSCount++; if (FPSTimer >= 1f) {FPSResult = FPSCount; FPSTimer = 0; FPSCount = 0;} yield return new WaitForSeconds(0.1f); } } }
__________________
|
(Offline)
|
|
24.02.2013, 11:53
|
#933
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Фак по Юнити.
Удали билд из папки ассетов, там их не должно быть. Никогда не делай билд в папку ассетов, в папку преокта можно, но не в Assets.
Корутина это функция, выполнение которой может прерываться на какое-то время, например до следующего кадра (yield return null), на определенное время (yield return new WaitForSeconds(0.1f)), до конца кадра (yield return new WaitForEndOfFrame()), до конца скачивания файла (смотри пример в классе WWW) и т.д.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
24.02.2013, 18:43
|
#934
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Фак по Юнити.
Хорошо что рано косяк произошел, теперь чаще буду экспортировать свои ассеты.
Ребят, подскажите. Мне надо обратиться к текстуре2д. Но когда я пытаюсь считать пиксель, компилятор говорит что текстура не читабельна (not readable), говорит изменить настройки импорта (умный собака ) ). Не нашёл такую настройку. Подскажите.
__________________
|
(Offline)
|
|
24.02.2013, 19:49
|
#935
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Фак по Юнити.
Нашёл!!
Чтобы можно было манипулировать текстурой, надо выбрать текстуру, Texture Type выбрать Advanced, и поставить галочку Read/Write Enable.
__________________
|
(Offline)
|
|
24.02.2013, 21:40
|
#936
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Фак по Юнити.
В импорте 3д моделей есть ньюанс, в 3д максе вертикальная ось Z, в юнити Y. При импорте модель расположена нормально (вертикально), НО при локальной трансформации вместо Y меняется Z.
К примеру:
processTimer += Time.deltaTime; float scale = Mathf.InverseLerp(0f,growInterval,processTimer); transform.localScale = new Vector3(scale,scale*5,scale);
Как можно решить такую задачу?
Может как то можно глобально менять масштаб? я не нашел
__________________
|
(Offline)
|
|
24.02.2013, 23:01
|
#937
|
Знающий
Регистрация: 08.01.2013
Адрес: Самара
Сообщений: 284
Написано 104 полезных сообщений (для 180 пользователей)
|
Ответ: Фак по Юнити.
Как можно решить такую задачу?
|
Нормально экспортировать из Макса.
Почитай тут:
http://gamecreatingcommunity.ru/forum/59-5419-1
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
25.02.2013, 08:45
|
#938
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Фак по Юнити.
Там написано просто повернуть пивот по оси Х на 90 градусов. Но таким образом ось Z будет направлена в противоположную сторону.
Ну да ладно, попробую сначала..
__________________
|
(Offline)
|
|
25.02.2013, 09:30
|
#939
|
Знающий
Регистрация: 08.01.2013
Адрес: Самара
Сообщений: 284
Написано 104 полезных сообщений (для 180 пользователей)
|
Ответ: Фак по Юнити.
Но таким образом ось Z будет направлена в противоположную сторону.
|
С чего вдруг в противоположную? Z была "вверх" - станет "от тебя". Y была "на тебя", станет "вверх".
|
(Offline)
|
|
25.02.2013, 09:42
|
#940
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Фак по Юнити.
Ты не прав, при экспорте твоя модель будет смотреть на тебя, а должна от тебя.
__________________
|
(Offline)
|
|
25.02.2013, 09:44
|
#941
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Фак по Юнити.
А результат в Unity? И еще не видно в каких координатах ты работал в 3ds max...
|
(Offline)
|
|
25.02.2013, 10:08
|
#942
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Фак по Юнити.
Пакс, оси в максе видно, они мелкие слева снизу.
Проверил локальную трансформацию объекта в юнити, всё работает правильно!
Вот правильный вариант
1) Повернуть пивот по оси Х на 90 градусов. (Affect Pivot Only)
2) Повернуть модель по оси Z на 180 градусов. (Affect Object Only)
__________________
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
25.02.2013, 17:12
|
#943
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Фак по Юнити.
Каждый загруженный меш автоматически создает свой материал, как можно обратиться в скрипте к материалу в загруженном меше.
public class Example : Mono.. { public Mesh thisMesh; void Start() { Material thisMaterial = thisMesh.????? ; } }
А то у меня как то геморно получается. Есть префаб со скриптом, куда должны ложиться меши с материалами, и приходится создавать еще одни префабы где будут лежать меши с материалами.
Я вот про этот материал, в аттаче
__________________
|
(Offline)
|
|
25.02.2013, 18:03
|
#944
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Фак по Юнити.
Меш не связан с материалом, материал определяет рендерер при визуализации меша который импортируется на тот же объект (gameObject.GetComponent<Renderer>.material)
У тебя там MeshRenderer и у него есть свиток Materials
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
25.02.2013, 18:24
|
#945
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Фак по Юнити.
ЕССС! Работает! СПАСИБО ПАКС!!!
Только для обращения надо использовать MeshRenderer.sharedMaterials[0], чтобы материал с MeshRenderer не слетел.
PS. Твоя школа.
__________________
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 01:26.
|