forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Unity (http://forum.boolean.name/forumdisplay.php?f=144)
-   -   Фак по Юнити. (http://forum.boolean.name/showthread.php?t=12966)

burovalex 24.02.2013 09:34

Ответ: Фак по Юнити.
 
Ребят помогите разобраться. Начал осваивать корутины, но в моём примере ниже, корутина выполняется только один раз. т.е. FPSCount = 1, и корутина останавливается.
Я скорее всего смысл их не полностью знаю.
Я думал что корутина работает постоянно, пока её не остановишь или return не сделаешь.


PHP код:

using UnityEngine;
using System.Collections;

public class 
Game MonoBehaviour {
    public 
bool showFPS
    public 
int FPSCountFPSResult;
    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 0FPSResult FPSCount;} 
    if (
showFPS == false) {yield return null;}
    }



burovalex 24.02.2013 10:13

Ответ: Фак по Юнити.
 
Опять же нарыл пример Пакса )
Разобрался немного, но суть всё равно до конца не понимаю... Но работает :-)


PHP код:

using UnityEngine;
using System.Collections;

public class 
Game MonoBehaviour {
    public 
bool showFPS
    public 
int FPSCountFPSResult;
    private 
float FPSTimer;
    
void Start () {
    if (
showFPS == true) {StartCoroutine(ShowFPS());}
    }

IEnumerator ShowFPS()
    {
    while (
showFPS)
        {
        
FPSTimer FPSTimer Time.deltaTime;
        
FPSCount++;
        if (
FPSTimer >= 1f) {FPSResult FPSCountFPSTimer 0FPSCount 0;} 
        yield return new 
WaitForSeconds(0.1f);
        }
    }



pax 24.02.2013 11:53

Ответ: Фак по Юнити.
 
Удали билд из папки ассетов, там их не должно быть. Никогда не делай билд в папку ассетов, в папку преокта можно, но не в Assets.

Корутина это функция, выполнение которой может прерываться на какое-то время, например до следующего кадра (yield return null), на определенное время (yield return new WaitForSeconds(0.1f)), до конца кадра (yield return new WaitForEndOfFrame()), до конца скачивания файла (смотри пример в классе WWW) и т.д.

burovalex 24.02.2013 18:43

Ответ: Фак по Юнити.
 
Хорошо что рано косяк произошел, теперь чаще буду экспортировать свои ассеты.

Ребят, подскажите. Мне надо обратиться к текстуре2д. Но когда я пытаюсь считать пиксель, компилятор говорит что текстура не читабельна (not readable), говорит изменить настройки импорта (умный собака ) ). Не нашёл такую настройку. Подскажите.

burovalex 24.02.2013 19:49

Ответ: Фак по Юнити.
 
Нашёл!!
Чтобы можно было манипулировать текстурой, надо выбрать текстуру, Texture Type выбрать Advanced, и поставить галочку Read/Write Enable.

burovalex 24.02.2013 21:40

Ответ: Фак по Юнити.
 
В импорте 3д моделей есть ньюанс, в 3д максе вертикальная ось Z, в юнити Y. При импорте модель расположена нормально (вертикально), НО при локальной трансформации вместо Y меняется Z.
К примеру:
PHP код:

processTimer += Time.deltaTime;
        
float scale Mathf.InverseLerp(0f,growInterval,processTimer);
        
transform.localScale = new Vector3(scale,scale*5,scale); 

Как можно решить такую задачу?
Может как то можно глобально менять масштаб? я не нашел

seaman 24.02.2013 23:01

Ответ: Фак по Юнити.
 
Цитата:

Как можно решить такую задачу?
Нормально экспортировать из Макса.
Почитай тут:
http://gamecreatingcommunity.ru/forum/59-5419-1

burovalex 25.02.2013 08:45

Ответ: Фак по Юнити.
 
Там написано просто повернуть пивот по оси Х на 90 градусов. Но таким образом ось Z будет направлена в противоположную сторону.
Ну да ладно, попробую сначала..

seaman 25.02.2013 09:30

Ответ: Фак по Юнити.
 
Цитата:

Но таким образом ось Z будет направлена в противоположную сторону.
С чего вдруг в противоположную? Z была "вверх" - станет "от тебя". Y была "на тебя", станет "вверх".

burovalex 25.02.2013 09:42

Ответ: Фак по Юнити.
 
Ты не прав, при экспорте твоя модель будет смотреть на тебя, а должна от тебя.

pax 25.02.2013 09:44

Ответ: Фак по Юнити.
 
А результат в Unity? И еще не видно в каких координатах ты работал в 3ds max...

burovalex 25.02.2013 10:08

Ответ: Фак по Юнити.
 
Вложений: 3
Пакс, оси в максе видно, они мелкие слева снизу.
Проверил локальную трансформацию объекта в юнити, всё работает правильно!

Вот правильный вариант
1) Повернуть пивот по оси Х на 90 градусов. (Affect Pivot Only)
2) Повернуть модель по оси Z на 180 градусов. (Affect Object Only)

burovalex 25.02.2013 17:12

Ответ: Фак по Юнити.
 
Вложений: 1
Каждый загруженный меш автоматически создает свой материал, как можно обратиться в скрипте к материалу в загруженном меше.

PHP код:

public class Example Mono..
{
public 
Mesh thisMesh;
void Start()
 {
 
Material thisMaterial thisMesh.????? ;
 }


А то у меня как то геморно получается. Есть префаб со скриптом, куда должны ложиться меши с материалами, и приходится создавать еще одни префабы где будут лежать меши с материалами.

Я вот про этот материал, в аттаче

pax 25.02.2013 18:03

Ответ: Фак по Юнити.
 
Меш не связан с материалом, материал определяет рендерер при визуализации меша который импортируется на тот же объект (gameObject.GetComponent<Renderer>.material)

У тебя там MeshRenderer и у него есть свиток Materials

burovalex 25.02.2013 18:24

Ответ: Фак по Юнити.
 
ЕССС! Работает! СПАСИБО ПАКС!!!

Только для обращения надо использовать MeshRenderer.sharedMaterials[0], чтобы материал с MeshRenderer не слетел.

PS. Твоя школа. :cool:
:-D


Часовой пояс GMT +4, время: 06:47.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot